Commit Graph

30138 Commits

Author SHA1 Message Date
Donatas Abraitis
6a449c3636
Merge pull request #12232 from anlancs/fix/doc-ospfd-max-metric
doc: fix ospf's max-metric command
2022-10-31 13:12:43 +02:00
anlan_cs
5027538a42 doc: fix ospf's max-metric command
"on-shutdown" and "on-startup" have the different timeout range.

Correct the timeout range for "on-shutdown" based on the current code:

```
(ospf)  max-metric router-lsa on-shutdown (5-100)
```

Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-10-31 04:08:34 -04:00
mobash-rasool
6863cf6a5a
Merge pull request #12230 from cscarpitta/fix/replace-inet-top-in-srv6-lib
lib: Use `%pI6`/`%pI4` to print SRv6 seg6local ctx
2022-10-31 12:04:26 +05:30
Carmine Scarpitta
84410eb0fe lib: Use %pI6/%pI4 to print SRv6 seg6local ctx
This commit changes `seg6local_context2str()` to use `%pI6`/`%pI4`
instead of `inet_ntop` to print the SRv6 seg6local context information.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2022-10-30 09:15:06 +01:00
Carmine Scarpitta
1f3ba79974 bgpd: Replace inet_ntop with %pI6
This commit changes some debug prints to use `%pI6` instead of
`inet_ntop` to print SRv6 SIDs.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2022-10-30 08:25:07 +01:00
Donald Sharp
b7128471c6
Merge pull request #12224 from cscarpitta/fix/enhance-srv6-locator-chunk-free-api
bgpd: Enhance the `srv6_locator_chunk_free()` API by automatically setting the pointer to the freed memory to `NULL`
2022-10-29 19:56:07 -04:00
Jafar Al-Gharaibeh
5ac678c599
Merge pull request #12215 from LabNConsulting/working/lb/ospf-allow-for-zero
ospfd: remove asster on zero length LSA - which is permitted by spec
2022-10-29 16:58:50 -05:00
Jafar Al-Gharaibeh
d353152de7
Merge pull request #12222 from LabNConsulting/working/lb/fix-p2X-acks
ospfd: fix bug where acks were not be generated to incoming P2P/P2MP peers
2022-10-29 16:57:12 -05:00
Spoorthi K
a3c9412b9d zebra: Remove duplicate updation of msg_type
Signed-off-by: Spoorthi K <spk@redhat.com>
2022-10-29 23:25:03 +05:30
Lou Berger
dd3b58a00a ospfd: fix bug where acks were not be generated to incoming P2P/P2MP neighbors
Signed-off-by: Lou Berger <lberger@labn.net>
2022-10-29 17:17:56 +00:00
Jafar Al-Gharaibeh
2315c105de
Merge pull request #12220 from spk-hebbar/patch-1
doc: Update with right default FPM server port
2022-10-29 12:02:21 -05:00
Carmine Scarpitta
efae8c26cb bgpd: Don't check for NULL when removing chunks
`srv6_locator_chunk_free()` is a wrapper around the `XFREE()` macro.
Passing a NULL pointer to `XFREE()` is safe. Therefore, checking that
the pointer passed to the `srv6_locator_chunk_free()` is not null is
unnecessary.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2022-10-29 17:31:16 +02:00
Carmine Scarpitta
a1d5e05fb3 bgpd: Do not set chunk pointer to NULL after free
`srv6_locator_chunk_free()` takes care of freeing the memory allocated
for a `struct srv6_locator_chunk` and setting the
`struct srv6_locator_chunk` pointer to NULL.

It is not necessary to explicitly set the pointer to NULL after invoking
`srv6_locator_chunk_free()`.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2022-10-29 17:23:59 +02:00
Carmine Scarpitta
6946731314 lib, bgpd: Enhance srv6_locator_chunk_free() API
A programmer can use the `srv6_locator_chunk_free()` function to free
the memory allocated for a `struct srv6_locator_chunk`.

The programmer invokes `srv6_locator_chunk_free()` by passing a single
pointer to the `struct srv6_locator_chunk` to be freed.
`srv6_locator_chunk_free()` uses `XFREE()` to free the memory.
It is the responsibility of the programmer to set the
`struct srv6_locator_chunk` pointer to NULL after freeing memory with
`srv6_locator_chunk_free()`.

This commit modifies the `srv6_locator_chunk_free()` function to take a
double pointer instead of a single pointer. In this way, setting the
`struct srv6_locator_chunk` pointer to NULL is no longer the
programmer's responsibility but is the responsibility of
`srv6_locator_chunk_free()`. This prevents programmers from making
mistakes such as forgetting to set the pointer to NULL after invoking
`srv6_locator_chunk_free()`.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2022-10-29 17:04:35 +02:00
Russ White
854b0ce9ec
Merge pull request #12172 from LabNConsulting/working/lb/api-zero-len-del-flag
OSPF opaques LSA API - fix bug with LL API delete, add option for zero data length withdrawals
2022-10-29 10:38:27 -04:00
Lou Berger
53674eaba6 ospfd: catch and report runt LSAs
Signed-off-by: Lou Berger <lberger@labn.net>
2022-10-29 12:33:23 +00:00
Spoorthi K
aa52f3189b
doc: Update with right default FPM server port
Signed-off-by: Spoorthi K <spk@redhat.com>
2022-10-29 14:09:00 +05:30
Carmine Scarpitta
d537287a48 lib,zebra: Send SRv6 locator flags over the ZAPI
In this commit, we extend the ZAPI to support encoding and decoding the
locator flags contained in the messages exchanged between zebra and the
routing daemons.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2022-10-29 02:07:01 +02:00
Carmine Scarpitta
02b1544a5c lib: Add SRV6_LOCATOR_USID flag to SRv6 locator
In this commit, we add support for a new flag called
`SRV6_LOCATOR_USID`. When the `SRV6_LOCATOR_USID` flag is set, the
routing protocols will install SRv6 behaviors with the uSID in the
dataplane.

This flag is used to specify a locator as a uSID locator. When a locator
is specified as a uSID locator, all the SRv6 SIDs allocated from the
locator by the routing protocols (like BGP) are bound to the SRv6 uSID
behaviors and use the SRv6 uSID codepoints in the BGP update message.

We extend the SRv6 locator implementation to add support for a `usid`
flag. When the `usid` flag is set, the bgpd will install SRv6 behaviors
with the uSID in the dataplane and use the proper SRv6 Endpoint Behavior
codepoint in the BGP advertisement.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2022-10-29 02:04:57 +02:00
Carmine Scarpitta
9b7491e1fc lib: Add support for flags to the SRv6 locator
In this commit, we introduce the ability to specify flags for an SRv6
locator. Flags can be used to specify the properties of the locator.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2022-10-29 01:31:59 +02:00
Lou Berger
15c4dd82db ospfd: remove assert on zero length LSA - which is permitted by spec
Signed-off-by: Lou Berger <lberger@labn.net>
2022-10-28 16:06:14 +00:00
David Lamparter
6c7bc49428 python: hide inet_ntoa from frrbot
These are not the inet_ntoa you are looking for ;)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-10-28 11:18:06 +01:00
David Lamparter
638fc6d6e0 python: fix a bunch of pylint warnings in clippy
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-10-28 11:13:22 +01:00
David Lamparter
00f0c39903 python: apply black formatting
The python/ directory hasn't been shoved into black yet (unlike
topotests, where most FRR python code is.)  Run black over it.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-10-28 11:01:22 +01:00
David Lamparter
c39c1d6ab5
Merge pull request #12216 from donaldsharp/language_none 2022-10-28 11:56:26 +02:00
Olivier Dugeon
d36cd56638
Merge pull request #12154 from louis-6wind/fix-te-default-bandwidth
lib: fix the default TE bandwidth
2022-10-28 09:29:12 +02:00
mobash-rasool
70bf68c7b0
Merge pull request #12128 from donaldsharp/pim_br_fix_crash
pimd: Remove pim_br vestiges
2022-10-28 11:17:10 +05:30
Russ White
86a5cfa31e
Merge pull request #12176 from sworleys/BGP-InQ
bgpd,doc: limit InQ buf to allow for back pressure
2022-10-27 16:13:44 -04:00
Donald Sharp
18ca0317ad doc: debug zebra pbr does not need to be documented in 2 places
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-27 16:03:11 -04:00
Donald Sharp
99001ec2a6 doc: Remove language = none as that sphinx no longer needs this line
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-27 15:59:57 -04:00
Donald Sharp
d139e9e842 pimd: Remove pim_br vestiges
If PIM had received a register packet with the Border Router
bit set, pimd would have crashed.  Since I wrote this code
in 2015 and really have pretty much no memory of this and
no-one has ever reported this crash, let's just remove this
code.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-27 15:51:47 -04:00
Donatas Abraitis
5a2a5f19ad
Merge pull request #12211 from SaiGomathiN/coverity
pimd: fixing some coverity issues
2022-10-27 18:04:21 +01:00
Donatas Abraitis
6535ba824b
Merge pull request #12212 from donaldsharp/clarify_issue
bgpd: Clarify what NHT error message means
2022-10-27 18:01:44 +01:00
Donatas Abraitis
1bdc92fab3
Merge pull request #12200 from patrasar/pimv6_rp_iif_fix
pimd, pim6d: Fix rp-info OIF having PIM disabled interface
2022-10-27 17:59:50 +01:00
Louis Scalbert
4b8daf6b81 tests: adapt cspf_topo1 to the default link-params bandwidth
Adapt cspf_topo1 to the default link-params bandwidth

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2022-10-27 18:23:50 +02:00
Louis Scalbert
8e0f875fd6 tests: adapt ospf_te_topo1 to the default link-params bandwidth
Adapt ospf_te_topo1 to the default link-params bandwidth

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2022-10-27 18:23:48 +02:00
Louis Scalbert
472a1e5aaa tests: adapt isis_te_topo1 to the default link-params bandwidth
adapt isis_te_topo1 to the default link-params bandwidth

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2022-10-27 18:23:29 +02:00
Louis Scalbert
d5a313e074 lib: fix the default TE bandwidth
When enabling the interface link-params, a default bandwidth is assigned
to the Max, Reservable and Unreserved Bandwidth variables. If the
bandwidth is set at in the interface context, this value is used.
Otherwise, a default bandwidth value of 10 Gbps is set.

Revert the default value to 10 Mbps as it was intended in the initial
commit. 10 Mbps is a low value so that the link will not be prioritized
when computing the paths.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2022-10-27 18:15:12 +02:00
Olivier Dugeon
8365cd3a0d
Merge pull request #12210 from louis-6wind/fix-link-params-coverity
lib: fix coverity scan failure in zebra_interface_link_params_read()
2022-10-27 16:01:42 +02:00
Donald Sharp
6029afbc10 bgpd: Clarify what NHT error message means
When waiting on a path to reach the peer, modify the debug/show
output to give a better understanding to the operator about what
they should be looking for.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-27 09:21:41 -04:00
Sai Gomathi N
b6467a4274 pimd: Dereference before null check
In pim_ecmp_nexthop_search: All paths that lead to this null pointer comparison already dereference the pointer earlier
There may be a null pointer dereference, or else the comparison against null is unnecessary.

Coverity CID-1519749

Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
2022-10-27 03:58:18 -07:00
Sai Gomathi N
f13530f23a pimd: Unchecked return value
In tib_sg_oil_setup: Value returned from a function is not checked for errors before being used.
If the function returns an error value, the error value may be mistaken for a normal value.
Here, only the nexthop value is being used. So casted the return type to void.

Coverity CID-1519816

Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
2022-10-27 03:57:55 -07:00
Louis Scalbert
f6657a6ef3 lib: fix coverity scan failure in zebra_interface_link_params_read()
The code was working but the coverity scan reported a failure.

Clarify the code to make the coverity scan happy.

Fixes: fe0a129687 ("lib,zebra: link-params are not flushed after no enable")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2022-10-27 10:12:47 +02:00
Donatas Abraitis
d5850a1b6a
Merge pull request #12205 from proelbtn/fix-ipv4-vpn-nexthop-over-ipv6-peer
bgpd: Fix the condition whether nexthop is changed
2022-10-27 07:47:24 +01:00
Donatas Abraitis
eeb83189b9
Merge pull request #12204 from taspelund/soo_ip_fix
bgpd: Check for IP-format Site-of-Origin
2022-10-27 07:27:41 +01:00
Jafar Al-Gharaibeh
e3c117e19a
Merge pull request #12201 from donaldsharp/clang-16-robots
Clang 16 robots
2022-10-26 23:07:05 -05:00
Jafar Al-Gharaibeh
61f4574cde
Merge pull request #12190 from manojvn/468074
ospf6d: Fix for memory leak issues in ospf6.
2022-10-26 23:05:47 -05:00
Jafar Al-Gharaibeh
cf2a2762b8
Merge pull request #12179 from LabNConsulting/working/lb/p2mp-improvements
ospf: optimization for FRR's P2MP mode
2022-10-26 22:46:10 -05:00
Ryoga Saito
5b786189bc bgpd: Fix the condition whether nexthop is changed
Given that the following topology, route server MUST not modify NEXT_HOP
attribute because route server isn't in the actual routing path. This
behavior is required to comply RFC7947

(Router A) <-(eBGP peer)-> (Route Server) <-(eBGP peer)-> (Router B)

RFC7947 says as follows:

> As the route server does not participate in the actual routing of
> traffic, the NEXT_HOP attribute MUST be passed unmodified to the route
> server clients, similar to the "third-party" next-hop
> feature described in Section 5.1.3. of [RFC4271].

However, current FRR is violating RFC7947 in some cases. If routers and
route server established BGP peer over IPv6 connection and routers
advertise ipv4-vpn routes through route server, route server will modify
NEXT_HOP attribute in these advertisements.

This is because the condition to check whether NEXT_HOP attribute should
be changed or not is wrong. We should use (afi, safi) as the key to
check, but (nhafi, safi) is actually used. This causes the RFC7947
violation.

Signed-off-by: Ryoga Saito <ryoga.saito@linecorp.com>
2022-10-27 10:38:05 +09:00
Trey Aspelund
8c4d4624d2 bgpd: Check for IP-format Site-of-Origin
When deciding whether to apply "neighbor soo" filtering towards a peer,
we were only looking for SoO ecoms that use either AS or AS4 encoding.
This makes sure we also check for IPv4 encoding, since we allow a user
to configure that encoding style against the peer.

Config:
```
router bgp 1
 address-family ipv4 unicast
  network 100.64.0.2/32 route-map soo-foo
  neighbor 192.168.122.12 soo 3.3.3.3:20
 exit-address-family
!
route-map soo-foo permit 10
 set extcommunity soo 3.3.3.3:20
exit
```

Before:
```
ub20# show ip bgp neighbors 192.168.122.12 advertised-routes
BGP table version is 5, local router ID is 100.64.0.222, vrf id 0
Default local pref 100, local AS 1
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.2/32       0.0.0.0                  0    100  32768 i
*> 100.64.0.2/32    0.0.0.0                  0    100  32768 i

Total number of prefixes 2
```

After:
```
ub20# show ip bgp neighbors 192.168.122.12 advertised-routes
BGP table version is 5, local router ID is 100.64.0.222, vrf id 0
Default local pref 100, local AS 1
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.2/32       0.0.0.0                  0    100  32768 i

Total number of prefixes 1
```

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
2022-10-26 21:09:55 +00:00