[zebra] linux policy routing support with ipv6

Quagga support linux policy routing (ip route ... table $X) with zebra.conf
table $X option.  It works fine on ipv4.  On ipv6 the parameter is ignored
(table 0 is used).

* zebra/...: Pass appropriate table arg to rib_{add,delete}_ipv6
This commit is contained in:
Mathieu Goessens 2009-06-23 15:59:45 +01:00 committed by Paul Jakma
parent ba803bd51c
commit d13c3b4fcf
3 changed files with 7 additions and 7 deletions

View File

@ -342,7 +342,7 @@ connected_up_ipv6 (struct interface *ifp, struct connected *ifc)
return; return;
#endif #endif
rib_add_ipv6 (ZEBRA_ROUTE_CONNECT, 0, &p, NULL, ifp->ifindex, 0, rib_add_ipv6 (ZEBRA_ROUTE_CONNECT, 0, &p, NULL, ifp->ifindex, RT_TABLE_MAIN,
ifp->metric, 0); ifp->metric, 0);
rib_update (); rib_update ();

View File

@ -889,9 +889,9 @@ netlink_route_change (struct sockaddr_nl *snl, struct nlmsghdr *h)
} }
if (h->nlmsg_type == RTM_NEWROUTE) if (h->nlmsg_type == RTM_NEWROUTE)
rib_add_ipv6 (ZEBRA_ROUTE_KERNEL, 0, &p, gate, index, 0, 0, 0); rib_add_ipv6 (ZEBRA_ROUTE_KERNEL, 0, &p, gate, index, table, 0, 0);
else else
rib_delete_ipv6 (ZEBRA_ROUTE_KERNEL, 0, &p, gate, index, 0); rib_delete_ipv6 (ZEBRA_ROUTE_KERNEL, 0, &p, gate, index, table);
} }
#endif /* HAVE_IPV6 */ #endif /* HAVE_IPV6 */

View File

@ -964,10 +964,10 @@ zread_ipv6_add (struct zserv *client, u_short length)
api.metric = 0; api.metric = 0;
if (IN6_IS_ADDR_UNSPECIFIED (&nexthop)) if (IN6_IS_ADDR_UNSPECIFIED (&nexthop))
rib_add_ipv6 (api.type, api.flags, &p, NULL, ifindex, 0, api.metric, rib_add_ipv6 (api.type, api.flags, &p, NULL, ifindex, zebrad.rtm_table_default, api.metric,
api.distance); api.distance);
else else
rib_add_ipv6 (api.type, api.flags, &p, &nexthop, ifindex, 0, api.metric, rib_add_ipv6 (api.type, api.flags, &p, &nexthop, ifindex, zebrad.rtm_table_default, api.metric,
api.distance); api.distance);
return 0; return 0;
} }
@ -1030,9 +1030,9 @@ zread_ipv6_delete (struct zserv *client, u_short length)
api.metric = 0; api.metric = 0;
if (IN6_IS_ADDR_UNSPECIFIED (&nexthop)) if (IN6_IS_ADDR_UNSPECIFIED (&nexthop))
rib_delete_ipv6 (api.type, api.flags, &p, NULL, ifindex, 0); rib_delete_ipv6 (api.type, api.flags, &p, NULL, ifindex, client->rtm_table);
else else
rib_delete_ipv6 (api.type, api.flags, &p, &nexthop, ifindex, 0); rib_delete_ipv6 (api.type, api.flags, &p, &nexthop, ifindex, client->rtm_table);
return 0; return 0;
} }