summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authordimitri staessens <[email protected]>2017-08-25 17:19:17 +0200
committerdimitri staessens <[email protected]>2017-08-28 15:24:16 +0200
commit176698e8c2fd7ab8007b8074515d6144e7177d8e (patch)
tree6fa097b57aaafe3143b1f17e528479aa0624a005 /src/lib
parenta4bff697871c8cc7252d029d77b180e41e821f7e (diff)
downloadouroboros-176698e8c2fd7ab8007b8074515d6144e7177d8e.tar.gz
ouroboros-176698e8c2fd7ab8007b8074515d6144e7177d8e.zip
ipcpd: Deprecate gam as autonomous component
The graph adjacency manager has been deprecated in favor of providing an external interface into the connectivity manager so that adjacencies can be controlled from the command line, user scripts or user applications. The gam and its associated policies were removed from the normal IPCP and the IRM configuration tools. The "/members" part of the RIB was deprecated. Removal of the gam means that initial connectivity based on changes in the RIB can't be provided, so some changes were required throughout the normal IPCP. The enrollment procedure was revised to establish its own connectivity. First, it gets boot information from a peer by establishing a connection to the remote enrollment component and downloading the IPCP configuratoin. This is now done using its own protocol buffers message in anticipation of deprecation of the RIB and CDAP for communication within a DIF. After the boot information is downloaded, it establishes a data transfer flow for enrolling the directory (DHT). After the DHT has enrolled, it signals the peer to that enrollment is done, and the data transfer connection is torn down. Signaling connections is done via the nbs struct, which is now passed to the connmgr, which enables control of the connectivity graph from external sources.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/dev.c3
-rw-r--r--src/lib/ipcp_config.proto10
-rw-r--r--src/lib/irm.c4
-rw-r--r--src/lib/rib.c3
4 files changed, 7 insertions, 13 deletions
diff --git a/src/lib/dev.c b/src/lib/dev.c
index 1310afd8..6e85aaad 100644
--- a/src/lib/dev.c
+++ b/src/lib/dev.c
@@ -807,8 +807,7 @@ int flow_dealloc(int fd)
if (!recv_msg->has_result) {
irm_msg__free_unpacked(recv_msg, NULL);
- assert(false);
- return -1;
+ return -EIRMD;
}
irm_msg__free_unpacked(recv_msg, NULL);
diff --git a/src/lib/ipcp_config.proto b/src/lib/ipcp_config.proto
index f0d5f6eb..4ede5060 100644
--- a/src/lib/ipcp_config.proto
+++ b/src/lib/ipcp_config.proto
@@ -35,12 +35,10 @@ message ipcp_config_msg {
optional uint32 fd_size = 4;
optional bool has_ttl = 5;
optional uint32 addr_auth_type = 6;
- optional uint32 dt_gam_type = 7;
- optional uint32 rm_gam_type = 8;
- optional uint32 routing_type = 9;
+ optional uint32 routing_type = 7;
// Config for shim UDP
- optional uint32 ip_addr = 10;
- optional uint32 dns_addr = 11;
+ optional uint32 ip_addr = 8;
+ optional uint32 dns_addr = 9;
// Config for the shim Ethernet LLC
- optional string if_name = 12;
+ optional string if_name = 10;
}
diff --git a/src/lib/irm.c b/src/lib/irm.c
index 4232cec1..eec89338 100644
--- a/src/lib/irm.c
+++ b/src/lib/irm.c
@@ -121,10 +121,6 @@ int irm_bootstrap_ipcp(pid_t api,
config.has_ttl = conf->has_ttl;
config.has_addr_auth_type = true;
config.addr_auth_type = conf->addr_auth_type;
- config.has_dt_gam_type = true;
- config.dt_gam_type = conf->dt_gam_type;
- config.has_rm_gam_type = true;
- config.rm_gam_type = conf->rm_gam_type;
config.has_routing_type = true;
config.routing_type = conf->routing_type;
dif_info.dir_hash_algo = conf->dif_info.dir_hash_algo;
diff --git a/src/lib/rib.c b/src/lib/rib.c
index 104dc0cc..bbe996e7 100644
--- a/src/lib/rib.c
+++ b/src/lib/rib.c
@@ -373,7 +373,8 @@ static void destroy_rnode(struct rnode * node)
branch_hash(node->parent);
}
- rnode_throw_event(node, RO_DELETE);
+ if (node->parent != NULL)
+ rnode_throw_event(node->parent, RO_DELETE);
list_for_each_safe(p, h, &node->subs) {
struct rn_sub * s = list_entry(p, struct rn_sub, next);