Commit Graph

26014 Commits

Author SHA1 Message Date
Igor Ryzhov
0df2e1888b lib: make if_lookup_by_name_all_vrf internal
This function doesn't work correctly with netns VRF backend as the same
ifname may be used in multiple netns simultaneously. So let's hide it
from the public API to reduce temptation to use it instead of writing
the correct code.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-15 03:44:42 +03:00
Igor Ryzhov
f13fdc673c zebra: fix ptm message processing
When PTM sends a "cbl status" message it specifies the interface name
but not the VRF name. It is fine for VRF-lite, but doesn't work for
netns because it's possible to have multiple interfaces with the same
name. Be more restrictive in this case and return an error instead of
randomly using of the interface with the specified name.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-15 03:44:42 +03:00
Igor Ryzhov
4030e1867b ospfd: don't use if_lookup_by_name_all_vrf
if_lookup_by_name_all_vrf doesn't work correctly with netns VRF backend
as the same index may be used in multiple netns simultaneously.

Use the appropriate VRF when looking for the interface.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-15 03:44:42 +03:00
Igor Ryzhov
198ef12aef ospf6d: don't use if_lookup_by_name_all_vrf
if_lookup_by_name_all_vrf doesn't work correctly with netns VRF backend
as the same index may be used in multiple netns simultaneously.

Use the appropriate VRF when looking for the interface.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-15 03:44:42 +03:00
Igor Ryzhov
31eab818f6 zebra: fix "show interface IFNAME" for netns
With netns VRF backend, we may have multiple interfaces with the same
name. Currently, the function output is not deterministic in this case,
it returns the first interface that it finds in the list. Be more
explicit and tell the user that we need the VRF name.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-15 03:44:42 +03:00
Igor Ryzhov
4ff97453d0 pbrd: fix "set nexthop" for netns
With netns VRF backend, we may have multiple interfaces with the same
name. Currently, the function is not deterministic in this case as it
uses the first interface that it finds in the list. Be more restrictive
and ask the user to provide the VRF name.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-15 03:44:34 +03:00
Igor Ryzhov
5d8694aee7 lib: remove wrong setting of interface configured flag
The fact that the interface name is used in some nexthop config doesn't
mean that the interface is configured.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-15 03:42:52 +03:00
Igor Ryzhov
de4f1a66fb bgpd: don't use if_lookup_by_name_all_vrf
if_lookup_by_name_all_vrf doesn't work correctly with netns VRF backend
as the same index may be used in multiple netns simultaneously.

Use the appropriate VRF when looking for the interface.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-15 03:42:52 +03:00
Igor Ryzhov
33fc8bc7f3 bfdd: cleanup bfd_session_enable
Well, there are some weird and duplicated checks there...

All we need is two simple checks:
- VRF existence. We must have it to enable the session.
- Interface existence. If it's configured for the session, we have to
  bind the session to the interface.

This commit implements these checks and removes unnecessary duplication.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-15 03:42:52 +03:00
Donatas Abraitis
7b3e821076
Merge pull request #9817 from donaldsharp/link_type_ordering
lib: Add missing enum values in switch statement for if_link_type_str
2021-10-14 16:25:02 +03:00
Donatas Abraitis
9139cc723d
Merge pull request #9825 from donaldsharp/one_sleep_twice_shy
tests: BFD timing tests under system load need more leeway
2021-10-14 15:31:23 +03:00
Donald Sharp
c6c39c05b5
Merge pull request #9684 from opensourcerouting/printfrr-false-positive
*: `frr-format` with unmodified GCC
2021-10-14 07:34:20 -04:00
Donald Sharp
2c982bd025
Merge pull request #9759 from opensourcerouting/workflow-dev-tag
doc/developer: document dev tag on master
2021-10-14 07:33:09 -04:00
Renato Westphal
512901ae53
Merge pull request #9822 from donaldsharp/ospf_testing
Ospf testing
2021-10-13 23:38:44 -03:00
David Lamparter
f29e487fd5
Merge pull request #9812 from donaldsharp/python_3_clippy_build 2021-10-14 02:40:38 +02:00
Igor Ryzhov
d555177021
Merge pull request #9751 from ewlumpkin/comment_spelling_fixes
lib: fix spelling nits in more lib files' comments
2021-10-14 02:05:44 +03:00
Igor Ryzhov
1aa12de695
Merge pull request #9761 from mjstapp/fix_topo_debug_cli
tests: remove deprecated debug cli references
2021-10-14 01:48:41 +03:00
Igor Ryzhov
e0a63f1703
Merge pull request #9796 from mjstapp/fix_topo_isis_vrf_cmds
tests: in isis_topo1_vrf, only configure valid interfaces
2021-10-14 01:44:03 +03:00
Igor Ryzhov
bb3cd4189a
Merge pull request #9795 from opensourcerouting/ospf_get_name
ospfd: use ospf_get_name() wherever possible
2021-10-14 01:42:29 +03:00
David Lamparter
c5726f0314
Merge pull request #9676 from donaldsharp/import_register 2021-10-13 22:28:03 +02:00
Mark Stapp
ea91a5101a
Merge pull request #9768 from ton31337/feature/catch_double_pointer_thread
tools: Catch double pointer of struct thread towards thread_add_*
2021-10-13 16:19:33 -04:00
Donald Sharp
f786c3ee29 tests: BFD timing tests under system load need more leeway
We have this pattern in this test:

    # Let's kill the interface on rt2 and see what happens with the RIB and BFD on rt1
    tgen.gears["rt2"].link_enable("eth-rt1", enabled=False)

    # By default BFD provides a recovery time of 900ms plus jitter, so let's wait
    # initial 2 seconds to let the CI not suffer.
    topotest.sleep(2, 'Wait for BFD down notification')

    router_compare_json_output(
        "rt1", "show ip route ospf json", "step3/show_ip_route_rt2_down.ref", 1, 0
    )

Under a heavy CI load, interface down events and then reacting to them may not actually
happen within 2 seconds.  Allow some more grace time in the test to ensure that we
react to it in an appropriate manner.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-13 14:12:51 -04:00
Russ White
c9adeefcfa
Merge pull request #9819 from donaldsharp/deprecation_python
tests: Fix `Invalid escape sequence` warnings in test runs
2021-10-13 13:55:06 -04:00
Donald Sharp
a22d51e21e tests: Convert over to using converged to test for ospf being converged
OSPF when it is deciding on whom it should elect for DR and backup
has a process that prioritizes network stabilty over the exact
same results of who is the DR / Backups.

Essentially if we have r1 ----- r2

Let's say r1 has a higher priority, but r2 comes up first, starts
sending hello packets and then decides that it is the DR.  At some
point in time in the future, r1 comes up and then connects to r2
at that point it sees that r2 has elected itself DR and it keeps
it that way.

This is by design of the system.  With our tight ospf timers as
well as high load being experienced on our test systems.  There
exists a bunch of ospf tests that we cannot guarantee that a
consistent DR will be elected for the test.  As such let's not
even pretend that we care a bunch and just look for `Full`.
If we care about `ordering` we need to spend more time getting
the tests to actually start routers, ensure that htey are up and
running in the right order so that priority can take place.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-13 12:46:22 -04:00
Donald Sharp
3766c36a20 ospfd: Add converged and role json output for neighbor command
The `show ip ospf neighbor json` command was displaying
state:`Full\/DR`

Where state was both the role and whether or not the neigbhor
was converged.  While from a OSPF perspective this is the state.
This state is a combination of two things.

This creates a problem in testing because we have no guarantee
that a particular ospf router will actually have a particular role
given how loaded our topotest systems are.  So add a bit of json
output to display both the converged status as well as the
role this router is playing on this neighbor/interface.

The above becomes:
state:`Full\/DR`
converged:`Full`
role:`DR`

Tests can now be modified to look for `Full` and allow it to
continue.  Most of the tests do not actually care if this
router is the DR or Backup.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-13 12:40:35 -04:00
Donald Sharp
d759866d5b
Merge pull request #9806 from jonglezb/master
doc: Add missing static route options and clarify usage
2021-10-13 10:16:45 -04:00
Donald Sharp
48f05b233f tests: Fix Invalid escape sequence warnings in test runs
Test runs are creating these warnings:
bgp_l3vpn_to_bgp_vrf/test_bgp_l3vpn_to_bgp_vrf.py::test_check_linux_mpls
  <string>:7: DeprecationWarning: invalid escape sequence \d

bgp_l3vpn_to_bgp_vrf/test_bgp_l3vpn_to_bgp_vrf.py::test_check_linux_mpls
  <string>:19: DeprecationWarning: invalid escape sequence \d

bgp_l3vpn_to_bgp_vrf/test_bgp_l3vpn_to_bgp_vrf.py::test_check_scale_up
  <string>:24: DeprecationWarning: invalid escape sequence \d

bgp_l3vpn_to_bgp_vrf/test_bgp_l3vpn_to_bgp_vrf.py::test_check_scale_up
  <string>:191: DeprecationWarning: invalid escape sequence \d

-- Docs: https://docs.pytest.org/en/stable/warnings.html

Find and destroy these warnings

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-13 09:03:27 -04:00
Donald Sharp
ba62a5c522 lib: Add missing enum values in switch statement for if_link_type_str
The switch statement over `enum zebra_link_type` had a default
and FRR was missing a few of the pre-defined types we cared about.
Remove the default statement and add the missing values.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-13 07:58:37 -04:00
Donatas Abraitis
314479e114
Merge pull request #9715 from idryzhov/cleanup-number-named-acl
*: cleanup number-named access-lists in CLI
2021-10-13 10:00:43 +03:00
Donald Sharp
7f39a26c77 *: If building clippy we must have python3
When building clippy we must have python 3.  Let's
ensure that we test for it and stop the auto-make
if it is not installed on the system.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-12 15:41:07 -04:00
Jafar Al-Gharaibeh
38e7e55306
Merge pull request #9655 from yyuanam/first_commit
Zebra: Ignore the failure of startup intf lookup.
2021-10-12 11:15:39 -05:00
Donald Sharp
ba3df8987f
Merge pull request #9686 from idryzhov/fix-nda-lladdr
zebra: fix buffer overflow
2021-10-12 12:04:00 -04:00
Russ White
0f96b7e69b
Merge pull request #9763 from ton31337/fix/more_thread_null
More struct thread null
2021-10-12 11:49:46 -04:00
Baptiste Jonglez
beaa072724 doc: Add missing static route options and clarify usage
* Add missing "blackhole" and "reject" options
* Add missing GATEWAY + IFNAME usage
* Add missing "onlink" option
* Explicit all possible usage patterns of static routes
* Clarify description of each option

Signed-off-by: Baptiste Jonglez <baptiste.jonglez@inria.fr>
2021-10-12 17:28:11 +02:00
Russ White
effd4c7bdd
Merge pull request #9779 from donaldsharp/gr_repeated
Some GR fixes
2021-10-12 11:00:44 -04:00
Russ White
c5708d0b98
Merge pull request #9781 from opensourcerouting/ospfd-gr-dr-fix
ospfd: preserve DR status across graceful restarts
2021-10-12 10:58:39 -04:00
Mark Stapp
4008633d7b tests: in isis_topo1_vrf, only configure valid interfaces
Fix a loop in the setup phase of isis_topo1_vrf: only configure
interfaces that each router actually has.

Signed-off-by: Mark Stapp <mstapp@nvidia.com>
2021-10-11 17:25:46 -04:00
Renato Westphal
d7374bd3b1
Merge pull request #9788 from idryzhov/ospf6-clear-interface-vrf
ospf6d: add missing vrf parameter to "clear ipv6 ospf6 interface"
2021-10-11 12:19:09 -03:00
Mark Stapp
e2c3eaddd5
Merge pull request #9789 from idryzhov/if-ll-type
lib: set type for newly created interfaces
2021-10-11 08:57:26 -04:00
Donatas Abraitis
b6641f01f4
Merge pull request #9780 from idryzhov/bgp-local-pointer
bgpd: don't return pointer to a local variable
2021-10-11 12:13:09 +03:00
Renato Westphal
44076f4dc7 ospfd: use ospf_get_name() wherever possible
Small cleanup to reduce code duplication.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2021-10-09 20:36:47 -03:00
Igor Ryzhov
ad7e12b0d9 ospf6d: add missing vrf parameter to "clear ipv6 ospf6 interface"
Currently, it's not possible to run this command in any VRF other than default.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-09 02:54:10 +03:00
Igor Ryzhov
8975bbbdd6 lib: set type for newly created interfaces
Currently, the ll_type is set only in `netlink_interface` which is
executed only during startup. If the interface is created when the FRR
is already running, the type is not stored.

Fixes #1164.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-09 00:23:39 +03:00
Russ White
495047b526
Merge pull request #9760 from mobash-rasool/ospfv2-bug-fixes-02
ospfd: ospf nbr in full although mismatch in hello packet contents
2021-10-08 13:55:28 -04:00
Russ White
8274736a0d
Merge pull request #9764 from idryzhov/thread-add-local
*: don't pass pointers to a local variables to thread_add_*
2021-10-08 13:54:23 -04:00
Russ White
99497bc4ee
Merge pull request #9471 from pguibert6WIND/table_manager_alloc2
zebra: extend table manager per vrf, add vty configuration
2021-10-08 13:49:54 -04:00
Renato Westphal
10396dc55a tests: check for received Grace-LSAs on the OSPF GR topotests
Ensure GR helpers have received a Grace-LSA before killing the
ospfd/ospf6d process that is undergoing a graceful restart.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2021-10-08 14:38:27 -03:00
Donald Sharp
144908dc52
Merge pull request #9774 from idryzhov/bgp-show-crash
bgpd: fix crash when using "show bgp vrf all"
2021-10-08 12:38:08 -04:00
Igor Ryzhov
7e86999140 *: cleanup number-named access-lists in CLI
There's no more difference between number-named and word-named access-lists.
This commit removes separate arguments for number-named ACLs from CLI.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-08 19:25:41 +03:00
Donatas Abraitis
126f9ac563
Merge pull request #9693 from donaldsharp/bgp_address_removal
bgpd: When removing v6 address being used as a nexthop ensure peer is…
2021-10-08 17:41:59 +03:00