diff options
Diffstat (limited to 'zebra/rt_netlink.c')
-rw-r--r-- | zebra/rt_netlink.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index 2cde50a1..73097bf6 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -732,7 +732,7 @@ netlink_routing_table (struct sockaddr_nl *snl, struct nlmsghdr *h) if (!tb[RTA_MULTIPATH]) rib_add_ipv4 (ZEBRA_ROUTE_KERNEL, flags, &p, gate, src, index, - table, metric, 0); + table, metric, 0, SAFI_UNICAST); else { /* This is a multipath route */ @@ -786,7 +786,7 @@ 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); + rib_add_ipv4_multipath (&p, rib, SAFI_UNICAST); } } #ifdef HAVE_IPV6 @@ -798,7 +798,7 @@ netlink_routing_table (struct sockaddr_nl *snl, struct nlmsghdr *h) p.prefixlen = rtm->rtm_dst_len; rib_add_ipv6 (ZEBRA_ROUTE_KERNEL, flags, &p, gate, index, table, - metric, 0); + metric, 0, SAFI_UNICAST); } #endif /* HAVE_IPV6 */ @@ -833,6 +833,7 @@ netlink_route_change (struct sockaddr_nl *snl, struct nlmsghdr *h) int index; int table; int metric; + void *dest; void *gate; void *src; @@ -909,7 +910,7 @@ netlink_route_change (struct sockaddr_nl *snl, struct nlmsghdr *h) if (tb[RTA_PREFSRC]) src = RTA_DATA (tb[RTA_PREFSRC]); - if (tb[RTA_PRIORITY]) + if (h->nlmsg_type == RTM_NEWROUTE && tb[RTA_PRIORITY]) metric = *(int *) RTA_DATA(tb[RTA_PRIORITY]); if (rtm->rtm_family == AF_INET) @@ -933,7 +934,7 @@ netlink_route_change (struct sockaddr_nl *snl, struct nlmsghdr *h) { if (!tb[RTA_MULTIPATH]) rib_add_ipv4 (ZEBRA_ROUTE_KERNEL, 0, &p, gate, src, index, table, - metric, 0); + metric, 0, SAFI_UNICAST); else { /* This is a multipath route */ @@ -987,11 +988,11 @@ netlink_route_change (struct sockaddr_nl *snl, struct nlmsghdr *h) if (rib->nexthop_num == 0) XFREE (MTYPE_RIB, rib); else - rib_add_ipv4_multipath (&p, rib); + rib_add_ipv4_multipath (&p, rib, SAFI_UNICAST); } } else - rib_delete_ipv4 (ZEBRA_ROUTE_KERNEL, 0, &p, gate, index, table); + rib_delete_ipv4 (ZEBRA_ROUTE_KERNEL, 0, &p, gate, index, table, SAFI_UNICAST); } #ifdef HAVE_IPV6 @@ -1017,9 +1018,9 @@ netlink_route_change (struct sockaddr_nl *snl, struct nlmsghdr *h) } if (h->nlmsg_type == RTM_NEWROUTE) - rib_add_ipv6 (ZEBRA_ROUTE_KERNEL, 0, &p, gate, index, table, 0, 0); + rib_add_ipv6 (ZEBRA_ROUTE_KERNEL, 0, &p, gate, index, table, metric, 0, SAFI_UNICAST); else - rib_delete_ipv6 (ZEBRA_ROUTE_KERNEL, 0, &p, gate, index, table); + rib_delete_ipv6 (ZEBRA_ROUTE_KERNEL, 0, &p, gate, index, table, SAFI_UNICAST); } #endif /* HAVE_IPV6 */ @@ -1953,11 +1954,7 @@ extern struct thread_master *master; static int kernel_read (struct thread *thread) { - int ret; - int sock; - - sock = THREAD_FD (thread); - ret = netlink_parse_info (netlink_information_fetch, &netlink); + netlink_parse_info (netlink_information_fetch, &netlink); thread_add_read (zebrad.master, kernel_read, NULL, netlink.sock); return 0; |