Commit Graph

34312 Commits

Author SHA1 Message Date
Donatas Abraitis
02a5da440b bgpd: Send notification if AS4 capability failed to parse (malformed)
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-16 15:29:32 +02:00
Donatas Abraitis
722195d4ec bgpd: Set role capability received flag only if parsed correctly
If we receive a malformed packet, we might end-up with a bad state.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-16 14:37:51 +02:00
Donatas Abraitis
0c74220c6e bgpd: Set hostname capability received flag only if parsed correctly
If we receive a malformed packet, we might end-up with a bad state.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-16 14:37:16 +02:00
Donatas Abraitis
9b178d246e bgpd: Set ADD-PATH capability received flag only if parsed correctly
If we receive a malformed packet, we might end-up with a bad state.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-16 14:36:20 +02:00
Donatas Abraitis
b571176aea bgpd: Set AS4 capability received flag only if parsed correctly
If we receive a malformed packet, we might end-up with a bad state.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-16 14:35:10 +02:00
Donatas Abraitis
49cacc3184
Merge pull request #15150 from LabNConsulting/chopps/config-file-integrated
doc: update config file doc for integrated requirement
2024-01-15 08:43:44 +02:00
Christian Hopps
d9d5f79610
Merge pull request #15151 from idryzhov/mgmtd-vrf
mgmtd: remove full vrf initialization
2024-01-14 12:04:46 -05:00
Donald Sharp
ef0ae6e815
Merge pull request #15152 from LabNConsulting/chopps/doc-mgmtd-convert-update
doc: mgmtd: update mgmtd conversion doc to be current.
2024-01-13 20:46:36 -05:00
Christian Hopps
3b1998061c
doc: update config file doc for integrated requirement
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-13 21:05:36 +00:00
Donatas Abraitis
4eafe41546
Merge pull request #15149 from donaldsharp/pim_vxlan_issues_2
Some code realignment in pim
2024-01-13 21:10:07 +02:00
Donatas Abraitis
fd690b9bc4
Merge pull request #15135 from idryzhov/mgmt-unused
mgmtd: remove unused/redundant variables
2024-01-13 21:08:24 +02:00
Donatas Abraitis
bbe239036a
Merge pull request #15137 from spmzt/master
build: make buildtest.sh BSD compatible
2024-01-13 21:07:25 +02:00
Christian Hopps
a9dc7e9cc0
doc: mgmtd: update mgmtd conversion doc to be current.
Also change `be_client_xpaths` to `be_client_config_xpaths` referred in the doc
to make much clearer it's use (since there's a separate `be_client_oper_xpaths`.

Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-13 14:26:55 +00:00
Igor Ryzhov
fe55bb15be mgmtd: remove full vrf initialization
We don't really need full VRF infrastructure in mgmtd. We only need to
register vty commands.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-13 15:51:59 +02:00
Donatas Abraitis
9a042e0ba7
Merge pull request #15144 from LabNConsulting/chopps/cov-issue-2
lib: fix coverity issue
2024-01-12 23:38:23 +02:00
Donald Sharp
22427b5392 pimd: Use vrf name instead of id in some debugs
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-12 15:04:59 -05:00
Donald Sharp
413c0ebe5b pimd: Re-align pim_msg_get_jp_group_size
This function was/is heavily indented, let's refactor
this a bit.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-12 15:04:59 -05:00
Donald Sharp
8006207a92
Merge pull request #15138 from opensourcerouting/fix/drop_unused_var_bgp_damp
bgpd: Drop dampening `tmax` variable from struct
2024-01-12 14:34:46 -05:00
Donatas Abraitis
945318802e
Merge pull request #15121 from routingrocks/rajesh/bgp_peer_ttl
bgpd: Set correct TTL for the dynamic neighbor peers
2024-01-12 20:26:34 +02:00
Donatas Abraitis
ef85d4f5c3
Merge pull request #15130 from donaldsharp/pim_vxlan_issues
Pim vxlan issues
2024-01-12 20:26:10 +02:00
Christian Hopps
008ba3e3fb
lib: fix coverity issue
** CID 1575595:  Null pointer dereferences  (REVERSE_INULL)

Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-12 16:37:30 +00:00
Donatas Abraitis
d2c275a793
Merge pull request #15133 from LabNConsulting/chopps/coverity-fixes
lib: fix coverity issues
2024-01-12 16:06:26 +02:00
Igor Ryzhov
64d9f2f70d mgmtd: remove redundant next_phase variable
next_phase is always curr_phase + 1. It's not necessary to maintain it
separately. Also rename curr_phase to phase.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-12 13:29:15 +02:00
Christian Hopps
20d0d475cb
Merge pull request #14542 from idryzhov/nb-op-cb-split
Add more northbound operation types
2024-01-12 06:07:57 -05:00
Seyed Pouria Mousavizadeh Tehrani
17eb8599c5
build: make buildtest.sh BSD compatible
Signed-off-by: Seyed Pouria Mousavizadeh Tehrani <p.mousavizadeh@protonmail.com>
2024-01-12 14:08:10 +03:30
Donatas Abraitis
0f5a79af96
Merge pull request #15136 from idryzhov/ignore-cbs
lib, mgmtd: rename ignore_cbs to ignore_cfg_cbs
2024-01-12 11:56:59 +02:00
Donatas Abraitis
a3ad0d21fb bgpd: Drop dampening tmax variable from struct
Not used anywhere.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-12 11:29:43 +02:00
Christian Hopps
e1ec5b74a2
Merge pull request #15127 from opensourcerouting/fix/doc_libyang_artifacts
doc: libyang nits
2024-01-12 03:32:37 -05:00
Christian Hopps
e754620fb0
Merge pull request #15134 from idryzhov/fix-commit-clients
mgmtd: don't try to send config to disconnected clients
2024-01-12 03:32:03 -05:00
Igor Ryzhov
883f134921
Merge pull request #15131 from LabNConsulting/chopps/oper-choice-case
Chopps/oper choice case
2024-01-12 00:20:45 +02:00
Igor Ryzhov
34721972ba lib, mgmtd: rename ignore_cbs to ignore_cfg_cbs
Setting this variable to true makes NB ignore only configuration-related
callbacks. CLI-related callbacks are still loaded and executed, so
rename the variable to make it clearer.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-11 23:47:48 +02:00
Igor Ryzhov
2148f70b1a mgmtd: remove unused pending_be_proc variable
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-11 23:08:01 +02:00
Igor Ryzhov
0eac9b6f07 mgmtd: don't try to send config to disconnected clients
When determining the interested backend clients for a configuration
change, don't consider disconnected clients. This fixes a crash in
`mgmt_txn_send_be_txn_create` when trying to send data to a non-existing
adapter.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-11 22:56:42 +02:00
Rajesh Varatharaj
68573c34d4 bgpd: Set correct TTL for the dynamic neighbor peers
In an EBGP multihop configuration with dynamic neighbors, the TTL configured is not being updated for the socket.

Issue:
Assume the following topology:
Host (Dynamic peer to spine - 192.168.1.100) - Leaf - Spine (192.168.1.1)

When the host establishes a BGP multihop session to the spine,
the connection uses the MAXTTL value instead of the configured TTL (in this case, 2).
This issue is only observed with dynamic peers.

Logs: look at the TTL is still MAXTTL, instead of “2” configured.

18:13:18.872395 48:b0:2d:0c:58:0b > 48:b0:2d:66:64:6b, ethertype IPv4 (0x0800), length 85: (tos 0xc0, ttl 255, id 32078, offset 0, flags [DF], proto TCP (6), length 71)
192.168.1.100.179 > 192.168.1.1.40967: Flags [P.], cksum 0xfe89 (correct), seq 28406:28425, ack 28424, win 255, options [nop,nop,TS val 4192664793 ecr 2814447051], length 19: BGP
Keepalive Message (4), length: 19

Fix:
Whenever a dynamic peer is created, the socket TTL should be updated with the configured TTL, in this case 2.

19:13:24.894890 48:b0:2d:0c:58:0b > 48:b0:2d:66:64:6b, ethertype IPv4 (0x0800), length 85: (tos 0xc0, ttl 2, id 1131, offset 0, flags [DF], proto TCP (6), length 71)
    192.168.1.100.179 > 192.168.1.1.41937: Flags [P.], cksum 0x7a67 (correct), seq 2046150759:2046150778, ack 4286110599, win 255, options [nop,nop,TS val 4196270815 ecr 2818051226], length 19: BGP
        Keepalive Message (4), length: 19

Testing: UT

UT logs:
2023-12-29T19:13:21.892205+00:00 host bgpd[1591425]: [WWPV7-YSZB5] Dynamic Neighbor 192.168.1.1/32 matches group test listen range 192.168.1.0/30
2023-12-29T19:13:21.892654+00:00 host bgpd[1591425]: [GBPAR-M31QF] 192.168.1.1 Dynamic Neighbor added, group test count 1
2023-12-29T19:13:21.892993+00:00 host bgpd[1591425]: [GPE2H-K9QRE] bgp_set_socket_ttl:  set TxTTL on peer (rtrid 0.0.0.0) socket, err = 2, peer ttl 2

 Conflicts:
	bgpd/bgp_network.c

Ticket: #
Signed-off-by: Rajesh Varatharaj <rvaratharaj@nvidia.com>
2024-01-11 10:18:03 -08:00
Christian Hopps
29f2a300a3 lib: fix coverity issues
** CID 1575504:  Insecure data handling  (TAINTED_SCALAR) (maybe)
** CID 1575505:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
** CID 1575506:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
** CID 1575507:  Null pointer dereferences  (REVERSE_INULL)

Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-11 18:14:58 +00:00
Donald Sharp
8e85c8b45e pimd: Make some not very needed debugs more restrictive
When turning on debug pim trace, there are lots of messages
surrounding the timing of rpf lookup.  99% of the time
no-one cares about these anymore.  Let's make them
not seen unless we turn up debugs

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-11 11:50:52 -05:00
Donald Sharp
f80db3063d pimd: Receiving a Join or Prune should be under J_P debugs
The Join or Prune messages require you to turn on `trace`
but this is part of Join/Prune processing of the packet
let's use PIM_DEBUG_PIM_J_P instead of TRACE here.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-01-11 11:50:52 -05:00
Donald Sharp
86cbd5831e
Merge pull request #15128 from opensourcerouting/fix/bgp_oad_ECOMMUNITY_ORIGIN_VALIDATION_STATE
bgpd: Recent EBGP-OAD improvements
2024-01-11 09:07:31 -05:00
Christian Hopps
7b7725f7b8
lib: change type of inner to struct lyd_node *, cleaner code
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-11 13:51:23 +00:00
Christian Hopps
32a4c4019e lib: implement missing YANG choice/case statements.
Signed-off-by: Christian Hopps <chopps@labn.net>
2024-01-11 13:38:57 +00:00
Igor Ryzhov
7e48299c58 lib: explain semantics of northbound operations
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-11 15:06:53 +02:00
Igor Ryzhov
d726114790 mgmt, lib: implement REPLACE operation
Replace operation removes the current data node configuration and sets
the provided value. As current northbound code works only with one
xpath at a time, the operation only makes sense to clear the config of
a container without deleting it itself. However, the next step is to
allow passing JSON-encoded complex values to northbound operations which
will make replace operation much more useful.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-11 15:06:53 +02:00
Igor Ryzhov
fe0d4dc2cb lib: move dnode creation into a separate function
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-11 15:06:53 +02:00
Igor Ryzhov
3c2598a26f mgmt, lib: differentiate DELETE and REMOVE operations
Currently, there's a single operation type which doesn't return error
if the object doesn't exists. To be compatible with NETCONF/RESTCONF,
we should support differentiate between DELETE (fails when object
doesn't exist) and REMOVE (doesn't fail if the object doesn't exist).

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-11 15:06:53 +02:00
Igor Ryzhov
76e4eb84dd mgmtd, lib: implement CREATE_EXCL operation
Currently, there's no difference between CREATE and MODIFY operations.
To be compatible with NETCONF/RESTCONF, add new CREATE_EXCL operation
that throws an error if the configuration data already exists.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-11 15:06:53 +02:00
Igor Ryzhov
5d1a314038 lib: split nb_operation into two types
Currently, nb_operation enum means two different things - edit operation
type (frontend part), and callback type (backend part). These types
overlap, but they are not identical. We need to add more operation
types to support NETCONF/RESTCONF integration, so it's better to have
separate enums to identify different entities.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2024-01-11 15:06:50 +02:00
Donatas Abraitis
67e8ef293f
Merge pull request #15098 from donaldsharp/lib_zebra_h_cleanup_2
Lib zebra h cleanup 2
2024-01-11 14:50:21 +02:00
Donatas Abraitis
a56beac98b bgpd: Allow sending Origin Validation State extended community over EBGP-OAD
https://datatracker.ietf.org/doc/html/draft-uttaro-idr-bgp-oad#section-3.13

Extended communities which are non-transitive across an AS boundary MAY be
advertised over an EBGP-OAD session if allowed by explicit policy configuration.

If allowed, all the members of the OAD SHOULD be configured to use the same
criteria.

For example, the Origin Validation State Extended Community, defined as
non-transitive in [RFC8097], can be advertised to peers in the same OAD.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-11 11:35:20 +02:00
Donatas Abraitis
1c491dfbe6 tests: Check if the route over eBGP is preferred when eBGP-OAD is used
If at least one of the candidate routes was received via EBGP, remove from
consideration all routes that were received via EBGP-OAD and IBGP.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-11 10:53:57 +02:00
Donatas Abraitis
584b031a4d bgpd: Show external session sub-type (OAD) if exists
```
r1# sh ip bgp 10.10.10.10/32
BGP routing table entry for 10.10.10.10/32, version 1
Paths: (2 available, best #2, table default)
  Advertised to non peer-group peers:
  192.168.1.2 192.168.1.4
  65002 65003
    192.168.1.2 from 192.168.1.2 (192.168.2.2)
      Origin incomplete, metric 123, localpref 123, valid, external (oad)
      Last update: Thu Jan 11 10:46:32 2024
  65004 65005
    192.168.1.4 from 192.168.1.4 (192.168.4.4)
      Origin incomplete, metric 123, localpref 123, valid, external, best (Peer Type)
      Last update: Thu Jan 11 10:46:30 2024
r1#
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-01-11 10:53:57 +02:00