summaryrefslogtreecommitdiff
path: root/zebra/zebra_rib.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zebra_rib.c')
-rw-r--r--zebra/zebra_rib.c97
1 files changed, 49 insertions, 48 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index a69dead1a6..fc34100b7c 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -2787,7 +2787,7 @@ rib_delete_ipv4 (int type, u_short instance, int flags, struct prefix_ipv4 *p,
/* Install static route into rib. */
static void
-static_install_ipv4 (struct prefix *p, struct static_ipv4 *si)
+static_install_ipv4 (struct prefix *p, struct static_route *si)
{
struct rib *rib;
struct route_node *rn;
@@ -2822,14 +2822,14 @@ static_install_ipv4 (struct prefix *p, struct static_ipv4 *si)
switch (si->type)
{
case STATIC_IPV4_GATEWAY:
- nexthop_ipv4_add (rib, &si->gate.ipv4, NULL);
+ nexthop_ipv4_add (rib, &si->addr.ipv4, NULL);
nh_p.family = AF_INET;
nh_p.prefixlen = IPV4_MAX_BITLEN;
- nh_p.u.prefix4 = si->gate.ipv4;
+ nh_p.u.prefix4 = si->addr.ipv4;
zebra_register_rnh_static_nh(&nh_p, rn);
break;
case STATIC_IPV4_IFNAME:
- nexthop_ifname_add (rib, si->gate.ifname);
+ nexthop_ifname_add (rib, si->ifname);
break;
case STATIC_IPV4_BLACKHOLE:
nexthop_blackhole_add (rib);
@@ -2853,14 +2853,14 @@ static_install_ipv4 (struct prefix *p, struct static_ipv4 *si)
switch (si->type)
{
case STATIC_IPV4_GATEWAY:
- nexthop_ipv4_add (rib, &si->gate.ipv4, NULL);
+ nexthop_ipv4_add (rib, &si->addr.ipv4, NULL);
nh_p.family = AF_INET;
nh_p.prefixlen = IPV4_MAX_BITLEN;
- nh_p.u.prefix4 = si->gate.ipv4;
+ nh_p.u.prefix4 = si->addr.ipv4;
zebra_register_rnh_static_nh(&nh_p, rn);
break;
case STATIC_IPV4_IFNAME:
- nexthop_ifname_add (rib, si->gate.ifname);
+ nexthop_ifname_add (rib, si->ifname);
break;
case STATIC_IPV4_BLACKHOLE:
nexthop_blackhole_add (rib);
@@ -2876,15 +2876,15 @@ static_install_ipv4 (struct prefix *p, struct static_ipv4 *si)
}
static int
-static_ipv4_nexthop_same (struct nexthop *nexthop, struct static_ipv4 *si)
+static_ipv4_nexthop_same (struct nexthop *nexthop, struct static_route *si)
{
if (nexthop->type == NEXTHOP_TYPE_IPV4
&& si->type == STATIC_IPV4_GATEWAY
- && IPV4_ADDR_SAME (&nexthop->gate.ipv4, &si->gate.ipv4))
+ && IPV4_ADDR_SAME (&nexthop->gate.ipv4, &si->addr.ipv4))
return 1;
if (nexthop->type == NEXTHOP_TYPE_IFNAME
&& si->type == STATIC_IPV4_IFNAME
- && strcmp (nexthop->ifname, si->gate.ifname) == 0)
+ && strcmp (nexthop->ifname, si->ifname) == 0)
return 1;
if (nexthop->type == NEXTHOP_TYPE_BLACKHOLE
&& si->type == STATIC_IPV4_BLACKHOLE)
@@ -2894,7 +2894,7 @@ static_ipv4_nexthop_same (struct nexthop *nexthop, struct static_ipv4 *si)
/* Uninstall static route from RIB. */
static void
-static_uninstall_ipv4 (struct prefix *p, struct static_ipv4 *si)
+static_uninstall_ipv4 (struct prefix *p, struct static_route *si)
{
struct route_node *rn;
struct rib *rib;
@@ -2984,10 +2984,10 @@ static_add_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,
{
u_char type = 0;
struct route_node *rn;
- struct static_ipv4 *si;
- struct static_ipv4 *pp;
- struct static_ipv4 *cp;
- struct static_ipv4 *update = NULL;
+ struct static_route *si;
+ struct static_route *pp;
+ struct static_route *cp;
+ struct static_route *update = NULL;
struct route_table *stable;
/* Lookup table. */
@@ -3010,8 +3010,8 @@ static_add_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,
for (si = rn->info; si; si = si->next)
{
if (type == si->type
- && (! gate || IPV4_ADDR_SAME (gate, &si->gate.ipv4))
- && (! ifname || strcmp (ifname, si->gate.ifname) == 0))
+ && (! gate || IPV4_ADDR_SAME (gate, &si->addr.ipv4))
+ && (! ifname || strcmp (ifname, si->ifname) == 0))
{
if ((distance == si->distance) && (tag == si->tag))
{
@@ -3028,7 +3028,7 @@ static_add_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,
static_delete_ipv4 (p, gate, ifname, update->tag, update->distance, vrf_id);
/* Make new static route structure. */
- si = XCALLOC (MTYPE_STATIC_IPV4, sizeof (struct static_ipv4));
+ si = XCALLOC (MTYPE_STATIC_ROUTE, sizeof (struct static_route));
si->type = type;
si->distance = distance;
@@ -3036,9 +3036,9 @@ static_add_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,
si->tag = tag;
if (gate)
- si->gate.ipv4 = *gate;
+ si->addr.ipv4 = *gate;
if (ifname)
- si->gate.ifname = XSTRDUP (0, ifname);
+ si->ifname = XSTRDUP (0, ifname);
/* Add new static route information to the tree with sort by
distance value and gateway address. */
@@ -3050,9 +3050,9 @@ static_add_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,
continue;
if (si->type == STATIC_IPV4_GATEWAY && cp->type == STATIC_IPV4_GATEWAY)
{
- if (ntohl (si->gate.ipv4.s_addr) < ntohl (cp->gate.ipv4.s_addr))
+ if (ntohl (si->addr.ipv4.s_addr) < ntohl (cp->addr.ipv4.s_addr))
break;
- if (ntohl (si->gate.ipv4.s_addr) > ntohl (cp->gate.ipv4.s_addr))
+ if (ntohl (si->addr.ipv4.s_addr) > ntohl (cp->addr.ipv4.s_addr))
continue;
}
}
@@ -3080,7 +3080,7 @@ static_delete_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,
{
u_char type = 0;
struct route_node *rn;
- struct static_ipv4 *si;
+ struct static_route *si;
struct route_table *stable;
/* Lookup table. */
@@ -3104,8 +3104,8 @@ static_delete_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,
/* Find same static route is the tree */
for (si = rn->info; si; si = si->next)
if (type == si->type
- && (! gate || IPV4_ADDR_SAME (gate, &si->gate.ipv4))
- && (! ifname || strcmp (ifname, si->gate.ifname) == 0)
+ && (! gate || IPV4_ADDR_SAME (gate, &si->addr.ipv4))
+ && (! ifname || strcmp (ifname, si->ifname) == 0)
&& (! tag || (tag == si->tag)))
break;
@@ -3130,8 +3130,8 @@ static_delete_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,
/* Free static route configuration. */
if (ifname)
- XFREE (0, si->gate.ifname);
- XFREE (MTYPE_STATIC_IPV4, si);
+ XFREE (0, si->ifname);
+ XFREE (MTYPE_STATIC_ROUTE, si);
route_unlock_node (rn);
@@ -3553,7 +3553,7 @@ rib_delete_ipv6 (int type, u_short instance, int flags, struct prefix_ipv6 *p,
/* Install static route into rib. */
static void
-static_install_ipv6 (struct prefix *p, struct static_ipv6 *si)
+static_install_ipv6 (struct prefix *p, struct static_route *si)
{
struct rib *rib;
struct route_table *table;
@@ -3589,17 +3589,17 @@ static_install_ipv6 (struct prefix *p, struct static_ipv6 *si)
switch (si->type)
{
case STATIC_IPV6_GATEWAY:
- nexthop_ipv6_add (rib, &si->ipv6);
+ nexthop_ipv6_add (rib, &si->addr.ipv6);
nh_p.family = AF_INET6;
nh_p.prefixlen = IPV6_MAX_BITLEN;
- nh_p.u.prefix6 = si->ipv6;
+ nh_p.u.prefix6 = si->addr.ipv6;
zebra_register_rnh_static_nh(&nh_p, rn);
break;
case STATIC_IPV6_IFNAME:
nexthop_ifname_add (rib, si->ifname);
break;
case STATIC_IPV6_GATEWAY_IFNAME:
- nexthop_ipv6_ifname_add (rib, &si->ipv6, si->ifname);
+ nexthop_ipv6_ifname_add (rib, &si->addr.ipv6, si->ifname);
break;
}
rib_queue_add (&zebrad, rn);
@@ -3620,17 +3620,17 @@ static_install_ipv6 (struct prefix *p, struct static_ipv6 *si)
switch (si->type)
{
case STATIC_IPV6_GATEWAY:
- nexthop_ipv6_add (rib, &si->ipv6);
+ nexthop_ipv6_add (rib, &si->addr.ipv6);
nh_p.family = AF_INET6;
nh_p.prefixlen = IPV6_MAX_BITLEN;
- nh_p.u.prefix6 = si->ipv6;
+ nh_p.u.prefix6 = si->addr.ipv6;
zebra_register_rnh_static_nh(&nh_p, rn);
break;
case STATIC_IPV6_IFNAME:
nexthop_ifname_add (rib, si->ifname);
break;
case STATIC_IPV6_GATEWAY_IFNAME:
- nexthop_ipv6_ifname_add (rib, &si->ipv6, si->ifname);
+ nexthop_ipv6_ifname_add (rib, &si->addr.ipv6, si->ifname);
break;
}
@@ -3643,11 +3643,11 @@ static_install_ipv6 (struct prefix *p, struct static_ipv6 *si)
}
static int
-static_ipv6_nexthop_same (struct nexthop *nexthop, struct static_ipv6 *si)
+static_ipv6_nexthop_same (struct nexthop *nexthop, struct static_route *si)
{
if (nexthop->type == NEXTHOP_TYPE_IPV6
&& si->type == STATIC_IPV6_GATEWAY
- && IPV6_ADDR_SAME (&nexthop->gate.ipv6, &si->ipv6))
+ && IPV6_ADDR_SAME (&nexthop->gate.ipv6, &si->addr.ipv6))
return 1;
if (nexthop->type == NEXTHOP_TYPE_IFNAME
&& si->type == STATIC_IPV6_IFNAME
@@ -3655,14 +3655,14 @@ static_ipv6_nexthop_same (struct nexthop *nexthop, struct static_ipv6 *si)
return 1;
if (nexthop->type == NEXTHOP_TYPE_IPV6_IFNAME
&& si->type == STATIC_IPV6_GATEWAY_IFNAME
- && IPV6_ADDR_SAME (&nexthop->gate.ipv6, &si->ipv6)
+ && IPV6_ADDR_SAME (&nexthop->gate.ipv6, &si->addr.ipv6)
&& strcmp (nexthop->ifname, si->ifname) == 0)
return 1;
return 0;
}
static void
-static_uninstall_ipv6 (struct prefix *p, struct static_ipv6 *si)
+static_uninstall_ipv6 (struct prefix *p, struct static_route *si)
{
struct route_table *table;
struct route_node *rn;
@@ -3751,11 +3751,12 @@ static_add_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
u_char distance, u_int32_t vrf_id)
{
struct route_node *rn;
- struct static_ipv6 *si;
- struct static_ipv6 *pp;
- struct static_ipv6 *cp;
+ struct static_route *si;
+ struct static_route *pp;
+ struct static_route *cp;
struct route_table *stable;
+
/* Lookup table. */
stable = vrf_static_table (AFI_IP6, SAFI_UNICAST, vrf_id);
if (! stable)
@@ -3778,7 +3779,7 @@ static_add_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
if (distance == si->distance
&& type == si->type
&& tag == si->tag
- && (! gate || IPV6_ADDR_SAME (gate, &si->ipv6))
+ && (! gate || IPV6_ADDR_SAME (gate, &si->addr.ipv6))
&& (! ifname || strcmp (ifname, si->ifname) == 0))
{
route_unlock_node (rn);
@@ -3787,7 +3788,7 @@ static_add_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
}
/* Make new static route structure. */
- si = XCALLOC (MTYPE_STATIC_IPV6, sizeof (struct static_ipv6));
+ si = XCALLOC (MTYPE_STATIC_ROUTE, sizeof (struct static_route));
si->type = type;
si->distance = distance;
@@ -3797,13 +3798,13 @@ static_add_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
switch (type)
{
case STATIC_IPV6_GATEWAY:
- si->ipv6 = *gate;
+ si->addr.ipv6 = *gate;
break;
case STATIC_IPV6_IFNAME:
si->ifname = XSTRDUP (0, ifname);
break;
case STATIC_IPV6_GATEWAY_IFNAME:
- si->ipv6 = *gate;
+ si->addr.ipv6 = *gate;
si->ifname = XSTRDUP (0, ifname);
break;
}
@@ -3841,7 +3842,7 @@ static_delete_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
u_int32_t vrf_id)
{
struct route_node *rn;
- struct static_ipv6 *si;
+ struct static_route *si;
struct route_table *stable;
/* Lookup table. */
@@ -3858,7 +3859,7 @@ static_delete_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
for (si = rn->info; si; si = si->next)
if (distance == si->distance
&& type == si->type
- && (! gate || IPV6_ADDR_SAME (gate, &si->ipv6))
+ && (! gate || IPV6_ADDR_SAME (gate, &si->addr.ipv6))
&& (! ifname || strcmp (ifname, si->ifname) == 0)
&& (! tag || (tag == si->tag)))
break;
@@ -3884,7 +3885,7 @@ static_delete_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
/* Free static route configuration. */
if (ifname)
XFREE (0, si->ifname);
- XFREE (MTYPE_STATIC_IPV6, si);
+ XFREE (MTYPE_STATIC_ROUTE, si);
return 1;
}