diff options
| -rw-r--r-- | bfdd/bfdd_vty.c | 8 | ||||
| -rwxr-xr-x | configure.ac | 4 | ||||
| -rw-r--r-- | doc/developer/topotests.rst | 7 | ||||
| -rw-r--r-- | lib/command.h | 2 | ||||
| -rw-r--r-- | ospfd/ospf_vty.c | 2 | ||||
| -rw-r--r-- | pbrd/pbr_nht.c | 13 | ||||
| -rw-r--r-- | pbrd/pbr_vty.c | 4 | ||||
| -rw-r--r-- | pbrd/pbr_zebra.c | 6 | ||||
| -rw-r--r-- | pimd/pim_join.c | 27 | ||||
| -rw-r--r-- | pimd/pim_mroute.c | 29 |
10 files changed, 50 insertions, 52 deletions
diff --git a/bfdd/bfdd_vty.c b/bfdd/bfdd_vty.c index f8ee66e2c8..c98ae5c7b3 100644 --- a/bfdd/bfdd_vty.c +++ b/bfdd/bfdd_vty.c @@ -498,7 +498,7 @@ _find_peer_or_error(struct vty *vty, int argc, struct cmd_token **argv, /* * Show commands. */ -DEFPY(bfd_show_peers, bfd_show_peers_cmd, "show bfd [vrf <NAME>] peers [json]", +DEFPY(bfd_show_peers, bfd_show_peers_cmd, "show bfd [vrf NAME] peers [json]", SHOW_STR "Bidirection Forwarding Detection\n" VRF_CMD_HELP_STR @@ -516,7 +516,7 @@ DEFPY(bfd_show_peers, bfd_show_peers_cmd, "show bfd [vrf <NAME>] peers [json]", } DEFPY(bfd_show_peer, bfd_show_peer_cmd, - "show bfd [vrf <NAME$vrf_name>] peer <WORD$label|<A.B.C.D|X:X::X:X>$peer [{multihop|local-address <A.B.C.D|X:X::X:X>$local|interface IFNAME$ifname}]> [json]", + "show bfd [vrf NAME$vrf_name] peer <WORD$label|<A.B.C.D|X:X::X:X>$peer [{multihop|local-address <A.B.C.D|X:X::X:X>$local|interface IFNAME$ifname}]> [json]", SHOW_STR "Bidirection Forwarding Detection\n" VRF_CMD_HELP_STR @@ -543,7 +543,7 @@ DEFPY(bfd_show_peer, bfd_show_peer_cmd, } DEFPY(bfd_show_peer_counters, bfd_show_peer_counters_cmd, - "show bfd [vrf <NAME$vrf_name>] peer <WORD$label|<A.B.C.D|X:X::X:X>$peer [{multihop|local-address <A.B.C.D|X:X::X:X>$local|interface IFNAME$ifname}]> counters [json]", + "show bfd [vrf NAME$vrf_name] peer <WORD$label|<A.B.C.D|X:X::X:X>$peer [{multihop|local-address <A.B.C.D|X:X::X:X>$local|interface IFNAME$ifname}]> counters [json]", SHOW_STR "Bidirection Forwarding Detection\n" VRF_CMD_HELP_STR @@ -577,7 +577,7 @@ DEFPY(bfd_show_peer_counters, bfd_show_peer_counters_cmd, } DEFPY(bfd_show_peers_counters, bfd_show_peers_counters_cmd, - "show bfd [vrf <NAME>] peers counters [json]", + "show bfd [vrf NAME] peers counters [json]", SHOW_STR "Bidirection Forwarding Detection\n" VRF_CMD_HELP_STR diff --git a/configure.ac b/configure.ac index 88f1c4f627..730e2ae6f0 100755 --- a/configure.ac +++ b/configure.ac @@ -328,8 +328,8 @@ if test "$enable_thread_sanitizer" = "yes"; then ]) fi if test "$enable_memory_sanitizer" = "yes"; then - AC_C_FLAG([-fsanitize=thread -fPIE -pie], [ - AC_MSG_ERROR([$CC does not support Thread Sanitizer.]) + AC_C_FLAG([-fsanitize=memory -fPIE -pie], [ + AC_MSG_ERROR([$CC does not support Memory Sanitizer.]) ], [ SAN_FLAGS="-fsanitize=memory -fPIE -pie" ]) diff --git a/doc/developer/topotests.rst b/doc/developer/topotests.rst index a0a574a79c..c2e72e2ec5 100644 --- a/doc/developer/topotests.rst +++ b/doc/developer/topotests.rst @@ -189,11 +189,8 @@ for ``master`` branch: git clone https://github.com/FRRouting/frr.git cd frr ./bootstrap.sh - export CC=gcc - export CFLAGS="-O1 -g -fsanitize=address -fno-omit-frame-pointer" - export LD=gcc - export LDFLAGS="-g -fsanitize=address -ldl" - ./configure --enable-shared=no \ + ./configure \ + --enable-address-sanitizer \ --prefix=/usr/lib/frr --sysconfdir=/etc/frr \ --localstatedir=/var/run/frr \ --sbindir=/usr/lib/frr --bindir=/usr/lib/frr \ diff --git a/lib/command.h b/lib/command.h index 137d3748ae..d5dc129c72 100644 --- a/lib/command.h +++ b/lib/command.h @@ -412,7 +412,7 @@ struct cmd_node { #define NEIGHBOR_ADDR_STR2 "Neighbor address\nNeighbor IPv6 address\nInterface name or neighbor tag\n" #define NEIGHBOR_ADDR_STR3 "Neighbor address\nIPv6 address\nInterface name\n" -/* Dameons lists */ +/* Daemons lists */ #define DAEMONS_STR \ "For the zebra daemon\nFor the rip daemon\nFor the ripng daemon\nFor the ospf daemon\nFor the ospfv6 daemon\nFor the bgp daemon\nFor the isis daemon\nFor the pbr daemon\nFor the fabricd daemon\nFor the pim daemon\nFor the static daemon\nFor the sharpd daemon\nFor the vrrpd daemon\n" #define DAEMONS_LIST \ diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 8fa91f500c..d11c34f243 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -10661,7 +10661,7 @@ static void ospf_interface_clear(struct interface *ifp) DEFUN (clear_ip_ospf_interface, clear_ip_ospf_interface_cmd, - "clear ip ospf [vrf <NAME>] interface [IFNAME]", + "clear ip ospf [vrf NAME] interface [IFNAME]", CLEAR_STR IP_STR "OSPF information\n" diff --git a/pbrd/pbr_nht.c b/pbrd/pbr_nht.c index ae04402f49..67a1fe2ffe 100644 --- a/pbrd/pbr_nht.c +++ b/pbrd/pbr_nht.c @@ -267,7 +267,9 @@ void pbr_nhgroup_add_nexthop_cb(const struct nexthop_group_cmd *nhgc, pbr_nht_install_nexthop_group(pnhgc, nhgc->nhg); pbr_map_check_nh_group_change(nhgc->name); - if (nhop->type == NEXTHOP_TYPE_IFINDEX) { + if (nhop->type == NEXTHOP_TYPE_IFINDEX + || (nhop->type == NEXTHOP_TYPE_IPV6_IFINDEX + && IN6_IS_ADDR_LINKLOCAL(&nhop->gate.ipv6))) { struct interface *ifp; ifp = if_lookup_by_index(nhop->ifindex, nhop->vrf_id); @@ -772,10 +774,15 @@ pbr_nht_individual_nexthop_update(struct pbr_nexthop_cache *pnhc, case NEXTHOP_TYPE_IFINDEX: pbr_nht_individual_nexthop_interface_update(pnhc, pnhi); break; + case NEXTHOP_TYPE_IPV6_IFINDEX: + if (IN6_IS_ADDR_LINKLOCAL(&pnhc->nexthop->gate.ipv6)) { + pbr_nht_individual_nexthop_interface_update(pnhc, pnhi); + break; + } + /* Intentional fall thru */ + case NEXTHOP_TYPE_IPV4_IFINDEX: case NEXTHOP_TYPE_IPV4: case NEXTHOP_TYPE_IPV6: - case NEXTHOP_TYPE_IPV4_IFINDEX: - case NEXTHOP_TYPE_IPV6_IFINDEX: pbr_nht_individual_nexthop_gw_update(pnhc, pnhi); break; case NEXTHOP_TYPE_BLACKHOLE: diff --git a/pbrd/pbr_vty.c b/pbrd/pbr_vty.c index a6e764bbb0..069b3e6c9b 100644 --- a/pbrd/pbr_vty.c +++ b/pbrd/pbr_vty.c @@ -363,7 +363,9 @@ DEFPY(pbr_map_nexthop, pbr_map_nexthop_cmd, pbr_map_check(pbrms); } - if (nhop.type == NEXTHOP_TYPE_IFINDEX) { + if (nhop.type == NEXTHOP_TYPE_IFINDEX + || (nhop.type == NEXTHOP_TYPE_IPV6_IFINDEX + && IN6_IS_ADDR_LINKLOCAL(&nhop.gate.ipv6))) { struct interface *ifp; ifp = if_lookup_by_index(nhop.ifindex, nhop.vrf_id); diff --git a/pbrd/pbr_zebra.c b/pbrd/pbr_zebra.c index 2bba837389..39e92467ab 100644 --- a/pbrd/pbr_zebra.c +++ b/pbrd/pbr_zebra.c @@ -450,6 +450,12 @@ void pbr_send_rnh(struct nexthop *nhop, bool reg) p.family = AF_INET6; memcpy(&p.u.prefix6, &nhop->gate.ipv6, 16); p.prefixlen = 128; + if (IN6_IS_ADDR_LINKLOCAL(&nhop->gate.ipv6)) + /* + * Don't bother tracking link locals, just track their + * interface state. + */ + return; break; } diff --git a/pimd/pim_join.c b/pimd/pim_join.c index 5e1a4f0c5e..686475fefe 100644 --- a/pimd/pim_join.c +++ b/pimd/pim_join.c @@ -62,7 +62,7 @@ static void recv_join(struct interface *ifp, struct pim_neighbor *neigh, pim_inet4_dump("<upstream?>", upstream, up_str, sizeof(up_str)); pim_inet4_dump("<neigh?>", neigh->source_addr, neigh_str, sizeof(neigh_str)); - zlog_warn( + zlog_debug( "%s: join (S,G)=%s rpt=%d wc=%d upstream=%s holdtime=%d from %s on %s", __PRETTY_FUNCTION__, pim_str_sg_dump(sg), !!(source_flags & PIM_RPT_BIT_MASK), @@ -94,11 +94,8 @@ static void recv_join(struct interface *ifp, struct pim_neighbor *neigh, sizeof(received_rp)); pim_inet4_dump("<local?>", rp->rpf_addr.u.prefix4, local_rp, sizeof(local_rp)); - if (PIM_DEBUG_PIM_TRACE) - zlog_warn( - "%s: Specified RP(%s) in join is different than our configured RP(%s)", - __PRETTY_FUNCTION__, received_rp, - local_rp); + zlog_warn("%s: Specified RP(%s) in join is different than our configured RP(%s)", + __PRETTY_FUNCTION__, received_rp, local_rp); return; } @@ -122,7 +119,7 @@ static void recv_prune(struct interface *ifp, struct pim_neighbor *neigh, pim_inet4_dump("<upstream?>", upstream, up_str, sizeof(up_str)); pim_inet4_dump("<neigh?>", neigh->source_addr, neigh_str, sizeof(neigh_str)); - zlog_warn( + zlog_debug( "%s: prune (S,G)=%s rpt=%d wc=%d upstream=%s holdtime=%d from %s on %s", __PRETTY_FUNCTION__, pim_str_sg_dump(sg), source_flags & PIM_RPT_BIT_MASK, @@ -185,15 +182,11 @@ int pim_joinprune_recv(struct interface *ifp, struct pim_neighbor *neigh, Check upstream address family */ if (msg_upstream_addr.family != AF_INET) { - if (PIM_DEBUG_PIM_J_P) { - char src_str[INET_ADDRSTRLEN]; - pim_inet4_dump("<src?>", src_addr, src_str, - sizeof(src_str)); - zlog_warn( - "%s: ignoring join/prune directed to unexpected addr family=%d from %s on %s", - __PRETTY_FUNCTION__, msg_upstream_addr.family, - src_str, ifp->name); - } + char src_str[INET_ADDRSTRLEN]; + pim_inet4_dump("<src?>", src_addr, src_str, sizeof(src_str)); + zlog_warn("%s: ignoring join/prune directed to unexpected addr family=%d from %s on %s", + __PRETTY_FUNCTION__, msg_upstream_addr.family, + src_str, ifp->name); return -2; } @@ -270,7 +263,7 @@ int pim_joinprune_recv(struct interface *ifp, struct pim_neighbor *neigh, upstream_str, sizeof(upstream_str)); pim_inet4_dump("<grp?>", sg.grp, group_str, sizeof(group_str)); - zlog_warn( + zlog_debug( "%s: join/prune upstream=%s group=%s/32 join_src=%d prune_src=%d from %s on %s", __PRETTY_FUNCTION__, upstream_str, group_str, msg_num_joined_sources, msg_num_pruned_sources, diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c index f7f4b54aea..a235ed0569 100644 --- a/pimd/pim_mroute.c +++ b/pimd/pim_mroute.c @@ -611,7 +611,7 @@ static int pim_mroute_msg(struct pim_instance *pim, const char *buf, pim_inet4_dump("<dst?>", ip_hdr->ip_dst, ip_dst_str, sizeof(ip_dst_str)); - zlog_warn( + zlog_debug( "%s(%s): igmp kernel upcall on %s(%p) for %s -> %s", __PRETTY_FUNCTION__, pim->vrf->name, ifp->name, igmp, ip_src_str, ip_dst_str); @@ -643,7 +643,7 @@ static int pim_mroute_msg(struct pim_instance *pim, const char *buf, sizeof(src_str)); pim_inet4_dump("<grp?>", msg->im_dst, grp_str, sizeof(grp_str)); - zlog_warn( + zlog_debug( "%s: pim kernel upcall %s type=%d ip_p=%d from fd=%d for (S,G)=(%s,%s) on %s vifi=%d size=%d", __PRETTY_FUNCTION__, igmpmsgtype2str[msg->im_msgtype], @@ -698,12 +698,9 @@ static int mroute_read(struct thread *t) if (errno == EWOULDBLOCK || errno == EAGAIN) break; - if (PIM_DEBUG_MROUTE) - zlog_warn( - "%s: failure reading rd=%d: fd=%d: errno=%d: %s", - __PRETTY_FUNCTION__, rd, - pim->mroute_socket, errno, - safe_strerror(errno)); + zlog_warn("%s: failure reading rd=%d: fd=%d: errno=%d: %s", + __PRETTY_FUNCTION__, rd, pim->mroute_socket, + errno, safe_strerror(errno)); goto done; } @@ -1085,18 +1082,14 @@ void pim_mroute_update_counters(struct channel_oil *c_oil) pim_zlookup_sg_statistics(c_oil); if (ioctl(pim->mroute_socket, SIOCGETSGCNT, &sgreq)) { - if (PIM_DEBUG_MROUTE) { - struct prefix_sg sg; + struct prefix_sg sg; - sg.src = c_oil->oil.mfcc_origin; - sg.grp = c_oil->oil.mfcc_mcastgrp; + sg.src = c_oil->oil.mfcc_origin; + sg.grp = c_oil->oil.mfcc_mcastgrp; - zlog_warn( - "ioctl(SIOCGETSGCNT=%lu) failure for (S,G)=%s: errno=%d: %s", - (unsigned long)SIOCGETSGCNT, - pim_str_sg_dump(&sg), errno, - safe_strerror(errno)); - } + zlog_warn("ioctl(SIOCGETSGCNT=%lu) failure for (S,G)=%s: errno=%d: %s", + (unsigned long)SIOCGETSGCNT, pim_str_sg_dump(&sg), + errno, safe_strerror(errno)); return; } |
