From 80e19eb71fae96c16122fdf853a5bbb5dac79bc3 Mon Sep 17 00:00:00 2001 From: Anuradha Karuppiah Date: Tue, 27 Oct 2020 10:50:46 -0700 Subject: [PATCH] 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 --- zebra/rt_netlink.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) 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);