diff options
Diffstat (limited to 'zebra')
| -rw-r--r-- | zebra/connected.c | 4 | ||||
| -rw-r--r-- | zebra/rib.h | 4 | ||||
| -rw-r--r-- | zebra/rt_netlink.c | 6 | ||||
| -rw-r--r-- | zebra/zebra_rib.c | 8 | ||||
| -rw-r--r-- | zebra/zserv.c | 10 | 
5 files changed, 17 insertions, 15 deletions
diff --git a/zebra/connected.c b/zebra/connected.c index 8db2d367..f699b147 100644 --- a/zebra/connected.c +++ b/zebra/connected.c @@ -343,7 +343,7 @@ connected_up_ipv6 (struct interface *ifp, struct connected *ifc)  #endif    rib_add_ipv6 (ZEBRA_ROUTE_CONNECT, 0, &p, NULL, ifp->ifindex, RT_TABLE_MAIN, -                ifp->metric, 0); +                ifp->metric, 0, SAFI_UNICAST);    rib_update ();  } @@ -417,7 +417,7 @@ connected_down_ipv6 (struct interface *ifp, struct connected *ifc)    if (IN6_IS_ADDR_UNSPECIFIED (&p.prefix))      return; -  rib_delete_ipv6 (ZEBRA_ROUTE_CONNECT, 0, &p, NULL, ifp->ifindex, 0); +  rib_delete_ipv6 (ZEBRA_ROUTE_CONNECT, 0, &p, NULL, ifp->ifindex, 0, SAFI_UNICAST);    rib_update ();  } diff --git a/zebra/rib.h b/zebra/rib.h index 27a2de69..2872fc03 100644 --- a/zebra/rib.h +++ b/zebra/rib.h @@ -280,11 +280,11 @@ static_delete_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,  extern int  rib_add_ipv6 (int type, int flags, struct prefix_ipv6 *p,  	      struct in6_addr *gate, unsigned int ifindex, u_int32_t vrf_id, -	      u_int32_t metric, u_char distance); +	      u_int32_t metric, u_char distance, safi_t safi);  extern int  rib_delete_ipv6 (int type, int flags, struct prefix_ipv6 *p, -		 struct in6_addr *gate, unsigned int ifindex, u_int32_t vrf_id); +		 struct in6_addr *gate, unsigned int ifindex, u_int32_t vrf_id, safi_t safi);  extern struct rib *rib_lookup_ipv6 (struct in6_addr *); diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index 8e1285db..f48df2bf 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -734,7 +734,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 */ @@ -895,9 +895,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, metric, 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 */ diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index a366cf1f..21878aa6 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -2293,7 +2293,7 @@ rib_bogus_ipv6 (int type, struct prefix_ipv6 *p,  int  rib_add_ipv6 (int type, int flags, struct prefix_ipv6 *p,  	      struct in6_addr *gate, unsigned int ifindex, u_int32_t vrf_id, -	      u_int32_t metric, u_char distance) +	      u_int32_t metric, u_char distance, safi_t safi)  {    struct rib *rib;    struct rib *same = NULL; @@ -2302,7 +2302,7 @@ rib_add_ipv6 (int type, int flags, struct prefix_ipv6 *p,    struct nexthop *nexthop;    /* Lookup table.  */ -  table = vrf_table (AFI_IP6, SAFI_UNICAST, 0); +  table = vrf_table (AFI_IP6, safi, 0);    if (! table)      return 0; @@ -2387,7 +2387,7 @@ rib_add_ipv6 (int type, int flags, struct prefix_ipv6 *p,  /* XXX factor with rib_delete_ipv6 */  int  rib_delete_ipv6 (int type, int flags, struct prefix_ipv6 *p, -		 struct in6_addr *gate, unsigned int ifindex, u_int32_t vrf_id) +		 struct in6_addr *gate, unsigned int ifindex, u_int32_t vrf_id, safi_t safi)  {    struct route_table *table;    struct route_node *rn; @@ -2402,7 +2402,7 @@ rib_delete_ipv6 (int type, int flags, struct prefix_ipv6 *p,    apply_mask_ipv6 (p);    /* Lookup table.  */ -  table = vrf_table (AFI_IP6, SAFI_UNICAST, 0); +  table = vrf_table (AFI_IP6, safi, 0);    if (! table)      return 0; diff --git a/zebra/zserv.c b/zebra/zserv.c index 310c6ce6..672dee88 100644 --- a/zebra/zserv.c +++ b/zebra/zserv.c @@ -937,6 +937,7 @@ zread_ipv6_add (struct zserv *client, u_short length)    api.type = stream_getc (s);    api.flags = stream_getc (s);    api.message = stream_getc (s); +  api.safi = stream_getw (s);    /* IPv4 prefix. */    memset (&p, 0, sizeof (struct prefix_ipv6)); @@ -978,10 +979,10 @@ zread_ipv6_add (struct zserv *client, u_short length)    if (IN6_IS_ADDR_UNSPECIFIED (&nexthop))      rib_add_ipv6 (api.type, api.flags, &p, NULL, ifindex, zebrad.rtm_table_default, api.metric, -		  api.distance); +		  api.distance, api.safi);    else      rib_add_ipv6 (api.type, api.flags, &p, &nexthop, ifindex, zebrad.rtm_table_default, api.metric, -		  api.distance); +		  api.distance, api.safi);    return 0;  } @@ -1004,6 +1005,7 @@ zread_ipv6_delete (struct zserv *client, u_short length)    api.type = stream_getc (s);    api.flags = stream_getc (s);    api.message = stream_getc (s); +  api.safi = stream_getw (s);    /* IPv4 prefix. */    memset (&p, 0, sizeof (struct prefix_ipv6)); @@ -1043,9 +1045,9 @@ zread_ipv6_delete (struct zserv *client, u_short length)      api.metric = 0;    if (IN6_IS_ADDR_UNSPECIFIED (&nexthop)) -    rib_delete_ipv6 (api.type, api.flags, &p, NULL, ifindex, client->rtm_table); +    rib_delete_ipv6 (api.type, api.flags, &p, NULL, ifindex, client->rtm_table, api.safi);    else -    rib_delete_ipv6 (api.type, api.flags, &p, &nexthop, ifindex, client->rtm_table); +    rib_delete_ipv6 (api.type, api.flags, &p, &nexthop, ifindex, client->rtm_table, api.safi);    return 0;  }  | 
