]> git.puffer.fish Git - matthieu/frr.git/log
matthieu/frr.git
4 years agoMerge pull request #6558 from opensourcerouting/7.4/zlogbuf-litter
Donald Sharp [Wed, 10 Jun 2020 23:04:39 +0000 (19:04 -0400)]
Merge pull request #6558 from opensourcerouting/7.4/zlogbuf-litter

[7.4] lib: set up TLS log buffer after forking

4 years agoMerge pull request #6560 from ton31337/fix/configuration_for_labeled_unicast_in_place_7.4
Donald Sharp [Wed, 10 Jun 2020 22:52:47 +0000 (18:52 -0400)]
Merge pull request #6560 from ton31337/fix/configuration_for_labeled_unicast_in_place_7.4

bgpd: [7.4] Make sure network/aggregate-address commands lay down under labeled safi

4 years agobgpd: Make sure network/aggregate-address commands lay down under labeled safi
Donatas Abraitis [Thu, 30 Apr 2020 14:01:10 +0000 (17:01 +0300)]
bgpd: Make sure network/aggregate-address commands lay down under labeled safi

unicast and labeled-unicast share the same table, but configuration should
be visible for both independently. Without this fix it confuses a bit
because when you enter `network 10.0.0.0/24` under labeled-unicast it's
written in unicast family block.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agolib: set up TLS log buffer after forking
David Lamparter [Wed, 10 Jun 2020 18:30:02 +0000 (20:30 +0200)]
lib: set up TLS log buffer after forking

... it contains our pid, so doing it before fork leads to littering
buffers since we try to clean up with the forked pid...

Fixes: #6541
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
4 years agoMerge pull request #6553 from ton31337/fix/bgp_dampening_vty_bug_7.4
Donald Sharp [Wed, 10 Jun 2020 15:08:03 +0000 (11:08 -0400)]
Merge pull request #6553 from ton31337/fix/bgp_dampening_vty_bug_7.4

bgpd: [7.4] Duplicate `bgp dampening ...` stuff

4 years agobgpd: Print dampening configuration per AF, not per neighbor
Donatas Abraitis [Wed, 10 Jun 2020 07:09:01 +0000 (10:09 +0300)]
bgpd: Print dampening configuration per AF, not per neighbor

This caused duplicate `bgp dampening ...` to be printed per neighbor.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agobgpd: Allow setting dampening for more address families
Donatas Abraitis [Wed, 10 Jun 2020 07:10:18 +0000 (10:10 +0300)]
bgpd: Allow setting dampening for more address families

Until now, it was possible to set only for ipv4 unicast/multicast.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agoMerge pull request #6539 from ton31337/fix/refcnt_check_for_dep_data_route-map_7.4
Donald Sharp [Tue, 9 Jun 2020 19:27:20 +0000 (15:27 -0400)]
Merge pull request #6539 from ton31337/fix/refcnt_check_for_dep_data_route-map_7.4

lib: [7.4] Make sure route_map_dep_data is not NULL before decrementing ref…

4 years agoMerge pull request #6524 from ton31337/fix/set_ipv6_ll_if_global_zero_7.4
David Lamparter [Tue, 9 Jun 2020 14:42:37 +0000 (16:42 +0200)]
Merge pull request #6524 from ton31337/fix/set_ipv6_ll_if_global_zero_7.4

bgpd: [7.4] Use IPv6 LL address as nexthop if global was set to ::/LL

4 years agolib: Make sure route_map_dep_data is not NULL before decrementing refcount
Donatas Abraitis [Mon, 8 Jun 2020 11:58:53 +0000 (14:58 +0300)]
lib: Make sure route_map_dep_data is not NULL before decrementing refcount

```
2  0x00007fb9adb07a10 in core_handler (signo=11, siginfo=0x7ffe1414a630, context=<optimized out>) at lib/sigevent.c:228
        sa_default = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = 0, sa_restorer = 0x0}
        sigset = {__val = {8192, 0 <repeats 15 times>}}
3  <signal handler called>
No locals.
4  route_map_dep_update (type=RMAP_EVENT_CLIST_DELETED, rmap_name=0x55d807ddd410 "export4-as49917", dep_name=<optimized out>, dephash=0x55d807adf170) at lib/routemap.c:2750
        dep = 0x55d807d35b00
        dname = 0x55d8081ba560 "123:124"
        rname = 0x55d8081ba540 "export4-as49917"
        ret = 0
        dep_data = 0x0
        ret_dep_data = 0x0
        tmp_dep_data = {rname = 0x55d8081ba540 "export4-as49917", refcnt = 0}
5  route_map_upd8_dependency (type=RMAP_EVENT_CLIST_DELETED, arg=<optimized out>, rmap_name=0x55d807ddd410 "export4-as49917") at lib/routemap.c:2865
        upd8_hash = 0x55d807adf170
```

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agobgpd: Use IPv6 LL address as nexthop if global was set to ::/LL
Donatas Abraitis [Mon, 25 May 2020 14:22:37 +0000 (17:22 +0300)]
bgpd: Use IPv6 LL address as nexthop if global was set to ::/LL

This happens between Bird and FRR. Maybe others as well, dunno.

Bird sends ::(fe80::1588) and we have a nexthop as :: which is inaccessible:

```
BGP routing table entry for fdff:b87d:f5b0::/48
Paths: (1 available, no best path)
  Not advertised to any peer
  4242421588 4242422547 4242422601 4242423605
    :: (inaccessible) from fe80::1588 (172.20.16.140)
    (fe80::1588) (used)
      Origin IGP, invalid, external
      Last update: Mon May 25 14:27:02 2020
```

bgpd[9554]: fe80::1588 went from OpenConfirm to Established
bgpd[9554]: fe80::1588 [FSM] Timer (routeadv timer expire)
bgpd[9554]: fe80::1588 rcvd UPDATE w/ attr: , origin i, mp_nexthop ::(fe80::1588)
bgpd[9554]: fe80::1588 rcvd UPDATE wlen 0 attrlen 120 alen 0
bgpd[9554]: fe80::1588 rcvd fda9:26a9:1c47:2d42::/64 IPv6 unicast
bgpd[9554]: Allocated bnc ::/128(VRF default) peer 0x0
bgpd[9554]: bgp_update(0.0.0.0): NH unresolved
bgpd[9554]: fe80::1588 rcvd fda9:26a9:1c47:d42::/64 IPv6 unicast

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agoMerge pull request #6413 from FRRouting/dev_isis_sr
Donald Sharp [Fri, 15 May 2020 19:06:55 +0000 (15:06 -0400)]
Merge pull request #6413 from FRRouting/dev_isis_sr

isisd: IS-IS Segment Routing support

4 years agoMerge pull request #6409 from ton31337/feature/missing_to_7.4
Donald Sharp [Fri, 15 May 2020 11:47:05 +0000 (07:47 -0400)]
Merge pull request #6409 from ton31337/feature/missing_to_7.4

[7.4] bgpd two fixes

4 years agoMerge pull request #6408 from donaldsharp/reload_74
Donatas Abraitis [Fri, 15 May 2020 06:04:29 +0000 (09:04 +0300)]
Merge pull request #6408 from donaldsharp/reload_74

[7.4] DC's

4 years agobgpd: Set a proper SAFI for labaled-unicast when looking for scount
Donatas Abraitis [Sun, 3 May 2020 18:16:45 +0000 (21:16 +0300)]
bgpd: Set a proper SAFI for labaled-unicast when looking for scount

The problem is that peer_af_array returns NULL when SAFI is changed to
unicast. We use unicast table, but peer is created and activated under
labeled-unicast, hence we should lookup with a proper SAFI id.

Without this patch peer_af_find() returns NULL and we can't show
PfxSnt in `show bgp summary`.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agobgpd: Use default AFI_IP6/SAFI_UNICAST when displaying statistics
Donatas Abraitis [Sat, 9 May 2020 18:33:51 +0000 (21:33 +0300)]
bgpd: Use default AFI_IP6/SAFI_UNICAST when displaying statistics

Without specifying a default afi/safi we get a segfault:

```
(gdb) frame 4
bgp_table_stats (..., afi=32724, safi=SAFI_UNICAST, ...
11349 if (!bgp->rib[afi][safi]) {
(gdb)
```

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agobgpd: `bgp bestpath bandwidth` should not be a legal command
Donald Sharp [Thu, 7 May 2020 14:03:31 +0000 (10:03 -0400)]
bgpd: `bgp bestpath bandwidth` should not be a legal command

The `bgp bestpath bandwidth` command should not be a legal
command.  Pull out the `no` form to allow this.  Allow
`no bgp bestpath bandwidth` to work as we would expect.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agobgpd: really remove the `no ip as-path...` command
Donald Sharp [Mon, 11 May 2020 12:45:11 +0000 (08:45 -0400)]
bgpd: really remove the `no ip as-path...` command

We had already removed the `ip as-path..` command
to have `bgp as-path` but for some reason a `no ip as-path..`
command ALIAS was still around.  Kill with extreme prejudice.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agotools: revert frr-reload.py remove stderr redirects"
Donald Sharp [Tue, 12 May 2020 17:31:05 +0000 (13:31 -0400)]
tools: revert frr-reload.py remove stderr redirects"

This reverts commit 3fa139a65be70e5a81b5f078530094f09a247416.

This is being reverted because this commit completely
breaks the invocation of frr-reload.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoMerge pull request #6342 from Orange-OpenSource/dev_isis_sr dev_isis_sr
Renato Westphal [Thu, 14 May 2020 17:23:03 +0000 (14:23 -0300)]
Merge pull request #6342 from Orange-OpenSource/dev_isis_sr

isisd: Preparation to merge Segment-Routing into master

4 years agoisisd: Update documentation for Segment Routing
Olivier Dugeon [Tue, 5 May 2020 14:40:35 +0000 (16:40 +0200)]
isisd: Update documentation for Segment Routing

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
4 years agoisisd: Update Segment Routing Show Commands
Olivier Dugeon [Tue, 5 May 2020 14:29:46 +0000 (16:29 +0200)]
isisd: Update Segment Routing Show Commands

 * Improve `show isis segment-routing prefix-sids` output
 * Add new `show isis segment-routing node' command

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
4 years agoisisd: IS-IS-SR preparation for master 5/5
Olivier Dugeon [Mon, 4 May 2020 17:39:20 +0000 (19:39 +0200)]
isisd: IS-IS-SR preparation for master 5/5

Update comments (doxygen style) for all functions.

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
4 years agoisisd: IS-IS-SR preparation for master 4/5
Olivier Dugeon [Mon, 4 May 2020 16:26:21 +0000 (18:26 +0200)]
isisd: IS-IS-SR preparation for master 4/5

 * Regroup fonctions to install label for Prefix and Adjacency SID
 * Change 'replace_semantics' variable name by 'make_before_break' in
   sr_prefix_reinstall() function and adjust comments
 * Call directly lsp_regenerate_schedule() from isis_nb_config.c when MSD
   is updated

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
4 years agoisisd: IS-IS-SR preparation for master 3/5
Olivier Dugeon [Mon, 4 May 2020 07:40:36 +0000 (09:40 +0200)]
isisd: IS-IS-SR preparation for master 3/5

Add debug macro and debug messages

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
4 years agoisisd: IS-IS-SR preparation for master 2/5
Olivier Dugeon [Sun, 3 May 2020 18:01:20 +0000 (20:01 +0200)]
isisd: IS-IS-SR preparation for master 2/5

 * Rename functions following rules: isis_sr_XXX is kept for external functions
   and isis_sr prefix remove for static ones
 * Rename local_label & remote_label variables by input_label & output_label
 * Change parameter order (to follow other functions) in sr_node_srgb_update()

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
4 years agoisisd: IS-IS-SR preparation for master 1/5
Olivier Dugeon [Thu, 30 Apr 2020 09:23:15 +0000 (11:23 +0200)]
isisd: IS-IS-SR preparation for master 1/5

 * Rename RB-TREE variable from tree_sr_XXX to srdb_XXX
 * Replace parse_flags by an enum and rename it srdb_state which reflects
   more the role of this flag: determined the state of SR-Node and SR-Prefix
   stored in the SRDB: VALIDATED, NEW, MODIFIED, UNCHANGED

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
4 years agoMerge pull request #6393 from opensourcerouting/7.4/init-config-perms
Donatas Abraitis [Thu, 14 May 2020 09:46:38 +0000 (12:46 +0300)]
Merge pull request #6393 from opensourcerouting/7.4/init-config-perms

[7.4] build: use configfile mode in init script

4 years agobuild: use configfile mode in init script
David Lamparter [Mon, 11 May 2020 19:37:08 +0000 (21:37 +0200)]
build: use configfile mode in init script

This only applies for split-config;  the init script would create an
empty config file with default permissions.

Reported-by: Robert Scheck <robert@fedoraproject.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 5c9063771195bb51a8cc1c64f9924e53a0602817)

4 years agoMerge pull request #6365 from donaldsharp/bsd_v6_Null_bs base_7.4
Mark Stapp [Thu, 7 May 2020 17:12:55 +0000 (13:12 -0400)]
Merge pull request #6365 from donaldsharp/bsd_v6_Null_bs

zebra: Add code to install v6 blackhole routes on *bsd

4 years agozebra: Add code to install v6 blackhole routes on *bsd
Donald Sharp [Thu, 7 May 2020 15:24:05 +0000 (11:24 -0400)]
zebra: Add code to install v6 blackhole routes on *bsd

This code was just missing.  Take the few minutes and
get it done.

!
ip route 4.5.6.7/32 Null0
ipv6 route 4::5/128 Null0
!
$ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags     Netif Expire
default            192.168.122.1      UGS      vtnet0
4.5.6.7/32         127.0.0.1          UG1B        lo0
127.0.0.1          link#2             UH          lo0
192.168.122.0/24   link#1             U        vtnet0
192.168.122.40     link#1             UHS         lo0

Internet6:
Destination                       Gateway                       Flags     Netif Expire
::/96                             ::1                           UGRS        lo0
::1                               link#2                        UH          lo0
::ffff:0.0.0.0/96                 ::1                           UGRS        lo0
4::5/128                          ::1                           UG1B        lo0
fe80::/10                         ::1                           UGRS        lo0
fe80::%vtnet0/64                  link#1                        U        vtnet0
fe80::5054:ff:fe5a:e705%vtnet0    link#1                        UHS         lo0
fe80::%lo0/64                     link#2                        U           lo0
fe80::1%lo0                       link#2                        UHS         lo0
ff02::/16                         ::1                           UGRS        lo0
$

$ uname -a
FreeBSD donna 12.1-RELEASE FreeBSD 12.1-RELEASE r354233 GENERIC  amd64
$

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoMerge pull request #6356 from ton31337/fix/aggregator_0_ignore
Donald Sharp [Wed, 6 May 2020 23:43:21 +0000 (19:43 -0400)]
Merge pull request #6356 from ton31337/fix/aggregator_0_ignore

bgpd: Ignore aggregator attribute if it's malformed (0.0.0.0)

4 years agoMerge pull request #6358 from donaldsharp/zebra_onlink
Jafar Al-Gharaibeh [Wed, 6 May 2020 20:25:48 +0000 (15:25 -0500)]
Merge pull request #6358 from donaldsharp/zebra_onlink

zebra: Loosen ONLINK restrictions a tiny bit

4 years agoMerge pull request #6359 from sworleys/NHG-No-IPv4-IPv6
Mark Stapp [Wed, 6 May 2020 19:42:52 +0000 (15:42 -0400)]
Merge pull request #6359 from sworleys/NHG-No-IPv4-IPv6

zebra: abstract 5549 check into a function

4 years agoMerge pull request #6357 from mjstapp/fix_ldp_topo1_how
Renato Westphal [Wed, 6 May 2020 15:23:36 +0000 (12:23 -0300)]
Merge pull request #6357 from mjstapp/fix_ldp_topo1_how

tests: remove unused ref files from ldp topotest

4 years agoMerge pull request #6352 from volta-networks/fix_ldp_dscp
Renato Westphal [Wed, 6 May 2020 15:23:01 +0000 (12:23 -0300)]
Merge pull request #6352 from volta-networks/fix_ldp_dscp

ldpd: LDP does not always send traffic with correct DSCP value.

4 years agozebra: Loosen ONLINK restrictions a tiny bit
Donald Sharp [Wed, 6 May 2020 14:13:48 +0000 (10:13 -0400)]
zebra: Loosen ONLINK restrictions a tiny bit

Loosen the ONLINK restrictions such that when an upper
level protocol sends us a nexthop with an ONLINK attribute
just ensure that interface is up and usable.  ONLINK effectively
means we know what we are doing to the kernel.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
4 years agoldpd: LDP does not always send traffic with correct DSCP value.
Karen Schoener [Tue, 5 May 2020 21:59:00 +0000 (17:59 -0400)]
ldpd: LDP does not always send traffic with correct DSCP value.

Adding code so that the LDP neighbor that does not initiate the
TCP connection also sets the DSCP (via setsocketopt).

Signed-off-by: Karen Schoener <karen@voltanet.io>
4 years agotests: remove unused ref files from ldp topotest
Mark Stapp [Wed, 6 May 2020 13:31:21 +0000 (09:31 -0400)]
tests: remove unused ref files from ldp topotest

Remove a couple of a couple of mis-named reference output files
from the ldp-topo1 suite.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
4 years agobgpd: Ignore aggregator attribute if it's malformed (0.0.0.0)
Donatas Abraitis [Wed, 6 May 2020 09:55:55 +0000 (12:55 +0300)]
bgpd: Ignore aggregator attribute if it's malformed (0.0.0.0)

This is not the attribute involved in path selection and by rfc7606 it should
be just ignored.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agobgpd: Use slightly modified version of error message if AS path contains 0
Donatas Abraitis [Wed, 6 May 2020 09:51:40 +0000 (12:51 +0300)]
bgpd: Use slightly modified version of error message if AS path contains 0

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agoMerge pull request #6347 from opensourcerouting/llvm-callgraph
Quentin Young [Tue, 5 May 2020 21:40:21 +0000 (17:40 -0400)]
Merge pull request #6347 from opensourcerouting/llvm-callgraph

tools: LLVM-based call graphs

4 years agoMerge pull request #6350 from pureport/fix/bgp_double_community_free
Quentin Young [Tue, 5 May 2020 21:39:28 +0000 (17:39 -0400)]
Merge pull request #6350 from pureport/fix/bgp_double_community_free

bgpd: Check to ensure community attributes exist before freeing them

4 years agobgpd: Check to ensure community attributes exist before freeing them
Josh Cox [Tue, 5 May 2020 17:09:14 +0000 (13:09 -0400)]
bgpd: Check to ensure community attributes exist before freeing them

Community attributes might have been removed by an inbound route map, so we
should check to ensure they still exist before trying to free them.
This fixes a segfault described in issue #6345.

Signed-off-by: Josh Cox <josh.cox@pureport.com>
4 years agoMerge pull request #6349 from qlyoung/hook-cpp-compat
David Lamparter [Tue, 5 May 2020 19:42:29 +0000 (21:42 +0200)]
Merge pull request #6349 from qlyoung/hook-cpp-compat

4 years agozebra: abstract 5549 check into a function
Stephen Worley [Tue, 5 May 2020 19:05:30 +0000 (15:05 -0400)]
zebra: abstract 5549 check into a function

Abstract the 5549 ipv4 over ipv6 into a function for easier
code reuse and reading.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agolib: make hook.h cpp-compatible
Quentin Young [Tue, 5 May 2020 18:03:19 +0000 (14:03 -0400)]
lib: make hook.h cpp-compatible

Some CPP compilers don't support these designated initializers, since
we're just zero initializing don't need em

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
4 years agoMerge pull request #6103 from mjstapp/fix_all_unnumbered
Donald Sharp [Tue, 5 May 2020 17:00:26 +0000 (13:00 -0400)]
Merge pull request #6103 from mjstapp/fix_all_unnumbered

zebra: don't treat every interface as unnumbered

4 years agoMerge pull request #6335 from ton31337/feature/show_policy_in_bgp_summary
David Lamparter [Tue, 5 May 2020 13:29:09 +0000 (15:29 +0200)]
Merge pull request #6335 from ton31337/feature/show_policy_in_bgp_summary

4 years agobuild: don't link ldpd.c twice
David Lamparter [Tue, 5 May 2020 12:32:21 +0000 (14:32 +0200)]
build: don't link ldpd.c twice

... this breaks LLVM bitcode linking.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
4 years agopython: add graphviz callgraphs
David Lamparter [Mon, 4 May 2020 18:57:45 +0000 (20:57 +0200)]
python: add graphviz callgraphs

Uses the JSON data extracted from LLVM bitcode by tools/frr-llvm-cg.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
4 years agobuild: add LLVM bitcode targets
David Lamparter [Mon, 4 May 2020 16:39:35 +0000 (18:39 +0200)]
build: add LLVM bitcode targets

Just an easy way to produce LLVM .bc (bitcode) files.  Not used during
normal builds.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
4 years agotools: frr-llvm-cg
David Lamparter [Mon, 4 May 2020 15:30:24 +0000 (17:30 +0200)]
tools: frr-llvm-cg

This dumps call graph data from LLVM bitcode files into a JSON file.
Specifically for FRR, it understands thread_add_*(), hook_*() and
install_element() so it can provide extra information in these cases.
As a general feature, it tries to track down function pointers as far as
easily feasible.

Signed-off-by: David Lamparter <equinox@diac24.net>
4 years agobuild: rework Makefile var extraction... again
David Lamparter [Fri, 1 May 2020 13:22:05 +0000 (15:22 +0200)]
build: rework Makefile var extraction... again

*sigh* I can't seem to catch a break on this.  Add a regex variant.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
4 years agoMerge commit '97cfd5d207e46a027809125cfb356fd301af0cf5'
David Lamparter [Mon, 4 May 2020 19:02:13 +0000 (21:02 +0200)]
Merge commit '97cfd5d207e46a027809125cfb356fd301af0cf5'

(from PR #6137)

4 years agodoc: Add an example about what "(Policy)" means under `show bgp summary`
Donatas Abraitis [Mon, 4 May 2020 11:49:13 +0000 (14:49 +0300)]
doc: Add an example about what "(Policy)" means under `show bgp summary`

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agobgpd: Show "(Policy)" under PfxRcd/PfxSnt when eBGP policy is in use
Donatas Abraitis [Sun, 3 May 2020 18:49:46 +0000 (21:49 +0300)]
bgpd: Show "(Policy)" under PfxRcd/PfxSnt when eBGP policy is in use

It could be hard to notice when eBGP policy is missing in `show bgp summary`.

This adds more sugar to the output:

Normal:
```
 MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt
      10        0    0    0 00:02:07            6        8
```
When rfc8212 is enabled (default since 7.4) - OUTBOUND:
```
 MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt
      13        0    0    0 00:04:56            6 (Policy)
```
INBOUND:
```
 MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt
      19        0    0    0 00:06:27     (Policy)        2
```

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
4 years agoMerge pull request #6330 from sworleys/No-NHG-Install-With-VRFns
Mark Stapp [Fri, 1 May 2020 18:23:49 +0000 (14:23 -0400)]
Merge pull request #6330 from sworleys/No-NHG-Install-With-VRFns

zebra: force off kernel NHG install with netns VRFs

4 years agoMerge pull request #6329 from donaldsharp/zebra_more_info
Mark Stapp [Fri, 1 May 2020 17:48:50 +0000 (13:48 -0400)]
Merge pull request #6329 from donaldsharp/zebra_more_info

zebra: Display ifindex of interface being installed on

4 years agozebra: force off kernel NHG install with netns VRFs
Stephen Worley [Fri, 1 May 2020 16:34:43 +0000 (12:34 -0400)]
zebra: force off kernel NHG install with netns VRFs

Force off kernel NHG install with netns-based VRFs for
now. There is not really a good solution for allowing
kernel nexthop groups in namespaced based vrfs.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
4 years agozebra: Display ifindex of interface being installed on
Donald Sharp [Fri, 1 May 2020 15:57:02 +0000 (11:57 -0400)]
zebra: Display ifindex of interface being installed on

When installing a nexthop group, dump out the ifindex of the
nexthop being installed as a bit more data for the developer.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agoMerge pull request #6326 from mjstapp/ignore_emacs_desktop
Quentin Young [Thu, 30 Apr 2020 22:23:27 +0000 (18:23 -0400)]
Merge pull request #6326 from mjstapp/ignore_emacs_desktop

git: ignore emacs desktop

5 years agogit: ignore emacs desktop
Mark Stapp [Thu, 30 Apr 2020 18:19:10 +0000 (14:19 -0400)]
git: ignore emacs desktop

Ignore the emacs desktop files - should never ever be committed

Signed-off-by: Mark Stapp <mjs@voltanet.io>
5 years agoMerge pull request #6323 from donaldsharp/floom
Mark Stapp [Thu, 30 Apr 2020 17:25:42 +0000 (13:25 -0400)]
Merge pull request #6323 from donaldsharp/floom

bgpd: Ensure that we have a ifp pointer

5 years agoMerge pull request #6322 from ton31337/feature/bgp_bogon_filter_example
Donald Sharp [Thu, 30 Apr 2020 17:14:30 +0000 (13:14 -0400)]
Merge pull request #6322 from ton31337/feature/bgp_bogon_filter_example

doc: Add an example how to filter BGP bogon ASNs

5 years agobgpd: Ensure that we have a ifp pointer
Donald Sharp [Thu, 30 Apr 2020 15:16:28 +0000 (11:16 -0400)]
bgpd: Ensure that we have a ifp pointer

It is possible that the if_lookup_by_index() call will return
a NULL value and calling zclient_send_interface_radv_req.  Just
test that we have a valid interface pointer.

Found by Coverity

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agodoc: Add an example how to filter BGP bogon ASNs
Donatas Abraitis [Thu, 30 Apr 2020 14:35:49 +0000 (17:35 +0300)]
doc: Add an example how to filter BGP bogon ASNs

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #6318 from opensourcerouting/fix-exit-vrf
Donald Sharp [Thu, 30 Apr 2020 11:30:01 +0000 (07:30 -0400)]
Merge pull request #6318 from opensourcerouting/fix-exit-vrf

lib: update the CLI xpath index when exiting from the VRF node

5 years agoMerge pull request #6320 from opensourcerouting/fix-vrf-misconfig-detection
Donald Sharp [Thu, 30 Apr 2020 11:29:17 +0000 (07:29 -0400)]
Merge pull request #6320 from opensourcerouting/fix-vrf-misconfig-detection

zebra: fix detection of VRF misconfiguration

5 years agoisisd: Update IS-IS SR Label Manager
Olivier Dugeon [Fri, 10 Apr 2020 15:12:48 +0000 (17:12 +0200)]
isisd: Update IS-IS SR Label Manager

This change modify the way IS-IS is connected to the Label Manager:
 - Add emission of Hello Message prior to the connection as per
   modification introduced by PR #5925
 - Add 'session_id' as per modification introduced by PR #6224
 - Add Doxygen documentation to Label Manager functions

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
5 years agoisisd: Update ISIS-SR with new ZAPI message
Olivier Dugeon [Tue, 3 Mar 2020 15:59:33 +0000 (16:59 +0100)]
isisd: Update ISIS-SR with new ZAPI message

Update label enforcement due to modification in zapi message:
zapi_nexthop_label becomes zapi_nexthop as per PR #5813

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
5 years agotests: add topotest for IS-IS SR
Renato Westphal [Mon, 23 Sep 2019 12:38:04 +0000 (09:38 -0300)]
tests: add topotest for IS-IS SR

This commit introduces a comprehensive test for IS-IS Segment
Routing. It features the following network topology:

                         +---------+
                         |         |
                         |   RT1   |
                         | 1.1.1.1 |
                         |         |
                         +---------+
                              |eth-sw1
                              |
                              |
                              |
         +---------+          |          +---------+
         |         |          |          |         |
         |   RT2   |eth-sw1   |   eth-sw1|   RT3   |
         | 2.2.2.2 +----------+----------+ 3.3.3.3 |
         |         |     10.0.1.0/24     |         |
         +---------+                     +---------+
    eth-rt4-1|  |eth-rt4-2          eth-rt5-1|  |eth-rt5-2
             |  |                            |  |
  10.0.2.0/24|  |10.0.3.0/24      10.0.4.0/24|  |10.0.5.0/24
             |  |                            |  |
    eth-rt2-1|  |eth-rt2-2          eth-rt3-1|  |eth-rt3-2
         +---------+                     +---------+
         |         |                     |         |
         |   RT4   |     10.0.6.0/24     |   RT5   |
         | 4.4.4.4 +---------------------+ 5.5.5.5 |
         |         |eth-rt5       eth-rt4|         |
         +---------+                     +---------+
       eth-rt6|                                |eth-rt6
              |                                |
   10.0.7.0/24|                                |10.0.8.0/24
              |          +---------+           |
              |          |         |           |
              |          |   RT6   |           |
              +----------+ 6.6.6.6 +-----------+
                  eth-rt4|         |eth-rt5
                         +---------+

Each router has both an IPv4 and an IPv6 loopback address, each of
which has a corresponding Prefix-SID configured.

Basic SR functionality is tested. First, the topotest ensures that
all expected Prefix-SIDs and Adj-SIDs are flooded and installed
correctly in all routers of the network. Later, network failures
are simulated and configuration changes are performed in several
different routers. The topotest then checks if IS-IS has converged
as expected in the network according to the network failures and
configuration changes that happened.

The topotest comprises 11 different steps, each with four individual
tests (for a total of 44 tests). A summary of what each step does
is provided below:

---

STEP 1:
-Initial network convergence

---

Step 2:
Action(s):
-Disable IS-IS on the eth-rt5 interface on rt4

Expected changes:
-rt4 should uninstall the Adj-SIDs pointing to rt5
-rt5 should uninstall the Adj-SIDs pointing to rt4
-rt2 should reinstall rt5's Prefix-SIDs (2 nexthops deleted)
-rt3 should reinstall rt4's Prefix-SIDs (2 nexthops deleted)
-rt4 should reinstall rt3's Prefix-SIDs (1 nexthop deleted)
-rt4 should reinstall rt5's Prefix-SIDs (1 nexthop changed)
-rt5 should reinstall rt2's Prefix-SIDs (1 nexthop deleted)
-rt5 should reinstall rt4's Prefix-SIDs (1 nexthop changed)

---

Step 3:
Action(s):
-Shut down the eth-rt4 interface on rt6
-Shut down the eth-rt5 interface on rt6

Expected changes:
-All routers should uninstall rt6's Prefix-SIDs
-rt4 and rt5 should uninstall the Adj-SIDs pointing to rt6
-rt4 should reconverge rt5's Prefix-SIDs through rt2 using ECMP
-rt5 should reconverge rt4's Prefix-SIDs through rt3 using ECMP
-rt6 should uninstall all its IS-IS routes, Prefix-SIDs and Adj-SIDs

---

Step 4:
Action(s):
-Bring up the eth-rt4 interface on rt6
-Bring up the eth-rt5 interface on rt6
-Change rt6's SRGB

Expected changes:
-All routers should install rt6's Prefix-SIDs
-rt4 and rt5 should install Adj-SIDs for rt6
-rt4 should reconverge rt5's Prefix-SIDs through rt6 using the new SRGB
-rt5 should reconverge rt4's Prefix-SIDs through rt6 using the new SRGB
-rt6 should reinstall all IS-IS routes and Prefix-SIDs from the network,
and Adj-SIDs for rt4 and rt5

---

Step 5:
Action(s):
-Disable SR on rt6

Expected changes:
-All routers should uninstall rt6's Prefix-SIDs
-rt4 should uninstall rt5's Prefix-SIDs since the nexthop router hasn't
SR enabled anymore
-rt5 should uninstall rt4's Prefix-SIDs since the nexthop router hasn't
SR enabled anymore
-rt6 should uninstall all Prefix-SIDs from the network, and the Adj-SIDs
for rt4 and rt5

---

Step 6:
Action(s):
-Enable SR on rt6

Expected changes:
-All routers should install rt6's Prefix-SIDs
-rt4 should install rt5's Prefix-SIDs through rt6
-rt5 should install rt4's Prefix-SIDs through rt6
-rt6 should install all Prefix-SIDs from the network, and Adj-SIDs for
rt4 and rt5

---

Step 7:
Action(s):
-Delete rt1's Prefix-SIDs

Expected changes:
-All routers should uninstall rt1's Prefix-SIDs

---

Step 8:
Action(s):
-Re-add rt1's Prefix-SIDs

Expected changes:
-All routers should install rt1's Prefix-SIDs

---

Step 9:
Action(s):
-Change rt1's Prefix-SIDs to use the no-php option
-Change rt6's Prefix-SIDs to stop using the explicit-null option

Expected changes:
-rt2 and rt3 should reinstall rt1's Prefix-SIDs accordingly
-rt4 and rt5 should reinstall rt6's Prefix-SIDs accordingly

---

Step 10:
Action(s):
-Remove the IPv4 address from rt4's eth-rt2-1 interface

Expected changes:
-rt2 should uninstall the IPv4 Adj-SIDs attached to the eth-rt4-1
interface
-rt2 should reinstall all IPv4 Prefix-SIDs whose nexthop router is rt4
(ECMP shouldn't be used anymore)
-rt4 should reinstall all IPv4 Prefix-SIDs whose nexthop router is rt2
(ECMP shouldn't be used anymore)

---

Step 11:
Action(s):
-Restore the original network setup

Expected changes:
-All routes, Prefix-SIDs and Adj-SIDs should be the same as they were
after the initial network convergence (step 1)

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agodoc: add documentation for IS-IS Segment Routing
Olivier Dugeon [Thu, 8 Aug 2019 19:44:23 +0000 (16:44 -0300)]
doc: add documentation for IS-IS Segment Routing

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
5 years agoisisd: add support for segment routing
Renato Westphal [Sun, 4 Aug 2019 01:02:37 +0000 (22:02 -0300)]
isisd: add support for segment routing

This is an implementation of the IS-IS SR draft [1] for FRR.

The following features are supported:
* IPv4 and IPv6 Prefix-SIDs;
* IPv4 and IPv6 Adj-SIDs and LAN-Adj-SIDs;
* Index and absolute labels;
* The no-php and explicit-null Prefix-SID flags;
* Full integration with the Label Manager.

Known limitations:
* No support for Anycast-SIDs;
* No support for the SID/Label Binding TLV (required for LDP interop).
* No support for persistent Adj-SIDs;
* No support for multiple SRGBs.

[1] draft-ietf-isis-segment-routing-extensions-25

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agoisisd: add segment-routing CLI commands
Renato Westphal [Wed, 7 Aug 2019 16:37:00 +0000 (13:37 -0300)]
isisd: add segment-routing CLI commands

In the name of consistency, these commands are very similar to the
ospfd SR configuration commands.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agoisisd: add segment-routing YANG nodes and skeleton callbacks
Renato Westphal [Wed, 7 Aug 2019 16:35:07 +0000 (13:35 -0300)]
isisd: add segment-routing YANG nodes and skeleton callbacks

Most definitions were borrowed from the IETF IS-IS SR YANG module,
with a few adaptations. Of particular notice are the following:
* No support for the configuration of multiple SRGBs.
* No distinction between local and connected Prefix-SIDs, both are
  configured the same way.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agoisisd: remove refcount from the isis_nexthop structure
Renato Westphal [Fri, 6 Sep 2019 03:57:14 +0000 (00:57 -0300)]
isisd: remove refcount from the isis_nexthop structure

isisd implements an optimization that allows multiple routes to
share the same nexthop (using a refcount) in order to save memory.

Now that SR support is coming, however, it will be necessary to
embed additional SR-related information inside the isis_nexthop
structure. But this can only be done if the nexthops aren't shared
among routes anymore.

Removing this memory optimization should have minimal impact since
the isis_nexthop structure is really small. On large networks with
thousands of routes, the memory saving would be in the order of a
few kilobytes.  Not something we should be concerned about nowadays.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agoisisd: split vty_out_timestr() into two helper functions
Renato Westphal [Sat, 10 Aug 2019 20:57:43 +0000 (17:57 -0300)]
isisd: split vty_out_timestr() into two helper functions

The new log_uptime() function logs an UNIX timestamp to a buffer
provided by the user. It's very flexibile and can be used in a
variety of contexts, different from vty_out_timestr() which is too
tied to the VTY code.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agoisisd: introduce new adjacency hooks
Renato Westphal [Wed, 7 Aug 2019 22:54:00 +0000 (19:54 -0300)]
isisd: introduce new adjacency hooks

The 'isis_adj_ip_enabled_hook' hook will be called whenever
an adjacency goes from zero to one or more IPv4 or IPv6
addresses. Conversely, the 'isis_adj_ip_disabled_hook' hook will
be called whenever an adjacency goes from one or more IPv4/IPv6
addresses to no addresses at all.

These hooks will be used by the upcoming SR code to add/delete
Adj-SIDs depending on the IP addresses present in the remote
adjacencies.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agolib: constify a few parameters of helper functions
Renato Westphal [Wed, 7 Aug 2019 23:00:58 +0000 (20:00 -0300)]
lib: constify a few parameters of helper functions

Parameters should be const whenever possible to improve code
readability and remove the need to cast away the constness of
const arguments.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agozebra: fix detection of VRF misconfiguration
Renato Westphal [Thu, 30 Apr 2020 02:12:22 +0000 (23:12 -0300)]
zebra: fix detection of VRF misconfiguration

The netlink_vrf_change() function is called both when a VRF device
is created in the Linux kernel and when it is activated. This
commit changes this function to perform the VRF misconfiguration
detection only when the VRF device is created, as doing the check
twice would cause a false positive followed by a hard failure (not
to mention the double check is unnecessary since the VRF table ID
can't change once the device is created).

Fixes #6319.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agoMerge pull request #6241 from volta-networks/fix_ldp_acl
Renato Westphal [Thu, 30 Apr 2020 01:44:25 +0000 (22:44 -0300)]
Merge pull request #6241 from volta-networks/fix_ldp_acl

ldpd: fix ACL rule modification

5 years agolib: update the CLI xpath index when exiting from the VRF node
Renato Westphal [Wed, 29 Apr 2020 21:49:29 +0000 (18:49 -0300)]
lib: update the CLI xpath index when exiting from the VRF node

All custom "exit-*" commands that exit from a YANG-modeled
CLI node need to use cmd_exit() to ensure the CLI xpath index
(vty->xpath_index) will be updated accordingly.

Fixes #6316.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
5 years agoMerge pull request #6314 from pjdruddy/fix-arp-cache-vtep-json-cli
Sri Mohana Singamsetty [Wed, 29 Apr 2020 16:31:22 +0000 (09:31 -0700)]
Merge pull request #6314 from pjdruddy/fix-arp-cache-vtep-json-cli

zebra: fix json for show evpn arp-cache vni vtep

5 years agoMerge pull request #5786 from mjstapp/fix_notif_empty_nhg
Stephen Worley [Wed, 29 Apr 2020 16:28:56 +0000 (12:28 -0400)]
Merge pull request #5786 from mjstapp/fix_notif_empty_nhg

zebra: fix handling of failed route install via notification

5 years agoldpd: fix ACL rule modification
lynne [Wed, 15 Apr 2020 17:49:41 +0000 (13:49 -0400)]
ldpd: fix ACL rule modification

Changes to ACL rules were not applied to LDP.  This fix allows
LDP to be notified when a rule in an ACL filter is modified by
the user. The filter is properly applied to the LDP session.
The filter may cause a LDP session to go down/up or to remove/add
labels being advertised/received from a neighbor.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
Signed-off-by: Karen Schoener <karen@voltanet.io>
5 years agozebra: don't treat every interface as unnumbered
Mark Stapp [Fri, 6 Mar 2020 21:09:10 +0000 (16:09 -0500)]
zebra: don't treat every interface as unnumbered

Commit e93a6fbb4 from PR3908 changed every interface into an
'unnumbered' interface - even interfaces that do not have
ipv4 at all. Undo that.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
5 years agoMerge pull request #6309 from dslicenc/ra-retrans-interval
Russ White [Wed, 29 Apr 2020 15:10:33 +0000 (11:10 -0400)]
Merge pull request #6309 from dslicenc/ra-retrans-interval

zebra: add ability to set retransmit timer for IPv6 RAs

5 years agoMerge pull request #6303 from dslicenc/stop-enhe-ras
Russ White [Wed, 29 Apr 2020 15:09:58 +0000 (11:09 -0400)]
Merge pull request #6303 from dslicenc/stop-enhe-ras

bgpd: turn off RAs when numbered peers are deleted

5 years agoMerge pull request #6313 from volta-networks/fix_zebra_pw_nht
Donald Sharp [Wed, 29 Apr 2020 14:22:04 +0000 (10:22 -0400)]
Merge pull request #6313 from volta-networks/fix_zebra_pw_nht

zebra: fix zebra pseudowire manager NHT

5 years agoMerge pull request #6299 from ton31337/fix/access-list_deletion
Donald Sharp [Wed, 29 Apr 2020 12:31:31 +0000 (08:31 -0400)]
Merge pull request #6299 from ton31337/fix/access-list_deletion

lib: Delete the entire access-list only if there are no more entries

5 years agozebra: fix json for show evpn arp-cache vni vtep
Pat Ruddy [Wed, 29 Apr 2020 11:22:14 +0000 (12:22 +0100)]
zebra: fix json for show evpn arp-cache vni vtep

The function zebra_vxlan_print_neigh_vni_vtep does not create
a json object when json has been requested from the CLI and as a
result it prints out the information in normal CLI format.
Fix is to allocate the json object when required.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
5 years agodoc: Documentation for ipv6 nd ra-retrans-timer command
Don Slice [Wed, 22 Apr 2020 11:55:10 +0000 (11:55 +0000)]
doc: Documentation for ipv6 nd ra-retrans-timer command

Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
5 years agozebra: add ability to set retransmit timer for IPv6 RAs
Don Slice [Tue, 28 Apr 2020 11:54:14 +0000 (11:54 +0000)]
zebra: add ability to set retransmit timer for IPv6 RAs

Reported by testing agency that rfc 4861 section 6.2.1 states
that all implementations must have a configuration knob to change
the setting of the advertised retransmit timer sent in RA packets.
This fix adds that capability.

Ticket: CM-29199
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
5 years agoMerge pull request #6228 from donaldsharp/change_network_statement_default
David Lamparter [Wed, 29 Apr 2020 07:02:42 +0000 (09:02 +0200)]
Merge pull request #6228 from donaldsharp/change_network_statement_default

5 years agoMerge pull request #6310 from donaldsharp/revert_the_behavior
Sri Mohana Singamsetty [Tue, 28 Apr 2020 22:41:47 +0000 (15:41 -0700)]
Merge pull request #6310 from donaldsharp/revert_the_behavior

Revert "vtysh: fix searching commands in parent nodes"

5 years agodoc: Update doc for the `bgp network import-check` command
Donald Sharp [Wed, 15 Apr 2020 12:31:27 +0000 (08:31 -0400)]
doc: Update doc for the `bgp network import-check` command

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agobgpd,tests: Modify import-check to require underlying prefixes to exist
Donald Sharp [Wed, 15 Apr 2020 12:21:11 +0000 (08:21 -0400)]
bgpd,tests: Modify import-check to require underlying prefixes to exist

Modify the import-check command to require the underlying prefix
to exist in the rib.  General consensus is that this is the correct
behavior.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agoMerge pull request #6302 from volta-networks/fix_ldpd_af_reload
Donald Sharp [Tue, 28 Apr 2020 19:05:57 +0000 (15:05 -0400)]
Merge pull request #6302 from volta-networks/fix_ldpd_af_reload

tools: fix frr-reload AF issue with ldpd

5 years agozebra: fix zebra pseudowire manager NHT
Karen Schoener [Mon, 27 Apr 2020 18:31:50 +0000 (14:31 -0400)]
zebra: fix zebra pseudowire manager NHT

Intermittently, there is a 30 second delay for a LDP pseudowire to become
operational.

One way to reproduce the issue is: Once PW is up, shutdown link to trigger
a change to the pseudowire's next hop, and then restore link to cause
pseudowire to return to original NH.

Problem Descripton:
    The Zebra PW manager installs pseudowires in the data plane when the
    following two conditions are met:
        1. Pseudowire is labeled via LDP mapping messages
        2. A labeled NH route exists to reach the remote pseudowire endpoint

    The Zebra PW manager registers a NHT callback when a pseudowire is enabled.
    This allows the Zebra PW manager to install or reinstall the pseudowire.

    The Zebra PW manager deregisters for the NHT callback when the pseudowire is
    disabled.  When LDP learns the remote-pseudowire status is 'not forwarding',
    LDP notifies Zebra that the pseudowire is disabled.

    This creates a race condition where a new labeled NH can be resolved after the
    Zebra PW manager deregistered for the NHT callback.

    For static pseudowires, it makes sense for Zebra PW manager to deregister for
    NHT callbacks for disabled pseudowires.  Static pseudowires become disabled
    via CLI configuration commands.

    For LDP pseudowires, the Zebra PW manager should not deregister for NHT
    callbacks for disabled pseudowires.

Overview of changes:
    1. Zebra PW manager should not deregister for NHT callbacks when an LDP
       pseudowire is disabled.
       Zebra PW manager will register for NHT callbacks when the LDP pseudowire
       is first enabled.
       Zebra PW manager will deregister for NHT callbacks when the LDP
       pseudowire is deleted.
    2. Remove the 30 second timer that was added in PR4122.
       PR4122 tried to fix this race condition with a timer.
       Once we eliminate the race condition (by keeping the Zebra PW manager
       registered for NHT callbacks), this timer can be removed.
    3. Zebra PW manager handling of static pseudowires will remain as-is.
       Zebra PW manager will register for NHT callbacks when the static
       pseudowire is enabled.
       Zebra PW manager will deregister for NHT callbacks when the static
       pseudowire is disabled.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
Signed-off-by: Karen Schoener <karen@voltanet.io>