From: Anuradha Karuppiah Date: Tue, 27 Oct 2020 17:50:46 +0000 (-0700) Subject: zebra: skip NDA_DST attr if NHG is present X-Git-Tag: base_7.6~165^2~6 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=80e19eb71fae96c16122fdf853a5bbb5dac79bc3;p=matthieu%2Ffrr.git zebra: skip NDA_DST attr if NHG is present NHG and DST (VTEP-IP) are mutually exclusive attributes. If DST is present the kernel ignores NHG. Signed-off-by: Anuradha Karuppiah --- diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index 3402edf467..b737208f47 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -2761,10 +2761,6 @@ static ssize_t netlink_neigh_update_msg_encode( return 0; } - if (nhg_id) { - if (!nl_attr_put32(&req->n, datalen, NDA_NH_ID, nhg_id)) - return 0; - } if (nfy) { if (!nl_attr_put(&req->n, datalen, NDA_NOTIFY, &nfy_flags, sizeof(nfy_flags))) @@ -2777,9 +2773,16 @@ static ssize_t netlink_neigh_update_msg_encode( return 0; } - ipa_len = IS_IPADDR_V4(ip) ? IPV4_MAX_BYTELEN : IPV6_MAX_BYTELEN; - if (!nl_attr_put(&req->n, datalen, NDA_DST, &ip->ip.addr, ipa_len)) - return 0; + if (nhg_id) { + if (!nl_attr_put32(&req->n, datalen, NDA_NH_ID, nhg_id)) + return 0; + } else { + ipa_len = + IS_IPADDR_V4(ip) ? IPV4_MAX_BYTELEN : IPV6_MAX_BYTELEN; + if (!nl_attr_put(&req->n, datalen, NDA_DST, &ip->ip.addr, + ipa_len)) + return 0; + } if (op == DPLANE_OP_MAC_INSTALL || op == DPLANE_OP_MAC_DELETE) { vlanid_t vid = dplane_ctx_mac_get_vlan(ctx);