Commit Graph

21342 Commits

Author SHA1 Message Date
Kaushik
7df1f3623e ospf6d : Socket change for ospf6d vrf support.
1. The socket() call is changed to vrf_socket().
2. The ospf6 instance creation api added.
3. The global socket fd is replaced with ospf6->fd.
4. All dependency of the global socket is resolved.
5. Added the ospf6 receive timer in the global structure.
6. Performed the thread off on receive timer when we do "no router ospf6".

Co-authored-by: harios <hari@niralnetworks.com>
Signed-off-by: Kaushik <kaushik@niralnetworks.com>
2020-10-06 21:23:54 -07:00
Wesley Coakley
57a75dc6d5 vtysh: ignore generated file vtysh_daemons.h
Signed-off-by: Wesley Coakley <wcoakley@nvidia.com>
2020-10-06 17:32:09 -04:00
Wesley Coakley
662a1b0500 vtysh: Fix vtysh node build warn errors
Two vtysh nodes were misplaced during a recent refactor and were not
included under appropriate #ifdef directives and consequently triggered
build warnings (errors)

Signed-off-by: Wesley Coakley <wcoakley@nvidia.com>
2020-10-06 17:32:07 -04:00
Russ White
6d3ce189ad
Merge pull request #7248 from donaldsharp/revert_7113
Revert "bgpd: allow bestpath to handle mutliple locally-originated pa…
2020-10-06 10:51:22 -04:00
Donald Sharp
1664b41119 Revert "bgpd: allow bestpath to handle mutliple locally-originated paths"
This reverts commit 82a843fa3d.
2020-10-06 10:43:09 -04:00
Olivier Dugeon
24d7ccfabd
Merge pull request #7202 from gromit1811/proposed_fix_7030
ospf6d: Fix flooding of old copies of self-originated LSAs
2020-10-06 16:42:41 +02:00
Russ White
b0508095f1
Merge pull request #7113 from donaldsharp/bgp_bestpath_origin
bgpd: allow bestpath to handle mutliple locally-originated paths
2020-10-06 10:41:31 -04:00
Lou Berger
a69e5dd7ef tests: bgp_l3vpn_to_bgp_vrf - verify details of exported/imported routes
Signed-off-by: Lou Berger <lberger@labn.net>
2020-10-06 10:34:32 -04:00
Lou Berger
7946452bfc tests: bgp_l3vpn_to_bgp_vrf - change 1 route to have equal metrics
Signed-off-by: Lou Berger <lberger@labn.net>
2020-10-06 10:34:32 -04:00
Lou Berger
5df69602e7 tests: bgp_l3vpn_to_bgp_vrf - add bestpath checks
Signed-off-by: Lou Berger <lberger@labn.net>
2020-10-06 10:34:32 -04:00
Lou Berger
b4bfe0aa47 tests: lib/bgprib.py - add bestpath checks and logging to lu log file
Signed-off-by: Lou Berger <lberger@labn.net>
2020-10-06 10:34:32 -04:00
Lou Berger
801f483b4e tests: bgp_l3vpn_to_bgp_vrf - add redundant ce routes
Signed-off-by: Lou Berger <lberger@labn.net>
2020-10-06 10:34:32 -04:00
Donald Sharp
82a843fa3d bgpd: allow bestpath to handle mutliple locally-originated paths
Current code in bgp bestpath selection would accept the newest
locally originated path as the best path.  Making the selection
non-deterministic.  Modify the code to always come to the
same bestpath conclusion when you have multiple locally originated
paths in bestpath selection.

Before:

eva# conf
eva(config)# router bgp 323
eva(config-router)# address-family ipv4 uni
eva(config-router-af)# redistribute connected
eva(config-router-af)# network 192.168.161.0/24
eva(config-router-af)# do show bgp ipv4 uni 192.168.161.0
BGP routing table entry for 192.168.161.0/24
Paths: (2 available, best #1, table default)
  Not advertised to any peer
  Local
    0.0.0.0(eva) from 0.0.0.0 (192.168.161.245)
      Origin IGP, metric 0, weight 32768, valid, sourced, local, bestpath-from-AS Local, best (Origin)
      Last update: Wed Sep 16 15:03:03 2020
  Local
    0.0.0.0(eva) from 0.0.0.0 (192.168.161.245)
      Origin incomplete, metric 0, weight 32768, valid, sourced
      Last update: Wed Sep 16 15:02:52 2020
eva(config-router-af)# no redistribute connected
eva(config-router-af)# do show bgp ipv4 uni 192.168.161.0
BGP routing table entry for 192.168.161.0/24
Paths: (1 available, best #1, table default)
  Not advertised to any peer
  Local
    0.0.0.0(eva) from 0.0.0.0 (192.168.161.245)
      Origin IGP, metric 0, weight 32768, valid, sourced, local, bestpath-from-AS Local, best (First path received)
      Last update: Wed Sep 16 15:03:03 2020
eva(config-router-af)#  redistribute connected
eva(config-router-af)# do show bgp ipv4 uni 192.168.161.0
BGP routing table entry for 192.168.161.0/24
Paths: (2 available, best #2, table default)
  Not advertised to any peer
  Local
    0.0.0.0(eva) from 0.0.0.0 (192.168.161.245)
      Origin incomplete, metric 0, weight 32768, valid, sourced
      Last update: Wed Sep 16 15:03:32 2020
  Local
    0.0.0.0(eva) from 0.0.0.0 (192.168.161.245)
      Origin IGP, metric 0, weight 32768, valid, sourced, local, bestpath-from-AS Local, best (Origin)
      Last update: Wed Sep 16 15:03:03 2020
eva(config-router-af)#

Notice the route choosen depends on order received

Fixed behavior:

eva# conf
eva(config)# router bgp 323
eva(config-router)# address-family ipv4 uni
eva(config-router-af)# redistribute connected
eva(config-router-af)# network 192.168.161.0/24
eva(config-router-af)# do show bgp ipv4 uni 192.168.161.0
BGP routing table entry for 192.168.161.0/24
Paths: (2 available, best #1, table default)
  Not advertised to any peer
  Local
    0.0.0.0(eva) from 0.0.0.0 (192.168.161.245)
      Origin IGP, metric 0, weight 32768, valid, sourced, local, bestpath-from-AS Local, best (Origin)
      Last update: Wed Sep 16 15:03:03 2020
  Local
    0.0.0.0(eva) from 0.0.0.0 (192.168.161.245)
      Origin incomplete, metric 0, weight 32768, valid, sourced
      Last update: Wed Sep 16 15:02:52 2020
eva(config-router-af)# no redistribute connected
eva(config-router-af)# do show bgp ipv4 uni 192.168.161.0
BGP routing table entry for 192.168.161.0/24
Paths: (1 available, best #1, table default)
  Not advertised to any peer
  Local
    0.0.0.0(eva) from 0.0.0.0 (192.168.161.245)
      Origin IGP, metric 0, weight 32768, valid, sourced, local, bestpath-from-AS Local, best (First path received)
      Last update: Wed Sep 16 15:03:03 2020
eva(config-router-af)#  redistribute connected
eva(config-router-af)# do show bgp ipv4 uni 192.168.161.0
BGP routing table entry for 192.168.161.0/24
Paths: (2 available, best #2, table default)
  Not advertised to any peer
  Local
    0.0.0.0(eva) from 0.0.0.0 (192.168.161.245)
      Origin incomplete, metric 0, weight 32768, valid, sourced
      Last update: Wed Sep 16 15:03:32 2020
  Local
    0.0.0.0(eva) from 0.0.0.0 (192.168.161.245)
      Origin IGP, metric 0, weight 32768, valid, sourced, local, bestpath-from-AS Local, best (Origin)
      Last update: Wed Sep 16 15:03:03 2020
eva(config-router-af)#

Ticket: CM-31490
Found-by: Trey Aspelund <taspelund@nvidia.com>
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-10-06 10:34:32 -04:00
Russ White
a870c297d9
Merge pull request #6725 from donaldsharp/6712
PIM MSDP cleanup code and commits a bit
2020-10-06 10:26:34 -04:00
Mark Stapp
5810419aa4
Merge pull request #7238 from sworleys/Nexthop-Same-First-Remove
lib: remove nexthop_same_firsthop() api
2020-10-06 08:33:35 -04:00
Mark Stapp
628995a30c
Merge pull request #7214 from donaldsharp/more_vrf_usefulness
zebra: cleanup zebra_rnh.c debugs
2020-10-06 08:29:45 -04:00
Mark Stapp
082de39e71 bgpd: fix SA warnings in bgp northbound
Fix a couple of new SA warnings in the new bgp northbound.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-10-06 08:18:59 -04:00
Adriano Marto Reis
1ee47ee78a doc: MSDP SA forwarding
Updating the documentation.

Signed-off-by: Adriano Reis <areis@barrukka.local>
2020-10-06 08:11:24 -04:00
Adriano Marto Reis
9fbd9fc48f pimd: MSDP SA forwarding
* If the MSDP peer receives the SA from a non-RPF peer towards the
originating RP, it will drop the message.
* SA messages are forwarded away from the RP address only.
* SA messages are not forwarded within the mesh group.
* Preventing the MSDP connection from being dropped due to RPF check
failure (RFC3618, section 13 "MSDP Error Handling")

Signed-off-by: Adriano Marto Reis <adrianomarto@gmail.com>
Signed-off-by: Adriano Reis <areis@barrukka.local>
2020-10-06 08:11:24 -04:00
Rafael Zalamena
d3c9581960 topotests: test aggregate-address matching-MED-only
Add a new topology test for `aggregate-address` to test
`matching-MED-only` and its combination with `summary-only`.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-10-06 06:42:17 -03:00
Rafael Zalamena
01338ba14e doc: new aggregate address option
Document the newly implemented aggregate address configuration option.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-10-06 06:42:17 -03:00
Rafael Zalamena
6aabb15dd7 bgpd: aggregate address matching-MED-only
Add code to handle MED matching:

- When MED matches act as normal.

- When MED doesn't match do the following:

  * Uninstall the aggregate route
  * Unsuppress routes (if using summary-only)

- When MED didn't match, but now matches:

  * Install the aggregate route
  * Suppress all routes (if using summary-only)

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-10-06 06:42:12 -03:00
Chirag Shah
9bee02322f zebra: display rpc error msg to vtysh
Zebra's clear duplicate detect command is rpc converted.
There is condition where cli fails with human readable message.
Using northboun's errmsg buffer to display error message to
user.

Testing:

bharat# clear evpn dup-addr vni 1002 ip 2011:11::11
Error type: generic error
Error description: Requested IP's associated MAC aa:aa:aa:aa:aa:aa is still in duplicate state

bharat# clear evpn dup-addr vni 1002 ip 11.11.11.11
Error type: generic error
Error description: Requested IP's associated MAC aa:aa:aa:aa:aa:aa is still in duplicate state

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-05 13:57:54 -07:00
Chirag Shah
f63f5f1947 *: add errmsg to nb rpc
Display human readable error message in northbound rpc
transaction failure. In case of vtysh nb client, the error
message will be displayed to user.

Testing:

bharat# clear evpn dup-addr vni 1002 ip 11.11.11.11
Error type: generic error
Error description: Requested IP's associated MAC aa:aa:aa:aa:aa:aa is still
in duplicate state

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-05 13:15:59 -07:00
Santosh P K
002bac8b5b
Merge pull request #6904 from chiragshah6/yang_nb6
lib, bgpd: Convert global configurations to transactional cli
2020-10-05 21:53:39 +05:30
Renato Westphal
a192cf4811
Merge pull request #7124 from volta-networks/fix_ldp_sync_isis_nb
isisd: fix coverity errors in isis ldp-sync commands
2020-10-05 13:04:15 -03:00
Mark Stapp
10da81824a
Merge pull request #7219 from donaldsharp/rib_fixes
Rib fixes
2020-10-05 09:11:50 -04:00
Donald Sharp
b86d6ac699
Merge pull request #7242 from rsmarples/SO_RERROR
BSD: Detect route(4) overflows
2020-10-05 06:35:38 -04:00
Roy Marples
355c74b7e9 BSD: Add whitespace between declaration and code
Signed-off-by: Roy Marples <roy@marples.name>
2020-10-05 08:10:42 +01:00
Rafael Zalamena
554b3b1021 bgpd: simplify aggregate address commands
Use `DEFPY` instead of `DEFUN` to remove duplicated code.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-10-04 21:34:36 -03:00
Donald Sharp
31e7662dbc
Merge pull request #7237 from opensourcerouting/topoextcircid
tests: Skip comparing neighbor-extended-circuit-id in yang output.
2020-10-04 19:16:06 -04:00
Roy Marples
68cd699df5 BSD: Detect route(4) overflows
NetBSD and DragonFlyBSD support reporting of route(4) overflows
by setting the socket option SO_RERROR.

This is handled the same as on Linux by exiting with a -1 error code.

Signed-off-by: Roy Marples <roy@marples.name>
2020-10-04 20:32:26 +01:00
Chirag Shah
4b63e358bc bgpd: no router bgp check candidate config
For `no router bgp` without ASN check candidate
config for default bgp instance presence to avoid
failure from checking backend db where bgp instance
may not be created.
This situation can be seen in transactional cli mode
with following config.

bharat(config)# router bgp 101
bharat(config-router)# exit
bharat(config)# no router bgp
% No BGP process is configured
bharat(config)# no router bgp
% No BGP process is configured
bharat(config)#

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:38 -07:00
Chirag Shah
5e42cb2fb0 bgpd: move router bgp nb callback
move `router bgp` nb callback at `bgp` node level
to have access to bgp context at neighbor and peer-group
level and align create/destroy callbacks call during
no router bgp.

Earlier `no router bgp` is performed first global destroy
callback is called which essentially removes `bgp context`
then it calls to remove (parallel nodes) neighbor and peer-group
which does not have access to bgp context.
Moving router bgp at bgp solves this destroy callback ordering issue.

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:38 -07:00
Chirag Shah
87ce25646b bgpd: correct bgp global context
Move bgp (router bgp) context at "bgp" node
level from (instead of) "global" level.
This change allows access of bgp context at neighbor
and peer-group node levels.

    +--rw bgp   <--- (store `struct bgp` at bgp node xpath)
       +--rw global!
       |    ...
       |  +--rw afi-safis
       |    ...
       +--rw neighbors
       |  +--rw neighbor* [remote-address]
       |    ...
       |  |  +--rw afi-safis
       |    ...
       |  +--rw unnumbered-neighbor* [interface]
       |    ...
       +--rw peer-groups
          +--rw peer-group* [peer-group-name]
            ...

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:38 -07:00
Chirag Shah
906ebeec98 bgpd: shorten northbound callback names
Omit routing protocol augment name from callbacks name.

(Omitted: routing_control_plane_protocols_control_plane_protocol_)

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:38 -07:00
Chirag Shah
15cbc38206 tests: add bgp yang module registery to attr test
Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:37 -07:00
Chirag Shah
64fb3f8666 tests/bgpd: initialized candidate_config to vtysh
In test_peer_attr.c test is initializd with vty handler
but candiate_config is not set.

northbound converted bgp cli expects to derefence the
candidate_config field which leads to crash.

(gdb) p *test->vty->candidate_config
$9 = {dnode = 0x0, version = 0}

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:37 -07:00
Chirag Shah
374069da83 bgpd: register nb routing hook
On bgpd bootstrap register routing hook which ensures
only single bgp named instance created per vrf routing
hierarchy.

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:37 -07:00
Chirag Shah
ff8a8a7ac1 bgpd: convert global config to transactional cli
Convert global congigurations clis to transactional
clis using northbound plugin callbacks.

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:37 -07:00
Chirag Shah
e4a464160d bgpd: register northbound callbacks to bootstrap
Register bgpd northbound callbacks to bgp daemon
bootstrap.

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:37 -07:00
Chirag Shah
a363b4b49b lib: increase the size of northbound max module
Increase the size of frr_yang_module_info
macro to accomodate bgp module list.

root@bharat:~/stash/frr# egrep "xpath" bgpd/bgp_nb.c | wc -l
1150

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:37 -07:00
Chirag Shah
a1950c80a5 bgpd: bgp northbound callbacks prototypes
This commit contains splitting of auto-generated bgp northbound callbacks
into separate files.
Include the files into bgp makefile.

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:37 -07:00
Chirag Shah
bc8c00cca1 *: add bgp yang files into makefiles
Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-10-03 11:25:37 -07:00
Donald Sharp
4b40d5ffb0
Merge pull request #6882 from vishaldhingra/static
staticd : Added the warning log for route when VRF is not ready.
2020-10-02 23:52:53 -04:00
Donald Sharp
25a7a8e5e5
Merge pull request #7225 from idryzhov/vtysh-fix-domainname
vtysh: fix multiple "domainname" commands in running config
2020-10-02 18:15:26 -04:00
Donald Sharp
7302f333e5
Merge pull request #7228 from idryzhov/vtysh-dynamic-daemons
vtysh: dynamically generate the list of daemons for commands
2020-10-02 18:07:31 -04:00
Donald Sharp
c0c1606d77
Merge pull request #7236 from idryzhov/fix-docstrings
isisd, ospfd: fix missing/excessive docstrings
2020-10-02 17:59:52 -04:00
Stephen Worley
7403e15561 lib: remove nexthop_same_firsthop() api
Remove the nexthop_same_firsthop() api and just call nexthop_same().
Not entirely sure why we were using this function in the first place,
but now we are just marking dupes with it so lets just call a
common function and avoid issues.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2020-10-02 17:25:36 -04:00
Martin Winter
ecc11c93b7
tests: Skip comparing neighbor-extended-circuit-id in yang output. They are not consistent
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2020-10-02 22:07:25 +02:00