Commit d2e970cdbf for frr
commit d2e970cdbfbe40f829986cf81b9da93e6e621f83
Author: Gabriel Goller <g.goller@proxmox.com>
Date: Fri Sep 11 15:18:01 2026 +0200
*: use ipaddr_set_v4()/ipaddr_set_v6() where available
Creating a struct ipaddr takes two steps: tagging the type via
SET_IPADDR_V4()/SET_IPADDR_V6() and writing the address itself.
ipaddr_set_v4() and ipaddr_set_v6() are helpers that do these operations
in one line, which means that it is less likely one operation is
forgotten. There is also a subtle difference in ipv6, where we copy the
address instead of just moving it.
Sites where the helpers are awkward are left alone: EVPN NLRI parsing
would need an unaligned *(struct in_addr *) load on the packet buffer,
the netlink route attributes are copied with a runtime length instead
of a fixed one, and a few places only tag the type because the address
arrives later.
Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
diff --git a/bgpd/bgp_attr_evpn.c b/bgpd/bgp_attr_evpn.c
index c87e6ee016..4a60e81bc7 100644
--- a/bgpd/bgp_attr_evpn.c
+++ b/bgpd/bgp_attr_evpn.c
@@ -294,16 +294,10 @@ extern int bgp_build_evpn_prefix(int evpn_type, uint32_t eth_tag,
p_evpn_p->prefix_addr.eth_tag = eth_tag;
p_evpn_p->prefix_addr.ip_prefix_length = p2.prefixlen;
if (src->family == AF_INET) {
- SET_IPADDR_V4(&p_evpn_p->prefix_addr.ip);
- memcpy(&p_evpn_p->prefix_addr.ip.ipaddr_v4,
- &src->u.prefix4,
- sizeof(struct in_addr));
+ ipaddr_set_v4(&p_evpn_p->prefix_addr.ip, src->u.prefix4);
dst->prefixlen = (uint16_t)PREFIX_LEN_ROUTE_TYPE_5_IPV4;
} else {
- SET_IPADDR_V6(&p_evpn_p->prefix_addr.ip);
- memcpy(&p_evpn_p->prefix_addr.ip.ipaddr_v6,
- &src->u.prefix6,
- sizeof(struct in6_addr));
+ ipaddr_set_v6(&p_evpn_p->prefix_addr.ip, &src->u.prefix6);
dst->prefixlen = (uint16_t)PREFIX_LEN_ROUTE_TYPE_5_IPV6;
}
} else
diff --git a/bgpd/bgp_evpn.c b/bgpd/bgp_evpn.c
index 13467e0163..391ca55f09 100644
--- a/bgpd/bgp_evpn.c
+++ b/bgpd/bgp_evpn.c
@@ -1581,12 +1581,10 @@ enum zclient_send_status evpn_zebra_install(struct bgp *bgp, struct bgpevpn *vpn
switch (nhfamily) {
case AF_INET:
- SET_IPADDR_V4(&vtep_ip);
- vtep_ip.ipaddr_v4 = pi->attr->mp_nexthop_global_in;
+ ipaddr_set_v4(&vtep_ip, pi->attr->mp_nexthop_global_in);
break;
case AF_INET6:
- SET_IPADDR_V6(&vtep_ip);
- IPV6_ADDR_COPY(&vtep_ip.ipaddr_v6, &pi->attr->mp_nexthop_global);
+ ipaddr_set_v6(&vtep_ip, &pi->attr->mp_nexthop_global);
break;
}
@@ -1641,12 +1639,10 @@ enum zclient_send_status evpn_zebra_uninstall(struct bgp *bgp,
switch (nhfamily) {
case AF_INET:
- SET_IPADDR_V4(&vtep_ip);
- vtep_ip.ipaddr_v4 = pi->attr->mp_nexthop_global_in;
+ ipaddr_set_v4(&vtep_ip, pi->attr->mp_nexthop_global_in);
break;
case AF_INET6:
- SET_IPADDR_V6(&vtep_ip);
- IPV6_ADDR_COPY(&vtep_ip.ipaddr_v6, &pi->attr->mp_nexthop_global);
+ ipaddr_set_v6(&vtep_ip, &pi->attr->mp_nexthop_global);
break;
}
}
@@ -2058,10 +2054,7 @@ static int update_evpn_type5_route(struct bgp *bgp_vrf, struct bgp_path_info *or
sizeof(struct bgp_route_evpn));
bre->type = OVERLAY_INDEX_GATEWAY_IP;
- SET_IPADDR_V6(&bre->gw_ip);
- memcpy(&bre->gw_ip.ipaddr_v6,
- &src_attr->mp_nexthop_global,
- sizeof(struct in6_addr));
+ ipaddr_set_v6(&bre->gw_ip, &src_attr->mp_nexthop_global);
bgp_attr_set_evpn_overlay(&attr, bre);
}
} else if (src_afi == AFI_IP &&
@@ -2073,9 +2066,7 @@ static int update_evpn_type5_route(struct bgp *bgp_vrf, struct bgp_path_info *or
sizeof(struct bgp_route_evpn));
bre->type = OVERLAY_INDEX_GATEWAY_IP;
- SET_IPADDR_V4(&bre->gw_ip);
- memcpy(&bre->gw_ip.ipaddr_v4, &src_attr->nexthop,
- sizeof(struct in_addr));
+ ipaddr_set_v4(&bre->gw_ip, src_attr->nexthop);
bgp_attr_set_evpn_overlay(&attr, bre);
}
}
@@ -3573,13 +3564,11 @@ static int install_evpn_route_entry_in_vrf(struct bgp *bgp_vrf,
if (bgp_debug_zebra(NULL)) {
struct ipaddr nhip = {};
- if (pi->net->rn->p.family == AF_INET6) {
- SET_IPADDR_V6(&nhip);
- IPV6_ADDR_COPY(&nhip.ipaddr_v6, &pi->attr->mp_nexthop_global);
- } else {
- SET_IPADDR_V4(&nhip);
- IPV4_ADDR_COPY(&nhip.ipaddr_v4, &pi->attr->nexthop);
- }
+ if (pi->net->rn->p.family == AF_INET6)
+ ipaddr_set_v6(&nhip, &pi->attr->mp_nexthop_global);
+ else
+ ipaddr_set_v4(&nhip, pi->attr->nexthop);
+
zlog_debug("... %s pi %s dest %p (l %d) pi %p (l %d, f 0x%x) nh %pIA",
new_pi ? "new" : "update",
bgp_vrf->name_pretty, dest,
@@ -3922,13 +3911,10 @@ int uninstall_evpn_route_entry_in_vrf(struct bgp *bgp_vrf, const struct prefix_e
if (bgp_debug_zebra(NULL)) {
struct ipaddr nhip = {};
- if (pi->net->rn->p.family == AF_INET6) {
- SET_IPADDR_V6(&nhip);
- IPV6_ADDR_COPY(&nhip.ipaddr_v6, &pi->attr->mp_nexthop_global);
- } else {
- SET_IPADDR_V4(&nhip);
- IPV4_ADDR_COPY(&nhip.ipaddr_v4, &pi->attr->nexthop);
- }
+ if (pi->net->rn->p.family == AF_INET6)
+ ipaddr_set_v6(&nhip, &pi->attr->mp_nexthop_global);
+ else
+ ipaddr_set_v4(&nhip, pi->attr->nexthop);
zlog_debug("... delete pi %s dest %p (l %d) pi %p (l %d, f 0x%x) nh %pIA",
bgp_vrf->name_pretty, dest,
@@ -6550,8 +6536,7 @@ void bgp_evpn_handle_router_id_update(struct bgp *bgp, int withdraw)
IS_IPADDR_V4(&bgp_vrf->originator_ip) &&
(bgp_vrf->evpn_info->pip_ip_static.ipaddr_v4.s_addr ==
INADDR_ANY)) {
- SET_IPADDR_V4(&bgp_vrf->evpn_info->pip_ip);
- bgp_vrf->evpn_info->pip_ip.ipaddr_v4 = bgp->router_id;
+ ipaddr_set_v4(&bgp_vrf->evpn_info->pip_ip, bgp->router_id);
/* advertise type-5 routes with
* new nexthop
*/
@@ -8016,8 +8001,7 @@ int bgp_evpn_local_l3vni_add(vni_t l3vni, vrf_id_t vrf_id, struct ethaddr *svi_r
if (bgp_debug_zebra(NULL))
zlog_debug("%s vni %u ifp %s addr %pI6 copy as pip", __func__,
bgp_vrf->l3vni, ifp->name, &addr);
- SET_IPADDR_V6(&bgp_vrf->evpn_info->pip_ip);
- IPV6_ADDR_COPY(&bgp_vrf->evpn_info->pip_ip.ipaddr_v6, &addr);
+ ipaddr_set_v6(&bgp_vrf->evpn_info->pip_ip, &addr);
} else if (ifp)
if (bgp_debug_zebra(NULL))
zlog_debug("%s vni %u ifp %s v6 addr not found, skip pip assignment",
@@ -8550,10 +8534,8 @@ void bgp_evpn_init(struct bgp *bgp)
bgp->evpn_info->advertise_pip = DFLT_BGP_EVPN_ADVERTISE_PIP;
bgp_default = bgp_get_default();
- if (bgp_default) {
- SET_IPADDR_V4(&bgp->evpn_info->pip_ip);
- bgp->evpn_info->pip_ip.ipaddr_v4 = bgp_default->router_id;
- }
+ if (bgp_default)
+ ipaddr_set_v4(&bgp->evpn_info->pip_ip, bgp_default->router_id);
}
}
diff --git a/bgpd/bgp_evpn_mh.c b/bgpd/bgp_evpn_mh.c
index 82c494bdf5..7d6a236846 100644
--- a/bgpd/bgp_evpn_mh.c
+++ b/bgpd/bgp_evpn_mh.c
@@ -51,18 +51,15 @@ static void bgp_evpn_mh_get_vtep_ip(const struct attr *attr, struct ipaddr *vtep
nhfamily = NEXTHOP_FAMILY(attr->mp_nexthop_len);
if (nhfamily == AF_INET) {
- SET_IPADDR_V4(vtep_ip);
if (attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV4 ||
attr->mp_nexthop_len == BGP_ATTR_NHLEN_VPNV4)
- IPV4_ADDR_COPY(&vtep_ip->ipaddr_v4, &attr->mp_nexthop_global_in);
+ ipaddr_set_v4(vtep_ip, attr->mp_nexthop_global_in);
else
- IPV4_ADDR_COPY(&vtep_ip->ipaddr_v4, &attr->nexthop);
+ ipaddr_set_v4(vtep_ip, attr->nexthop);
} else if (nhfamily == AF_INET6) {
- SET_IPADDR_V6(vtep_ip);
- IPV6_ADDR_COPY(&vtep_ip->ipaddr_v6, &attr->mp_nexthop_global);
+ ipaddr_set_v6(vtep_ip, &attr->mp_nexthop_global);
} else {
- SET_IPADDR_V4(vtep_ip);
- IPV4_ADDR_COPY(&vtep_ip->ipaddr_v4, &attr->nexthop);
+ ipaddr_set_v4(vtep_ip, attr->nexthop);
}
}
@@ -78,15 +75,12 @@ bgp_evpn_mh_fill_vtep_ip_from_pi(const struct bgp_path_info *pi,
*/
if (pi->attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV4 ||
pi->attr->mp_nexthop_len == BGP_ATTR_NHLEN_VPNV4) {
- SET_IPADDR_V4(vtep_ip);
- vtep_ip->ipaddr_v4 = pi->attr->mp_nexthop_global_in;
+ ipaddr_set_v4(vtep_ip, pi->attr->mp_nexthop_global_in);
} else if (pi->attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL ||
pi->attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL ||
pi->attr->mp_nexthop_len == BGP_ATTR_NHLEN_VPNV6_GLOBAL ||
pi->attr->mp_nexthop_len == BGP_ATTR_NHLEN_VPNV6_GLOBAL_AND_LL) {
- SET_IPADDR_V6(vtep_ip);
- IPV6_ADDR_COPY(&vtep_ip->ipaddr_v6,
- &pi->attr->mp_nexthop_global);
+ ipaddr_set_v6(vtep_ip, &pi->attr->mp_nexthop_global);
}
}
@@ -236,17 +230,12 @@ static int bgp_evpn_es_route_select_install(struct bgp *bgp,
uint8_t nhfamily = NEXTHOP_FAMILY(old_select->attr->mp_nexthop_len);
if (nhfamily == AF_INET) {
- SET_IPADDR_V4(&vtep_ip);
- IPV4_ADDR_COPY(&vtep_ip.ipaddr_v4,
- &old_select->attr->mp_nexthop_global_in);
+ ipaddr_set_v4(&vtep_ip, old_select->attr->mp_nexthop_global_in);
} else if (nhfamily == AF_INET6) {
- SET_IPADDR_V6(&vtep_ip);
- IPV6_ADDR_COPY(&vtep_ip.ipaddr_v6,
- &old_select->attr->mp_nexthop_global);
+ ipaddr_set_v6(&vtep_ip, &old_select->attr->mp_nexthop_global);
} else {
/* default condition */
- SET_IPADDR_V4(&vtep_ip);
- IPV4_ADDR_COPY(&vtep_ip.ipaddr_v4, &old_select->attr->nexthop);
+ ipaddr_set_v4(&vtep_ip, old_select->attr->nexthop);
}
bgp_evpn_es_vtep_del(bgp, es, vtep_ip, true /*esr*/);
}
@@ -561,13 +550,11 @@ int bgp_evpn_mh_route_update(struct bgp *bgp, struct bgp_evpn_es *es,
if (es) {
struct ipaddr vtep_ip = {};
- if (IS_IPADDR_V4(&es->originator_ip)) {
- SET_IPADDR_V4(&vtep_ip);
- vtep_ip.ipaddr_v4 = attr->mp_nexthop_global_in;
- } else if (IS_IPADDR_V6(&es->originator_ip)) {
- SET_IPADDR_V6(&vtep_ip);
- IPV6_ADDR_COPY(&vtep_ip.ipaddr_v6, &attr->mp_nexthop_global);
- }
+ if (IS_IPADDR_V4(&es->originator_ip))
+ ipaddr_set_v4(&vtep_ip, attr->mp_nexthop_global_in);
+ else if (IS_IPADDR_V6(&es->originator_ip))
+ ipaddr_set_v6(&vtep_ip, &attr->mp_nexthop_global);
+
frrtrace(4, frr_bgp, evpn_mh_local_ead_es_evi_route_upd, &es->esi,
(vpn ? vpn->vni : 0), evp->prefix.route_type, &vtep_ip);
}
@@ -5051,17 +5038,13 @@ static void bgp_evpn_path_nh_link(struct bgp *bgp_vrf, struct bgp_path_info *pi)
memset(&ip, 0, sizeof(ip));
/* copy path attribute's ipv4 or ipv6 address as nexthop field synced to zebra */
if (pi->net->rn->p.family == AF_INET6 || BGP_ATTR_MP_NEXTHOP_LEN_IP6(pi->attr)) {
- SET_IPADDR_V6(&ip);
- memcpy(&ip.ipaddr_v6, &pi->attr->mp_nexthop_global,
- sizeof(ip.ipaddr_v6));
+ ipaddr_set_v6(&ip, &pi->attr->mp_nexthop_global);
} else {
- SET_IPADDR_V4(&ip);
if (pi->attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV4 ||
pi->attr->mp_nexthop_len == BGP_ATTR_NHLEN_VPNV4)
- memcpy(&ip.ipaddr_v4, &pi->attr->mp_nexthop_global_in,
- sizeof(ip.ipaddr_v4));
+ ipaddr_set_v4(&ip, pi->attr->mp_nexthop_global_in);
else
- memcpy(&ip.ipaddr_v4, &pi->attr->nexthop, sizeof(ip.ipaddr_v4));
+ ipaddr_set_v4(&ip, pi->attr->nexthop);
}
nh = bgp_evpn_nh_find(bgp_vrf, &ip);
diff --git a/bgpd/bgp_evpn_private.h b/bgpd/bgp_evpn_private.h
index 25c646a4eb..24dba91c62 100644
--- a/bgpd/bgp_evpn_private.h
+++ b/bgpd/bgp_evpn_private.h
@@ -815,11 +815,9 @@ static inline void build_evpn_type1_prefix(struct prefix_evpn *p, uint32_t eth_t
p->prefix.ead_addr.eth_tag = eth_tag;
/* Set IP address and type based on originator_ip */
if (IS_IPADDR_V4(&originator_ip)) {
- SET_IPADDR_V4(&p->prefix.ead_addr.ip);
- IPV4_ADDR_COPY(&p->prefix.ead_addr.ip.ipaddr_v4, &originator_ip.ipaddr_v4);
+ ipaddr_set_v4(&p->prefix.ead_addr.ip, originator_ip.ipaddr_v4);
} else if (IS_IPADDR_V6(&originator_ip)) {
- SET_IPADDR_V6(&p->prefix.ead_addr.ip);
- IPV6_ADDR_COPY(&p->prefix.ead_addr.ip.ipaddr_v6, &originator_ip.ipaddr_v6);
+ ipaddr_set_v6(&p->prefix.ead_addr.ip, &originator_ip.ipaddr_v6);
} else {
/* IPADDR_NONE - should not happen, but handle gracefully */
p->prefix.ead_addr.ip.ipa_type = IPADDR_NONE;
@@ -864,15 +862,13 @@ evpn_type1_prefix_vni_ip_copy(struct prefix_evpn *vni_p,
if (attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV4 ||
attr->mp_nexthop_len == BGP_ATTR_NHLEN_VPNV4) {
/* IPv4 nexthop */
- SET_IPADDR_V4(&vni_p->prefix.ead_addr.ip);
- IPV4_ADDR_COPY(&vni_p->prefix.ead_addr.ip.ipaddr_v4, &attr->nexthop);
+ ipaddr_set_v4(&vni_p->prefix.ead_addr.ip, attr->nexthop);
} else if (attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL ||
attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL ||
attr->mp_nexthop_len == BGP_ATTR_NHLEN_VPNV6_GLOBAL ||
attr->mp_nexthop_len == BGP_ATTR_NHLEN_VPNV6_GLOBAL_AND_LL) {
/* IPv6 nexthop - use global address */
- SET_IPADDR_V6(&vni_p->prefix.ead_addr.ip);
- IPV6_ADDR_COPY(&vni_p->prefix.ead_addr.ip.ipaddr_v6, &attr->mp_nexthop_global);
+ ipaddr_set_v6(&vni_p->prefix.ead_addr.ip, &attr->mp_nexthop_global);
} else {
/* IPADDR_NONE - should not happen, but handle gracefully */
vni_p->prefix.ead_addr.ip.ipa_type = IPADDR_NONE;
diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c
index 85ab2daacf..e6b8c266ec 100644
--- a/bgpd/bgp_evpn_vty.c
+++ b/bgpd/bgp_evpn_vty.c
@@ -2293,8 +2293,7 @@ static struct bgpevpn *evpn_create_update_vni(struct bgp *bgp, vni_t vni)
/* tenant vrf will be updated when we get local_vni_add from
* zebra
*/
- SET_IPADDR_V4(&orignator_ip);
- orignator_ip.ipaddr_v4 = bgp->router_id;
+ ipaddr_set_v4(&orignator_ip, bgp->router_id);
vpn = bgp_evpn_new(bgp, vni, &orignator_ip, 0, mcast_grp, 0);
}
@@ -2393,13 +2392,10 @@ static void evpn_show_routes_vni_all(struct vty *vty, struct bgp *bgp, int type,
wctx.mac_table = mac_table;
SET_IPADDR_NONE(&wctx.vtep_ip);
if (vtep_ip) {
- if (sockunion_family(vtep_ip) == AF_INET) {
- SET_IPADDR_V4(&wctx.vtep_ip);
- wctx.vtep_ip.ipaddr_v4 = vtep_ip->sin.sin_addr;
- } else if (sockunion_family(vtep_ip) == AF_INET6) {
- SET_IPADDR_V6(&wctx.vtep_ip);
- wctx.vtep_ip.ipaddr_v6 = vtep_ip->sin6.sin6_addr;
- }
+ if (sockunion_family(vtep_ip) == AF_INET)
+ ipaddr_set_v4(&wctx.vtep_ip, vtep_ip->sin.sin_addr);
+ else if (sockunion_family(vtep_ip) == AF_INET6)
+ ipaddr_set_v6(&wctx.vtep_ip, &vtep_ip->sin6.sin6_addr);
}
wctx.json = json;
wctx.detail = detail;
@@ -2427,13 +2423,10 @@ static void evpn_show_routes_vni_all_type_all(struct vty *vty, struct bgp *bgp,
wctx.vty = vty;
SET_IPADDR_NONE(&wctx.vtep_ip);
if (vtep_ip) {
- if (sockunion_family(vtep_ip) == AF_INET) {
- SET_IPADDR_V4(&wctx.vtep_ip);
- wctx.vtep_ip.ipaddr_v4 = vtep_ip->sin.sin_addr;
- } else if (sockunion_family(vtep_ip) == AF_INET6) {
- SET_IPADDR_V6(&wctx.vtep_ip);
- wctx.vtep_ip.ipaddr_v6 = vtep_ip->sin6.sin6_addr;
- }
+ if (sockunion_family(vtep_ip) == AF_INET)
+ ipaddr_set_v4(&wctx.vtep_ip, vtep_ip->sin.sin_addr);
+ else if (sockunion_family(vtep_ip) == AF_INET6)
+ ipaddr_set_v6(&wctx.vtep_ip, &vtep_ip->sin6.sin6_addr);
}
wctx.json = json;
wctx.detail = detail;
@@ -2673,15 +2666,12 @@ static void evpn_show_routes_vni(struct vty *vty, struct bgp *bgp, vni_t vni,
return;
}
- if (_vtep_ip && sockunion_family(_vtep_ip) == AF_INET) {
- SET_IPADDR_V4(&vtep_ip);
- vtep_ip.ipaddr_v4 = _vtep_ip->sin.sin_addr;
- } else if (_vtep_ip && sockunion_family(_vtep_ip) == AF_INET6) {
- SET_IPADDR_V6(&vtep_ip);
- vtep_ip.ipaddr_v6 = _vtep_ip->sin6.sin6_addr;
- } else {
+ if (_vtep_ip && sockunion_family(_vtep_ip) == AF_INET)
+ ipaddr_set_v4(&vtep_ip, _vtep_ip->sin.sin_addr);
+ else if (_vtep_ip && sockunion_family(_vtep_ip) == AF_INET6)
+ ipaddr_set_v6(&vtep_ip, &_vtep_ip->sin6.sin6_addr);
+ else
SET_IPADDR_NONE(&vtep_ip);
- }
/* Walk this VNI's route table and display appropriate routes. */
show_vni_routes(bgp, vpn, vty, type, mac_table, &vtep_ip, json, 0);
@@ -4780,10 +4770,8 @@ DEFPY (bgp_evpn_advertise_pip_ip_mac,
if (IPV4_ADDR_SAME(&ip, &bgp_vrf->evpn_info->pip_ip_static.ipaddr_v4))
return CMD_SUCCESS;
- SET_IPADDR_V4(&bgp_vrf->evpn_info->pip_ip_static);
- bgp_vrf->evpn_info->pip_ip_static.ipaddr_v4 = ip;
- SET_IPADDR_V4(&bgp_vrf->evpn_info->pip_ip);
- bgp_vrf->evpn_info->pip_ip.ipaddr_v4 = ip;
+ ipaddr_set_v4(&bgp_vrf->evpn_info->pip_ip_static, ip);
+ ipaddr_set_v4(&bgp_vrf->evpn_info->pip_ip, ip);
} else {
bgp_vrf->evpn_info->pip_ip_static.ipaddr_v4.s_addr = INADDR_ANY;
/* default instance router-id assignemt */
@@ -6378,8 +6366,7 @@ DEFPY_HIDDEN(test_es_add,
oper_up = true;
else
oper_up = false;
- SET_IPADDR_V4(&vtep_ip);
- vtep_ip.ipaddr_v4 = bgp->router_id;
+ ipaddr_set_v4(&vtep_ip, bgp->router_id);
ret = bgp_evpn_local_es_add(bgp, &esi, vtep_ip, oper_up,
EVPN_MH_DF_PREF_MIN, false);
diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c
index e9cbf7fd70..87f0096a48 100644
--- a/bgpd/bgp_nexthop.c
+++ b/bgpd/bgp_nexthop.c
@@ -571,8 +571,7 @@ bool bgp_nexthop_self(struct bgp *bgp, afi_t afi, uint8_t type,
if (new_afi == AF_INET && hashcount(bgp->tip_hash)) {
memset(&tmp_tip, 0, sizeof(tmp_tip));
- SET_IPADDR_V4(&tmp_tip.addr);
- IPV4_ADDR_COPY(&tmp_tip.addr.ipaddr_v4, &attr->nexthop);
+ ipaddr_set_v4(&tmp_tip.addr, attr->nexthop);
if (bgp_attr_exists(attr, BGP_ATTR_NEXT_HOP)) {
IPV4_ADDR_COPY(&tmp_tip.addr.ipaddr_v4, &attr->nexthop);
@@ -584,8 +583,7 @@ bool bgp_nexthop_self(struct bgp *bgp, afi_t afi, uint8_t type,
(attr->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL) ||
(attr->mp_nexthop_len == BGP_ATTR_NHLEN_VPNV6_GLOBAL) ||
(attr->mp_nexthop_len == BGP_ATTR_NHLEN_VPNV6_GLOBAL_AND_LL)) {
- SET_IPADDR_V6(&tmp_tip.addr);
- IPV6_ADDR_COPY(&tmp_tip.addr.ipaddr_v6, &attr->mp_nexthop_global);
+ ipaddr_set_v6(&tmp_tip.addr, &attr->mp_nexthop_global);
}
tip = hash_lookup(bgp->tip_hash, &tmp_tip);
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 58e31fe088..af2f0f5144 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -8910,20 +8910,14 @@ void bgp_static_update(struct bgp *bgp, const struct prefix *p,
XCALLOC(MTYPE_BGP_EVPN_OVERLAY,
sizeof(struct bgp_route_evpn));
- SET_IPADDR_V4(&bre->gw_ip);
- memcpy(&bre->gw_ip.ipaddr_v4,
- &bgp_static->gatewayIp.u.prefix4,
- IPV4_MAX_BYTELEN);
+ ipaddr_set_v4(&bre->gw_ip, bgp_static->gatewayIp.u.prefix4);
bgp_attr_set_evpn_overlay(&attr, bre);
} else if (bgp_static->gatewayIp.family == AF_INET6) {
struct bgp_route_evpn *bre =
XCALLOC(MTYPE_BGP_EVPN_OVERLAY,
sizeof(struct bgp_route_evpn));
- SET_IPADDR_V6(&bre->gw_ip);
- memcpy(&bre->gw_ip.ipaddr_v6,
- &bgp_static->gatewayIp.u.prefix6,
- IPV6_MAX_BYTELEN);
+ ipaddr_set_v6(&bre->gw_ip, &bgp_static->gatewayIp.u.prefix6);
bgp_attr_set_evpn_overlay(&attr, bre);
}
memcpy(&attr.esi, bgp_static->eth_s_id, sizeof(esi_t));
diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c
index bf95d42b21..9f24f22c6f 100644
--- a/bgpd/bgp_zebra.c
+++ b/bgpd/bgp_zebra.c
@@ -3548,8 +3548,7 @@ static int bgp_zebra_process_local_vni(ZAPI_CALLBACK_ARGS)
* the EVPN VTEP/originator IP.
*/
if (cmd == ZEBRA_VNI_ADD && ipaddr_is_zero(&vtep_ip)) {
- SET_IPADDR_V4(&vtep_ip);
- vtep_ip.ipaddr_v4 = bgp->router_id;
+ ipaddr_set_v4(&vtep_ip, bgp->router_id);
if (BGP_DEBUG(zebra, ZEBRA))
zlog_debug("Rx VNI add with unspecified VTEP IP, using router-id %pIA",
&vtep_ip);
diff --git a/lib/nexthop.c b/lib/nexthop.c
index b1d0dc6d3f..1c968aa82d 100644
--- a/lib/nexthop.c
+++ b/lib/nexthop.c
@@ -1666,13 +1666,11 @@ void nexthop_set_res_info(struct nexthop *nh, uint32_t id, const struct prefix *
nh->res_info = XCALLOC(MTYPE_NH_RESINFO, sizeof(struct nh_res_info));
nh->res_info->id = id;
- if (pfx->family == AF_INET) {
- SET_IPADDR_V4(&nh->res_info->addr);
- nh->res_info->addr.ipaddr_v4 = pfx->u.prefix4;
- } else {
- SET_IPADDR_V6(&nh->res_info->addr);
- nh->res_info->addr.ipaddr_v6 = pfx->u.prefix6;
- }
+ if (pfx->family == AF_INET)
+ ipaddr_set_v4(&nh->res_info->addr, pfx->u.prefix4);
+ else
+ ipaddr_set_v6(&nh->res_info->addr, &pfx->u.prefix6);
+
nh->res_info->pfxlen = pfx->prefixlen;
}
diff --git a/pathd/path_pcep_lib.c b/pathd/path_pcep_lib.c
index 664aebb764..7f6d708cef 100644
--- a/pathd/path_pcep_lib.c
+++ b/pathd/path_pcep_lib.c
@@ -1133,19 +1133,15 @@ void pcep_lib_parse_metric(struct path *path, struct pcep_object_metric *obj)
void pcep_lib_parse_endpoints_ipv4(struct path *path,
struct pcep_object_endpoints_ipv4 *obj)
{
- SET_IPADDR_V4(&path->pcc_addr);
- path->pcc_addr.ipaddr_v4 = obj->src_ipv4;
- SET_IPADDR_V4(&path->nbkey.endpoint);
- path->nbkey.endpoint.ipaddr_v4 = obj->dst_ipv4;
+ ipaddr_set_v4(&path->pcc_addr, obj->src_ipv4);
+ ipaddr_set_v4(&path->nbkey.endpoint, obj->dst_ipv4);
}
void pcep_lib_parse_endpoints_ipv6(struct path *path,
struct pcep_object_endpoints_ipv6 *obj)
{
- SET_IPADDR_V6(&path->pcc_addr);
- path->pcc_addr.ipaddr_v6 = obj->src_ipv6;
- SET_IPADDR_V6(&path->nbkey.endpoint);
- path->nbkey.endpoint.ipaddr_v6 = obj->dst_ipv6;
+ ipaddr_set_v6(&path->pcc_addr, &obj->src_ipv6);
+ ipaddr_set_v6(&path->nbkey.endpoint, &obj->dst_ipv6);
}
void pcep_lib_parse_vendor_info(struct path *path,
diff --git a/staticd/static_srv6.c b/staticd/static_srv6.c
index 35456897fc..377802d1ec 100644
--- a/staticd/static_srv6.c
+++ b/staticd/static_srv6.c
@@ -540,8 +540,7 @@ void static_srv6_neigh_add(struct interface *ifp, struct in6_addr *addr, uint32_
"%s: Requesting neighbor discovery for STALE neighbor %pI6 on interface %s (index %u)",
__func__, addr, ifp->name, ifp->ifindex);
- SET_IPADDR_V6(&ipaddr);
- ipaddr.ipaddr_v6 = *addr;
+ ipaddr_set_v6(&ipaddr, addr);
static_zebra_send_neigh_discovery_req(ifp, &ipaddr);
}
diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c
index d13ee0e7a7..de2f12b2ca 100644
--- a/zebra/if_netlink.c
+++ b/zebra/if_netlink.c
@@ -452,13 +452,11 @@ static int netlink_extract_gre_info(struct rtattr *link_data, struct zebra_l2inf
frrtrace(1, frr_zebra, if_netlink_parse_error, 3);
} else if (ipv6) {
- SET_IPADDR_V6(&gre_info->vtep_ip_remote);
- IPV6_ADDR_COPY(&gre_info->vtep_ip_remote.ipaddr_v6,
- (struct in6_addr *)RTA_DATA(attr[IFLA_GRE_REMOTE]));
+ ipaddr_set_v6(&gre_info->vtep_ip_remote,
+ (struct in6_addr *)RTA_DATA(attr[IFLA_GRE_REMOTE]));
} else {
- SET_IPADDR_V4(&gre_info->vtep_ip_remote);
- gre_info->vtep_ip_remote.ipaddr_v4 =
- *(struct in_addr *)RTA_DATA(attr[IFLA_GRE_REMOTE]);
+ ipaddr_set_v4(&gre_info->vtep_ip_remote,
+ *(struct in_addr *)RTA_DATA(attr[IFLA_GRE_REMOTE]));
}
if (!attr[IFLA_GRE_LINK]) {
@@ -524,15 +522,14 @@ static int netlink_extract_vxlan_info(struct rtattr *link_data,
if (attr[IFLA_VXLAN_LOCAL]) {
- vxl_info->vtep_ip.ipaddr_v4 = *(struct in_addr *)RTA_DATA(attr[IFLA_VXLAN_LOCAL]);
- SET_IPADDR_V4(&vxl_info->vtep_ip);
+ ipaddr_set_v4(&vxl_info->vtep_ip,
+ *(struct in_addr *)RTA_DATA(attr[IFLA_VXLAN_LOCAL]));
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug("IFLA_VXLAN_LOCAL VXLAN IF message, local address V4: %pIA",
&vxl_info->vtep_ip);
} else if (attr[IFLA_VXLAN_LOCAL6]) {
- IPV6_ADDR_COPY(&vxl_info->vtep_ip.ipaddr_v6,
- (struct in6_addr *)RTA_DATA(attr[IFLA_VXLAN_LOCAL6]));
- SET_IPADDR_V6(&vxl_info->vtep_ip);
+ ipaddr_set_v6(&vxl_info->vtep_ip,
+ (struct in6_addr *)RTA_DATA(attr[IFLA_VXLAN_LOCAL6]));
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug("IFLA_VXLAN_LOCAL VXLAN IF message, local address V6: %pIA",
&vxl_info->vtep_ip);
diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c
index 257fb8e705..d8195a770d 100644
--- a/zebra/zebra_vty.c
+++ b/zebra/zebra_vty.c
@@ -3412,13 +3412,10 @@ DEFPY (show_evpn_mac_vni_all_vtep,
bool uj = use_json(argc, argv);
if (ip) {
- if (sockunion_family(ip) == AF_INET) {
- SET_IPADDR_V4(&vtep_ip);
- vtep_ip.ipaddr_v4.s_addr = sockunion2ip(ip);
- } else {
- SET_IPADDR_V6(&vtep_ip);
- memcpy(&vtep_ip.ipaddr_v6, &ip->sin6.sin6_addr, sizeof(struct in6_addr));
- }
+ if (sockunion_family(ip) == AF_INET)
+ ipaddr_set_v4(&vtep_ip, ip->sin.sin_addr);
+ else
+ ipaddr_set_v6(&vtep_ip, &ip->sin6.sin6_addr);
}
if (IS_IPADDR_NONE(&vtep_ip)) {
@@ -3481,13 +3478,10 @@ DEFPY (show_evpn_mac_vni_vtep,
bool uj = use_json(argc, argv);
if (ip) {
- if (sockunion_family(ip) == AF_INET) {
- SET_IPADDR_V4(&vtep_ip);
- vtep_ip.ipaddr_v4.s_addr = sockunion2ip(ip);
- } else {
- SET_IPADDR_V6(&vtep_ip);
- memcpy(&vtep_ip.ipaddr_v6, &ip->sin6.sin6_addr, sizeof(struct in6_addr));
- }
+ if (sockunion_family(ip) == AF_INET)
+ ipaddr_set_v4(&vtep_ip, ip->sin.sin_addr);
+ else
+ ipaddr_set_v6(&vtep_ip, &ip->sin6.sin6_addr);
}
if (IS_IPADDR_NONE(&vtep_ip)) {
@@ -3682,13 +3676,10 @@ DEFPY (show_evpn_neigh_vni_vtep,
bool uj = use_json(argc, argv);
if (ip) {
- if (sockunion_family(ip) == AF_INET) {
- SET_IPADDR_V4(&vtep_ip);
- vtep_ip.ipaddr_v4.s_addr = sockunion2ip(ip);
- } else {
- SET_IPADDR_V6(&vtep_ip);
- memcpy(&vtep_ip.ipaddr_v6, &ip->sin6.sin6_addr, sizeof(struct in6_addr));
- }
+ if (sockunion_family(ip) == AF_INET)
+ ipaddr_set_v4(&vtep_ip, ip->sin.sin_addr);
+ else
+ ipaddr_set_v6(&vtep_ip, &ip->sin6.sin6_addr);
} else {
SET_IPADDR_NONE(&vtep_ip);
}