summaryrefslogtreecommitdiff
path: root/include/ouroboros/ipcp.h
diff options
context:
space:
mode:
authordimitri staessens <dimitri.staessens@ugent.be>2017-04-12 16:57:48 +0200
committerdimitri staessens <dimitri.staessens@ugent.be>2017-04-13 11:30:20 +0200
commitfc10a7587b1a642748ae0fd69f08d92b4a902248 (patch)
treee0b570cf30753a564855242c94d242f597b5c499 /include/ouroboros/ipcp.h
parenta3d550ff972121641562d375f75bcf188fc7fe59 (diff)
downloadouroboros-fc10a7587b1a642748ae0fd69f08d92b4a902248.tar.gz
ouroboros-fc10a7587b1a642748ae0fd69f08d92b4a902248.zip
lib, ipcpd, irmd: Register hash instead of name
All information passed over the IRMd/IPCP boundary for using IPC services (flow allocation, registration) is now hashed. This effectively fixes the shared namespace between DIFs and the IRMDs. This PR also fixes some API issues (adding const identifiers), shuffles the include headers a bit and some small bugs.
Diffstat (limited to 'include/ouroboros/ipcp.h')
-rw-r--r--include/ouroboros/ipcp.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/include/ouroboros/ipcp.h b/include/ouroboros/ipcp.h
new file mode 100644
index 00000000..f439f29b
--- /dev/null
+++ b/include/ouroboros/ipcp.h
@@ -0,0 +1,80 @@
+/*
+ * Ouroboros - Copyright (C) 2016 - 2017
+ *
+ * IPCP definitions and policies
+ *
+ * Dimitri Staessens <dimitri.staessens@ugent.be>
+ * Sander Vrijders <sander.vrijders@ugent.be>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+
+#ifndef OUROBOROS_IPCP_H
+#define OUROBOROS_IPCP_H
+
+#include <stdint.h>
+#include <unistd.h>
+#include <stdbool.h>
+
+/*
+ * NOTE: the IRMd uses this order to select an IPCP
+ * for flow allocation
+ */
+enum ipcp_type {
+ IPCP_LOCAL = 0,
+ IPCP_SHIM_ETH_LLC,
+ IPCP_SHIM_UDP,
+ IPCP_NORMAL
+};
+
+/* IPCP policies */
+enum pol_addr_auth {
+ FLAT_RANDOM = 0
+};
+
+enum pol_gam {
+ COMPLETE = 0
+};
+
+struct ipcp_config {
+ char * dif_name;
+ enum ipcp_type type;
+ uint16_t dir_hash_len;
+
+ /* Normal DIF */
+ uint8_t addr_size;
+ uint8_t cep_id_size;
+ uint8_t pdu_length_size;
+ uint8_t seqno_size;
+
+ bool has_ttl;
+ bool has_chk;
+
+ uint32_t min_pdu_size;
+ uint32_t max_pdu_size;
+
+ enum pol_addr_auth addr_auth_type;
+ enum pol_gam dt_gam_type;
+ enum pol_gam rm_gam_type;
+
+ /* Shim UDP */
+ uint32_t ip_addr;
+ uint32_t dns_addr;
+
+ /* Shim Ethernet LLC */
+ char * if_name;
+};
+
+#endif /* OUROBOROS_IPCP_H */