summaryrefslogtreecommitdiff
path: root/src/ipcpd/normal/pol/link_state.c
diff options
context:
space:
mode:
authordimitri staessens <dimitri.staessens@ugent.be>2017-08-28 20:10:22 +0000
committerSander Vrijders <sander.vrijders@ugent.be>2017-08-28 20:10:22 +0000
commite8875c08ac04a1d9aca342d94d4f788239334f72 (patch)
tree4a96be10ea1b9f3d03bb2fd10f3f2e403c1dd934 /src/ipcpd/normal/pol/link_state.c
parentc3185b9a6e471b534a370b2d913425962af88654 (diff)
parent999b5dec615ce4cfb30ee909bdd16e79a5e2a1ce (diff)
downloadouroboros-e8875c08ac04a1d9aca342d94d4f788239334f72.tar.gz
ouroboros-e8875c08ac04a1d9aca342d94d4f788239334f72.zip
Merged in dstaesse/ouroboros/be-deprecate-gam (pull request #572)
Be deprecate gam
Diffstat (limited to 'src/ipcpd/normal/pol/link_state.c')
-rw-r--r--src/ipcpd/normal/pol/link_state.c52
1 files changed, 24 insertions, 28 deletions
diff --git a/src/ipcpd/normal/pol/link_state.c b/src/ipcpd/normal/pol/link_state.c
index 9dfed5c0..512ced7f 100644
--- a/src/ipcpd/normal/pol/link_state.c
+++ b/src/ipcpd/normal/pol/link_state.c
@@ -130,10 +130,6 @@ static int link_state_neighbor_event(enum nb_event event,
size_t len;
uint8_t * data;
- /* Only announce the flow if our address is bigger */
- if (ipcpi.dt_addr < conn.conn_info.addr)
- return 0;
-
path[0] = '\0';
sprintf(fso_name, "%" PRIu64 "-%" PRIu64,
ipcpi.dt_addr, conn.conn_info.addr);
@@ -305,42 +301,42 @@ int link_state_init(struct nbs * nbs)
{
link_state.graph = graph_create();
if (link_state.graph == NULL)
- return -1;
+ goto fail_graph;
- if (rib_add(RIB_ROOT, ROUTING_NAME)) {
- graph_destroy(link_state.graph);
- return -1;
- }
+ if (rib_add(RIB_ROOT, ROUTING_NAME))
+ goto fail_rib_add;
link_state.nbs = nbs;
link_state.nb_notifier.notify_call = link_state_neighbor_event;
- if (nbs_reg_notifier(link_state.nbs, &link_state.nb_notifier)) {
- graph_destroy(link_state.graph);
- rib_del(ROUTING_PATH);
- return -1;
- }
+ if (nbs_reg_notifier(link_state.nbs, &link_state.nb_notifier))
+ goto fail_nbs_reg_notifier;
link_state.set = ro_set_create();
- if (link_state.set == NULL) {
- nbs_unreg_notifier(link_state.nbs, &link_state.nb_notifier);
- graph_destroy(link_state.graph);
- rib_del(ROUTING_PATH);
- return -1;
- }
+ if (link_state.set == NULL)
+ goto fail_ro_set_create;
link_state.queue = rqueue_create();
- if (link_state.queue == NULL) {
- ro_set_destroy(link_state.set);
- nbs_unreg_notifier(link_state.nbs, &link_state.nb_notifier);
- graph_destroy(link_state.graph);
- rib_del(ROUTING_PATH);
- return -1;
- }
+ if (link_state.queue == NULL)
+ goto fail_rqueue_create;
- pthread_create(&link_state.rib_listener, NULL, rib_listener, NULL);
+ if (pthread_create(&link_state.rib_listener, NULL, rib_listener, NULL))
+ goto fail_listener_create;
return 0;
+
+ fail_listener_create:
+ ro_set_destroy(link_state.set);
+ fail_rqueue_create:
+ ro_set_destroy(link_state.set);
+ fail_ro_set_create:
+ nbs_unreg_notifier(link_state.nbs, &link_state.nb_notifier);
+ fail_nbs_reg_notifier:
+ rib_del(ROUTING_PATH);
+ fail_rib_add:
+ graph_destroy(link_state.graph);
+ fail_graph:
+ return -1;
}
void link_state_fini(void)