From: Igor Ryzhov Date: Wed, 2 Jun 2021 17:03:52 +0000 (+0300) Subject: *: unify prefix copying X-Git-Tag: frr-8.0.1~60^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=refs%2Fpull%2F9169%2Fhead;p=mirror%2Ffrr.git *: unify prefix copying There are a few places in the code where we use PREFIX_COPY(_IPV4/IPV6) macro to copy a prefix. Let's always use prefix_copy function for this. This should fix CID 1482142 and 1504610. Signed-off-by: Igor Ryzhov (cherry picked from commit b08dcc3f3f0b128b4662f3be86eb53075e93ac9f) --- diff --git a/bgpd/bgp_flowspec_util.c b/bgpd/bgp_flowspec_util.c index b244c87258..1ffd8499c0 100644 --- a/bgpd/bgp_flowspec_util.c +++ b/bgpd/bgp_flowspec_util.c @@ -227,12 +227,8 @@ int bgp_flowspec_ip_address(enum bgp_flowspec_util_nlri_t type, BGP_FLOWSPEC_STRING_DISPLAY_MAX); break; case BGP_FLOWSPEC_CONVERT_TO_NON_OPAQUE: - if (prefix) { - if (prefix_local.family == AF_INET) - PREFIX_COPY_IPV4(prefix, &prefix_local); - else - PREFIX_COPY_IPV6(prefix, &prefix_local); - } + if (prefix) + prefix_copy(prefix, &prefix_local); break; case BGP_FLOWSPEC_VALIDATE_ONLY: default: diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 597627b2f0..d3f3078110 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -1526,7 +1526,7 @@ static int bgp_peer_conf_if_to_su_update_v4(struct peer *peer, */ for (ALL_LIST_ELEMENTS_RO(ifp->connected, node, ifc)) { if (ifc->address && (ifc->address->family == AF_INET)) { - PREFIX_COPY_IPV4(&p, CONNECTED_PREFIX(ifc)); + prefix_copy(&p, CONNECTED_PREFIX(ifc)); if (p.prefixlen == 30) { peer->su.sa.sa_family = AF_INET; addr = ntohl(p.u.prefix4.s_addr); diff --git a/eigrpd/eigrp_network.c b/eigrpd/eigrp_network.c index 69dcc20253..9a5fbc52b4 100644 --- a/eigrpd/eigrp_network.c +++ b/eigrpd/eigrp_network.c @@ -219,7 +219,7 @@ int eigrp_network_set(struct eigrp *eigrp, struct prefix *p) } struct prefix *pref = prefix_new(); - PREFIX_COPY_IPV4(pref, p); + prefix_copy(pref, p); rn->info = (void *)pref; /* Schedule Router ID Update. */ diff --git a/lib/prefix.h b/lib/prefix.h index d7ee1b8e4c..2b89b5ce93 100644 --- a/lib/prefix.h +++ b/lib/prefix.h @@ -476,11 +476,6 @@ extern void prefix_ipv4_free(struct prefix_ipv4 **p); extern int str2prefix_ipv4(const char *, struct prefix_ipv4 *); extern void apply_mask_ipv4(struct prefix_ipv4 *); -#define PREFIX_COPY(DST, SRC) \ - *((struct prefix *)(DST)) = *((const struct prefix *)(SRC)) -#define PREFIX_COPY_IPV4(DST, SRC) \ - *((struct prefix_ipv4 *)(DST)) = *((const struct prefix_ipv4 *)(SRC)) - extern int prefix_ipv4_any(const struct prefix_ipv4 *); extern void apply_classful_mask_ipv4(struct prefix_ipv4 *); @@ -498,9 +493,6 @@ extern void prefix_ipv6_free(struct prefix_ipv6 **p); extern int str2prefix_ipv6(const char *, struct prefix_ipv6 *); extern void apply_mask_ipv6(struct prefix_ipv6 *); -#define PREFIX_COPY_IPV6(DST, SRC) \ - *((struct prefix_ipv6 *)(DST)) = *((const struct prefix_ipv6 *)(SRC)) - extern int ip6_masklen(struct in6_addr); extern void masklen2ip6(const int, struct in6_addr *); diff --git a/zebra/connected.c b/zebra/connected.c index d110ccf6dd..dc7193eb4c 100644 --- a/zebra/connected.c +++ b/zebra/connected.c @@ -198,7 +198,7 @@ static void connected_update(struct interface *ifp, struct connected *ifc) void connected_up(struct interface *ifp, struct connected *ifc) { afi_t afi; - struct prefix p = {0}; + struct prefix p; struct nexthop nh = { .type = NEXTHOP_TYPE_IFINDEX, .ifindex = ifp->ifindex, @@ -225,7 +225,7 @@ void connected_up(struct interface *ifp, struct connected *ifc) /* Ensure 'down' flag is cleared */ UNSET_FLAG(ifc->conf, ZEBRA_IFC_DOWN); - PREFIX_COPY(&p, CONNECTED_PREFIX(ifc)); + prefix_copy(&p, CONNECTED_PREFIX(ifc)); /* Apply mask to the network. */ apply_mask(&p); @@ -277,9 +277,9 @@ void connected_up(struct interface *ifp, struct connected *ifc) * resolve to the same network and mask */ for (ALL_LIST_ELEMENTS_RO(ifp->connected, cnode, c)) { - struct prefix cp = {0}; + struct prefix cp; - PREFIX_COPY(&cp, CONNECTED_PREFIX(c)); + prefix_copy(&cp, CONNECTED_PREFIX(c)); apply_mask(&cp); if (prefix_same(&cp, &p) && @@ -412,7 +412,7 @@ void connected_down(struct interface *ifp, struct connected *ifc) return; } - PREFIX_COPY(&p, CONNECTED_PREFIX(ifc)); + prefix_copy(&p, CONNECTED_PREFIX(ifc)); /* Apply mask to the network. */ apply_mask(&p); @@ -450,7 +450,7 @@ void connected_down(struct interface *ifp, struct connected *ifc) for (ALL_LIST_ELEMENTS_RO(ifp->connected, cnode, c)) { struct prefix cp; - PREFIX_COPY(&cp, CONNECTED_PREFIX(c)); + prefix_copy(&cp, CONNECTED_PREFIX(c)); apply_mask(&cp); if (prefix_same(&p, &cp) &&