summaryrefslogtreecommitdiff
path: root/zebra/if_netlink.c
diff options
context:
space:
mode:
authorChirag Shah <chirag@cumulusnetworks.com>2018-03-06 12:50:32 -0800
committerChirag Shah <chirag@cumulusnetworks.com>2018-03-08 12:44:19 -0800
commitb0fa6f6a1060f19fe8e379c50d4387b9c5656b57 (patch)
tree9d1a1a00ba3908b799b086c873022b0ca4584c23 /zebra/if_netlink.c
parent4012dd88800d59e875600b960683b24fc8e3b65d (diff)
zebra: set vrf as loopback upon interface add
Move setting vrf loopback flag on ifp after zebra vrf type is set (ziftype). Zebra connected not to announce unnumbered for VRF interface (similar to loopback). Ticket:CM-19914 Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com
Diffstat (limited to 'zebra/if_netlink.c')
-rw-r--r--zebra/if_netlink.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c
index 44f87f9453..bb0a0e052e 100644
--- a/zebra/if_netlink.c
+++ b/zebra/if_netlink.c
@@ -649,8 +649,6 @@ static int netlink_interface(struct sockaddr_nl *snl, struct nlmsghdr *h,
ifp = if_get_by_name(name, vrf_id, 0);
set_ifindex(ifp, ifi->ifi_index, zns);
ifp->flags = ifi->ifi_flags & 0x0000fffff;
- if (IS_ZEBRA_IF_VRF(ifp))
- SET_FLAG(ifp->status, ZEBRA_INTERFACE_VRF_LOOPBACK);
ifp->mtu6 = ifp->mtu = *(uint32_t *)RTA_DATA(tb[IFLA_MTU]);
ifp->metric = 0;
ifp->speed = get_iflink_speed(ifp);
@@ -661,6 +659,8 @@ static int netlink_interface(struct sockaddr_nl *snl, struct nlmsghdr *h,
/* Set zebra interface type */
zebra_if_set_ziftype(ifp, zif_type, zif_slave_type);
+ if (IS_ZEBRA_IF_VRF(ifp))
+ SET_FLAG(ifp->status, ZEBRA_INTERFACE_VRF_LOOPBACK);
/* Update link. */
zebra_if_update_link(ifp, link_ifindex);
@@ -1143,15 +1143,15 @@ int netlink_link_change(struct sockaddr_nl *snl, struct nlmsghdr *h,
/* Update interface information. */
set_ifindex(ifp, ifi->ifi_index, zns);
ifp->flags = ifi->ifi_flags & 0x0000fffff;
- if (IS_ZEBRA_IF_VRF(ifp))
- SET_FLAG(ifp->status,
- ZEBRA_INTERFACE_VRF_LOOPBACK);
ifp->mtu6 = ifp->mtu = *(int *)RTA_DATA(tb[IFLA_MTU]);
ifp->metric = 0;
ifp->ptm_status = ZEBRA_PTM_STATUS_UNKNOWN;
/* Set interface type */
zebra_if_set_ziftype(ifp, zif_type, zif_slave_type);
+ if (IS_ZEBRA_IF_VRF(ifp))
+ SET_FLAG(ifp->status,
+ ZEBRA_INTERFACE_VRF_LOOPBACK);
/* Update link. */
zebra_if_update_link(ifp, link_ifindex);