]> git.puffer.fish Git - mirror/frr.git/commitdiff
Zebra: Fix vrf setting based on netlink messages
authorDon Slice <dslice@cumulusnetworks.com>
Fri, 19 Feb 2016 19:31:16 +0000 (19:31 +0000)
committerDon Slice <dslice@cumulusnetworks.com>
Fri, 19 Feb 2016 19:31:16 +0000 (19:31 +0000)
Adjusted application of vrf_id as interfaces are handled via netlink message.

Ticket: CM-9278
Signed-off-by: Don Slice
Reviewed-by: Donald Sharp
zebra/rt_netlink.c

index 61dd8b620e4d0bb17e577cdb61dc886d3c80f78c..ea3c45c778020c022451b223c35b5bda84ade423 100644 (file)
@@ -577,19 +577,6 @@ netlink_vrf_change (struct nlmsghdr *h, struct rtattr *tb, const char *name)
     }
 }
 
-static char *
-parse_link_kind (struct rtattr *tb)
-{
-  struct rtattr *linkinfo[IFLA_INFO_MAX+1];
-
-  memset (linkinfo, 0, sizeof(struct rtattr *)*(IFLA_INFO_MAX+1));
-  parse_rtattr_nested(linkinfo, IFLA_INFO_MAX, tb);
-
-  if (linkinfo[IFLA_INFO_KIND])
-    return RTA_DATA(linkinfo[IFLA_INFO_KIND]);
-
-  return NULL;
-}
 /* Called from interface_lookup_netlink().  This function is only used
    during bootstrap. */
 static int
@@ -637,9 +624,12 @@ netlink_interface (struct sockaddr_nl *snl, struct nlmsghdr *h,
 
   if (tb[IFLA_LINKINFO])
     {
-      kind = parse_link_kind(tb[IFLA_LINKINFO]);
+      memset (linkinfo, 0, sizeof linkinfo);
       parse_rtattr_nested(linkinfo, IFLA_INFO_MAX, tb[IFLA_LINKINFO]);
 
+      if (linkinfo[IFLA_INFO_KIND])
+        kind = RTA_DATA(linkinfo[IFLA_INFO_KIND]);
+
       if (linkinfo[IFLA_INFO_SLAVE_KIND])
          slave_kind = RTA_DATA(linkinfo[IFLA_INFO_SLAVE_KIND]);
 
@@ -1262,9 +1252,12 @@ netlink_link_change (struct sockaddr_nl *snl, struct nlmsghdr *h,
 
   if (tb[IFLA_LINKINFO])
     {
-      kind = parse_link_kind(tb[IFLA_LINKINFO]);
+      memset (linkinfo, 0, sizeof linkinfo);
       parse_rtattr_nested(linkinfo, IFLA_INFO_MAX, tb[IFLA_LINKINFO]);
 
+      if (linkinfo[IFLA_INFO_KIND])
+        kind = RTA_DATA(linkinfo[IFLA_INFO_KIND]);
+
       if (linkinfo[IFLA_INFO_SLAVE_KIND])
           slave_kind = RTA_DATA(linkinfo[IFLA_INFO_SLAVE_KIND]);