diff options
| -rw-r--r-- | doc/user/installation.rst | 5 | ||||
| -rw-r--r-- | doc/user/zebra.rst | 14 | ||||
| -rw-r--r-- | isisd/isis_circuit.c | 15 | ||||
| -rw-r--r-- | zebra/zebra_netns_notify.c | 3 | ||||
| -rw-r--r-- | zebra/zebra_pbr.c | 2 |
5 files changed, 19 insertions, 20 deletions
diff --git a/doc/user/installation.rst b/doc/user/installation.rst index a9fceee556..e50eb88406 100644 --- a/doc/user/installation.rst +++ b/doc/user/installation.rst @@ -117,11 +117,6 @@ customize the build to include or exclude specific features and dependencies. Enable Traffic Engineering Extension for ISIS (RFC5305) -.. option:: --enable-multipath <ARG> - - Enable support for Equal Cost Multipath. `ARG` is the maximum number - of ECMP paths to allow, set to 0 to allow unlimited number of paths. - .. option:: --enable-realms Enable the support of Linux Realms. Convert tag values from 1-255 into a diff --git a/doc/user/zebra.rst b/doc/user/zebra.rst index 417723919a..96162cb0a6 100644 --- a/doc/user/zebra.rst +++ b/doc/user/zebra.rst @@ -42,11 +42,10 @@ Besides the common invocation options (:ref:`common-invocation-options`), the When *Zebra* starts with this option, the VRF backend is based on Linux network namespaces. That implies that all network namespaces discovered by - ZEBRA will create an associated VRF. The other daemons will operate on the VRF - VRF defined by *Zebra*, as usual. More information in the :ref:`VRF Commands` - chapter. + ZEBRA will create an associated VRF. The other daemons will operate on the + VRF defined by *Zebra*, as usual. -.. program:: configure + .. seealso:: :ref:`zebra-vrf` .. _interface-commands: @@ -388,7 +387,7 @@ default) should the specified gateways not be reachable. E.g.: and later). After setting TABLENO with this command, static routes defined after this are added to the specified table. -.. _multicast-rib-commands: +.. _zebra-vrf: VRF (Virtual Routing and Forwarding) ==================================== @@ -476,7 +475,7 @@ commands in relationship to VRF. Here is an extract of some of those commands: on configuration mode, this applies to default VRF. Otherwise, this command applies to the VRF of the vrf configuration mode. This command is used to configure a vrf route leak across 2 VRFs. This command is only available when - *Zebra* is launched without :option:`-n` option. + *Zebra* is launched without :option:`-n` option. .. index:: ip route NETWORK NETMASK GATEWAY table TABLENO .. clicmd:: ip route NETWORK NETMASK GATEWAY table TABLENO @@ -514,6 +513,7 @@ commands in relationship to VRF. Here is an extract of some of those commands: ip route 10.0.0.0 255.255.255.0 10.0.0.2 vrf r1-cust1 table 43 show ip table vrf r1-cust1 table 43 +.. _multicast-rib-commands: Multicast RIB Commands ====================== @@ -683,6 +683,8 @@ The FIB push interface comprises of a TCP connection between zebra and the FPM. The connection is initiated by zebra -- that is, the FPM acts as the TCP server. +.. program:: configure + The relevant zebra code kicks in when zebra is configured with the :option:`--enable-fpm` flag. Zebra periodically attempts to connect to the well-known FPM port. Once the connection is up, zebra starts diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index 6f4d72cb1f..41723f7316 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -638,7 +638,7 @@ int isis_circuit_up(struct isis_circuit *circuit) thread_add_timer(master, isis_run_dr_l2, circuit, 2 * circuit->hello_interval[1], &circuit->u.bc.t_run_dr[1]); - } else { + } else if (circuit->circ_type == CIRCUIT_T_P2P) { /* initializing the hello send threads * for a ptp IF */ @@ -682,9 +682,6 @@ int isis_circuit_up(struct isis_circuit *circuit) void isis_circuit_down(struct isis_circuit *circuit) { - if (circuit->state != C_STATE_UP) - return; - /* Clear the flags for all the lsps of the circuit. */ isis_circuit_update_all_srmflags(circuit, 0); @@ -756,10 +753,12 @@ void isis_circuit_down(struct isis_circuit *circuit) } /* send one gratuitous hello to spead up convergence */ - if (circuit->is_type & IS_LEVEL_1) - send_hello(circuit, IS_LEVEL_1); - if (circuit->is_type & IS_LEVEL_2) - send_hello(circuit, IS_LEVEL_2); + if (circuit->state == C_STATE_UP) { + if (circuit->is_type & IS_LEVEL_1) + send_hello(circuit, IS_LEVEL_1); + if (circuit->is_type & IS_LEVEL_2) + send_hello(circuit, IS_LEVEL_2); + } circuit->upadjcount[0] = 0; circuit->upadjcount[1] = 0; diff --git a/zebra/zebra_netns_notify.c b/zebra/zebra_netns_notify.c index 30f850597c..b41d17df8c 100644 --- a/zebra/zebra_netns_notify.c +++ b/zebra/zebra_netns_notify.c @@ -80,6 +80,8 @@ static void zebra_ns_notify_create_context_from_entry_name(const char *name) ns_id = zebra_ns_id_get(netnspath); if (zserv_privs.change(ZPRIVS_LOWER)) zlog_err("Can't lower privileges"); + if (ns_id == NS_UNKNOWN) + return; ns_id_external = ns_map_nsid_with_external(ns_id, true); /* if VRF with NS ID already present */ vrf = vrf_lookup_by_id((vrf_id_t)ns_id_external); @@ -103,6 +105,7 @@ static void zebra_ns_notify_create_context_from_entry_name(const char *name) if (ret != CMD_SUCCESS) { zlog_warn("NS notify : failed to create NS %s", netnspath); ns_map_nsid_with_external(ns_id, false); + vrf_delete(vrf); return; } zlog_info("NS notify : created VRF %s NS %s", name, netnspath); diff --git a/zebra/zebra_pbr.c b/zebra/zebra_pbr.c index 86e054795b..1fad6e0cd3 100644 --- a/zebra/zebra_pbr.c +++ b/zebra/zebra_pbr.c @@ -135,7 +135,7 @@ void zebra_pbr_rules_free(void *arg) rule = (struct zebra_pbr_rule *)arg; - kernel_del_pbr_rule(rule); + (void)kernel_del_pbr_rule(rule); XFREE(MTYPE_TMP, rule); } |
