ldpd: improve ldp_zebra_read_route()

Log deleted routes and simplify the code a bit.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
Renato Westphal 2017-04-21 19:39:11 -03:00
parent a8e8b86797
commit 79f62ef746

View File

@ -360,6 +360,7 @@ ldp_zebra_read_route(int command, struct zclient *zclient, zebra_size_t length,
struct kroute kr; struct kroute kr;
int nhnum = 0, nhlen; int nhnum = 0, nhlen;
size_t nhmark; size_t nhmark;
int add = 0;
memset(&kr, 0, sizeof(kr)); memset(&kr, 0, sizeof(kr));
s = zclient->ibuf; s = zclient->ibuf;
@ -426,21 +427,14 @@ ldp_zebra_read_route(int command, struct zclient *zclient, zebra_size_t length,
if (CHECK_FLAG(message_flags, ZAPI_MESSAGE_NEXTHOP)) if (CHECK_FLAG(message_flags, ZAPI_MESSAGE_NEXTHOP))
stream_set_getp(s, nhmark); stream_set_getp(s, nhmark);
if (nhnum == 0) { if (command == ZEBRA_REDISTRIBUTE_IPV4_ADD ||
switch (command) { command == ZEBRA_REDISTRIBUTE_IPV6_ADD)
case ZEBRA_REDISTRIBUTE_IPV4_ADD: add = 1;
case ZEBRA_REDISTRIBUTE_IPV6_ADD:
return (0); if (nhnum == 0)
case ZEBRA_REDISTRIBUTE_IPV4_DEL: debug_zebra_in("route %s %s/%d (%s)", (add) ? "add" : "delete",
case ZEBRA_REDISTRIBUTE_IPV6_DEL: log_addr(kr.af, &kr.prefix), kr.prefixlen,
debug_zebra_in("route delete %s/%d (%s)", zebra_route_string(type));
log_addr(kr.af, &kr.prefix), kr.prefixlen,
zebra_route_string(type));
break;
default:
fatalx("ldp_zebra_read_route: unknown command");
}
}
/* loop through all the nexthops */ /* loop through all the nexthops */
for (; nhnum > 0; nhnum--) { for (; nhnum > 0; nhnum--) {
@ -457,19 +451,14 @@ ldp_zebra_read_route(int command, struct zclient *zclient, zebra_size_t length,
stream_getc(s); /* ifindex_num, unused. */ stream_getc(s); /* ifindex_num, unused. */
kr.ifindex = stream_getl(s); kr.ifindex = stream_getl(s);
switch (command) { debug_zebra_in("route %s %s/%d nexthop %s ifindex %u (%s)",
case ZEBRA_REDISTRIBUTE_IPV4_ADD: (add) ? "add" : "delete", log_addr(kr.af, &kr.prefix),
case ZEBRA_REDISTRIBUTE_IPV6_ADD: kr.prefixlen, log_addr(kr.af, &kr.nexthop), kr.ifindex,
debug_zebra_in("route add %s/%d nexthop %s " zebra_route_string(type));
"ifindex %u (%s)", log_addr(kr.af, &kr.prefix),
kr.prefixlen, log_addr(kr.af, &kr.nexthop), if (add)
kr.ifindex, zebra_route_string(type));
main_imsg_compose_lde(IMSG_NETWORK_ADD, 0, &kr, main_imsg_compose_lde(IMSG_NETWORK_ADD, 0, &kr,
sizeof(kr)); sizeof(kr));
break;
default:
break;
}
} }
main_imsg_compose_lde(IMSG_NETWORK_UPDATE, 0, &kr, sizeof(kr)); main_imsg_compose_lde(IMSG_NETWORK_UPDATE, 0, &kr, sizeof(kr));