diff options
author | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-09-06 10:29:02 +0200 |
---|---|---|
committer | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-09-07 13:58:21 +0200 |
commit | 2cf4f88fc8b957c15ae93a2eb3e56ebdb07a0381 (patch) | |
tree | 1b3bd39aa4b84132559cc8032024f44a1e9c8015 /include | |
parent | ee2235c62cf0c51f7188fdeb6ac283c1e2ea0335 (diff) | |
download | ouroboros-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.h | 68 | ||||
-rw-r--r-- | include/ouroboros/irm_config.h | 5 | ||||
-rw-r--r-- | include/ouroboros/shm_rdrbuff.h | 15 |
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 <sander.vrijders@intec.ugent.be> - * - * 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 */ |