diff options
| -rw-r--r-- | doc/user/bgp.rst | 14 | ||||
| -rw-r--r-- | doc/user/ospf_fundamentals.rst | 6 | ||||
| -rw-r--r-- | doc/user/wecmp_linkbw.rst | 2 | ||||
| -rw-r--r-- | doc/user/zebra.rst | 8 | ||||
| -rw-r--r-- | tools/frrcommon.sh.in | 4 | ||||
| -rw-r--r-- | zebra/zapi_msg.c | 12 | ||||
| -rw-r--r-- | zebra/zebra_nhg.c | 29 |
7 files changed, 36 insertions, 39 deletions
diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst index c056b39889..84be461cce 100644 --- a/doc/user/bgp.rst +++ b/doc/user/bgp.rst @@ -971,7 +971,7 @@ Route Aggregation-IPv4 Address Family .. clicmd:: aggregate-address A.B.C.D/M summary-only This command specifies an aggregate address. Aggregated routes will - not be announce. + not be announced. .. index:: no aggregate-address A.B.C.D/M .. clicmd:: no aggregate-address A.B.C.D/M @@ -1023,7 +1023,7 @@ Route Aggregation-IPv6 Address Family .. clicmd:: aggregate-address X:X::X:X/M summary-only This command specifies an aggregate address. Aggregated routes will - not be announce. + not be announced. .. index:: no aggregate-address X:X::X:X/M .. clicmd:: no aggregate-address X:X::X:X/M @@ -1776,7 +1776,7 @@ In :ref:`route-map` we can match on or set the BGP communities attribute. Using this feature network operator can implement their network policy based on BGP communities attribute. -The ollowing commands can be used in route maps: +The following commands can be used in route maps: .. index:: match community WORD exact-match [exact-match] .. clicmd:: match community WORD exact-match [exact-match] @@ -2840,8 +2840,8 @@ Displaying Routes by AS Path Displaying Update Group Information ----------------------------------- -..index:: show bgp update-groups SUBGROUP-ID [advertise-queue|advertised-routes|packet-queue] -..clicmd:: show bgp update-groups [advertise-queue|advertised-routes|packet-queue] +.. index:: show bgp update-groups SUBGROUP-ID [advertise-queue|advertised-routes|packet-queue] +.. clicmd:: show bgp update-groups [advertise-queue|advertised-routes|packet-queue] Display Information about each individual update-group being used. If SUBGROUP-ID is specified only display about that particular group. If @@ -2850,8 +2850,8 @@ Displaying Update Group Information the list of routes we have sent to the peers in the update-group and packet-queue specifies the list of packets in the queue to be sent. -..index:: show bgp update-groups statistics -..clicmd:: show bgp update-groups statistics +.. index:: show bgp update-groups statistics +.. clicmd:: show bgp update-groups statistics Display Information about update-group events in FRR. diff --git a/doc/user/ospf_fundamentals.rst b/doc/user/ospf_fundamentals.rst index da348b02d2..b0eb018107 100644 --- a/doc/user/ospf_fundamentals.rst +++ b/doc/user/ospf_fundamentals.rst @@ -83,8 +83,8 @@ sharing a link, for example: - DR/BDR election results. - Any optional capabilities supported by each router. -The Hello protocol is comparatively trivial and will not be explored in greater -detail than here. +The Hello protocol is comparatively trivial and will not be explored in more +detail. .. index:: OSPF LSA overview .. _ospf-lsas: @@ -233,7 +233,7 @@ called `intra-area routes`. Cost The output cost of that interface, scaled inversely to some commonly known - reference value, :clicmd:`auto-cost reference-bandwidth (1-4294967`. + reference value, :clicmd:`auto-cost reference-bandwidth (1-4294967)`. Link Type Transit Network diff --git a/doc/user/wecmp_linkbw.rst b/doc/user/wecmp_linkbw.rst index 0d2fe9d756..8176aaffcb 100644 --- a/doc/user/wecmp_linkbw.rst +++ b/doc/user/wecmp_linkbw.rst @@ -14,7 +14,7 @@ across these next hops. In practice, flow-based hashing is used so that all traffic associated with a particular flow uses the same next hop, and by extension, the same path across the network. -Weigted ECMP using BGP link bandwidth introduces support for network-wide +Weighted ECMP using BGP link bandwidth introduces support for network-wide unequal cost multipathing (UCMP) to an IP destination. The unequal cost load balancing is implemented by the forwarding plane based on the weights associated with the next hops of the IP prefix. These weights are computed diff --git a/doc/user/zebra.rst b/doc/user/zebra.rst index f3b4ca7d03..4cb35c7433 100644 --- a/doc/user/zebra.rst +++ b/doc/user/zebra.rst @@ -985,15 +985,15 @@ zebra Terminal Mode Commands .. index:: show ip protocol .. clicmd:: show ip protocol -.. index:: show ipforward -.. clicmd:: show ipforward +.. index:: show ip forward +.. clicmd:: show ip forward Display whether the host's IP forwarding function is enabled or not. Almost any UNIX kernel can be configured with IP forwarding disabled. If so, the box can't work as a router. -.. index:: show ipv6forward -.. clicmd:: show ipv6forward +.. index:: show ipv6 forward +.. clicmd:: show ipv6 forward Display whether the host's IP v6 forwarding is enabled or not. diff --git a/tools/frrcommon.sh.in b/tools/frrcommon.sh.in index 9dc8cea609..2955f74ce3 100644 --- a/tools/frrcommon.sh.in +++ b/tools/frrcommon.sh.in @@ -92,7 +92,7 @@ daemon_list() { continue fi debug "$daemon enabled" - enabled="$enabled $daemon" + if [ -n "$inst" ]; then debug "$daemon multi-instance $inst" oldifs="${IFS}" @@ -101,6 +101,8 @@ daemon_list() { enabled="$enabled $daemon-$i" done IFS="${oldifs}" + else + enabled="$enabled $daemon" fi else debug "$daemon disabled" diff --git a/zebra/zapi_msg.c b/zebra/zapi_msg.c index 092b5dd3c2..5db4555284 100644 --- a/zebra/zapi_msg.c +++ b/zebra/zapi_msg.c @@ -1451,10 +1451,6 @@ static struct nexthop *nexthop_from_zapi(struct route_entry *re, &api_nh->gate.ipv4, NULL, api_nh->ifindex, api_nh->vrf_id); - ifp = if_lookup_by_index(api_nh->ifindex, api_nh->vrf_id); - if (ifp && connected_is_unnumbered(ifp)) - SET_FLAG(nexthop->flags, NEXTHOP_FLAG_ONLINK); - /* Special handling for IPv4 routes sourced from EVPN: * the nexthop and associated MAC need to be installed. */ @@ -1516,8 +1512,16 @@ static struct nexthop *nexthop_from_zapi(struct route_entry *re, goto done; } + /* Mark nexthop as onlink either if client has explicitly told us + * to or if the nexthop is on an 'unnumbered' interface. + */ if (CHECK_FLAG(api_nh->flags, ZAPI_NEXTHOP_FLAG_ONLINK)) SET_FLAG(nexthop->flags, NEXTHOP_FLAG_ONLINK); + else if (api_nh->type == NEXTHOP_TYPE_IPV4_IFINDEX) { + ifp = if_lookup_by_index(api_nh->ifindex, api_nh->vrf_id); + if (ifp && connected_is_unnumbered(ifp)) + SET_FLAG(nexthop->flags, NEXTHOP_FLAG_ONLINK); + } if (CHECK_FLAG(api_nh->flags, ZAPI_NEXTHOP_FLAG_WEIGHT)) nexthop->weight = api_nh->weight; diff --git a/zebra/zebra_nhg.c b/zebra/zebra_nhg.c index f24552c80b..fdbeac88e1 100644 --- a/zebra/zebra_nhg.c +++ b/zebra/zebra_nhg.c @@ -1776,33 +1776,24 @@ static int nexthop_active(afi_t afi, struct route_entry *re, return 1; /* - * Check to see if we should trust the passed in information - * for UNNUMBERED interfaces as that we won't find the GW - * address in the routing table. - * This check should suffice to handle IPv4 or IPv6 routes - * sourced from EVPN routes which are installed with the - * next hop as the remote VTEP IP. + * If the nexthop has been marked as 'onlink' we just need to make + * sure the nexthop's interface is known and is operational. */ if (CHECK_FLAG(nexthop->flags, NEXTHOP_FLAG_ONLINK)) { ifp = if_lookup_by_index(nexthop->ifindex, nexthop->vrf_id); if (!ifp) { - if (IS_ZEBRA_DEBUG_RIB_DETAILED) - zlog_debug( - " %s: Onlink and interface: %u[%u] does not exist", - __func__, nexthop->ifindex, - nexthop->vrf_id); + if (IS_ZEBRA_DEBUG_NHG_DETAIL) + zlog_debug("nexthop %pNHv marked onlink but nhif %u doesn't exist", + nexthop, nexthop->ifindex); return 0; } - - if (if_is_operative(ifp)) - return 1; - else { - if (IS_ZEBRA_DEBUG_RIB_DETAILED) - zlog_debug( - " %s: Onlink and interface %s is not operative", - __func__, ifp->name); + if (!if_is_operative(ifp)) { + if (IS_ZEBRA_DEBUG_NHG_DETAIL) + zlog_debug("nexthop %pNHv marked onlink but nhif %s is not operational", + nexthop, ifp->name); return 0; } + return 1; } if ((top->p.family == AF_INET && top->p.prefixlen == 32 |
