diff options
Diffstat (limited to 'zebra/zebra_rib.c')
| -rw-r--r-- | zebra/zebra_rib.c | 97 |
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; } |
