summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSander Vrijders <[email protected]>2016-09-06 10:29:02 +0200
committerSander Vrijders <[email protected]>2016-09-07 13:58:21 +0200
commit2cf4f88fc8b957c15ae93a2eb3e56ebdb07a0381 (patch)
tree1b3bd39aa4b84132559cc8032024f44a1e9c8015 /include
parentee2235c62cf0c51f7188fdeb6ac283c1e2ea0335 (diff)
downloadouroboros-2cf4f88fc8b957c15ae93a2eb3e56ebdb07a0381.tar.gz
ouroboros-2cf4f88fc8b957c15ae93a2eb3e56ebdb07a0381.zip
ipcpd: normal: Add operations to get and set the PCI
This adds the operations needed in the normal IPCP to get and set the Protocol Control Information. It allows to allocate or release space in the current DU. The struct pci can be serialized into newly allocate space. Vice versa, a struct pci can be deserialized given a DU. It allows for decreasing the TTL in the DU and for calculating the CRC32. The TTL and CRC32 can now be selected when creating a new DIF.
Diffstat (limited to 'include')
-rw-r--r--include/ouroboros/dif_config.h68
-rw-r--r--include/ouroboros/irm_config.h5
-rw-r--r--include/ouroboros/shm_rdrbuff.h15
3 files changed, 10 insertions, 78 deletions
diff --git a/include/ouroboros/dif_config.h b/include/ouroboros/dif_config.h
deleted file mode 100644
index 2e354e8c..00000000
--- a/include/ouroboros/dif_config.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Ouroboros - Copyright (C) 2016
- *
- * DIF configurations for each IPCP type
- *
- * Sander Vrijders <[email protected]>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <stdint.h>
-#include <unistd.h>
-
-#ifndef OUROBOROS_DIF_CONFIG_H
-#define OUROBOROS_DIF_CONFIG_H
-
-enum ipcp_type {
- IPCP_LOCAL = 0,
- IPCP_NORMAL,
- IPCP_SHIM_UDP,
- IPCP_SHIM_ETH_LLC
-};
-
-struct dif_config {
- char * dif_name;
- enum ipcp_type type;
-
- union {
- /* Normal DIF */
- struct {
- uint8_t addr_size;
- uint8_t cep_id_size;
- uint8_t pdu_length_size;
- uint8_t seqno_size;
-
- /* DUP constants */
- uint8_t ttl_size;
- uint8_t chk_size;
-
- uint32_t min_pdu_size;
- uint32_t max_pdu_size;
- };
- /* Shim UDP */
- struct {
- uint32_t ip_addr;
- uint32_t dns_addr;
- };
- /* Shim Ethernet LLC */
- struct {
- char * if_name;
- };
- };
-};
-
-
-#endif /* OUROBOROS_DIF_CONFIG_H */
diff --git a/include/ouroboros/irm_config.h b/include/ouroboros/irm_config.h
index d5f2b565..ba58f2f7 100644
--- a/include/ouroboros/irm_config.h
+++ b/include/ouroboros/irm_config.h
@@ -22,6 +22,7 @@
#include <stdint.h>
#include <unistd.h>
+#include <stdbool.h>
#ifndef OUROBOROS_IRM_CONFIG_H
#define OUROBOROS_IRM_CONFIG_H
@@ -52,8 +53,8 @@ struct dif_config {
uint8_t seqno_size;
/* DUP constants */
- uint8_t ttl_size;
- uint8_t chk_size;
+ bool has_ttl;
+ bool has_chk;
uint32_t min_pdu_size;
uint32_t max_pdu_size;
diff --git a/include/ouroboros/shm_rdrbuff.h b/include/ouroboros/shm_rdrbuff.h
index 6cdaa7bf..7a7049e3 100644
--- a/include/ouroboros/shm_rdrbuff.h
+++ b/include/ouroboros/shm_rdrbuff.h
@@ -65,20 +65,19 @@ int shm_rdrbuff_read(uint8_t ** dst,
int shm_rdrbuff_remove(struct shm_rdrbuff * rdrb,
ssize_t idx);
+uint8_t * shm_du_buff_head(struct shm_du_buff * sdb);
-uint8_t * shm_du_buff_head_alloc(struct shm_rdrbuff * rdrb,
- ssize_t idx,
+uint8_t * shm_du_buff_tail(struct shm_du_buff * sdb);
+
+uint8_t * shm_du_buff_head_alloc(struct shm_du_buff * sdb,
size_t size);
-uint8_t * shm_du_buff_tail_alloc(struct shm_rdrbuff * rdrb,
- ssize_t idx,
+uint8_t * shm_du_buff_tail_alloc(struct shm_du_buff * sdb,
size_t size);
-int shm_du_buff_head_release(struct shm_rdrbuff * rdrb,
- ssize_t idx,
+int shm_du_buff_head_release(struct shm_du_buff * sdb,
size_t size);
-int shm_du_buff_tail_release(struct shm_rdrbuff * rdrb,
- ssize_t idx,
+int shm_du_buff_tail_release(struct shm_du_buff * sdb,
size_t size);
#endif /* OUROBOROS_SHM_RDRBUFF_H */