Commit Graph

21342 Commits

Author SHA1 Message Date
Donald Sharp
0cbee799d5 lib: Actually call nexthop_group_disable_vrf
When the nexthop-groups were added to FRR for some
reason the call to nexthop_group_disable_vrf was
not added although it was written.

Add it in.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-17 20:13:44 -04:00
Quentin Young
fdaee098f3 tools: fix vtysh failure error handling
Based on the current code, I think the intent was to gracefully handle
vtysh failures and print a useful error message. Barriers in the way of
that:

- Despite reading the results of subprocess.communicate(), there won't
  be anything there, because we aren't passing subprocess.PIPE as stdin
  and stderr when calling subprocess.Popen()
- Despite catching subprocess.TimeoutExpired, if we were to actually hit
  this case frr-reload.py would just crash because it's calling
  .communicate() on an unbound process variable, probably a copy-paste
  error
- Aside from that, building a kwargs dict to pass to a function that
  contains something if something else is not None and nothing if it is,
  is pointless when we could just pass the thing itself

Net result is that if vtysh fails to read an frr.conf due to syntax
errors, instead of crashing with a traceback, we actually handle the
error condition, log the problem and vtysh's output, and exit. Actually
we were printing the failed line just by chance because stderr wasn't
captured from the subprocess and I guess showed up as part of systemd's
error capturing or something, but the traceback did a good job of
obscuring that with useless noise.

Old:

frrinit.sh[32183]:  * Started watchfrr
frrinit.sh[32183]: line 20: % Unknown command: eee
frrinit.sh[32183]: Traceback (most recent call last):
frrinit.sh[32183]:   File "/usr/lib/frr/frr-reload.py", line 1316, in <module>
frrinit.sh[32183]:     newconf.load_from_file(args.filename)
frrinit.sh[32183]:   File "/usr/lib/frr/frr-reload.py", line 231, in load_from_file
frrinit.sh[32183]:     file_output = self.vtysh.mark_file(filename)
frrinit.sh[32183]:   File "/usr/lib/frr/frr-reload.py", line 146, in mark_file
frrinit.sh[32183]:     % (child.returncode, stderr))
frrinit.sh[32183]: __main__.VtyshException: vtysh (mark file) exited with status 2:
frrinit.sh[32183]: None

New:

frrinit.sh[30090]:  * Started watchfrr
frrinit.sh[30090]: vtysh failed to process new configuration: vtysh (mark file) exited with status 2:
frrinit.sh[30090]: line 20: % Unknown command: eee

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2020-09-17 15:53:42 -04:00
Quentin Young
f8dcd38ddb bgpd: rename bgp_fsm_event_update
This function is poorly named; it's really used to allow the FSM to
decide the next valid state based on whether a peer has valid /
reachable nexthops as determined by NHT or BFD.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2020-09-17 12:45:37 -04:00
Igor Ryzhov
45c70d4aa3 yang: replace dummy rmap-ref with actual route-map leafref
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-09-17 18:00:06 +03:00
Igor Ryzhov
806defc8fe yang: use leafref instead of string
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-09-17 18:00:06 +03:00
ckishimo
8273ee4448 ospfd: do not generate type 4 LSA from NSSA ABR
In a topology like R1 -- R2 -- R5, with R2 being NSSA ABR and R5 being
ASBR redistributing external routes, the ABR R2 will translate type-7
LSA into type-5 and advertise to the backbone. In the current implementation
R2 is also advertising a type-4 LSA when there is no need.

RFC 3101: "...NSSA's border routers never originate Type-4 summary-LSAs
for the NSSA's AS boundary routers, since Type-7 AS-external-LSAs are
never flooded beyond the NSSA's border..."

With this PR a type-4 LSA will not be advertised

Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
2020-09-17 07:44:14 -07:00
Donatas Abraitis
70d400cefa
Merge pull request #7114 from donaldsharp/tip_count
bgpd: Avoid memset when tip hash is empty
2020-09-17 15:10:13 +03:00
Donatas Abraitis
893774e324
Merge pull request #7108 from qlyoung/remove-double-holdtimer-cancel
bgpd: remove extra hold-timer reset
2020-09-17 15:08:49 +03:00
Rafael Zalamena
1d03dd3527
Merge pull request #7117 from AnuradhaKaruppiah/mh-macip-fixes
zebra: fixup a neigh del bug introduced by a previous commit for EVPN-MH MAC-IP sync
2020-09-17 07:03:36 -03:00
Donald Sharp
32e3ca2bcc
Merge pull request #7103 from opensourcerouting/sysrepo-fixes
lib: sysrepo plugin fixes
2020-09-16 20:34:53 -04:00
Anuradha Karuppiah
fb8f609d48 zebra: fixup a neigh del bug introduced by a previous commit for MAC-IP sync
Problem commit -
[
b169fd6fd5 zebra: support for MAC-IP sync routes
]

That commit had accidentally replaced a mac-ip del to bgp with a mac
del (consequence of a bad cut-paste).

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-09-16 17:32:33 -07:00
Anuradha Karuppiah
ccd187cdaa zebra: setup static neigh flag in the dataplane
Changes to setup peer-synced as static in the dataplane. This prevents
them from being flushed out when the local switch cannot establish
their reachability.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-09-16 17:24:18 -07:00
Anuradha Karuppiah
3a059b045a linux: UAPI for neigh sync
kernel header files for neigh sync support

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-09-16 16:38:28 -07:00
Donald Sharp
3584c85e92 bgpd: Avoid memset when tip hash is empty
The tip hash is only used when we are dealing with
evpn.  In bgp_nexthop_self we are doing a memset
irrelevant of whether we will ever find data.  Yes
hash_lookup will return pretty quickly.

Modify the code to avoid doing a memset in the case
where the tip hash is empty as that we know we'll
never find anything.  With full BGP feeds this
small memset does take some time.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-09-16 17:48:15 -04:00
Martin Winter
576cada54c
Merge pull request #7066 from donaldsharp/more_test_speedups
tests: Speed up topotests by being more aggressive
2020-09-16 22:27:16 +02:00
Patrick Ruddy
f6374bd9b7
Merge pull request #7107 from AnuradhaKaruppiah/mh-cleanup
zebra: re-name some mh functions to make the code more readable
2020-09-16 15:42:49 +01:00
Rafael Zalamena
e20c2ae2f5
Merge pull request #7106 from AnuradhaKaruppiah/dad-mh-fix
zebra: dup detected mac avoid update to bgpd
2020-09-16 09:31:00 -03:00
Rafael Zalamena
8fa28e23b5
Merge pull request #7109 from qlyoung/set-threadmaster-default-name
lib: set threadmaster name to 'default' if none
2020-09-16 09:30:12 -03:00
Rafael Zalamena
d36d37a4dc
Merge pull request #7105 from AnuradhaKaruppiah/l3vni-ecom-leak
bgpd: fix ecom leak handling l3vni update
2020-09-16 07:34:09 -03:00
Quentin Young
7ffcd8bd2d lib: set threadmaster name to 'default' if none
And also include the name of the threadmaster in its event hash name.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2020-09-15 20:16:56 -04:00
Quentin Young
765b07d9ff bgpd: remove extra hold-timer reset
Handler function doesn't need to reset the hold timer, this is done
during the FSM update.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2020-09-15 20:15:08 -04:00
Anuradha Karuppiah
945ee7b272 zebra: re-name some mh functions to make the code more readable
As a part of the re-factoring some of the evpn_vni_es apis got re-named
as evpn_evpn_es. Changed them to evpn_es_evi to make it common to
vxlan and mpls.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-09-15 16:24:59 -07:00
Chirag Shah
839dfe29a6 zebra: dup detected mac avoid update to bgpd
When a MAC is detected duplicate on a local
learn event (with freeze action),
do not send update to bgp to advertise into
evpn control plane.

With evpn mh, inform_client flag is set and
sends notification to bgp albeit dup detect
is set.

Check mac are detected as duplicate before
setting inform_client to true.

Ticket:CM-29817
Reviewed By:CCR-10329
Testing Done:

Enable DAD with freeze action
Upon local learn MAC detected as duplica

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-09-15 16:12:44 -07:00
Quentin Young
84f22ecc05 bgpd: fix ecom leak handling l3vni update
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-09-15 16:06:58 -07:00
Mark Stapp
171b364c7a
Merge pull request #6905 from gpnaveen/topojson_kernel_version_check
tests: Kernel version check for topojson scripts.
2020-09-15 15:43:25 -04:00
Renato Westphal
bbeaa0333c lib: simplify handling of the sysrepo startup configuration
In the new Sysrepo, all SR_EV_ENABLED notifications are followed by
SR_EV_DONE notifications (assuming no errors occur), so there's no
need to special case the SR_EV_ENABLED event anymore (e.g. do full
transactions in one step).

While here, add a few more guarded debug messages to facilitate
troubleshooting.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-09-15 16:00:07 -03:00
Donatas Abraitis
f5399474a4 doc: Say that maximum-prefix-out requires it's own update-group
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-09-15 21:57:52 +03:00
Donatas Abraitis
a849a3fe07 bgpd: Create separate udpate-group when using maximum-prefix-out command
This is needed to avoid mangling update-group which is used for many peers.

Sent prefix count is managed by update-groups.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-09-15 21:57:52 +03:00
Renato Westphal
7dac19f7de lib: fix handling of deleted nodes in the sysrepo plugin
Make the sysrepo plugin ignore the deletion of configuration
nodes that don't exist anymore instead of logging an error and
rejecting the changes. This is necessary because Sysrepo delivers
delete notifications for all nodes of a deleted data tree instead
of delivering a single delete notification of the top-level subtree
node (which would suffice for the northbound layer).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-09-15 15:56:53 -03:00
Renato Westphal
88e635ee63 lib: postpone the sysrepo plugin initialization
From Sysrepo's documentation:
"Note: do not use fork() after creating a connection. Sysrepo
internally stores PID of every created connection and this way a
mismatch of PID and connection is created".

Introduce a new "frr_very_late_init" hook in libfrr that is only
called after the daemon is forked (when the '-d' option is used)
and after the configuration is read. This way we can initialize
the sysrepo plugin correctly even when the daemon is daemonized,
and after the Sysrepo CLI commands are processed (only "debug
northbound client sysrepo" for now).

Fixes #7062

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-09-15 15:55:55 -03:00
ckishimo
919714bd3f ospfd: fix debug ospf nssa prints wrong info
Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
2020-09-15 17:38:33 +02:00
Lou Berger
eac139f8f2
Merge pull request #7099 from mjstapp/fix_doc_thread_rw
doc: clarify independence of THREAD_READ and _WRITE
2020-09-15 11:20:13 -04:00
Renato Westphal
ba25d6d241
Merge pull request #7082 from volta-networks/fix_isis_pseudo_lsp
isisd: fix pseudonode LSP bug
2020-09-15 11:25:04 -03:00
Renato Westphal
4a9dc77a4d
Merge pull request #7083 from volta-networks/isis_route_logs_improve
isisd: improve route-event logs
2020-09-15 11:24:53 -03:00
nguggarigoud
f052d1fc39 tests: Addressing lint error.
Added new line to remove git link error.

Signed-off-by: naveen <nguggarigoud@vmware.com>
2020-09-15 15:51:07 +05:30
nguggarigoud
955212d91b tests: fixing pytest.skip error.
Updated scripts to handle skip on lower
kernel version.

Signed-off-by: naveen <nguggarigoud@vmware.com>
2020-09-15 15:44:10 +05:30
naveen
3dfd384ec4 tests: Moving kernel version check to API.
Signed-off-by: naveen <nguggarigoud@vmware.com>
2020-09-15 15:44:10 +05:30
naveen
eb5e807234 tests: Kernel version check for topojson scripts.
1. Added linux kernel version check to avoid failures
in CI systems if matching kernel version not found.

Signed-off-by: naveen <nguggarigoud@vmware.com>
2020-09-15 15:44:10 +05:30
Martin Winter
f6bcffb623
tests: Add topotest for BGP metric change
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2020-09-14 21:58:57 +02:00
Jafar Al-Gharaibeh
d1ca950e40
Merge pull request #7090 from dslicenc/comm-list-replace
bgpd: correct community-list replace logic
2020-09-14 10:42:10 -05:00
David Schweizer
fe430836ab
doc: updated user doc for routemap set metric cmd
Updated the user documentation to reflect changes made to routemaps "set
metric" VTY shell command.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2020-09-14 17:08:50 +02:00
Mark Stapp
942432619e doc: clarify independence of THREAD_READ and _WRITE
Make it clearer that the READ and WRITE tasks/events are
independent in the lib/thread apis.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-09-14 11:01:44 -04:00
Mark Stapp
01ffd5b1ec doc: clarify python and pip2 for ubuntu 20
Must run the pip2 install script with python2 on ubuntu 20.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-09-14 09:52:16 -04:00
Mark Stapp
cfa2115d02
Merge pull request #7093 from donaldsharp/pbr_flapping
Pbr flapping
2020-09-14 08:13:48 -04:00
Donatas Abraitis
57bbd777a7
Merge pull request #7065 from idryzhov/bgp-deprecated
bgpd: remove deprecated commands
2020-09-14 12:45:08 +03:00
Emanuele Di Pascale
1b2b26778e isisd: improve route-event logs
suppress route-event logs that are uninformative and add more info to
the ones that matter, i.e. hints on what changed in a route update. The
suppressed logs can be enabled by defining EXTREME_DEBUG to 1, similarly
to what is done elsewhere in isisd (e.g. in isis_spf.c)

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2020-09-14 09:40:10 +02:00
Emanuele Di Pascale
2286851d4c isisd: fix pseudonode LSP bug
Currently, when the is-type of an area is changed and its circuits resign,
we are not resetting the DIS flag. Consequently, if the area type is reverted
we are not running the DR election and not regenerating the pseudonode LSP.

Also adding event debug logs for circuit commence/resign.

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2020-09-14 09:39:21 +02:00
Igor Ryzhov
a1d3a2a626 bgpd: remove deprecated commands
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-09-13 23:57:09 +03:00
ckishimo
a5f7319294 ospfd: flush type 5 when type 7 is removed
When the ASBR stops announcing a prefix into the NSSA area, the LSA
type 7 is removed from the area. However the ABR is refreshing the
type 5 in its LSDB while removing the Type 7 LSA. Routers outside
the area do not get an update.

With this change the LSA type 5 is flushed from the LSDB and the
change is announced to routers outside the area

Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
2020-09-12 11:42:24 -07:00
Jafar Al-Gharaibeh
cc44f5435e
Merge pull request #7092 from sworleys/RPM-Link-Fix
doc: fix rpm link under libyang help
2020-09-12 09:22:17 -05:00