Commit Graph

1400 Commits

Author SHA1 Message Date
Kuldeep Kashyap
af9c65d44a tests: Optimize bgp-basic-functionality-topo1 test suite
1. Used aggresive values to verify keepalive and holddown timers functionality
2. Modified variable name in lib/bgp.py

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2020-03-16 19:55:14 +00:00
Christian Franke
bcfa87906a tests/isisd: Update expected output to match corrected spelling
The update was performed using wuschl [1] like this:

$ wuschl rebuild tests/isisd/test_fuzz_isis_tlv
$ gzip -9 tests/isisd/test_fuzz_isis_tlv_tests.h

[1] https://pypi.org/project/wuschl/

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2020-03-16 15:36:34 +01:00
Donatas Abraitis
dfc5fb79d5 tests: Add a test case for BGP_AS_ZERO
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-03-10 07:32:18 +02:00
Ruben Kerkhof
9635de6e9b tests: fix build with GCC 10
Signed-off-by: Ruben Kerkhof <ruben@rubenkerkhof.com>
2020-03-08 17:17:49 +01:00
Donald Sharp
c64d8d8577 tests: Add a test for the ip pim register-accept-list PLIST command
Add a test to the pim-basic to ensure that the prefix-list works as
expected.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-06 16:27:24 -05:00
Donatas Abraitis
15569c58f8 *: Replace __PRETTY_FUNCTION__/__FUNCTION__ to __func__
Just keep the code cool.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-03-05 20:23:23 +02:00
Sri Mohana Singamsetty
200334ecbb
Merge pull request #5855 from ton31337/fix/allow_using_add_sub_for_local-preference
bgpd: Allow using add/subtract for local-preference in route-maps
2020-03-02 09:40:34 -08:00
Donatas Abraitis
03252d6037 tests: Add a test case for set local-preference +/-LOCAL_PREF
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-28 14:03:47 +02:00
Kuldeep Kashyap
b9f80297c8 tests: Modified scripts to optimize execution time for route-map test suite
1. Modified scripts to optimize execution time for route-map test suite
2. Removed unnecessary print statements from /lib/bgp.py

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2020-02-26 21:02:09 +00:00
Donald Sharp
b01c46b964 tests: Reduce rip[ng]-topo1 run time
Reduce rip topo1 run time from ~100 seconds down to ~45 seconds.

1) Reduce very very long sleeps
2) Modify rip timers to be more aggressive in sending data.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-02-19 15:16:21 -05:00
Donald Sharp
12a939b7e7 tests: bgp_multiview_topo1 was taking too long
The bgp_multiview_topo1 test had two issues

a) An abbundance of sleeps that are not necessary
b) The convergence time was too short.

The upshoot of this is that the test goes from 72 -> 33 seconds
run time on my machine.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-02-19 15:07:02 -05:00
Donald Sharp
1a21da6b01
Merge pull request #5802 from ton31337/feature/aggregate-address_origin_override
bgpd: Allow overriding ORIGIN for aggregate-address
2020-02-19 08:38:31 -05:00
Philippe Guibert
3c5f39e76d
Merge pull request #5651 from AnuradhaKaruppiah/evpn-pim-fixes
EVPN-PIM: complete anycast (MLAG) VTEP support
2020-02-18 18:21:16 +01:00
Donald Sharp
bed8d78bae bgpd: Add a couple more spaces for output on MsgRcvd and MsgSent
annie# show bgp ipv4 uni summ
BGP router identifier 192.168.201.136, local AS number 64539 vrf-id 0
BGP table version 22458946
RIB entries 1458006, using 178 MiB of memory
Peers 4, using 68 KiB of memory

Neighbor               V         AS MsgRcvd MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd
45.33.5.119            4          0       0       0        0    0    0    never       Active
65.19.134.122          4      15096 4611832  108292        0    0    0 6d22h55m       800670
107.13.46.23           4          0       0       0        0    0    0    never      Connect
robot(192.168.201.139) 4      64540 11159975 11365599        0    0    0 05w2d05h      Connect

Total number of neighbors 4

On very busy systems The column output for MsgRcvd and MsgSent can quickly move past 7 columns.
Add a couple more to allow for even display.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-02-16 20:38:13 -05:00
Anuradha Karuppiah
94bd5b9347 tests: Add a evpn-pim test case
This is a basic setup and test of evpn-pim.
Create a vxlan device ensure that pim notices this
and setups the appropriate groups and sends them
to the RP.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-02-14 09:18:30 -08:00
Hiroki Shirokura
39416574fe tests: refactor Prefix-SID binary syntax
Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
2020-02-14 00:13:43 +00:00
Hiroki Shirokura
45a06b11a6 bgpd: refactor func prototype arround Prefix-SID
mp_update value isn't used by the function arround Prefix-SID.

Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
2020-02-14 00:13:43 +00:00
Hiroki Shirokura
893799b011 topotests: add bgp_prefix_sid
This commit add behavior test for BGP Prefix-SID path
attribute generically.  In this time, there are only
1-test for Prefix-SID type-1 Label-Index TLV.

There are 3 nodes r1(FRR), peer1(exabgp) and peer2(exabgp)
on this topotest. And it perform following:

* peer1 advertise Prefix-SID to r1
* r1 is received Prefix-SID from peer1
* bgpd on r1 check the path attribute and parse correctly.
* user can check information from type-1 information via show cli
* bgpd on r1 advertise Prefix-SID to peer2
* peer2 is received Prefix-SID from r1
* peer2 check the path attribute and parse correctly.

This test uses exabgp's generic path attribute feature
of exabgp is used to advertise Prefix-SID path attribute
to bgpd. generic path attribute feature enable exabgp
users to specify binary format path attribute.
we can send valious binary pattern
(but overflow test doesn't can be performed).

The reason why this commit uses generic attribute feature
is that exabgp v3 doesn't support Prefix-SID path attribute
and topotest support exabgp only v3. (fyr. exabgp v4 supports it).
Thus this test includes little complicated binary format,
so I wrote full binary desection and explanation.
If topotest support exabgp v4, this test should
be rewrite with non generic attribute feature.

Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
2020-02-14 00:13:43 +00:00
Donatas Abraitis
561137b0e1 tests: Add test case for aggregate-address <prefix> origin <origin>
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-13 16:18:34 +02:00
Russ White
35f50b9305
Merge pull request #5744 from ton31337/fix/thread-as-withdraw_attributes
bgpd: Update some attributes how they are handled if malformed
2020-02-11 10:04:19 -05:00
Renato Westphal
c2c4b412fa
Merge pull request #5776 from volta-networks/fix_ldp_topol_test
ldpd: Fix LDP topotest to validate MPLS LDP CLI output
2020-02-10 18:48:25 -03:00
Karen Schoener
b290da1d44 tests: Fix LDP topotest to validate MPLS LDP CLI output
Fixing existing ldp-topol test to validate MPLS LDP CLI output.

Signed-off-by: Karen Schoener <karen@voltanet.io>
2020-02-10 08:39:06 -05:00
Lou Berger
f2ebe24292 topotest: bgp_l3vpn_to_bgp_vrf - report unexpected BGP notifications
Signed-off-by: Lou Berger <lberger@labn.net>
2020-02-08 10:36:49 -05:00
Russ White
5bf7fe566d
Merge pull request #5722 from donaldsharp/kernel_routes
Kernel routes
2020-02-06 08:04:42 -05:00
Donatas Abraitis
85c58de773
Merge pull request #5761 from qlyoung/fix-bgp-gr-cruft
Fix bgp gr style
2020-02-06 08:16:25 +02:00
Donatas Abraitis
4ba5a9c55f bgpd: Update some attributes how they are handled if malformed
According to https://tools.ietf.org/html/rfc7606 some of the attributes
MUST be handled as "treat-as-withdraw" approach.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-05 11:01:39 +02:00
Quentin Young
362353195a bgpd, lib: fix style from BGP GR code
This patch fixes the noncompliant style for the following commit range:

4a6e80fbf
2ba1fe695
efcb2ebbb
8c48b3b69
dc95985fe
0f0444fbd
85ef4179a
eb451ee58
2d3dd828d
9e3b51a7f
d6e3c15b6
34aa74486
6102cb7fe
d7b3cda6f
2bb5d39b1
5f9c1aa29
5cce3f054
3a75afa4b
f009ff269
cfd47646b
2986cac29
055679e91
034e185dc
794b37d52
b0965c44e
949b0f24f
63696f1d8

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-02-04 15:19:04 -05:00
Quentin Young
b3ba5dc7fe *: don't null after XFREE; XFREE does this itself
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-02-03 11:22:13 -05:00
Russ White
64d50ba4c4
Merge pull request #5210 from bisdhdh/master
bgpd:BGP Graceful Restart Per Neighbor(BGPN) Feature.
2020-01-28 11:47:09 -05:00
Donald Sharp
abd2a1ff3f tests: Test some basic kernel <-> zebra interactions
Install some kernel routes with different admin distances
ensuring that they are installed correctly and characterized
properly in the rib.

Then add a static route to override the kernel and then remove
it again to ensure that we account for it properly still.

Signed-off-by: Donald Sharp <sharpd@cumulusnetorks.com>
2020-01-23 19:44:15 -05:00
bisdhdh
f009ff2697 bgpd: Adding Selection Deferral Timer handler changes.
* Selection Deferral Timer for Graceful Restart.
* Added selection deferral timer handling function.
* Route marking as selection defer when update message is received.
* Staggered processing of routes which are pending best selection.
* Fix for multi-path test case.

Signed-off-by: Biswajit Sadhu <sadhub@vmware.com>
2020-01-23 09:34:25 +05:30
Donald Sharp
3d7660fa85 tests: Test ospf unnumbered behavior and ensure that it works
Recent commit: 0eb97b860d

Broke onlink behavior and as a result ospf unnumbered failed
to work.  This commit adds a small test to create 2 ospf routers,
connect them through ospf unlinked behavior and then ensure
that the routes are installed into the kernel as expected.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-01-22 17:27:58 -05:00
Lou Berger
dccb75bbcf topotest: log results summary at end of lutil run
Signed-off-by: Lou Berger <lberger@labn.net>
2020-01-21 06:27:43 -05:00
Lou Berger
fe5bf01531 topotest: bgp_l3vpn_to_bgp_vrf - catch case of sharpd not being compiled
Signed-off-by: Lou Berger <lberger@labn.net>
2020-01-21 06:27:43 -05:00
Donatas Abraitis
9e1ecdbaa4
Merge pull request #5707 from donaldsharp/nexthop_encoding
Nexthop encoding
2020-01-18 23:25:56 +02:00
Donald Sharp
12b76399a8 tests: Add another router to the basic pim tests
Add an additional router to the basic pim tests.
1) This test will add a link between r1 and a new rp
2) This test will ensure that r1 and rp have the expected
who is the rp.
3) This test will ensure that the rp has received the upstream
data for the multicast stream that is started.

Ostensibly commit
68a02e06e5 is the first bad commit
commit 68a02e06e5
Author: Mark Stapp <mjs@voltanet.io>
Date:   Wed Nov 13 16:06:06 2019 -0500
    *: revise zapi nexthop encoding
    Use a per-nexthop flag to indicate the presence of labels; add
    some utility zapi encode/decode apis for nexthops; use the zapi
    apis more consistently.
    Signed-off-by: Mark Stapp <mjs@voltanet.io>

Sparked this commit in that it broke nexthop reporting to upper
level protocols.  Ensure that this expectation stays working
in the future.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-01-18 13:47:29 -05:00
Donatas Abraitis
8117418824 tests: Add test for neighbor <X.X.X.X> maximum-prefix-out <Y>
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-01-17 16:20:30 +02:00
Stephen Worley
8058df22d4 tests: add basic nexthop group functionality test
Add a very basic nexthop group functionality test.

This test creates a 2-way ecmp group and installs a route
with it using sharpd. Then we check to see that the nexthop
groups are marked valid/installed in zebra.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-01-15 16:39:19 -05:00
Donald Sharp
abb5d7a933 tests: ospf6-topo1 did not work properly with nhg's and 5.3 kernels
Fix the ospf6-topo1 test to understand nhg's and what happens
when they are installed into a kernel that can support them.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-01-10 08:57:18 -05:00
Donald Sharp
571ea93a70
Merge pull request #5410 from ton31337/feature/bgp_default-route_with_route-map_set
bgpd: An ability to set attributes for default-originate via route-map
2020-01-09 08:39:32 -05:00
Donatas Abraitis
462b30672f tests: Add a test for 'neighbor <neighbor> default-originate route-map <rm>'
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-01-07 10:02:47 +02:00
Quentin Young
f69aeb7696 bgpd: fix missing bounds checks for psid attr
Guess what - for a bounds check to work, it has to happen *before* you
read the data. We were trusting the attribute field received in a prefix
SID attribute and then checking if it was correct afterwards, but if was
wrong we'd crash before that.

This fixes the problem, and adds additional paranoid bounds checks.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-01-03 14:06:31 -05:00
Donatas Abraitis
886b8172e0 tests: Test if eBGP policy is not applied to iBGP peers
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-12-19 11:07:14 +02:00
Mark Stapp
1dc46d1ece tests: fix endian bug in test_typelist
Fix a byte-swapping bug that appeared on big-endian arch but
wasn't visible on little-endian runs.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-12-18 10:52:08 -05:00
Sri Mohana Singamsetty
8887295390
Merge pull request #5502 from ton31337/fix/rr_do_not_show_fqdn
bgpd: Show `ip` and `fqdn` in json output for `show [ip] bgp json`
2019-12-16 09:43:01 -08:00
Donatas Abraitis
6d9a2ec9b4 tests: Test if ip and fqdn are included in show [ip] bgp json
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-12-12 10:35:54 +02:00
Donald Sharp
4f63093247
Merge pull request #4765 from opensourcerouting/defaults-v2
lib/*: new config defaults system, v2
2019-12-06 14:07:42 -05:00
David Lamparter
2159152d9f topojson: use empty vtysh.conf for frr-reload.py
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-12-06 15:13:32 +01:00
David Lamparter
5d5393b943 bgpd: use new defaults system (v2)
This moves all the DFLT_BGP_* stuff over to the new defaults mechanism.
bgp_timers_nondefault() added to get better file-scoping.

v2: moved everything into bgp_vty.c so that the core BGP code is
independent of the CLI-specific defaults.  This should make the future
northbound conversion easier.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-12-06 15:13:32 +01:00
David Lamparter
96673e067d lib: add frr_version_cmp()
This just compares 2 version strings.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-12-06 15:13:32 +01:00
David Lamparter
1c0d880814 lib: rename memory_vty.c to lib_vty.c
And memory_init() to lib_cmd_init().

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-12-06 15:13:29 +01:00
Mark Stapp
a594aff472 topotests: Adapt to linux kernel 5+
Make a few changes to try to support topotests with vrfs
on kernel 5 and later.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-12-06 07:44:50 -05:00
Donald Sharp
2d3c8c2957
Merge pull request #5305 from ton31337/feature/draft-ietf-idr-deprecate-as-set-confed-set
bgpd: Reject incoming and outgoing UPDATES for AS_SET and AS_CONFED_SET
2019-12-03 21:29:09 -05:00
David Lamparter
0d8c7a26a1 *: make frr_yang_module_info const
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-11-30 00:38:32 +01:00
Sri Mohana Singamsetty
6580da9f54
Merge pull request #5257 from ton31337/fix/update_rib_on_bgp_distance_changes
bgpd: Reflect the distance in RIB when it is changed for an arbitrary afi/safi
2019-11-19 08:35:57 -08:00
Donatas Abraitis
7ea16cb00d tests: Add a test case for bgp reject-as-sets
Test if AS_SET was stripped and announced without AS_SET to the peers.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-11-14 19:19:05 +02:00
Donatas Abraitis
8b54bc30f0 tests: Test if distance bgp (1-255) (1-255) (1-255) works
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-11-14 10:13:02 +02:00
Donatas Abraitis
df12a3a2ab tests: Add a test case for sender-as-path-loop-detection
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-11-13 08:50:46 +02:00
Martin Winter
566c5d2127
Merge pull request #5196 from kuldeepkash/testcases
tests: Enhance bgp-path-attributes-topo1 test suite
2019-11-06 07:18:04 -05:00
Renato Westphal
c6d345e4a4 topotest: update the LDP VPLS test
The final test case of this topotest wasn't really testing
anything. Do the following changes to fix this:
* Remove "no link-detect" from the zebra configs so that link down
  failures are detected immediately;
* After shutting down the interface between r1 and r2, wait five
  seconds before testing if the pseudowires reconverged through
  the r3 router.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-11-04 13:05:47 -03:00
Renato Westphal
a89241b42d topotest: enable MPLS processing on all interfaces by default
This is necessary to make some tests work correctly. Only topologies
created using the topogen framework benefit from this change.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-11-04 13:05:47 -03:00
Christian Franke
5e168174f8 topotests/Dockerfile: Install libyang from repository
Instead of installing libyang from some old build, let's install
the current libyang from our Debian/Ubuntu repository.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2019-10-29 11:02:41 +01:00
Stephen Worley
737170f5bf topotests: Expect shared nexthop memory
A few topotests were failing since they were not aware
of shared nexthops and, therefore, matching on flags that
could be changed when another route sharing that nexthop is
installed.

Update routes that are not installed to not match their json output
on the nexthop flag information. The ones that are installed will
still retain their matches though since they can be sure the nexthop
should have those flags (they would be the route that set them).

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2019-10-25 11:13:43 -04:00
Kuldeep Kashyap
4a252f7205 tests: Enhance BGP Path attribute test cases
1. Added steps to modify BGP path attributes and verify
best path is changed

Signed-off-by: Kuldeep Kashyap <kashyapkas@gmail.com>
2019-10-21 09:48:20 +05:30
Kuldeep Kashyap
c7bb8a05ff tests: Enhance BGP Path attribute APIs
Modified affacted APIs to supported BGP Path attributes modification
and verification

Signed-off-by: Kuldeep Kashyap <kuldeepkas@gmail.com>
2019-10-21 09:47:00 +05:30
Donatas Abraitis
acf061a9ab
Merge pull request #5108 from donaldsharp/sendbuffer_size_bgp
Sendbuffer size bgp
2019-10-20 12:09:42 +03:00
Ashish Pant
85d4777301 tests: Add test cases for bgp community and large community
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Test cases to check functionality of bgp large community and
bgp community path attribute
2019-10-17 09:19:26 +05:30
Ashish Pant
6d32a6a18a tests: Update cli error list and retry function
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Add cli error returned for invalid bgp-community-list command

Fix retry function to avoid retries when expected is False
2019-10-17 09:17:03 +05:30
Ashish Pant
06e693f11b tests: Update bgp api for community and aggregate address
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Add support for not sending community data in bgp and update
aggregate address configuration code
2019-10-17 09:17:03 +05:30
Ashish Pant
ca2ef9e6ff tests: Add verify community list api
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Api checks if community list is present in the system or not
2019-10-17 09:17:03 +05:30
Ashish Pant
287d692409 tests: Add step api in topojson
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Print messages with a step number to log from test case
2019-10-17 09:17:03 +05:30
Donald Sharp
c2d020ad71 bgpd: Add ability to set tcp socket buffer size
Add -s X or --socket_size X to the bgp cli to allow
the end user to specify the outgoing bgp tcp kernel
socket buffer size.

It is recommended that this option is only used on
large scale operations.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-10-16 07:42:05 -04:00
Donald Sharp
b60afd5c38
Merge pull request #5097 from ton31337/fix/do_not_reconnect_if_prefix_overflow
bgpd: Keep the session down if maximum-prefix is reached
2019-10-15 16:18:19 -04:00
Martin Winter
0c7f64c5cf
Merge branch 'master' into ecmp_tests 2019-10-04 15:19:17 +02:00
Donatas Abraitis
1867569d78
Merge pull request #5082 from donaldsharp/add_bgp_rr_ibgp_topotest
tests: Add a topology that shows broken ibgp Route Reflector behavior
2019-10-04 11:32:20 +01:00
Donatas Abraitis
7630ff014e tests: Remove sleep from test_bgp_maximum_prefix_invalid_update
Sleep is not needed here while we fail instantly if maximum is reached.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-10-03 14:08:51 +03:00
Ashish Pant
819f982590 tests: Enabling bgp-ecmp-topo2 test cases
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>
2019-10-03 07:15:20 +05:30
Ashish Pant
6ade2c18fb tests: Modify json for bgp-ecmp-topo2
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Modified json files to configure route-map which prefer global
address
2019-10-03 07:15:20 +05:30
Ashish Pant
915bed88d8 tests: Add topojson route-map for nexthop
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Add route-map option for ipv6 nexthop

Fix typo in bgp configuration
2019-10-03 07:15:20 +05:30
Ashish Pant
161572bdf9 tests: Fix topojson link local ipv6 address
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Removed code that disabled link local ipv6 address on the interface
2019-10-03 07:15:11 +05:30
Donald Sharp
dda524e843
Merge pull request #5087 from opensourcerouting/topotest-skip-on-assert-failure
topotests: skip tests when any assert fails
2019-10-01 19:14:11 -04:00
Donald Sharp
aa2a0498f3 tests: Add a topology that shows broken ibgp behavior
In a leaf/spine topology with only IBGP connections, where
the same network is being redistributed at multiple points
in the network ( say a redistribute connected at both leaf and spines )
we end up in a state where zebra gets very confused.

eva# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued route, r - rejected route

C>* 192.168.1.0/24 is directly connected, tor1-eth0, 00:00:30
C>* 192.168.2.0/24 is directly connected, tor1-eth1, 00:00:30
B   192.168.3.0/24 [200/0] via 192.168.4.2 inactive, 00:00:25
                           via 192.168.6.2 inactive, 00:00:25
B>* 192.168.4.0/24 [200/0] via 192.168.2.3, tor1-eth1, 00:00:25
  *                        via 192.168.6.2 inactive, 00:00:25
C>* 192.168.5.0/24 is directly connected, tor1-eth2, 00:00:30
B>* 192.168.6.0/24 [200/0] via 192.168.4.2 inactive, 00:00:25
  *                        via 192.168.5.4, tor1-eth2, 00:00:25

Effectively we have ibgp routes recursing through ibgp routes
and there is no metric to discern whom to listen to.

This draft:
https://tools.ietf.org/html/draft-ietf-idr-bgp-optimal-route-reflection-19

appears to address this issue.  From looking at both cisco and arista
deployments they are handling this issue by having the route reflector
prefer the localy learned routes over from their clients.

Add this topology, in a broken state, so that when we do fix this issue
it is a simple matter of touching this topology up and re-adding it
to the normal daily builds.  I also wanted to add this topology
since it is in a state of `doneness` and I wanted to move onto
my normal day job without having to remember about this test.

This topology is not configured to be run as part of the normal
topotests.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-10-01 07:45:38 -04:00
Rafael Zalamena
c8c265f571 topotests: skip tests when any assert fails
When an `assert` fails we should skip all other tests on the file. Once
a failure is detected we can't rely on the setup anymore, since most of
the tests assume the previous worked.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-09-30 21:15:15 -03:00
Quentin Young
c258527bd2 *: strip trailing whitespace
Some of it has snuck by CI

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-09-30 16:44:43 +00:00
Kuldeep Kashyap
468b867f4f tests: Add bgp route-map test cases
Adding 27 bgp route-map test cases to test multiple route-map scenarios

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2019-09-26 10:06:16 +00:00
Kuldeep Kashyap
8aa6292547 tests: Add API to shut/noshut router interface
This API would help to shut/nohut specified router interfaces

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2019-09-26 10:06:16 +00:00
Kuldeep Kashyap
21a51c4d0f tests: Adding verification APIs for bgp route-maps and community-lists
APIs to verify bgp route-maps, bgp community and large community configurations

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2019-09-26 10:06:16 +00:00
Kuldeep Kashyap
380bb6d16b tests: Enhance support to create bgp community-list or large-community-list
Adding new API to create bgp community-list or large-community-list

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2019-09-26 10:06:16 +00:00
Kuldeep Kashyap
89f86e8c7b tests: Enhance framework to create and delete route-map
Added APIs to create and delete route-maps configuration

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2019-09-26 10:06:16 +00:00
Kuldeep Kashyap
9920237e4f tests: Add route-map to initial config creation from JSON
To enable route-map config build from JSON

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2019-09-26 10:06:16 +00:00
Kuldeep Kashyap
7f55cb6a88 tests: Adding API verify_bgp_attributes() to bgp.py
This API is to verify BGP attribute values set by route maps

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2019-09-26 10:06:16 +00:00
Donald Sharp
0cddbb1b6c
Merge pull request #5050 from LabNConsulting/working/lb/tt-update
topotest: bgp_l3vpn_to_bgp_vrf allow for different interface output
2019-09-24 16:07:35 -04:00
Renato Westphal
8f4f95e08a tests: remove more topotest backward-compatibility cruft
This isn't necessary anymore since topotest was integrated into
the FRR repo.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-09-23 09:38:05 -03:00
Lou Berger
05916dd519 topotest: bgp_l3vpn_to_bgp_vrf allow for different interface output
Signed-off-by: Lou Berger <lberger@labn.net>
2019-09-22 13:06:48 -04:00
Olivier Dugeon
1b3f47d04c isisd: Update TLVs processing for TE, RI & SR
In preparation to Segment Routing:
 - Update the management of Traffic Engineering subTLVs to the new tlvs parser
 - Add Router Capability TLV 242 as per RFC 4971 & 7981
 - Add Segment Routing subTLVs as per draft-isis-segment-routing-extension-25

Modified files:
 - isis_tlvs.h: add new structure to manage TE subTLVs, TLV 242 & SR subTLVs
 - isis_tlvs.c: add new functions (pack, copy, free, unpack & print) to process
   TE subTLVs, Router Capability TLV and SR subTLVs
 - isis_circuit.[c,h] & isis_lsp.[c,h]: update to new subTLVs & TLV processing
 - isis_te.[c,h]: remove all old TE structures and managment functions,
   and add hook call to set local and remote IP addresses as wellas update TE
   parameters
 - isis_zebra.[c,h]: add hook call when new interface is up
 - isis_mt.[c,h], isis_pdu.c & isis_northbound.c: adjust to new TE subTLVs
 - tests/isisd/test_fuzz_isis_tlv_tests.h.gz: adapte fuuz tests to new parser

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
2019-09-17 17:35:50 +02:00
Quentin Young
df54f0536e tests: update tests for pthread init changes
Need to init frr_pthreads manually in tests now.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-09-16 16:12:04 +00:00
Donald Sharp
840806a627
Merge pull request #4975 from opensourcerouting/disable-ecmp2-test
Disable bgp-ecmp-topo2 topotest until proper fix is developed
2019-09-14 07:43:31 -04:00
Sri Mohana Singamsetty
921308a535
Merge pull request #4969 from ton31337/feature/rewrite_bgp_aggregate-address_route-map_test
tests: Improve bgp_aggregate-address_route-map test
2019-09-13 11:03:36 -07:00
Olivier Dugeon
3c5ae0248e
Merge pull request #4949 from opensourcerouting/mpls-zapi-improvements
MPLS zapi improvements
2019-09-13 17:36:16 +02:00
Olivier Dugeon
d22a64e06f
Merge pull request #4948 from opensourcerouting/show-mpls-table
zebra: improve the output of "show mpls table"
2019-09-13 17:24:52 +02:00
Donatas Abraitis
65f40ecdb5 tests: Improve bgp_aggregate-address_route-map test
Rewrite some parts to add more visibility what's going on if test fails.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-09-13 11:16:32 +03:00
Martin Winter
4e5441e749 tests: Disable bgp-ecmp-topo2 topotest until proper fix is developed
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2019-09-13 02:13:12 +02:00
Donald Sharp
963d10dfb0 tests: Add admin distance 255 static routes
Add a couple of test cases to ensure that admin distance of
255 actually causes the route to be accepted by zebra but
not installed into the linux kernel.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-09-11 07:53:43 -04:00
Donald Sharp
bce69e3c54 tests: Fix topotests due to json error
Recent commit: 5fba22485b added a new topotest that used
an older version of FRR that referenced some json code
that was changed in between when the PR was submitted
and when it got in.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-09-10 23:16:01 -04:00
Lou Berger
ccc13acc0f
Merge pull request #4866 from ton31337/feature/apply_route-map_for_aggregate-address
bgpd: Apply route-map for aggregate-address
2019-09-10 11:59:10 -04:00
Renato Westphal
635a039eef lib, zebra: rename LSP type used for OSPF SR
SR support for IS-IS is coming so we need to be able to distinguish
OSPF and IS-IS LSPs.

While here, add missing case statement for LDP on
lsp_type_from_re_type().

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-09-06 21:06:11 -03:00
Renato Westphal
e29f8d0db3 tests: remove topotest compatibility with older ldpd versions
Now that topotest was integrated into the FRR repository, we
don't need to worry anymore about creating tests that work across
different FRR versions. The topotests present on any branch need
to be compatible only with the FRR daemons from that same branch.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-09-06 20:58:09 -03:00
Renato Westphal
a971aeb68e zebra: improve the output of "show mpls table"
Use the table generator to adjust the columns width according to
the table's content.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-09-06 20:54:59 -03:00
Stephen Worley
a4e6a2f808 topotests: Add libcap-dev to the Dockerfile
Add libcap-dev to the Dockerfile now that its a required depency.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2019-09-06 18:20:47 -04:00
Donald Sharp
dfff0ef449 tests: Ensure we wait 1 bgp timeout period before declaring failure
The lib/bgp.py test code is bringing up neighbors and clearing them
to test that things are working appropriately.  The problem we have
is that we are only waiting 30 seconds for declaration of failure.
In a high load system packets can be lost and as such the initial
convergence may not happen.  Modify the test to wait for 1 retry
window test period before declaring failure.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-09-06 08:46:27 -04:00
David Lamparter
0cf6db21ec *: frr_elevate_privs -> frr_with_privs
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2019-09-03 17:18:35 +02:00
Ashish Pant
c7d88b2d10 tests: Fix topojson address-family configuration
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

address-family configuration was commented out in earlier commit
by mistake. Re-enabling it now.
2019-09-03 09:42:30 +05:30
Ashish Pant
243daff303 tests: Fix topojson static route tests
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Fix static route test in bgp-basic-functionality-topo1 and
example-topojson-test after lib changes

Add example-topojson-test to ignore from pytest.ini
2019-09-03 07:22:33 +05:30
Ashish Pant
27d9695dd5 tests: Add ecmp test cases
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adds ecmp test case for ibgp and ebgp topology.
2019-09-03 07:22:22 +05:30
Stephen Worley
6d9effdf85 tests: Update Dockerfile to a valid libyang version
The built docker container was installing an old version of libyang.
Updated it to point to the most recent build for Debian.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2019-08-31 10:51:34 -04:00
Donald Sharp
955e2c3ec5 tests: Ensure topotests are actually waiting appropriately for peers to come up
The FRR bgp topotests are employing a luCommand that looks for bgp peering
to be up on the first router with a `wait` sub-command.  Please note that
a variety of tests are using this.  This wait command has a variety of time
outs being used `30`, `90`, and `300`.  BGP peering with how we compile
it have very long timers and 30( and possibly 90) seconds is clearly not enough when
we are waiting, given the nature of our test beds.  Additionally we were employing a model
where once the first summary command succeeded we automatically assumed that all
subsuquent summary commands( to look at other routers ) would not need to
possibly wait.  This is insufficient in that if I have multiple peerings in
multiple vrf's there is no guarantee that one router peers being up will
be sufficient information to know that all the other routers peers are up.

Modify the test cases to be a bit more conformant about this and to
allow peer checks to actually wait a reasonable amount of time for
all peers to have a chance to come up.

Signed-off-by: Donald Sharp <sharpdc@cumulusnetworks.com>
2019-08-29 09:33:47 -04:00
Donatas Abraitis
cf3b331d45
Merge pull request #4896 from donaldsharp/docker_dev_build
tests: Modify docker build for local to have dev build
2019-08-29 10:15:52 +03:00
Martin Winter
4298dfd12e
Merge pull request #4852 from ashish12pant/fix_log
tests: Enhance execution logs in topojson
2019-08-29 04:35:37 +02:00
Donald Sharp
1b7412c866 tests: Modify docker build for local to have dev build
Allow a local build of a frr docker container to be built with
`--enable-dev-build`.  This allows better decodes of symbols
which could be useful when you are trying to fix something
that is broken inside the docker container.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-08-28 15:50:23 -04:00
Donatas Abraitis
5fba22485b topotests: Add test for checking if route-map is applied for aggregate-address
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-08-28 16:45:44 +03:00
Dinesh G Dutt
5cb5f4d04d bgpd: Eliminate all incorrect formulations of afi/safi in JSON
In a number of places, the JSON output had invalid key names for
AFI/SAFI. For example, the key name in JSON was "IPv4 Unicast" which
is invalid as a JSON Key name. Many JSON tools such as those used in
Ansible, jq etc. all fail to parse the output in these scenarios. The
valid name is ipv4Unicast. There's already a routine afi_safi_json()
defined to handle this change, but it was not consistently called.
The non-JSON version was called afi_safi_print() and it merely returned
the CLI version of the string, didn't print anything.

This patch deals with this issue by:
   - Renaming afi_safi_print to get_afi_safi_str()
   - get_afi_safi_str takes an additional param, for_json which if true
     will return the JSON-valid string
   - Renaming afi_safi_json to get_afi_safi_json_str()
   - Creating a new routine get_afi_safi_vty_str() for printing to vty
   - Consistently using get_afi_safi_str() with the appropriate for_json
     value

Signed-off-by: Dinesh G Dutt <5016467+ddutt@users.noreply.github.com>
2019-08-27 14:05:39 +00:00
Ashish Pant
bca7983774 tests: Enhance execution logs in topojson
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

1. Add check if show running output is corrupted as frr-reload does
   not return cause of failure, just the error codes.
2. Change logger level to debug for some extra information.
3. Modify logger messages for more clear information.
4. Print configuration commands to console instead of show running
5. Print show command output to console.
6. Move show running output within flag show_router_config.
7. Add retry decorator for retyring show commands.
2019-08-22 16:24:45 +05:30
Donald Sharp
a7e52bd7b6 tests: Add a couple simple Null0 spelling tests
Add a bit of code to test different spelling of Null0 routes.
This was broken at some point in the past and with recent
changes is working again, but it would be nice to
know when this breaks again.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-08-21 11:44:48 -04:00
Marcel Röthke
24b7eb485d bgpd: fix bgp_table range lookup
In case the topmost node has a larger prefix length than the lookup
prefix it never matches even if it was still lower than maxlen

This also alters a test case to check for this bug.

Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
2019-08-16 16:42:11 +02:00
Sri Mohana Singamsetty
5acb534daf
Merge pull request #4802 from donaldsharp/static_blackhole
staticd: Fix blackhole routes being installed
2019-08-12 20:49:17 -07:00
Donald Sharp
76eb017923
Merge pull request #4497 from opensourcerouting/rcu
RCU support
2019-08-08 08:41:07 -04:00
Donald Sharp
a6e85307c3 staticd: Fix blackhole routes being installed
When we are ready to install a route, we were treating
blackhole routes as something that should be nexthop tracked
which does not work as well as one would expect.

Additionally add some test code to show that this actually
fixes this issue.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-08-07 21:55:23 -04:00
Donald Sharp
3a738964ec
Merge pull request #4763 from opensourcerouting/ds-work
lib: get rid of pqueue_*, use DECLARE_HEAP in thread.c
2019-08-07 16:45:02 -04:00
Quentin Young
3c1c172f02
Merge pull request #4790 from opensourcerouting/ctype-cast
*: fix ctype casts
2019-08-06 13:21:13 -04:00
David Lamparter
fefa5e0ff5 *: fix ctype (isalpha & co.) casts
The correct cast for these is (unsigned char), because "char" could be
signed and thus have some negative value.  isalpha & co. expect an int
arg that is positive, i.e. 0-255.  So we need to cast to (unsigned char)
when calling any of these.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2019-08-06 16:54:52 +02:00
Igor Ryzhov
c7975431e6 all: remove logical-router functionality
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2019-08-02 17:10:11 +03:00
Sri Mohana Singamsetty
b7655d8476
Merge pull request #4713 from ton31337/fix/set_comm-list_delete_into_config_memcpy
bgpd: Strip `delete` keyword when looking up for communities
2019-08-01 21:19:43 -07:00
David Lamparter
b21ea71ea9
Merge pull request #4758 from donaldsharp/test_epoch
tests: Do not use peerUptime as a measure of if a clear worked
2019-08-01 17:07:43 +02:00
David Lamparter
77faa5bd79 lib: remove pqueue_* (again)
All users of the pqueue_* implementations have been migrated to use
some new data structure (TYPEDSKIP for ospf, HEAP for thread.c).

Remove.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-08-01 17:02:53 +02:00
Donald Sharp
abdb6bcebd tests: Do not use peerUptime as a measure of if a clear worked
The peerUptime data received from a `show bgp ipv4 uni summ json`
gives you the time in seconds since the peer has come up.
The clear_bgp_and_verify function is checking the peerUptime
for before and after and if they are the same then the test
was declaring a clear failure.

The problem with this is of course that the tests can run fast
enough that the peerUptime is the same for before and after the clear.

Modify the test case to use peerUptimeEstablishedEpoch.
This value is the seconds since the epoch since the establishment
of the peer.  This will allow us to know that a clear happened.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-07-31 12:33:55 -04:00
Stephen Worley
7de7c75b29 tests: Add asserts to check return on list *_del
Add some asserts where `list_del()` is called to verify they object
was found when it was deleted.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2019-07-31 11:35:21 -04:00
David Lamparter
6046b690b5 lib/seqlock: avoid syscalls in no-waiter cases
When we have no contention on the seqlock, we shouldn't incur the cost
of syscalls.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2019-07-31 03:33:41 +02:00
Donald Sharp
42fc558ee3 zebra, tests: Remove ROUTE_ENTRY_NEXTHOPS_CHANGED
The flag ROUTE_ENTRY_NEXTHOPS_CHANGED is only ever set or unset.
Since this flag is not used for anything useful, remove from system.

By changing this flag we have re-ordered `internalStatus' of json
output of zebra rib routes.  Go through and fix up tetsts to
use the new values.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-07-29 14:53:58 -04:00
Rafael Zalamena
5d45cea234 topotest: fix bgp-path-attributes-topology
The first RIB check wants to assert that we don't have the r7's routes
in r1, so right after that code the routers r2 and r3 are configured
then `verify_rib` is called again to check for those routes.

This test never passed, but it didn't cause failures because of the
`try`/`except`.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-07-26 17:35:45 -03:00
Donatas Abraitis
5bb05ccebb topotests: Check if set-comm-list is working under route-map scope
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-07-26 09:18:17 +03:00
Rafael Zalamena
91c939dc12 topotest: improve common_config.py
Don't wait for `True` results when the return type is a string.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-07-23 10:28:56 -03:00
Rafael Zalamena
a6fd124a2a topotest: add new run_and_expect variant
The new `run_and_expect` variant - called `run_and_expect_type` - tests
the return value type of the test function and optionally the return
value.

Now we can implement tests from test functions that return different
return types.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-07-23 10:28:56 -03:00
Rafael Zalamena
3857e52f12 topotest: improve reliability of verify_rib
Attempt to run the function multiple times to make sure we got the
result we expected. This is a middle ground between big sleeps and short
test intervals.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-07-23 10:28:56 -03:00
Rafael Zalamena
c50435c1c2 topotest/bgp_l3vpn_to_bgp_vrf: stabilize test
Increase wait times between commands execution to help avoid bogus test
failures.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-07-23 10:28:56 -03:00
Rafael Zalamena
0f94985fdd topotest: adjust luCommand to accept wait_time
Allow users of `luCommand` to specify wait time between commands
execution and simplify the `wait` method implementation.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-07-23 10:28:20 -03:00
Rafael Zalamena
2a76b0a8e2 topotest: fix Lou's framework command wait
Fix two main issues:

  * Don't use float to figure out if we spent the time user asked;
  * Don't depend on system clock to find we reached the end of time;

The fix is basically pre caculating the amount of wait cycles we are
going to peform and use a counter.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-07-23 10:26:15 -03:00
Donald Sharp
44d2a6775b Test: Add back a bit more debugging to see what is going on
All debug logging has been thrown to the floor in this loop.
Add it back in and additionally add a bit more debugging to
know what is going on.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-07-18 07:50:10 -04:00
Mark Stapp
974c214ba9
Merge pull request #4680 from donaldsharp/test_longer
tests: Topotests are not giving sufficient time to propagate data
2019-07-17 13:34:51 -04:00
Mark Stapp
ad79beb1dd
Merge pull request #4687 from qlyoung/fix-test-ntop-strlen-assert
tests: remove strlen assert in inet_ntop tests
2019-07-15 15:25:09 -04:00
Quentin Young
2516237674 tests: remove strlen assert in inet_ntop tests
Some platform libc's like to render some v6 addresses as v4 mapped where
others render the same addresses as v6 with leading zeroes. Binary
equivalence checks pass but strlen checks sometimes fail here. Remove
assert causing the failure.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-07-15 17:19:14 +00:00
Renato Westphal
07a4ddf2b6
Merge pull request #4660 from manuhalo/label_manager_fixes
Label manager improvements + refactor
2019-07-12 17:09:33 -03:00
Donald Sharp
1d90adee9d tests: Topotests are not giving sufficient time to propagate data
A bunch of our current tests setup data and redistribute
it across some bgp connections and then test for it
being there.  A delay of 2 seconds that was initially
there to ensure that the data has propagated does not
actually work all the time when you have a loaded
virtualized environment.

Make the sleep 10 seconds.  I agree this is not the ideal
solution but I would rather get the damn tests up and running
again.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-07-11 14:40:31 -04:00
Emanuele Di Pascale
0b0b502f08 tests: remove lm-proxy-topo1 topotest
Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2019-07-10 15:50:22 +02:00
Emanuele Di Pascale
ff90cc95d5 tests: remove test_lblmgr.c
This is not part of the make check tests and it has been broken
for a while, apparently. The way the label manager is coded makes
it very hard to code unit tests, and testing the relay of requests
to an external label manager is probably better done through
a topotest, so remove this.

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2019-07-10 15:20:27 +02:00
Emanuele Di Pascale
0e3b6a926a lib, zebra: support label chunk requests for SRGB
For SRGB, we need to support chunk requests starting at a
specific point in the label space, rather than just asking
for any sufficiently large chunk. To this purpose, we extend
the label manager api to request a chunk with a base value;
if the base is set to 0, the label manager will behave as it
currently does, i.e. fetching the first free chunk big enough
to satisfy the request.

update all the existing calls to get chunks from the label
manager so that they use MPLS_LABEL_BASE_ANY as the base
for the requested chunk

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2019-07-10 15:20:27 +02:00
Ashish Pant
870fc40f7a tests: Fix info messages print in std_error
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

frr-reolad.py invocation sends info message to stderror channel
Redirected stderror from frr-reload.py to stdout

Fixed verify_convergence when more than one link is present
2019-07-09 10:26:53 +05:30
Ashish Pant
6bb29e5ea9 tests: Fix logdir creation
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Creates logdir everytime in start_topology, removed stop_topoloy.
Using tgen.stop_topology in test case now.
2019-07-09 10:26:53 +05:30
Ashish Pant
66e98bc169 tests: Adding example cases for topojson
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Example JSON and test cases for 3 types being added:
1. Single link between routers
2. Multiple linke between routers.
3. BGP session over loopback interface
2019-07-09 10:26:53 +05:30
Ashish Pant
c557d0174e tests: Adding bgp path attribute tests
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adding multiple test cases for bgp attributes.
Adding verfication APIs for them.
2019-07-09 10:26:53 +05:30
Ashish Pant
0c5c6e2e64 tests: Fixing ipv6 address generation
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>
2019-07-09 10:26:53 +05:30
Ashish Pant
81e3d6095f tests: Adding bgp tests for prefix-lists
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adds mulitple test scenarios for prefix-lists in bgp. Verfication
API for prefix-lits

Also adds description for bgp-basic test suite
2019-07-09 10:26:53 +05:30
Ashish Pant
cb6b1d9058 tests: Adding 5 test cases to bgp-basic suite
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adding test cases and verfication API for new test cases
2019-07-09 10:26:53 +05:30
Ashish Pant
77ef1af6e3 tests: Adding timers and bgp 4 bytes ASN test
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adding verify and config apis for bgp timer testcase
Adding verify and config apis for changing ASN to 4 bytes
2019-07-09 10:26:53 +05:30
Ashish Pant
e6db2bb135 tests: Adding API for route-map
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adding API for reading JSON data and configuring route-map on the
router
2019-07-09 10:26:53 +05:30
Ashish Pant
00db2a8978 tests: Adding API for prefix-list configuration
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adding API for prefix-list that reads data from JSON and configures
on the router.
2019-07-09 10:26:53 +05:30
Ashish Pant
e466352711 tests: Adding API for static route
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adding API for reading data from JSON and configuring static
routes on the router
2019-07-09 10:26:53 +05:30
Ashish Pant
7fa2079a03 tests: First test case and JSON
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adds verification API for bgp, first test case alongwith JSON file
2019-07-09 10:26:53 +05:30
Ashish Pant
3c19bc3134 tests: Adding api for BGP configuration
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adding mulitple methods to form BGP configuration and other
helper methods.
If "bgp" is given in JSON the configuration will be created
2019-07-09 10:26:53 +05:30
Ashish Pant
7659b8d4e4 tests: Adds basic config load and interface API
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adds method to load configuration on the router. Save configuration
for resetting.
Adds method for configuring interfaces ip address on router.
Adds logdir and other pytest.ini option
2019-07-09 10:26:53 +05:30
Ashish Pant
27339562f8 tests: Adding start and stop topology
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adding methods for staring and stopping routers in topology
2019-07-09 10:26:53 +05:30
Ashish Pant
2ad3d000f0 tests: Intial commit for topojson
Signed-off-by: Ashish Pant <ashish12pant@gmail.com>

Adding JSON parser for creating router and assinging ip addresses to
each interface
2019-07-09 10:26:53 +05:30
David Lamparter
1df0492687
Run-time log filtering via vtysh commands (#4524)
Run-time log filtering via vtysh commands
2019-07-03 14:39:59 +02:00
Lou Berger
d850e66733 topotest: reduce chattiness of lutil output
Signed-off-by: Lou Berger <lberger@labn.net>
2019-06-26 20:30:59 +00:00
Lou Berger
487921759c bgp_l3vpn_to_bgp_vrf: report zebra memory stats
Signed-off-by: Lou Berger <lberger@labn.net>
2019-06-26 17:54:20 +00:00
Lou Berger
26732abf54 bgp_l3vpn_to_bgp_vrf: refactor to try to avoid periodic failure, also collect more info
Signed-off-by: Lou Berger <lberger@labn.net>
2019-06-26 17:53:46 +00:00
Quentin Young
878918edaa
Merge pull request #4522 from LabNConsulting/working/master/issue4479
bgpd: address issue #4479 crash during instance removal
2019-06-25 11:45:19 -04:00
Sri Mohana Singamsetty
920c100807
Merge pull request #4549 from donaldsharp/multiple_instance
Multiple instance
2019-06-20 13:32:34 -07:00
Stephen Worley
4aaea8fb49 tests: Make checkRouterRunning() show logging
Adding in the command `show log-filter` made `show log`
ambiguous. Change the checkRouterRunning() test to do
full `show logging` so it works again.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2019-06-19 17:20:24 -04:00
Mark Stapp
e30f24fd8d topotest: configure l3mdev_accept for a range of kernels
Improve vrf support in the l3vpn topotest by configuring
l3mdev_accept for a range of kernels.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-06-19 14:55:48 -04:00
Donald Sharp
0c38bc3257 tests: Remove bgp multiple-instance command from topotests
The `bgp multiple-instance` command has been deprecated and
removed.  Finish off this by removing it from topotests too.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-18 09:32:18 -04:00
Lou Berger
5b5971483e tests/topotests: bgp_l3vpn_to_bgp_vrf double the amount of time to wait during scaling tests
Signed-off-by: Lou Berger <lberger@labn.net>
2019-06-18 11:54:57 +00:00
Lou Berger
90d5fc83c0 tests/topotests: add bgp_instance_del_test to test for crashes seen during bgp instance deletes
Signed-off-by: Lou Berger <lberger@labn.net>
2019-06-18 11:54:57 +00:00
Donald Sharp
7ec5e2bf70
Merge pull request #4514 from opensourcerouting/warnings-20190612
*: kill more warnings
2019-06-17 15:19:42 -04:00
David Lamparter
277aee6fc9
eliminate snprintf from AF_INET/AF_INET6 prefix2str, add prefix2str test (#4521)
eliminate snprintf from AF_INET/AF_INET6 prefix2str, add prefix2str test
2019-06-14 21:48:34 +02:00
Lou Berger
dc06452e68 tests/topotests: bgp_l3vpn_to_bgp_vrf double the amount of time to wait during scaling tests
Signed-off-by: Lou Berger <lberger@labn.net>
2019-06-13 21:01:30 +00:00
Quentin Young
42aac9b2ab
Merge pull request #4500 from opensourcerouting/clippy-improve
clippy: batch of improvements
2019-06-13 15:06:24 -04:00
Quentin Young
17bf75735c tests: add prefix2str test
Only tests IPv4 and IPv6 right now.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-06-13 18:30:28 +00:00
Quentin Young
096873bd46
Merge pull request #4509 from opensourcerouting/spanish-intquisition
lib: make printfrr int64_t usable
2019-06-13 14:00:50 -04:00
Quentin Young
ec466f6546 lib: remove snprintf from prefix2str
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-06-13 17:08:05 +00:00
Donald Sharp
6a81b60a94
Merge pull request #4502 from opensourcerouting/topotest-backward-compat
topotests: backward compatibility fix
2019-06-13 09:19:02 -04:00
David Lamparter
2618a52ed3 *: config.h or zebra.h is the first #include
This is mostly relevant for Solaris, where config.h sets up some #define
that affect overall header behaviour, so it needs to be before anything
else.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-13 13:35:33 +02:00
David Lamparter
afb35622ef lib: make "%Ld" work for int64_t
... without compiler plugins.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-12 19:35:43 +02:00
David Lamparter
102f26e611 build: remove tests/Makefile.in
this was accidentally added in 370c8e07

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-12 19:22:59 +02:00
Rafael Zalamena
04ce2b970e topotests: backward compatibility fix
Allow old topologies to use default parameters from `pytest.ini`.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-06-11 14:05:48 -03:00
David Lamparter
a7f20d4328 lib: const-unaware container_of for C++
This version of container_of() should work on C++, by ditching the
unavailable builtins (at the cost of no longer checking for "const"
violations.)

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-11 18:45:38 +02:00
Quentin Young
9f9307c953
Merge pull request #4480 from opensourcerouting/inet_ntop
inet_ntop but faster
2019-06-07 11:23:16 -04:00
Donald Sharp
3f759ec92f
Merge pull request #4449 from opensourcerouting/py-detect
build: refactor & revamp python autoconf logic
2019-06-07 07:19:35 -04:00
David Lamparter
874035be4e tests: exercise frr_inet_ntop()
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-06 20:59:54 +02:00
Rafael Zalamena
0b5cfde508
Merge pull request #4428 from mjstapp/topo_update_ospf6
topotests: migrate ospf6 test to topogen framework
2019-06-06 15:57:49 -03:00
Mark Stapp
e394d9aa5f tests: Add ip6_route_zebra lib function
Add a common function to retrieve and canonicalize
'show ipv6 route' output for use in topotests. Use that in
the test_ospf6_topo1 test; update the corresponding 'expected'
results files to match the lib function.

Replace some 'print' with 'logger' statements in that test also.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-06-06 13:22:04 -04:00
Donald Sharp
f7288f1515
Merge pull request #4370 from pguibert6WIND/fix_interface_rtadv2
Fix Router advertisements per VRF
2019-06-06 10:25:09 -04:00
Philippe Guibert
37ce18dcfc topotests: test bgp ipv6 vrf lite unnumbered with ipv6 rt advertisements
bgp ipv6 implies that routing advertisements be available for all vrf.
in the case of the vrf backend is network namespace, this should be
tested too. in addition to configure addresses per interface on a
separate vrf, the test also checks for BGP connectivity.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2019-06-04 18:33:57 +02:00
Philippe Guibert
689bb56613 topotests: test bgp ipv6 unnumbered with ipv6 rt advertisements
bgp ipv6 implies that routing advertisements be available for all vrf.
in the case of the vrf backend is network namespace, this should be
tested too. in addition to configure addresses per interface on a
separate vrf, the test also checks for BGP connectivity.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2019-06-04 18:33:57 +02:00
David Lamparter
45da32d7a4 build: refactor & revamp python autoconf logic
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-04 16:21:20 +02:00
David Lamparter
b9911c2e4e tests: exercise printfrr()
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 18:57:31 +02:00
Mark Stapp
92a9c7bd28 topotests: migrate ospf6 test to topogen framework
Migrate/upgrade the ospf6-topo1 topotest to the topogen
framework. The framework supports improved logging, among
other things. Also add a couple of zebra debugs.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-05-31 13:57:03 -04:00
Donald Sharp
2950f5da55 lib: Add '--command-log-always` to all daemons startup
Add 'no log commands' cli and at the same time add a
--command-log-always to the daemon startup cli.

If --command-log-always is specified then all commands are
auto-logged and the 'no log commands' form of the command
is now ignored.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-05-31 10:06:42 -04:00
Russ White
4c02c06489
Merge pull request #4377 from ton31337/feature/show_fqdn_in_show_ip_bgp
bgpd: Show FQDN in `show [ip] bgp` output
2019-05-28 07:53:20 -04:00
Renato Westphal
17c474562b tests: update list of headers in the cxx compat test
Now, whenever a new header is added to libfrr, this test needs to
be updated manually (unless we automate this somehow in the future).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-05-21 16:00:14 -03:00
Renato Westphal
81fddbe7ae *: rename new ForEach macros from the typesafe API
This is necessary to avoid a name collision with std::for_each
from C++.

Fixes the compilation of the gRPC northbound module.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-05-21 15:59:08 -03:00
Donatas Abraitis
25b5da8d50 bgpd: Show FQDN in show [ip] bgp output
We already show this information in `show [ip] bgp <prefix`, thus why don't
show it in global output. It's very handy when using at scale and to see
the whole picture instead of resolving neighbor manually.

It will show FQDN only if `bgp default show-hostname` is toggled.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-05-21 11:28:20 +03:00
David Lamparter
d0a0e597c8 tests: more datastructure tests
A little something for everybody in here.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-05-21 05:42:13 +02:00
David Lamparter
8c3d03b3e4 tests: extend DECLARE_* tests
The unsorted datastructures (LIST, DLIST) had no test before this.  Also
add a hash check (mostly to make testing the unsorted lists easier.)

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-05-21 05:42:13 +02:00
David Lamparter
2214f160bf tests: test DECLARE_HASH with good and bad hashfn
The hash table test was previously (intentionally) using a bad hash
function to test the code in the face of hash collisions.  Add a test
with a good hash function to see some performance numbers.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-05-21 05:42:10 +02:00
Russ White
ace430f0db
Merge pull request #4144 from pguibert6WIND/bfd_cbit
BFD CBIT
2019-05-16 10:13:26 -04:00
Russ White
6f33cbff18
Merge pull request #4340 from qlyoung/hash-key-const
lib: hashing functions should take const arguments
2019-05-16 10:00:55 -04:00
Donald Sharp
07dfa57d9b
Merge pull request #4316 from LabNConsulting/working/master/tt-scale-vrfs
bgp_l3vpn_to_bgp_vrf: test adding/removing 50K*2CEs VRF routes
2019-05-16 09:53:12 -04:00
Lou Berger
1cba6d1210 bgp_l3vpn_to_bgp_vrf: test adding/removing 50K*2CEs VRF routes
Only runs when configured with --enable-sharpd

Signed-off-by: Lou Berger <lberger@labn.net>
2019-05-15 21:27:00 +00:00
Lou Berger
a330e8170d bgp_l3vpn_to_bgp_vrf: disable bgp debug logging
Signed-off-by: Lou Berger <lberger@labn.net>
2019-05-15 21:27:00 +00:00
Lou Berger
a38f008303 topotests/lib: support sharpd and other daemons in lutils
needs both <daemon>.conf and <daemon> to be present

Signed-off-by: Lou Berger <lberger@labn.net>
2019-05-15 21:26:13 +00:00
Quentin Young
d8b87afe7c lib: hashing functions should take const arguments
It doesn't make much sense for a hash function to modify its argument,
so const the hash input.

BGP does it in a couple places, those cast away the const. Not great but
not any worse than it was.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-05-14 21:23:08 +00:00
Philippe Guibert
a9179f571d bfd-bgp-cbit-topo3: add bfd bgp cbit topotest test
this test simulates the case where r1 keeps staled entries of r2,
because r2 is a 'non stop forwarding' device. For instance, r2 restarts
to be upgraded, then r1 keeps the entries, thus avoiding to flush
entries in the dataplane. Here, BFD is used, and the bgp
check-control-plane-failure command is used to inform BGP that if BFD
goes down, this may be because remote peer is restarting, and this may
be necessary to keep the entries of remote.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2019-05-14 16:49:49 +02:00
Rafael Zalamena
5fd270a114
Merge pull request #4112 from pguibert6WIND/bfd_vrf
support for BFD VRF
2019-05-14 10:24:56 -03:00
Donald Sharp
11056dd815
Merge pull request #4275 from ton31337/fix/move_outside_bgp_input_modifier
bgpd: Move inbound policy check outside bgp_input_modifier()
2019-05-10 11:34:40 -04:00
Donald Sharp
943142da34
Merge pull request #4272 from opensourcerouting/isis-prefix-sid-fix
isisd: fix display of the Extended IPv4 reachability TLV
2019-05-10 11:06:56 -04:00
Donatas Abraitis
ce1df88f8f topotests: Add test to check if eBGP required policy works
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-05-10 17:01:24 +03:00
Christian Franke
bf555bf035 isisd: Don't set subtlv structure if we didn't unpack any subtlvs
This ensures deserialized and serialized TLV representation is
consistent.
2019-05-10 13:24:38 +02:00
Donald Sharp
c9d72a0b7f topotests: ifindex values are not guaranteed to be the same
Different versions of linux are assigned different interface
ifindexes.  Mask that cabbage out.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-05-08 15:06:31 -04:00
Philippe Guibert
0e6c4a0e81 bfd-vrf_topo1: add bfd test on a vrf netns
some testing is available on testing bfd feature based on a bgp vrf
instance.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2019-05-07 15:54:30 +02:00
Donald Sharp
43932ad63c
Merge pull request #4247 from mjstapp/fix_topotest_topo_only
topotest: fix pytest deprecation warning
2019-05-02 18:48:28 -04:00
Mark Stapp
80cb48d2f4 topotest: fix pytest deprecation warning
As of pytest 4.something, a pattern we were using in conftest.py
was deprecated. Also make a new-ish test script executable (all
the rest appear to be?)

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-05-02 14:43:18 -04:00
Lou Berger
4cd0f3fed6 topotests/bgp_rfapi_basic_sanity: cleanup rfapi using non-debug command
Signed-off-by: Lou Berger <lberger@labn.net>
2019-05-01 21:16:14 +00:00
Donald Sharp
bcbce7b283
Merge pull request #4232 from mjstapp/fix_topotests_py3
topotest: fixes to support python3
2019-04-30 15:47:17 -04:00
Mark Stapp
a07e17d5e7 topotest: fixes to support python3
Make some small changes to support both python 2 and 3.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-04-30 11:31:02 -04:00
Lou Berger
31e944a8a7
Merge pull request #3045 from opensourcerouting/atoms
READY: lists/skiplists/rb-trees new API & sequence lock & atomic lists
2019-04-30 10:26:35 -04:00
David Lamparter
7629b6b79c Revert "lib: remove pqueue_*"
This reverts commit 798ac49d06.
2019-04-29 21:18:48 +02:00
David Lamparter
a297301e89 lib: remove fifo implementation 2019-04-27 19:33:45 +02:00
David Lamparter
4bef0ec4fb isisd: replace dict_* with DECLARE_RBTREE
Historically, isisd has been carrying around its own red-black tree to
manage its LSP DB in.  This replaces that with the newly-added
DECLARE_RBTREE_*.  This allows completely removing the dict_* code.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-04-27 19:33:45 +02:00
David Lamparter
798ac49d06 lib: remove pqueue_*
All users of the pqueue_* implementations have been migrated to use
TYPEDSKIP_* skiplists.  Remove.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-04-27 19:33:45 +02:00
David Lamparter
992f9967db tests: exercise the typesafe list wrappers
Since all of these list implementations provide almost the same API, we
can run and validate them against the same test code.  9 tests for the
price of one!

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2019-04-27 19:33:45 +02:00
David Lamparter
bcea0c0fde lib: atomlist & atomsort
These two are lock-free linked list implementations, the plain one is
primarily intended for queues while the sorted one is for general data
storage.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-04-27 19:33:39 +02:00
Russ White
798b3c3469
Merge pull request #4140 from ton31337/fix/do_not_send_notification_again_with_invalid_nlri
bgpd: Do not send UPDATE message with maximum-prefix
2019-04-25 18:43:10 -04:00
Donatas Abraitis
513386b57f bgpd: Do not send UPDATE message with maximum-prefix
When using maximum-prefix and count is overflow BGP
sends UPDATE message:

Apr 15 20:45:06 exit1-debian-9 bgpd[9818]: 192.168.0.2 [Error] Error parsing NLRI
Apr 15 20:45:06 exit1-debian-9 bgpd[9818]: %NOTIFICATION: sent to neighbor 192.168.0.2 3/10 (UPDATE Message Error/Invalid Network Field) 0 bytes

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-04-24 14:51:06 +03:00
Donald Sharp
73587535ff tests: bgp_l3vpn_to_bgp_vrf were bailing to quickly
The tests are not coming up consistently on my test box.  Add a bit of wait
time to test to allow normal bgp when the first attempt doesn't come up.
Especially since bgp timeouts are 120 seconds with non datacenter compiles.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-04-18 14:14:26 -04:00
David Lamparter
440d5faa3a lib: add "seqlock" wait/broadcast primitive
Manually tested rather extensively in addition to included unit tests,
should work as intended.

NB: The OpenBSD futex() code is "future"; it's not actually in OpenBSD
(yet?) and thus untested.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2019-04-18 12:44:29 +02:00
Quentin Young
c8d8450442
Merge pull request #3779 from opensourcerouting/fix-mpls-label-topotests
tests: Remove some inconsistent local labels in check in test_ldp_vpls_topo1
2019-04-09 11:25:40 -04:00
Martin Winter
97ec2683d4 tests: test_ldp_vpls_topo1 Remove some inconsistent labels in check
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2019-04-04 18:44:13 -03:00
Lou Berger
04ca9856ba
Merge pull request #3899 from ton31337/fix/remove_private_as_with_local_as
bgpd: Remove private AS numbers if local-as is defined
2019-04-04 16:08:42 -04:00
Quentin Young
fe7f26ce76 lib: remove event_counter.[ch]
goodbye spooky code

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-04-03 20:18:08 +00:00
Mark Stapp
0931097954
Merge pull request #4015 from opensourcerouting/topotests-fixes
topotests: fix missing log file and duplicated output folder
2019-03-28 11:07:31 -04:00
Donald Sharp
9c463972e7 topotests: Add a bit more useful debugging to ldp-vpls-topo1
When something goes wrong with this test, having these turned
on will help us debug zebra processing a bit better in the
future without having to modify anything else.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-27 16:13:58 -04:00
Donatas Abraitis
6b5a72a326 bgpd: Remove private AS numbers if local-as is defined
When using remove-private-AS together with local-as
aspath_remove_private_asns() is called before bgp_packet_attribute().

In this case, private AS will always appear in front of change_local_as.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-03-26 19:03:07 +02:00
Rafael Zalamena
87ba6e1e3a topotests/lib: fix router specific log output
Change the router log output to the previous folder so it doesn't get
erased when starting the old API (unbreaks command/output logging on
Topogen).

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-03-25 15:16:12 -03:00
Rafael Zalamena
0d5e41c628 topotests/lib: fallback topology logdir if none was configured
`param.get` always evaluates the second argument and it was causing
two log directories being created for topologies using Topogen.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-03-25 14:46:16 -03:00
Rafael Zalamena
79d70a4c1b topotests: pim-basic: fix some rough edges
Move daemon configuration to appropriated files and use `json_cmp` to
assert the values we expect.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-03-20 14:03:57 -03:00
Donald Sharp
86439e8d5f Add code to test some very basic pim functionality
Add code to send a S,G stream and make sure the RP see's it.
Add code to send a *,G report and make sure the RP see's it.

This is just some *very* basic functionality testing to
ensure that we don't break anything basic.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-03-20 13:41:44 -03:00
Quentin Young
2e73695a3c tests: point topotests docker img to new location
The topotests docker image has moved from frrouting/frr to
frrouting/topotests. Update accordingly.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-03-19 20:18:49 +00:00
Donald Sharp
86dd09667a
Merge pull request #3920 from AkhileshSamineni/show_bgp_ipv6_summary_fix_master
bgpd: Incorrect number of peers count in "show bgp ipv6 summary" output
2019-03-15 08:54:03 -04:00
Rafael Zalamena
812f5a3d3b topotests: add new bfd topology with IPv6
New BFD topology using IPv6 and multi hop peer to cover more daemon
features. This topology also tests BFD integration with BGP, OSPF and
OSPF6.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2019-03-11 22:07:42 -03:00
Akhilesh Samineni
210ec2a0d6 bgpd: Incorrect number of peers count in "show bgp ipv6 summary output
The "show bgp ipv6 summary" output displays incorrect number of peers count.

sonic# show bgp ipv6 summary

IPv6 Unicast Summary:
BGP router identifier 10.1.0.1, local AS number 65100 vrf-id 0
BGP table version 0
RIB entries 0, using 0 bytes of memory
Peers 5, using 103 KiB of memory
Peer groups 1, using 64 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
2003::1 4 65099 0 0 0 0 0 never Active
2088::1 4 65100 0 0 0 0 0 never Active
3021::2 4 65100 0 0 0 0 0 never Active

Total number of neighbors 3
sonic#
In the above output, the peers count displays as 5 but the actual peer count is 3, i.e.. 3 neighbors are activated in ipv6 unicast address family.
Displayed peer count (5) is the number of the neighbors activated in a BGP instance.

Fix : Now the peers count displays the number of neighbors activated per afi/safi.
After Fix:
sonic# show bgp ipv6 summary

IPv6 Unicast Summary:
BGP router identifier 10.1.0.1, local AS number 65100 vrf-id 0
BGP table version 0
RIB entries 0, using 0 bytes of memory
Peers 3, using 62 KiB of memory
Peer groups 1, using 64 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
2003::1 4 65099 0 0 0 0 0 never Active
2088::1 4 65100 0 0 0 0 0 never Active
3021::2 4 65100 0 0 0 0 0 never Active

Total number of neighbors 3
sonic#

Signed-off-by: Akhilesh Samineni <akhilesh.samineni@broadcom.com>
2019-03-07 13:17:25 +05:30
Quentin Young
97b5d752d7 *: use array_size instead of raw division
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-02-25 23:00:16 +00:00
Quentin Young
b08047f82d *: return bool from boolean functions
Not 1 or 0.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-02-25 23:00:16 +00:00
Tim Bray
e3b78da875 *: Rename backet to bucket
Presume typo from original author

Signed-off-by: Tim Bray <tim@kooky.org>
2019-02-25 16:22:36 +00:00
David Lamparter
50734c950d
Merge pull request #3777 from donaldsharp/topotest_all_routes
topotests: Add code to ensure routes are as expected
2019-02-18 13:41:44 +01:00
Donald Sharp
cfef27e56e
Merge pull request #3622 from mjstapp/fix_cpp_compile
libs, daemons: changes to permit c++ compilation
2019-02-13 12:47:23 -05:00
Donald Sharp
01490ba25d
Merge pull request #3753 from LabNConsulting/working/master/topotest-l3mdev=1
topotest: bgp_l3vpn_to_bgp_vrf: fix setting of TCP l3mdev
2019-02-13 09:32:43 -05:00
David Lamparter
8ed561e1f1 tests: add C++ header compatibility smoke test
Compiling an empty C file with most headers included and -Wc++-compat
gives us a build error if we introduce some stupid C++-incompatible
change.

While this won't catch everything, it's a good start.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-02-11 22:34:12 -02:00
Donald Sharp
556f76e18f topotests: Add code to ensure routes are as expected
This code just ensures that v4 and v6 routes are as expected
in the rib.  While this test addition is not that complicated it would
have caught some issues while I was attempting to handle the
switchover to a different style of rib processing.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-02-11 12:54:31 -05:00
Donald Sharp
84b5e534e6 eigrpd: Do not redelete the eigrp interface data structure
On interface down do not delete the eigrp interface data
structure.  Ensure that the address that we have setup the
eigrp data structure ontop of is what we are deleting.

Additionally add a test to show that this is no-longer
crashing eigrp.  Future commits will further modify
this test to actually ensure that the eigrp topo is
updated correctly and the rib has the correct data.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-02-11 07:23:23 -05:00
Donald Sharp
494247b58c zebra: Update zserv debug messages to give a bit more useful info
When we schedule a packet for future handling, list the packet
type so that we can see what we are getting with debugs.

Also note which client and how many packets we received from that
client.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-02-10 11:48:14 -05:00
Lou Berger
8d56886e6c bgp_l3vpn_to_bgp_vrf: verify TCP l3mdev set as expected
Signed-off-by: Lou Berger <lberger@labn.net>
2019-02-07 16:20:10 -05:00
Lou Berger
0c55dcbdf4 bgp_l3vpn_to_bgp_vrf: fix setting of TCP l3mdev
Signed-off-by: Lou Berger <lberger@labn.net>
2019-02-07 16:20:10 -05:00
Quentin Young
370c8e079f doc: move topotests docs to developers guide
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2019-02-05 19:25:16 +00:00
Donald Sharp
0f9bc49647 eigrpd: Modify code to pass down metric to zebra
Modify EIGRP code to pass its used metric down to zebra.
Additionally update topotests to pass with these changes.

Fixes: #3703
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-02-03 17:45:08 -05:00
David Lamparter
fdbd8086b1 build: fix a whole bunch of *FLAGS
- some target_CFLAGS that needed to include AM_CFLAGS didn't do so
- libyang/sysrepo/sqlite3/confd CFLAGS + LIBS weren't used at all
- consistently use $(FOO_CFLAGS) instead of @FOO_CFLAGS@
- 2 dependencies were missing for clippy

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-01-30 19:13:51 +01:00
Donald Sharp
dc2f50f378 bgpd: interface based peers should automatically override it's peer group
When a interface based peer is setup and if it is part of a peer
group we should ignore this and just use the PEER_FLAG_CAPABILITY_ENHE
no matter what.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-25 20:40:05 -05:00
Ruben Kerkhof
4d762f2607 Treewide: use ANSI function definitions
Signed-off-by: Ruben Kerkhof <ruben@rubenkerkhof.com>
2019-01-24 11:21:59 +01:00
Donald Sharp
848b4fc33b topotests: Modify bgp convergence to be more than 120 seconds
Waiting 10 seconds for bgp convergence makes no sense, especially
if the test system is under load and a node is started up before
the node it is connecting to is up. We should wait for the full
default of 120 seconds, plus a little time to ensure nothing is
screwed up too much.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-22 20:03:36 -05:00
Lou Berger
e3d16a4fc8 bgp_rfapi_basic_sanity_config2: delayed timeouts not supported without VNC attr
Signed-off-by: Lou Berger <lberger@labn.net>
2019-01-07 22:16:37 +00:00
Lou Berger
ef9aee1457 bgp_rfapi_basic_sanity: delayed timeouts not supported without VNC attr
Signed-off-by: Lou Berger <lberger@labn.net>
2019-01-07 20:00:34 +00:00
Rafael Zalamena
f6913418f3
Merge pull request #3499 from donaldsharp/topotest_inheritance
Topotest inheritance
2018-12-20 15:52:03 -02:00
Martin Winter
f26be30a4b
Merge pull request #3279 from adharkar/frr-default_local
bgpd: Display default local preference and local AS for BGP show commands
2018-12-18 10:46:58 +01:00
Donald Sharp
4b1d6d4db5 topotests: add FreeBSDRouter abstraction
Start the addition of FreeBSDRouter class that inherits from
class Router.  At this point we do not do a whole lot.  We
just come up on FreeBSD, lots of stuff that still needs to
be fixed.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-17 10:43:27 -05:00
Donald Sharp
d29fb5bd52 topotests: Move linux specific config into Linux config section
As part of the class rework, move the linux specific config
into the LinuxRouter.config section instead of being in the
Router class.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-17 10:38:02 -05:00
Donald Sharp
7cc96035a7 topotests: Make 'LinuxRouter' a class of 'Router'
Modify the LinuxRouter code such that it inherits from the
Router class.  This is setup work for (a) pulling out linux
specific config from class Router and (b) creating a FreebsdRouter
that inherits from class 'Router'.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-17 10:33:37 -05:00
Donald Sharp
849d1ed9af topotests: Allow sharpd to be used in topotests
The sharp daemon did not have any ability to be used in
topotests.  Add some code to allow this.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-16 20:47:30 -05:00
Donald Sharp
28440fd9f8 topotests: module_present should return a True/False
The recent change to module_present accidently didn't return anything.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-16 20:47:30 -05:00
Donald Sharp
cc95fbd9ff topotests: Start abstraction of module_present for other platforms
Start abstraction of the module_present into module_present_linux and freebsd
To allow for multiple platforms that the topotests can be run on.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-15 10:54:11 -05:00
Donald Sharp
af99f19eb2 topotests: Cleanup diagnose_env to allow thought about multi-platforms
Start the cleanup of diagnose_env to allow the running of topotests
on platforms besides linux.

So we split up diagnose_env into linux and freebsd variants.
At this point in time freebsd doesn't have any special code.
To be determined in the future.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-15 10:49:59 -05:00
Donald Sharp
b7822d2016 topotests: Add a basic route leak vrf test
A recent commit broke this functionality, so add a very basic
route leak vrf test.

router bgp 99 vrf DONNA
  address-family ipv4 uni
    redistribute connected
    import vrf EVA
router bgp 99 vrf EVA
  address-family ipv4 uni
    redistribute connected
    import vrf DONNA

Routes should be leaked between the two vrf's.  Ensure that it does.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-12 13:37:46 +01:00
Christian Franke
cffe9e34de tests/topotests: Pull docker image from registry
We have set up automated builds for the topotest images at dockerhub.
Therefore, people don't need to perform a local build to run the
topotests on docker, but can use the image built by dockerhub.

As there is not much benefit in building locally, but the disadvantage
of weird errors if using an outdated image, change the topotests target
to always pull the most recent image from dockerhub.

Add an environment variable to disable this, e.g. for local development.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-10 18:01:34 +01:00
Renato Westphal
99fb518fef lib, tests: add support for keyless YANG lists
YANG allows lists without keys for operational data, in which case
the list elements are uniquely identified using a positional index
(starting from one).

This commit does the following:
* Remove the need to implement the 'get_keys' and 'lookup_entry'
  callbacks for keyless lists.
* Extend nb_oper_data_iter_list() so that it special-cases keyless
  lists appropriately. Since both the CLI and the sysrepo plugin
  use nb_oper_data_iterate() to fetch operational data, both these
  northbound clients automatically gain the ability to understand
  keyless lists without additional changes.
* Extend the confd plugin to special-case keyless lists as well. This
  was a bit painful to implement given ConfD's clumsy API, but
  keyless lists should work ok now.
* Update the "test_oper_data" unit test to test keyless YANG lists in
  addition to regular lists.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-09 13:58:53 -02:00
Donald Sharp
debaa48ba6
Merge pull request #3452 from opensourcerouting/reprobuild-master
[master] build reproducibility
2018-12-09 09:36:24 -05:00
Donald Sharp
64b81b3a64
Merge pull request #3442 from opensourcerouting/confirmed-commits
lib: add support for confirmed commits
2018-12-09 09:35:49 -05:00
Donald Sharp
290e0a7b41
Merge pull request #3420 from LabNConsulting/working/master/topotest/ce4-in-vrf
Topotest: put ce4 into vrf (no default), plus a couple of lib changes
2018-12-08 13:43:01 -05:00
Lou Berger
43c2c66bdf topotest: bgp_l3vpn_to_bgp_vrf put ce4 into vrf (without a default)
Signed-off-by: Lou Berger <lberger@labn.net>
2018-12-08 10:43:44 -05:00
Lou Berger
90892d35e1 topotests/lib: help script writers understand wrong VRF failure
Signed-off-by: Lou Berger <lberger@labn.net>
2018-12-08 10:43:31 -05:00
Lou Berger
8cd7c744df topotest: remove sleep on staticd startup
Signed-off-by: Lou Berger <lberger@labn.net>
2018-12-08 10:42:21 -05:00
David Lamparter
e4cdd7ccc5 tests: fix domainname dependency
These are causing random test failures when the host's domainname is
actually set to something (as opposed to empty/unset, which it is 99% of
times.)

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-12-07 19:34:45 +01:00
Renato Westphal
fbdc1c0a84 lib: add support for confirmed commits
Confirmed commits allow the user to request an automatic rollback to
the previous configuration if the commit operation is not confirmed
within a number of minutes. This is particularly useful when the user
is accessing the CLI through the network (e.g. using SSH) and any
configuration change might cause an unexpected loss of connectivity
between the user and the managed device (e.g. misconfiguration of a
routing protocol). By using a confirmed commit, the user can rest
assured the connectivity will be restored after the given timeout
expires, avoiding the need to access the router physically to fix
the problem.

When "commit confirmed TIMEOUT" is used, a new "commit" command is
expected to confirm the previous commit before the given timeout
expires. If "commit confirmed TIMEOUT" is used while there's already
a confirmed-commit in progress, the confirmed-commit timeout is
reset to the new value.

In the current implementation, if other users perform commits while
there's a confirmed-commit in progress, all commits are rolled back
when the confirmed-commit timeout expires. It's recommended to use
the "configure exclusive" configuration mode to prevent unexpected
outcomes when using confirmed commits.

When an user exits from the configuration mode while there's a
confirmed-commit in progress, the commit is automatically rolled
back and the user is notified about it. In the future we might
want to prompt the user if he or she really wants to exit from the
configuration mode when there's a pending confirmed commit.

Needless to say, confirmed commit only work for configuration
commands converted to the new northbound model. vtysh support will
be implemented at a later time.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-07 11:11:33 -02:00
Donald Sharp
29dfc63cbf
Merge pull request #3437 from opensourcerouting/bugfix/topotests-use-copy
tests/topotests: Use copied tests in Docker
2018-12-06 19:31:26 -05:00
Christian Franke
464e85c84d tests/topotests: Also search sbin for modprobe
We call `modprobe -n` to check if mpls modules are available to be
loaded. We do this as normal user, to only ask for root permissions
if we are actually loading the module.

This breaks if `modprobe` is in `/sbin` and normal users don't have
sbin in path.

So add `/sbin` to the search path to work around this.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-06 18:33:21 +01:00
Christian Franke
ebdaa9ce5f tests/topotests: Use copied tests in Docker
If we mount the tests into the container from the host, we also
mount any `*.pyc` files with them, which will lead to issues
as the mount is done read-only to avoid any changes to the host.

Since the tests are now integrated and we already create a writeable
copy of the FRR tree, just use the tests from the FRR tree to avoid
this issue.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-06 15:30:03 +01:00
Ameya Dharkar
436df704e4 bgp: new topotest BGP templates to display default local preference and local-AS in BGP commands
This commit adds a template for "show bgp ipv4/ipv6" display to include default local preference and local-AS O/P.

Signed-off-by: Ameya Dharkar <adharkar@vmware.com>
2018-12-05 11:45:31 -08:00
Olivier Dugeon
5898044382
Merge pull request #3174 from opensourcerouting/feature/isis-triggered-hello
Feature: IS-IS triggered hello
2018-12-04 18:33:36 +01:00
Christian Franke
7fe06d5559 topotests: Update json_cmp_result to return readable result
Before this update, json_cmp_results which were formatted as strings
would not show the error mesage but just an object reference.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-04 16:13:58 +01:00
Christian Franke
32bc1eafb6 topotests/isis-topo1: Set useful IS-IS debugs
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-04 16:13:50 +01:00
Christian Franke
54b60cf9b0 Revert "tests/topotests: Change docker build context"
This reverts commit 659782730b.

Apparently, the build context is inferred from the Dockerfile path.
Yay for sensible documentation. :/

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-01 19:40:49 +01:00
Christian Franke
ecd2f14c47 tests/topotests: Set -o cache_dir=/tmp
We are mounting the topotests from the host into the container
and mark them as read-only to avoid any modifications to the host.

Pytest tries to create a .pytest_chache directory in that location
which fails because of the read-only mount.

Configure a different cache dir which is writable to resolve this.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-01 17:16:01 +01:00
Christian Franke
659782730b tests/topotests: Change docker build context
In order to support automated builds, the build context needs to be
the repository root.

So adapt our dockerfile and buildscript for this. Also, add files which
should not be included into the build context in .dockerignore to limit
the size of the build context to something sensible.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-01 16:54:58 +01:00
Christian Franke
b25e517b61 tests/topotests: Update documentation
The documentation needs an update to match the integrated version.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-01 16:33:34 +01:00
Donald Sharp
d9d759ff7e
Merge pull request #3396 from opensourcerouting/feature/topotests-docker
feature: docker image for topotests
2018-11-30 15:39:50 -05:00
Russ White
9f7b49e105
Merge pull request #3342 from opensourcerouting/nb-operational-data
Northbound: improved support for YANG-modeled operational data
2018-11-29 15:19:38 -05:00
Christian Franke
5f1ac6d669 topotests: Only set -t when input is a terminal
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
ff37641ba2 topotests: Adapt docker changes for integrated tests
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
f509ad9785 docker/frr-topotests: Fix missing $ in if check
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
937e5dab6a docker/compile_frr: Don't build with disable shared
With libyang, we need to build the frr_user_types.so libyang
plugin for FRR to work.

This means we cannot build with disable shared.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
9b5470a843 docker: Improve README and frr-topotests usage
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
7996f1975d Dockerfile: Install libyang
Recent versions of FRR require libyang to build. So install it from
the FRR CI servers.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
6926d304a8 Docker: Fail if compilation is unsucessful
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
877d4e3642 Docker: Document additional environment variables
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
4242d6e2ae Docker: Use pytest as default command
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
31eae3e3b0 Docker: move openvswitch setup to separate script
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
3311145d70 Docker: Allow executing topotests while in subdir of FRR repo
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
1ab13617bf Docker: really cleanup when TOPOTEST_CLEAN is specified
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
f1c0836f67 Docker: Update buildscript not to delete old images
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
d9e887de2a Docker: Call the run script frr-topotests.sh
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
8e6f0d80f6 Dockerfile: Use iputils-ping instead of inetutils-ping, install strace
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
7b75f8cce3 Docker: Update buildscripts to be more efficient
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
ca64604f47 docker: Install topotests into image
Also: Change directory layout so we can do an indempotent sync from host
later.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
04c63c05b5 docker: reindent shell scripts
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
c12ec8557e docker: Run container with its own network namespace
For normal operation, there is no need for the container to run
in the host network environment or to have access to the users
X Session.

To accomodate usecases which need this, there is now a `TOPOTEST_OPTIONS`
environment variable to provide additional options to the docker run
command.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Christian Franke
e425ee6357 Dockerfile: Move to project root and combine RUNs
According to https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run
`apt-get update` should always be combined with `apt-get install` in
the same `RUN` statement, to avoid installation of outdated packages.

Also, combine some more `RUN`s together as to avoid fewer layers.

Finally, remove some comments which are superflous. Comments shouldn't
describe what is done, especially when it's obvious. They should
explain why something is done.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Rafael Zalamena
1e9c095c6f docker: add support for running inside container
Based on the original @cfra idea of running topotest on docker.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-29 16:51:27 +01:00
Donald Sharp
096694da47 topotests: Add ospf-sr-topo1 back in
Due to weird merge issues ospf-sr-topo1 was not pulled in.
This gets this back into the tree.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com.
2018-11-27 20:22:14 -05:00
Donald Sharp
d21321142a Add a tiny breadcrumb to hopefully help end user
Add a breadcrumb for people testing to hopefully allow
them to figure out what is going wrong when they
are testing different versions of FRR using
topotests and staticd is not running because
this version of staticd needs to be cleaned up

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
b941f9587f bgp-ecmp-topo1: fix some pylint warnings
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
47bbb80ad2 bgp-ecmp-topo1: fix vrf default change
Python's `string' method 'replace' doesn't actually modify the string,
instead it returns a new string with the modified content.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Philippe Guibert
f847adaf8f bgp-ecmp-topo1: change default vrf name
By default, default vrf name is default, whereas BGP default vrf was
hardcoded to Default. Because this will be fixes, do not care about the
vrf name field and apply a regexp to move Default to default.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-11-27 20:22:14 -05:00
Christian Franke
940e6a5f9e ospf6-topo1: Don't compare link-local routes
Topotests would fail with errors like these:

    AssertionError: Linux Kernel IPv6 Routing Table verification failed for router r1:
      --- actual OSPFv3 IPv6 routing table
      +++ expected OSPFv3 IPv6 routing table
      @@ -8,6 +8,6 @@
       fc00:4:4:4::/64 via fe80::__(r3-sw5)__ dev r1-sw5 proto XXXX metric 20 pref medium
       fc00🅰️a🅰️:/64 dev r1-sw5 proto XXXX metric 256 pref medium
       fc00🅱️b🅱️:/64 via fe80::__(r3-sw5)__ dev r1-sw5 proto XXXX metric 20 pref medium
      -fe80::/64 dev lo proto XXXX metric 256 pref medium
       fe80::/64 dev r1-stubnet proto XXXX metric 256 pref medium
      -fe80::/64 dev r1-sw5 proto XXXX metric 256 pref medium
      +fe80::/64 dev r1-sw5 proto XXXX metric 256 pref medium
      +unreachable fe80::/64 dev lo proto XXXX metric 256 error -101 pref medium

Resolve this by not comparing link-local routes.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
paco
86c21ac7fc lib, lm-proxy-topo1: label manager proxy test
Label proxy manager test covering both LDP and BGP label requests.

lib/topotest.py:restartRouter() function has been fixed in order to
allow propagating options to deamons other than zebra.

Signed-off-by: F. Aragon <paco@voltanet.io>
2018-11-27 20:22:14 -05:00
Martin Winter
fa2adbc528 pick ospf6 router-id syntax based on version
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Martin Winter
6bfe4b8bfc lib: checkRouterVersion to determine version
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Donald Sharp
9ac2326ed0 Clean up deprecated usage of router-id
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
bd170de3b6 bfd-topo1: import topology picture
Import the graphviz file and the generated picture.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
14bb9445d6 bfd-topo1: add fast reconvergence test
Test that after a link goes down BGPd will be notified and recovered
quickly. Also test that BFD show command tells us that the peer went
down.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
843713317d bfd-topo1: add convergence tests
Test if BFD peers have found each other and if the BGP neighors have
connected.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
4d45d6d3b0 topogen/topotest: add support for BFDd
Allow BFDd to be configured and used.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Lou Berger
d1f4560e7d bgp_rfapi_basic_sanity_config2: allow for slow CI
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
9a75228916 bgp_rfapi_basic_sanity_config2: added rfapi test with partial table download This is identical to bgp_rfapi_basic_sanity with the exception of non-default config
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
7a9a953d7e bgp_rfapi_basic_sanity: added query only NVE
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Martin Winter
2f726781b6 lib: Add support for Ubuntu 18.04 with installed FRR package
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Lou Berger
16872f5683 bgp_rfapi_basic_sanity: added multi-path to timeout test
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
1677325096 bgp_rfapi_basic_sanity: added cost to 2nd MP route
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
4ce7be6957 bgp_rfapi_basic_sanity: added multi-path and updated responses
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
d12ac2a975 bgp_rfapi_basic_sanity: wait for clean exit
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
914d749d8a bgp_rfapi_basic_sanity: added check_timeout (uses FRR PR#2934)
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
a73fb016ff bgp_rfapi_basic_sanity: added close check
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
ccabd61819 bgp_rfapi_basic_sanity: address PR comments (copyright, switch)
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
197d4fdad4 bgp_rfapi_basic_sanity: added basic rfapi sanity topotest
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
0eff58207e lib: fix ip4_route_zebra header removal code
The `strip` function is actually a method of the String object.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Christian Franke
41077aa191 lib/ospf-topo1-vrf: don't compare headers of show ip route
Signed-off-by: Christian Franke <nobody@nowhere.ws>
2018-11-27 20:22:14 -05:00
Donald Sharp
a93eb16a51 lib: Always attempt to set mpls platform_labels
The code was not attempting to set the max platform_labels
on a per router basis, leaving us w/ situations where
mpls install would fail because platform_labels was 0.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
9aecc71d53 ospf-topo1-vrf: show errors and reduce code
Use standardized code and fix assert messages to include errors.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Quentin Young
dadd89e672 update ref file for cidr mask display
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-11-27 20:22:14 -05:00
Lou Berger
c49edeb452 bgp_l3vpn_to_bgp_vrf: allow for long adjancies, seen with l3mdev_accept=1
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
a945bf0777 bgp_l3vpn_to_bgp_vrf: ignore output of sysctl, reenables test!
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
af01532c45 lib: speedup test exit when startup fails
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
96984a17a5 ldp-vpls-topo1: remove duplicated code and sleep
Use the new standardized code for router output compare and remove a
code sleep.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Philippe Guibert
224737467e ospf-topo1-vrf: replace link_enable api with zebra topotest api
Because on some platforms like i386, 'ip netns ' commands are unstable,
then I use an other API to operate the shutdown/no shutdown operation by
using vtysh.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-11-27 20:22:14 -05:00
Philippe Guibert
f561216813 lib: add zebra api to shutdown an interface
this function operates on vtysh, and performs a shutdown on an
interface.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-11-27 20:22:14 -05:00
Philippe Guibert
918138769c ospf-topo1-vrf: replace ip_route method with ip_route_zebra
To analyse which route has been entered in the kernel, the
 zebra show ip route vrf command is used.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-11-27 20:22:14 -05:00
Philippe Guibert
b220b3c83a lib: add ip_route_zebra function
This command permits dumping zebra routes from a vrf

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-11-27 20:22:14 -05:00
Philippe Guibert
35490676eb ospf-topo1-vrf: setup with OSPF VRF
OSPF test with VRF backend NETNS

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-11-27 20:22:14 -05:00
Philippe Guibert
0ab7733f7f lib: topogen support for link_enable on other netns
In the case where vrf backend is based on NETNS, the link enable command
switches from context so as to perform the command.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
e3060696ef bgp_vrf_netns: reduce code duplication
Use new standardized functions to reduce code duplication.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
ab4d1656b5 bgp-ecmp-topo1: remove sleep and reduce code
Use new standardized code to test router output and remove the
convergence sleep.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
38b291bca0 ospf-topo1: use new output compare functions
Remove duplicated code and use the new output compare code from
lib.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
9e2201b8aa isis-topo1: use run_and_expect
Use `run_and_expect` instead of manually implementing this code in the
test.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
5cffda1882 lib: implement standardized compare functions
In a effort to migrate more tests to use `run_and_expect` instead of
`sleep`s, this commit imports some common functions used to compare
router output. Retrying output comparison for N times, instead of
relying on arbitrary code `sleep`s, should help CI system tests fail
less and possibly run for less time.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
9683a1bb50 lib: improve normalize_text with another case
When normalizing a text also remove trailing whitespace since external
tools might add them. This commit fixes a test failure in ospf_topo1 on
Ubuntu 18.04.1.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
fd8582906d lib: show run_and_expect spent time
Standardize run_and_expect to show start and end time along with maximum
estimated wait time.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Lou Berger
064c807f63 bgp_l3vpn_to_bgp_direct: imports and more debug Allow for different timings on, and number of, import processing Collect more info for debugging
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
f8d5215d82 bgp_l3vpn_to_bgp_vrf: use l3mdev_accept workaround for known kernel bug
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
62accdecd8 isis-topo1: fix IPv6 changes and remove metric
IPv6 metric for FRR version <3.X is different than for newer versions,
so to avoid extra code logic lets just ignore these checks.

The IPv6 changes weren't detected earlier because of the json_cmp list
fix.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
ae6be66b8c isis-topo1: remove pseudo_TE-IS entries from check
The pseudo_TE-IS entries vary and depend on the way the topology
converges, so lets not rely on that.

The IS-IS routers in the middle TE-IS entries vary the parent
interface, so we also removed that entry to avoid json_cmp comparison
failures.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
16b3114108 isis-topo1: improve topology parser
Don't match header otherwise it will create an even bigger JSON output
than we need.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
3e379f6e49 topotests: fix json_cmp wrong list handling
Don't quit on the first match. While here add some more `json_cmp` tests
to make sure this doesn't happen again.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
a82e5f9a7f lib: improve json_cmp
Allow json_cmp to compare JSON values which begin with a list instead of
a dictionary.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Rafael Zalamena
5a2f1e6fbe *: ignore .pytest_cache directories
These folders are being generated by recent py.test versions and should
be ignored.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Christian Franke
f2d6ce41ca lib: check presence of mpls modules, not exitcode of modprobe
Signed-off-by: Christian Franke <nobody@nowhere.ws>
2018-11-27 20:22:14 -05:00
Mark Stapp
cf38bed97a isis-topo1: make isis topology match .dot file
The v6 isis topology didn't really match the illustration. Fix
the configs and the test expectations so that all the parts
agree.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2018-11-27 20:22:14 -05:00
Philippe Guibert
4b1f7a62db bgp_vrf_netns: swap the order of netns destruction
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-11-27 20:22:14 -05:00
Martin Winter
2c805e6cf6 lib: Fix staticd extension
Do not provide a staticd.conf to force staticd to read it's config
from zebra.conf

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Martin Winter
a2a1134c77 lib: Add support for staticd
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-11-27 20:22:14 -05:00
Lou Berger
160ce66a28 bgp_l3vpn_to_bgp_vrf: allow some time for updates to propogate
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
ffd3f54493 lib: more logging to aid in failure debugging
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
dce382d4a9 lib: don't report cores on exit as asserts in 5.0
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
436aa319bc lib: don't assert on shutdown errors in rel < 5.0
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00
Lou Berger
fb80b81b26 lib: add and use Router.checkRouterVersion (based on bdpd version)
Signed-off-by: Lou Berger <lberger@labn.net>
2018-11-27 20:22:14 -05:00