diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-08-24 02:20:47 -0400 | 
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-09-01 07:20:18 -0400 | 
| commit | 3b1098beed5c294746a9203b5de3c9da82c25d76 (patch) | |
| tree | 3699ec6b1ddfce59ed491c795731b1b6d305f497 /zebra/rt_netlink.c | |
| parent | 616368ed1ea8165beb2b1ba137b474ee794046d5 (diff) | |
zebra: Refactor rib_add_ipv[4|6] to a common function
rib_add_ipv[4|6] both were essentially the same function
combine and refactor everywhere.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'zebra/rt_netlink.c')
| -rw-r--r-- | zebra/rt_netlink.c | 31 | 
1 files changed, 16 insertions, 15 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index dc3aa2f6bb..be291c0c9b 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -860,6 +860,7 @@ netlink_routing_table (struct sockaddr_nl *snl, struct nlmsghdr *h,    struct rtmsg *rtm;    struct rtattr *tb[RTA_MAX + 1];    u_char flags = 0; +  struct prefix p;    char anyaddr[16] = { 0 }; @@ -952,14 +953,14 @@ netlink_routing_table (struct sockaddr_nl *snl, struct nlmsghdr *h,    if (rtm->rtm_family == AF_INET)      { -      struct prefix_ipv4 p;        p.family = AF_INET; -      memcpy (&p.prefix, dest, 4); +      memcpy (&p.u.prefix4, dest, 4);        p.prefixlen = rtm->rtm_dst_len;        if (!tb[RTA_MULTIPATH]) -          rib_add_ipv4 (ZEBRA_ROUTE_KERNEL, 0, flags, &p, gate, src, index, -                        vrf_id, table, metric, mtu, 0, SAFI_UNICAST); +	rib_add (AFI_IP, SAFI_UNICAST, vrf_id, ZEBRA_ROUTE_KERNEL, +		 0, flags, &p, gate, src, index, +		 table, metric, mtu, 0);        else          {            /* This is a multipath route */ @@ -1016,21 +1017,19 @@ netlink_routing_table (struct sockaddr_nl *snl, struct nlmsghdr *h,            if (rib->nexthop_num == 0)              XFREE (MTYPE_RIB, rib);            else -            rib_add_ipv4_multipath (&p, rib, SAFI_UNICAST); +            rib_add_ipv4_multipath ((struct prefix_ipv4 *)&p, rib, SAFI_UNICAST);          }      } -#ifdef HAVE_IPV6    if (rtm->rtm_family == AF_INET6)      { -      struct prefix_ipv6 p;        p.family = AF_INET6; -      memcpy (&p.prefix, dest, 16); +      memcpy (&p.u.prefix6, dest, 16);        p.prefixlen = rtm->rtm_dst_len; -      rib_add_ipv6 (ZEBRA_ROUTE_KERNEL, 0, flags, &p, gate, index, vrf_id, -                    table, metric, mtu, 0, SAFI_UNICAST); +      rib_add (AFI_IP6, SAFI_UNICAST, vrf_id, ZEBRA_ROUTE_KERNEL, +	       0, flags, &p, gate, src, index, +	       table, metric, mtu, 0);      } -#endif /* HAVE_IPV6 */    return 0;  } @@ -1193,8 +1192,9 @@ netlink_route_change (struct sockaddr_nl *snl, struct nlmsghdr *h,        if (h->nlmsg_type == RTM_NEWROUTE)          {            if (!tb[RTA_MULTIPATH]) -            rib_add_ipv4 (ZEBRA_ROUTE_KERNEL, 0, 0, (struct prefix_ipv4 *)&p, gate, src, index, vrf_id, -                          table, metric, mtu, 0, SAFI_UNICAST); +            rib_add (AFI_IP, SAFI_UNICAST, vrf_id, ZEBRA_ROUTE_KERNEL, +		     0, 0, &p, gate, src, index, +		     table, metric, mtu, 0);            else              {                /* This is a multipath route */ @@ -1277,8 +1277,9 @@ netlink_route_change (struct sockaddr_nl *snl, struct nlmsghdr *h,          }        if (h->nlmsg_type == RTM_NEWROUTE) -        rib_add_ipv6 (ZEBRA_ROUTE_KERNEL, 0, 0, (struct prefix_ipv6 *)&p, gate, index, vrf_id, -                      table, metric, mtu, 0, SAFI_UNICAST); +        rib_add (AFI_IP6, SAFI_UNICAST, vrf_id, ZEBRA_ROUTE_KERNEL, +		 0, 0, &p, gate, src, index, +		 table, metric, mtu, 0);        else          rib_delete (AFI_IP6, SAFI_UNICAST, vrf_id, ZEBRA_ROUTE_KERNEL,  		    0, zebra_flags, &p, gate, index, table);  | 
