diff options
| author | Igor Ryzhov <iryzhov@nfware.com> | 2021-10-22 01:17:40 +0300 |
|---|---|---|
| committer | Igor Ryzhov <iryzhov@nfware.com> | 2021-11-22 20:47:23 +0300 |
| commit | 096f7609f9168ad1a2503acad31d3afc8f00f9e5 (patch) | |
| tree | 7acf9cbf0f944b032da6a796fcf8d7f6a06fe90a /zebra/rtadv.c | |
| parent | d32c92a4c0fcee71a8a6d02cb9ff84607cfdcc07 (diff) | |
*: cleanup ifp->vrf_id
Since f60a1188 we store a pointer to the VRF in the interface structure.
There's no need anymore to store a separate vrf_id field.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Diffstat (limited to 'zebra/rtadv.c')
| -rw-r--r-- | zebra/rtadv.c | 87 |
1 files changed, 27 insertions, 60 deletions
diff --git a/zebra/rtadv.c b/zebra/rtadv.c index 4d97c3c234..350b97cc5d 100644 --- a/zebra/rtadv.c +++ b/zebra/rtadv.c @@ -99,7 +99,7 @@ static struct zebra_vrf *rtadv_interface_get_zvrf(const struct interface *ifp) if (!vrf_is_backend_netns()) return vrf_info_lookup(VRF_DEFAULT); - return vrf_info_lookup(ifp->vrf_id); + return ifp->vrf->info; } static int rtadv_increment_received(struct zebra_vrf *zvrf, ifindex_t *ifindex) @@ -210,12 +210,9 @@ static void rtadv_send_packet(int sock, struct interface *ifp, } /* Logging of packet. */ - if (IS_ZEBRA_DEBUG_PACKET) { - struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); - + if (IS_ZEBRA_DEBUG_PACKET) zlog_debug("%s(%s:%u): Tx RA, socket %u", ifp->name, - VRF_LOGNAME(vrf), ifp->ifindex, sock); - } + ifp->vrf->name, ifp->ifindex, sock); /* Fill in sockaddr_in6. */ memset(&addr, 0, sizeof(struct sockaddr_in6)); @@ -387,11 +384,9 @@ static void rtadv_send_packet(int sock, struct interface *ifp, sizeof(struct nd_opt_rdnss) + sizeof(struct in6_addr); if (len + opt_len > max_len) { - struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); - zlog_warn( "%s(%s:%u): Tx RA: RDNSS option would exceed MTU, omitting it", - ifp->name, VRF_LOGNAME(vrf), ifp->ifindex); + ifp->name, ifp->vrf->name, ifp->ifindex); goto no_more_opts; } struct nd_opt_rdnss *opt = (struct nd_opt_rdnss *)(buf + len); @@ -494,7 +489,8 @@ static int rtadv_timer(struct thread *thread) RB_FOREACH (vrf, vrf_id_head, &vrfs_by_id) FOR_ALL_INTERFACES (vrf, ifp) { if (if_is_loopback(ifp) || !if_is_operative(ifp) - || (vrf_is_backend_netns() && ifp->vrf_id != zvrf->vrf->vrf_id)) + || (vrf_is_backend_netns() + && ifp->vrf->vrf_id != zvrf->vrf->vrf_id)) continue; zif = ifp->info; @@ -509,17 +505,12 @@ static int rtadv_timer(struct thread *thread) <= 0) zif->rtadv.inFastRexmit = 0; - if (IS_ZEBRA_DEBUG_SEND) { - struct vrf *vrf = - vrf_lookup_by_id( - ifp->vrf_id); - + if (IS_ZEBRA_DEBUG_SEND) zlog_debug( "Fast RA Rexmit on interface %s(%s:%u)", ifp->name, - VRF_LOGNAME(vrf), + ifp->vrf->name, ifp->ifindex); - } rtadv_send_packet(zvrf->rtadv.sock, ifp, RA_ENABLE); @@ -619,14 +610,11 @@ static void rtadv_process_advert(uint8_t *msg, unsigned int len, inet_ntop(AF_INET6, &addr->sin6_addr, addr_str, INET6_ADDRSTRLEN); if (len < sizeof(struct nd_router_advert)) { - if (IS_ZEBRA_DEBUG_PACKET) { - struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); - + if (IS_ZEBRA_DEBUG_PACKET) zlog_debug( "%s(%s:%u): Rx RA with invalid length %d from %s", - ifp->name, VRF_LOGNAME(vrf), ifp->ifindex, len, + ifp->name, ifp->vrf->name, ifp->ifindex, len, addr_str); - } return; } @@ -634,14 +622,11 @@ static void rtadv_process_advert(uint8_t *msg, unsigned int len, rtadv_process_optional(msg + sizeof(struct nd_router_advert), len - sizeof(struct nd_router_advert), ifp, addr); - if (IS_ZEBRA_DEBUG_PACKET) { - struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); - + if (IS_ZEBRA_DEBUG_PACKET) zlog_debug( "%s(%s:%u): Rx RA with non-linklocal source address from %s", - ifp->name, VRF_LOGNAME(vrf), ifp->ifindex, + ifp->name, ifp->vrf->name, ifp->ifindex, addr_str); - } return; } @@ -719,12 +704,9 @@ static void rtadv_process_packet(uint8_t *buf, unsigned int len, return; } - if (IS_ZEBRA_DEBUG_PACKET) { - struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); - + if (IS_ZEBRA_DEBUG_PACKET) zlog_debug("%s(%s:%u): Rx RA/RS len %d from %s", ifp->name, - VRF_LOGNAME(vrf), ifp->ifindex, len, addr_str); - } + ifp->vrf->name, ifp->ifindex, len, addr_str); if (if_is_loopback(ifp)) return; @@ -736,11 +718,9 @@ static void rtadv_process_packet(uint8_t *buf, unsigned int len, /* ICMP message length check. */ if (len < sizeof(struct icmp6_hdr)) { - struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); - zlog_debug( "%s(%s:%u): Rx RA with Invalid ICMPV6 packet length %d", - ifp->name, VRF_LOGNAME(vrf), ifp->ifindex, len); + ifp->name, ifp->vrf->name, ifp->ifindex, len); return; } @@ -749,20 +729,16 @@ static void rtadv_process_packet(uint8_t *buf, unsigned int len, /* ICMP message type check. */ if (icmph->icmp6_type != ND_ROUTER_SOLICIT && icmph->icmp6_type != ND_ROUTER_ADVERT) { - struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); - zlog_debug("%s(%s:%u): Rx RA - Unwanted ICMPV6 message type %d", - ifp->name, VRF_LOGNAME(vrf), ifp->ifindex, + ifp->name, ifp->vrf->name, ifp->ifindex, icmph->icmp6_type); return; } /* Hoplimit check. */ if (hoplimit >= 0 && hoplimit != 255) { - struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); - zlog_debug("%s(%s:%u): Rx RA - Invalid hoplimit %d", ifp->name, - VRF_LOGNAME(vrf), ifp->ifindex, hoplimit); + ifp->vrf->name, ifp->ifindex, hoplimit); return; } @@ -1295,14 +1271,12 @@ static void zebra_interface_radv_set(ZAPI_HANDLER_ARGS, int enable) zebra_route_string(client->proto)); return; } - if (vrf_is_backend_netns() && ifp->vrf_id != zvrf_id(zvrf)) { - struct vrf *vrf = zvrf->vrf; - + if (vrf_is_backend_netns() && ifp->vrf->vrf_id != zvrf_id(zvrf)) { zlog_debug( "%s:%u: IF %u RA %s client %s - VRF mismatch, IF VRF %u", - VRF_LOGNAME(vrf), zvrf_id(zvrf), ifindex, + ifp->vrf->name, zvrf_id(zvrf), ifindex, enable ? "enable" : "disable", - zebra_route_string(client->proto), ifp->vrf_id); + zebra_route_string(client->proto), ifp->vrf->vrf_id); return; } @@ -2856,13 +2830,10 @@ static int if_join_all_router(int sock, struct interface *ifp) ifp->name, ifp->ifindex, sock, safe_strerror(errno)); - if (IS_ZEBRA_DEBUG_EVENT) { - struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); - + if (IS_ZEBRA_DEBUG_EVENT) zlog_debug( "%s(%s:%u): Join All-Routers multicast group, socket %u", - ifp->name, VRF_LOGNAME(vrf), ifp->ifindex, sock); - } + ifp->name, ifp->vrf->name, ifp->ifindex, sock); return 0; } @@ -2879,22 +2850,18 @@ static int if_leave_all_router(int sock, struct interface *ifp) ret = setsockopt(sock, IPPROTO_IPV6, IPV6_LEAVE_GROUP, (char *)&mreq, sizeof(mreq)); - if (ret < 0) { - struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); - + if (ret < 0) flog_err_sys( EC_LIB_SOCKET, "%s(%s:%u): Failed to leave group, socket %u error %s", - ifp->name, VRF_LOGNAME(vrf), ifp->ifindex, sock, + ifp->name, ifp->vrf->name, ifp->ifindex, sock, safe_strerror(errno)); - } - if (IS_ZEBRA_DEBUG_EVENT) { - struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); + if (IS_ZEBRA_DEBUG_EVENT) zlog_debug( "%s(%s:%u): Leave All-Routers multicast group, socket %u", - ifp->name, VRF_LOGNAME(vrf), ifp->ifindex, sock); - } + ifp->name, ifp->vrf->name, ifp->ifindex, sock); + return 0; } |
