From: Timo Teräs Date: Fri, 22 May 2015 10:41:00 +0000 (+0300) Subject: zebra: simplify redistribution code X-Git-Tag: frr-2.0-rc1~619 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=10ead5c82ce5cfbfc3a1ff9044324ec4f59aefad;p=mirror%2Ffrr.git zebra: simplify redistribution code Merge the conditionals as one to avoid code duplication. Signed-off-by: Timo Teräs Signed-off-by: David Lamparter (cherry picked from commit f85592e05ae6463727433893e61afd1081fcf7e0) Conflicts: zebra/redistribute.c --- diff --git a/zebra/redistribute.c b/zebra/redistribute.c index 4d94ddf622..a383fdde7c 100644 --- a/zebra/redistribute.c +++ b/zebra/redistribute.c @@ -263,6 +263,7 @@ redistribute_delete (struct prefix *p, struct rib *rib) struct listnode *node, *nnode; struct zserv *client; char buf[INET6_ADDRSTRLEN]; + int afi; if (IS_ZEBRA_DEBUG_RIB) { @@ -275,47 +276,28 @@ redistribute_delete (struct prefix *p, struct rib *rib) if (rib->distance == DISTANCE_INFINITY) return; + afi = family2afi(p->family); + if (!afi) + { + zlog_warn("%s: Unknown AFI/SAFI prefix received\n", __FUNCTION__); + return; + } + for (ALL_LIST_ELEMENTS (zebrad.client_list, node, nnode, client)) { - if (is_default (p)) + if ((is_default (p) && + vrf_bitmap_check (client->redist_default, rib->vrf_id)) || + (rib->instance && + redist_check_instance(&client->mi_redist[afi][rib->type], + rib->instance)) || + vrf_bitmap_check (client->redist[afi][rib->type], rib->vrf_id)) { - if ((p->family == AF_INET) && - (vrf_bitmap_check (client->redist_default, rib->vrf_id) || - (rib->instance && - redist_check_instance(&client->mi_redist[AFI_IP][rib->type], - rib->instance)) || - vrf_bitmap_check (client->redist[AFI_IP][rib->type], rib->vrf_id))) + if (p->family == AF_INET) zsend_redistribute_route (ZEBRA_REDISTRIBUTE_IPV4_DEL, client, p, rib); -#ifdef HAVE_IPV6 - if ((p->family == AF_INET6) && - (vrf_bitmap_check (client->redist_default, rib->vrf_id) || - (rib->instance && - redist_check_instance(&client->mi_redist[AFI_IP6][rib->type], - rib->instance)) || - vrf_bitmap_check (client->redist[AFI_IP6][rib->type], rib->vrf_id))) + if (p->family == AF_INET6) zsend_redistribute_route (ZEBRA_REDISTRIBUTE_IPV6_DEL, client, p, rib); -#endif /* HAVE_IPV6 */ - } - else - { - if ((p->family == AF_INET) && - ((rib->instance && - redist_check_instance(&client->mi_redist[AFI_IP][rib->type], - rib->instance)) || - vrf_bitmap_check (client->redist[AFI_IP][rib->type], rib->vrf_id))) - zsend_redistribute_route (ZEBRA_REDISTRIBUTE_IPV4_DEL, client, p, - rib); -#ifdef HAVE_IPV6 - if ((p->family == AF_INET6) && - ((rib->instance && - redist_check_instance(&client->mi_redist[AFI_IP6][rib->type], - rib->instance)) || - vrf_bitmap_check (client->redist[AFI_IP6][rib->type], rib->vrf_id))) - zsend_redistribute_route (ZEBRA_REDISTRIBUTE_IPV6_DEL, client, p, - rib); -#endif /* HAVE_IPV6 */ } } }