void local_notify_route(struct babel_route *route, int kind) { int i; for(i = 0; i < num_local_sockets; i++) local_notify_route_1(local_sockets[i], route, kind); }
void local_notify_all_1(int s) { int rc; struct neighbour *neigh; const char *header = "BABEL 0.0\n"; struct xroute_stream *xroutes; struct route_stream *routes; rc = write_timeout(s, header, strlen(header)); if(rc < 0) goto fail; local_notify_self_1(s); FOR_ALL_NEIGHBOURS(neigh) { local_notify_neighbour_1(s, neigh, LOCAL_ADD); } xroutes = xroute_stream(); if(xroutes) { while(1) { struct xroute *xroute = xroute_stream_next(xroutes); if(xroute == NULL) break; local_notify_xroute_1(s, xroute, LOCAL_ADD); } xroute_stream_done(xroutes); } routes = route_stream(0); if(routes) { while(1) { struct babel_route *route = route_stream_next(routes); if(route == NULL) break; local_notify_route_1(s, route, LOCAL_ADD); } route_stream_done(routes); } rc = write_timeout(s, "done\n", 5); if(rc < 0) goto fail; return; fail: shutdown(s, 1); return; }
static void local_notify_all_1(struct local_socket *s) { struct interface *ifp; struct neighbour *neigh; struct xroute_stream *xroutes; struct route_stream *routes; FOR_ALL_INTERFACES(ifp) { local_notify_interface_1(s, ifp, LOCAL_ADD); } FOR_ALL_NEIGHBOURS(neigh) { local_notify_neighbour_1(s, neigh, LOCAL_ADD); } xroutes = xroute_stream(); if(xroutes) { while(1) { struct xroute *xroute = xroute_stream_next(xroutes); if(xroute == NULL) break; local_notify_xroute_1(s, xroute, LOCAL_ADD); } xroute_stream_done(xroutes); } routes = route_stream(ROUTE_ALL); if(routes) { while(1) { struct babel_route *route = route_stream_next(routes); if(route == NULL) break; local_notify_route_1(s, route, LOCAL_ADD); } route_stream_done(routes); } return; }