Commit Graph

1238 Commits

Author SHA1 Message Date
David Lamparter
b08221513c ospf6d: actually print prefix options
Well at least I had a good laugh at the "xxx".

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-07-20 11:22:21 +02:00
David Lamparter
4699ad7296 ospf6d: move prefix_options from _path to _route
Prefix options are per-prefix, not per-path.  As evident by the fact
that the field is never used on ECMP paths.  Move it where it belongs.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-07-20 11:22:21 +02:00
Rafael Zalamena
ae2ba0c219 ospf6d: remove extra debug message
Somehow the hello message debugging code slipped outside the debug
guard. Lets just remove it.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-07-14 14:52:26 -03:00
Donald Sharp
802a83935f
Merge pull request #9037 from idryzhov/ospf6-freebsd
ospf6d: fix freebsd mcast group issues
2021-07-13 09:40:13 -04:00
Igor Ryzhov
93828a9923 ospf6d: fix freebsd mcast group issues
There's a delay in FreeBSD between issuing a command to leave a
multicast group and an actual leave. If we execute "no router ospf6" and
"router ospf6" fast enough, we can end up in a situation when OS
performs the leave later than it performs the join and the interface
remains without a multicast group.

Instead of counting on a one second delay, we must wait until the
interface actually leaves the group.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-07-12 22:56:04 +03:00
Donald Sharp
482467dc6a ospf6d: Correct spelling in debug
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-07-12 07:24:16 -04:00
Igor Ryzhov
cf420d4b48
Merge pull request #9010 from opensourcerouting/ospf-misc
doc,lib,ospfd,ospf6d: trivial improvements
2021-07-09 19:19:13 +03:00
Igor Ryzhov
d0f980f8bb
Merge pull request #9016 from LabNConsulting/chopps/ospf6d-fix-backlink-chk
ospf6d: fix backlink check
2021-07-09 15:46:43 +03:00
Rafael Zalamena
a0fbad5869 ospf6d: rework default-information configuration
Move code to its own function and remove most of the code indentation
(e.g. test for failure and quit as soon as possible).

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-07-09 07:55:25 -03:00
Rafael Zalamena
1fe59b44fc lib,ospfd,ospf6d: remove duplicated function
Move `is_default_prefix` variations to `lib/prefix.h` and make the code
use the library version instead of implementing it again.

NOTE
----

The function was split into per family versions to cover all types.
Using `union prefixconstptr` is not possible due to static analyzer
warnings which cause CI to fail.

The specific cases that would cause this failure were:
 - Caller used `struct prefix_ipv4` and called the generic function.
 - `is_default_prefix` with signature using `const struct prefix *` or
   `union prefixconstptr`.

The compiler would complain about reading bytes outside of the memory
bounds even though it did not take into account the `prefix->family`
part.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-07-09 07:55:25 -03:00
Rafael Zalamena
f45f6a22b0
Merge pull request #8978 from kssoman/ospf_new
ospf6d : Send LSA update immediately when ospf instance is deleted
2021-07-09 07:46:11 -03:00
Christian Hopps
ff2052eefc ospf6d: fix backlink check
This code has been wrong ~ever (according to git history). There are 3
conditional blocks with the added assertion that both the LSA and the
vertex being checked can't both be network LSAs.

The third block is clearly assuming both LSA and vertex are router
LSAs b/c it is accessing the backlink and lsdesc as router lsdesc's also
making sure both are p2p links (which they would have to be to point at
each other).

The programming error here is that (A && B) == False does NOT imply !A,
but the code is written that way.

So we end up in the third block one of LSA or vertex being network LSAs
rather easily (whenever that is the case and the desc isn't the backlink
being sought).

This was caught by ASAN b/c the lsdesc and backlinks are being accessed
(> 4 byte field offsets) as if they were router lsdesc's in the third
block, when in fact one of them is a network lsdesc which is only 4
bytes long -- so ASAN flags the access beyond bounds.

Signed-off-by: Christian Hopps <chopps@labn.net>
2021-07-09 04:15:34 -04:00
Soman K.S
7359e9ba71 ospf6d : Send LSA update immediately when ospf instance is deleted
Fix: The fix is to call ospf6_write to send the packet immediately to all neighbors

Signed-off-by: kssoman <somanks@gmail.com>
2021-07-08 19:10:29 +05:30
Igor Ryzhov
5ee7655ee9
Merge pull request #8987 from mobash-rasool/ospfv3-bug-fixes
ospf6d: Fix crash in ospf6_asbr_lsa_remove at ospf6d/ospf6_asbr.c:696
2021-07-07 17:28:14 +03:00
Donald Sharp
568f6d6c94
Merge pull request #8919 from mobash-rasool/ospfv3-fixes
ospf6d: Max aged LSAs are not getting deleted from DB
2021-07-06 16:13:05 -04:00
Donald Sharp
54ce9feb5a
Merge pull request #8930 from pjdruddy/ospf6_packet_debug
Ospf6 packet debug
2021-07-06 16:09:07 -04:00
github login name
908f5e616b ospf6d: Fix crash in ospf6_asbr_lsa_remove at ospf6d/ospf6_asbr.c:696
Issue: Crash observed when LSAs are removed from LSDB after max age
when there is no area configured.
(gdb) bt
0  raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
1  0x00007fdb190548bc in core_handler (signo=6, siginfo=0x7ffdd2f5a470, context=<optimized out>) at lib/sigevent.c:262
2  <signal handler called>
3  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
4  0x00007fdb185ad921 in __GI_abort () at abort.c:79
5  0x00007fdb1907f199 in _zlog_assert_failed (xref=xref@entry=0x55f30902aa20 <_xref.21999>, extra=extra@entry=0x0) at lib/zlog.c:581
6  0x000055f308dc4f78 in ospf6_asbr_lsa_remove (lsa=0x55f30a7546d0, asbr_entry=0x0) at ospf6d/ospf6_asbr.c:696
7  0x000055f308dd8f0d in ospf6_lsdb_remove (lsa=0x55f30a7546d0, lsdb=lsdb@entry=0x55f30a73d300) at ospf6d/ospf6_lsdb.c:166
8  0x000055f308dd9701 in ospf6_lsdb_maxage_remover (lsdb=0x55f30a73d300) at ospf6d/ospf6_lsdb.c:376
9  0x000055f308dee724 in ospf6_maxage_remover (thread=<optimized out>) at ospf6d/ospf6_top.c:603
10 0x00007fdb1906520d in thread_call (thread=thread@entry=0x7ffdd2f5ae90) at lib/thread.c:1919
11 0x00007fdb19023e48 in frr_run (master=0x55f30a569b70) at lib/libfrr.c:1155
12 0x000055f308dc09b6 in main (argc=6, argv=0x7ffdd2f5b198, envp=<optimized out>) at ospf6d/ospf6_main.c:235
(gdb)

Steps to reproduce the issue:
1. router ospf6
2. redistribute static
3. ipv6 route 1::1/128 Null0
4. no redistribute static
5. wait for Max aged LSA to flush
6. Check DB, crash occurs.

RCA:
Crash occurred while accessing listgetdata(listhead(ospf6->area_list))
When there is no area attached to any of the interface listhead(ospf6->area_list)
is NULL. Therefore it crashed due to NULL access.

Fix:
Check before accessing null pointer.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-07-06 08:32:23 -07:00
Donald Sharp
30885c7099
Revert "ospf6d: fix LSAs remain in LSDB with an old router-id value" 2021-07-02 12:38:11 -04:00
Mark Stapp
0a9fcd96d1
Merge pull request #8970 from ton31337/fix/use_IPV6_MAX_BITLEN
*: Do not use 32/128 numbers for prefixlen
2021-07-02 07:52:22 -04:00
Philippe Guibert
1e15822698
Merge pull request #8795 from louis-oui/fix-ospf6-router-id
ospf6d: fix LSAs remain in LSDB with an old router-id value
2021-07-02 11:11:47 +02:00
Donatas Abraitis
12256b84a5 *: Convert numeric 32 into IPV4_MAX_BITLEN for prefixlen
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-07-01 23:50:39 +03:00
Donatas Abraitis
f4d81e5507 *: Replace IPV6_MAX_PREFIXLEN to IPV6_MAX_BITLEN
Just drop IPV6_MAX_PREFIXLEN at all, no need keeping both.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-07-01 17:41:09 +03:00
Louis Scalbert
c295917b4a ospf6d: harmonize ospf6_asbr_redistribute_disable and _reset
Harmonize the code of functions ospf6_asbr_redistribute_disable and
ospf6_asbr_redistribute_reset.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2021-07-01 14:40:14 +02:00
Louis Scalbert
c54fb080a0 ospf6d: reset areas and redistribution at router-id modification
The ospf6 router-id is provided by order of preference by:

 ospf6d itself if the "ospf6 router-id X.X.X.X" command is set.
- zebra. If the "ip router-id X.X.X.X" zebra command is set, the
  configured IP is provided as the ID or alternatively the highest
  loopback IPv4 address or else the highest interface IPv4 address.

The running ospf6 router-id is stored in ospf6->router-id.

ospf6->router-id can change in the following conditions:

- A configuration change provides a new router-id value according to
  the above rules. ospf6->router-id is updated to the new value if
  there is no adjacency in FULL state. Otherwise, the ospf6d process
  must be restarted to take the new router-id into account.
- On startup of both zebra and ospf6d, if ospf6d has not yet received a
  valid router-id, ospf6d->router-id is set to 0 (i.e. 0.0.0.0). Then,
  zebra notifies ospf6d that the router-id is available.

At ospf6->router-id, the current behavior of ospf6d is the following:

- The self generated LSAs that refer to the previous router-id as the
  advertising router are kept.
- Self generated LSAs are created with router-id value.
- LSAs from the redistribution that refer to the previous router-id are
  kept and no new redistribution LSAs are created.

As a consequence, the routers in the ospf6 areas will get incorrect
LSAs and might not be able to install prefixes of those LSAs into their
RIB.

This fix solves this issue by resetting the areas and the redistribution
when ospf6->router-id updated.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2021-07-01 14:40:14 +02:00
Louis Scalbert
6794884231 ospf6d: factorize router-id update
ospf6_router_id_update function is used by ospf6_router_id_update_zebra
to update the running the ospf6 router-id.

This patches makes the functions to (un)configure ospf6 router-id use
the same function as ospf6_router_id_update_zebra.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
---
2021-07-01 14:40:14 +02:00
Louis Scalbert
08965422d0 ospf6d: don't update router-id if at least one adjacency is Full
When a router-id change is notified by zebra to ospf6d, we only take
into account the change if no adjacencies are in Full state.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2021-07-01 14:40:07 +02:00
Igor Ryzhov
bc65216a29
Merge pull request #8954 from mobash-rasool/ospfv3-feature
ospf6d: route-map config changed, not getting applied on all types of…
2021-07-01 14:47:40 +03:00
Mobashshera Rasool
2f43e34de1 ospf6d: route-map config changed, not getting applied on all types of routes
Problem Statement:
==================
when route-map config is changed from permit to deny, it is not getting
applied to both connected and static and vice versa

RCA:
==================
When route-map changes from permit to deny or vice versa, a notification is
sent to ospf6 daemon via ospf6_asbr_routemap_update. In this function, a thread
is scheduled after 5 seconds to apply the route-map changes. In this thread
(ospf6_asbr_routemap_update_timer), only the first type is passed as argument
and only the first type i.e "connected" is passed and hence in callback only
on this type of route route-map gets applied.

Fix:
====
Need to loop through all the route-types in the call back and process
the route-map changes. Added a flag to mark which all route-types needs
to be processed.

Test Executed:
===============
1. Change route-map from permit to deny.
2. Change route-map from deny to permit.
3. Add new route and checked.
4. Verified summarised routes.

Risk:
============
Low

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-06-30 11:55:17 +00:00
Igor Ryzhov
3c5122c5a7 ospf6d: use per-vrf router id instead of one global
This code was not fully completed when adding support for VRFs.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-06-29 18:10:41 +03:00
David Lamparter
0c3a104a7a Revert "ospf6d: Limit the number of interface addresses being supported"
This reverts commit f85b76195a.
2021-06-29 15:17:01 +02:00
Igor Ryzhov
ba88ced84c
Merge pull request #8835 from ranjanyash54/clear_process
ospf6d: "clear ipv6 ospf6 process" command
2021-06-29 11:54:39 +03:00
Quentin Young
3f8711681e
Merge pull request #8850 from opensourcerouting/ospf6-checksum-json
ospf6d: consistent checksum JSON output
2021-06-29 02:23:06 +00:00
Yash Ranjan
f71ed6df3e ospf6d: "clear ipv6 ospf6 process" command
Adding the "clear ipv6 ospf6 command" . It resets
the ospfv3 datastructures and clears the database
as well as route tables. It resets the neighborship
by restarting the interface state machine.
If the user wants to change the router-id, this
command updates the router-id to the latest static
router-id and starts the neighbor formation with
the new router-id.

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-06-27 20:56:10 -07:00
Pat Ruddy
779d972213 ospf6d: remove inet_ntop calls in ospf6_write
substitute pI6 formatter.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-26 11:16:19 +01:00
Pat Ruddy
a91f9d699c ospf6d: correctly protect packet debugs in ospf6_write
Some unprotected debugs need to have macro protection,
Split these into the existing covering macro section to remove
a check per-packet from the main path.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-26 11:16:19 +01:00
Pat Ruddy
0dd5ec1297 ospf6: fix coverity overflow issues
Coverity flagged the possibility of an overflow in the latency
calculation, ensure that 64 bit integers are used in the
calculation to avoid this error.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-26 11:16:19 +01:00
Igor Ryzhov
709bd20421 ospf6d: fix duplicated packet read
When OSPFv3 router is configured in both default and non-default VRFs,
every packet destined to a non-default VRF is read twice. This makes it
impossible to establish neighborship because every DbDesc packet is
treated as duplicated and we end up infinitely exchanging DbDescs.

We should drop packets received in the default VRF if an interface we
received it on is bound to another VRF.

Same thing was done for OSPFv2 in 555691e.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-06-26 12:57:26 +03:00
Mobashshera Rasool
c1e4c0dcf8 ospf6d: Max aged LSAs are not getting deleted from DB
Problem Statement:
==================
Max aged LSAs are not getting deleted from DB when there are multiple
neighbors in a LAN.

Root Cause Analysis:
====================
When the LSA is added to the neighbor's retransmit list, the LSA retrans count
is incremented but it is not checked if the LSA is already present in the
retransmit list leading to the count being incremented multiple times
untill the ack is not received and when the ack is received the count is
decremented once and hence the count never becomes 0 and
it remains in the DB forever.

Fix:
====================
Do not increment the retrans count multiple times if the LSA is already
present in the retransmit list of the neighbor. Also do not add the LSA
in the retransmit List if already present.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-06-24 11:16:12 +00:00
Igor Ryzhov
1c06b80f04
Merge pull request #8904 from rameshabhinay/ospf6_show
ospf6d: Show neighbor displays twice for every neighbor.
2021-06-23 18:35:13 +03:00
Rafael Zalamena
bc496de111
Merge pull request #8899 from idryzhov/ospf6-asbr
ospf6 redistribution fixes
2021-06-23 07:15:12 -03:00
Abhinay Ramesh
4069972831 ospf6d: Show neighbor displays twice for every neighbor.
Problem Statement:
=================
When show ipv6 ospf6 neighbor is executed each neighbor gets
displayed twice.

frr# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime    State/IfState         Duration I/F[State]
1.1.1.1           1    00:00:39     Full/DR              00:00:10 ens192[BDR]
1.1.1.1           1    00:00:39     Full/DR              00:00:10 ens192[BDR]

RCA:
====
Since ospf6_interface gets added twice to if_list we see multiple
display output.

Fix:
====
add ospf6_interface to if_list only when newly area gets attached
to the interface. If its already added no need to add it again.

Risk:
=====
Low

Tests Executed:
===============
Have tested the defect scenario.

frr# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime    State/IfState         Duration I/F[State]
1.1.1.1           1    00:00:35     Full/DR              00:36:04 ens192[BDR]
frr#

Signed-off-by: Abhinay Ramesh <rabhinay@vmware.com>
2021-06-23 09:24:35 +00:00
Igor Ryzhov
edfab98f9e ospf6d: fix NSSA status update
We should update ASBR status only when the NSSA status is actually changed.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-06-23 01:05:07 +03:00
Igor Ryzhov
bf84c96dae ospf6d: fix redistribute configuration
ospf6_asbr_redistribute_unset must not be called if the redistribution
is not yet configured, because it decrements redistribution counter and
makes it negative in this case.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-06-23 01:05:07 +03:00
Igor Ryzhov
2fdc4f8dea ospf6d: small ospf6_asbr_redistribute_set improvement
We always have a pointer to the ospf6 instance when the function is called.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-06-23 01:05:07 +03:00
Russ White
590303a029
Merge pull request #8878 from idryzhov/fix-ospf6-neighbor-detail
ospf6d: fix "show ipv6 ospf6 neighbor" command
2021-06-22 11:27:17 -04:00
Russ White
b79f1e068e
Merge pull request #8725 from pjdruddy/ospfv3_fair_socket
OSPFv3 socket rework
2021-06-22 10:58:33 -04:00
Russ White
6d824d6940
Merge pull request #8891 from idryzhov/no-vrf-interface
lib: remove vrf-interface config when removing the VRF
2021-06-22 09:55:11 -04:00
Igor Ryzhov
ee3e6d7ff3 ospf6d: fix "show ipv6 ospf6 neighbor" command
Simplify the logic and fix processing of "detail" and "drchoice"
arguments.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-06-21 18:42:49 +03:00
Igor Ryzhov
f5eef2d5a8 lib: remove vrf-interface config when removing the VRF
If we have the following configuration:
```
vrf red
 smth
 exit-vrf
!
interface red vrf red
 smth
```
And we delete the VRF using "no vrf red" command, we end up with:
```
interface red
 smth
```
Interface config is preserved but moved to the default VRF.

This is not an expected behavior. We should remove the interface config
when the VRF is deleted.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-06-21 18:04:46 +03:00
Yash Ranjan
bc09f3e6bb ospf6d: Release last dbdesc packet after router dead interval
During the database description exchange process, the slave
releases the last dbdesc packet after router_dead_interval.
This was not implemented in the code.
I have written the function ospf6_neighbor_last_dbdesc_release,
which releases the last dbdesc packet after router_dead_interval.
This change was required as per the conformance test 13.11:

In state Full reception of a Database Description packet from
the master after this interval (RouterDeadInterval) will
generate a SeqNumberMismatch neighbor event.

Associated Parameters
  ICMPv6 Packet Listen Time
  ICMPv6 Packet Tolerance Factor
  ICMPv6 Packet Tolerance Time
  OSPFV3 DUT Interface Transmit Delay
  OSPF Reset Adjacencies Timeout
Test Actions
1.
2. 3.
ANVL: Establish full adjacency with DUT for neighbor Rtr-0-A on DIface-0, with DUT as slave.
ANVL: Wait (for <RouterDeadInterval> seconds).
ANVL: Send <OSPF-DD> packet from neighbor Rtr-0-A to DIface-0 con- taining:
• •
I-bit field not set M-bit field not set
MS-bit field set
DD sequence number same as the one last sent by ANVL.

. ANVL: Listen (for upto 2 * <RxmtInterval> seconds) on DIface-0.
5. DUT: Trigger the event SeqNumberMismatch and set the neighbor state for neighbor Rtr-0-A to ExStart.
6. DUT: Send <OSPF-DD> packet.
7. ANVL: Verify that the received <OSPF-DD> packet contains:
• I-bit field set
• M-bit field set
• MS-bit field set.

Test Reference
• RFC 5340, s4.2.1.2 p19 Sending Database Description Packets
  RFC 2328, s10.8 p104 Sending Database Description Packets.

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-06-19 11:17:24 -07:00
Donald Sharp
cd551a0fd5
Merge pull request #8841 from volta-networks/fix_ospf6_bad_seqnum
ospf6: Drop LSA with bad seqnumber
2021-06-19 12:21:26 -04:00
Donald Sharp
457d4ee329
Merge pull request #8868 from ranjanyash54/redistribute_fix
ospf6d: redistribute command minor fixes
2021-06-19 12:20:04 -04:00
lynne
c5467a12ea ospf6: Drop LSA with bad seqnumber
In RFC 2328 seqnumber 0x80000000 is reserved and not used.   If an LSA
is received with seqnumber the LSA is now dropped and a debug error log
is printed.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2021-06-18 11:48:18 -04:00
Donald Sharp
a61bbb35a5
Merge pull request #8839 from volta-networks/fix_ospf6_flags_for_error_logs
ospf6d: move error logs out from behind debug flags
2021-06-18 08:18:25 -04:00
Yash Ranjan
f84504e686 ospf6d: Set metric from default values when route-map metric not present
For redistribute commands if route map is set, then route takes it's metric
values from the route map. But in the case that routemap is set but the
metric for the route map is not, then the route metric is set to type-1.

Check if the metric is set for the routemap. If not then set it as per
redistributed default values (type 2)

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-06-18 04:59:04 -07:00
Yash Ranjan
a5bc334beb ospf6d: Change the default metric parameter for redistribute
The default values will be set at the time of ospf6_redist_add
similar to ospfv2. Hence the default values will change as well.
Default metric type = E2
Default metic value = 20

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-06-18 04:59:04 -07:00
Pat Ruddy
78156066b9 ospf6d: add write-multiplier configuration
allow amount of work done by read and write threads in a single
invocation to be tuned to between 1 and 100 packets (default 20)

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-18 09:40:42 +01:00
Pat Ruddy
bb382e24f1 ospf6d: add warning log for late hello packets
On transmit and receive calculate the time since the last hello was seen
and log a warning if it is late by more than the hello period.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-18 09:40:42 +01:00
Pat Ruddy
432b7daf3d ospf6d: add lsupdate messages to tx fifo
queue outgoing lsupdate messages to the interface tx FIFO and schedule
the ospf_write task to deal with them.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-18 09:40:42 +01:00
Pat Ruddy
dd784cf9fa ospf6d: add lsack messages to tx fifo
queue outgoing lsack messages to the interface tx FIFO and schedule
the ospf_write task to deal with them.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-18 09:40:42 +01:00
Pat Ruddy
571eed235d ospf6d: add lsreq messages to tx fifo
queue outgoing lsreq messages to the interface tx FIFO and schedule
the ospf_write task to deal with them.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-18 09:40:42 +01:00
Pat Ruddy
d6a39b53f5 ospf6d: add dbdesc messages to tx FIFO
enqueue outgoing dbdesc messages to the end of the tx FIFO and
schedule the ospf6_write task to deal with them.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-18 09:40:42 +01:00
Pat Ruddy
3d9680313e ospf6d: add hello messages to tx fifo
queue outgoing hello messages to the interface tx FIFO and schedule
the ospf_write task to deal with them.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-18 09:40:42 +01:00
Pat Ruddy
531f925b4d ospf6d: add packet apis
Add APIs to create, queue and dequeue OSPFv3 packets

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-18 09:40:42 +01:00
Pat Ruddy
4f7bf1ab05 ospf6d: add tx fifo infrastructure
Add per interface fifo and per instance write list as a precursor
to implementing fairer sharing of the ospf6 oscket resources.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-18 09:40:42 +01:00
Pat Ruddy
aa6a96ba78 ospf6d: read ospf6 socket until failure
To ensure we read all the datagrams availabe from a socket when the
read task is scheduled, make the read helper return and error or
continue enum and loop unitl an error is received.
This requires the read from the socket to be non blocking

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-18 09:40:42 +01:00
Pat Ruddy
ec44732ea3 ospf6d: create an ospf_read_helper function
Take the contents of ospf6_receive and split the funtionality that
deals with a single packet receipt and place it in a separate helper
function.
This is the first step in a refactor process to allow the ospf6_read
task to read until failure.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-06-18 09:40:42 +01:00
lynne
1b1f7b4f15 ospf6d: move error logs out from behind debug flags
The logging in ospf6 is very verbose.  If you turn on logging on a scaled
system you get too many logs.   The problem is that there are some errors
that occur that are hidden behind the debug flags, and to see these errors
we currently need to turn on the debug logging.  This change converts these
error logs to warnings and removes the debug flags.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2021-06-14 15:46:49 -04:00
David Schweizer
2804f2d241
ospf6d: Link state ID in LSA database JSON output
Added link state ID to JSON output of LSA database.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2021-06-14 08:41:10 +02:00
David Schweizer
d6265808f4
ospf6d: consistent checksum json output
Changed LSA checksum JSON output variable name from "checkSum" to
"checksum" to maintain consistency.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2021-06-14 08:21:42 +02:00
Stephen Worley
5c2b86bba9 ospf6d: fix undefined function
Some wires got crossed during a couple merges using/changing
this function.

Update it to its new name.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2021-06-10 17:39:56 -04:00
Rafael Zalamena
ea67959995
Merge pull request #8823 from donaldsharp/ospfv3_coverity
Ospfv3 coverity
2021-06-10 15:13:11 -03:00
Rafael Zalamena
0614153799
Merge pull request #8733 from idryzhov/ipv6-ospf6-area
ospf6d: fix interface area configuration
2021-06-10 10:34:45 -03:00
Donald Sharp
95b3f03d89 ospf6d: Rename ospf6_is_router_abr to more accurately reflect what it does
The ospf6_is_router_abr is checking to see if ospfv3 is an abr router
and also setting values.  Let's rename it too `ospf6_check_and_set_router_abr`
to more accurately reflect what it is doing.

Additionally fix coverity #1505176 where we were not checking the return
value of ospf6_is_router_abr like we did every other time.  In this
case we don't care about the return value so indicate that we do not.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-06-10 07:59:06 -04:00
Donald Sharp
0d882ec7a3 ospf6d: Fix coverity Possible null deref
There exists a code path where ospf6 could be NULL and passing
to a function where it would always be derefed is a bad idea.

Put some small code in place to prevent this and allow this to be debuged
if it happens in the future.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-06-10 07:46:36 -04:00
Igor Ryzhov
42cabc552d ospf6d: fix interface area configuration
Currently the interface area is configured from the router node using
"interface IFNAME area ID" command. There are multiple problems with
this command:
- it is not in line with all other interface-related commands - other
  parameters are configured from the interface node using "ipv6 ospf6"
  prefix
- it is not in line with OSPFv2 - area is configured from the interface
  node using "ip ospf area" command
- most importantly, it doesn't work correctly when the interface is in
  a different VRF - instead of configuring the interface, it creates a
  new fake interface and configuring it instead

To fix all the problems, this commit adds a new command to the interface
configuration node - "ipv6 ospf6 area ID". The purpose of the command is
completely the same, but it works correctly in a multi-VRF environment.

The old command is preserved for the backward compatibility, but the
warning is added that it is deprecated because it doesn't work correctly
with VRFs.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-06-08 21:38:09 +03:00
Renato Westphal
461d106dae lib, ospfd, ospf6d: fix logging of pointer addresses
The %p printf format specifier does already print the pointer address
with a leading "0x" prefix (indicating a hexadecimal number). There's
no need to add that prefix manually.

While here, replace explicit function names in log messages by
__func__.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2021-06-08 11:50:44 -03:00
Rafael Zalamena
4f785c075e ospf6d: missing NSSA areas handling
Patch provided by Soman K.S. with small alterations.

Signed-off-by: Soman K.S <somanks@gmail.com>
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-06-04 07:23:10 -03:00
Kaushik
35769de430 ospf6d: support for nssa in ospfv3
Fix for the routes which is not classified as best routes.

Signed-off-by: Kaushik <kaushiknath.null@gmail.com>
2021-06-04 07:23:10 -03:00
Kaushik
ad500b22b5 ospf6d: Support for nssa in ospfv3
The following is implemented.
1. Configuring area as NSSA.
2. Generating Type 7 LSA.
3. Conversion of Type 7 to Type 5 ( Default Behavior).
4. NSSA ABR selection.

Reviewed-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Co-authored-by: Kaushik <kaushiknath.null@gmail.com>
Co-authored-by: Soman K.S <somanks@gmail.com>
Signed-off-by: Kaushik <kaushiknath.null@gmail.com>
2021-06-04 07:23:10 -03:00
Donald Sharp
9dddf5fe69
Merge pull request #8759 from idryzhov/ospf6-vrf-fix
ospf6d: fix using vrf interface as a loopback
2021-06-01 16:31:26 -04:00
Rafael Zalamena
06e4c62631
Merge pull request #8765 from idryzhov/bfd-vrf
isisd, ospf6d, pimd: set vrf_id when creating bfd sessions
2021-06-01 17:15:06 -03:00
Mark Stapp
2030df4d30
Merge pull request #8748 from idryzhov/ospf6-vrf-unlink
ospf6d: unlink router from vrf on deletion
2021-06-01 12:06:08 -04:00
Igor Ryzhov
63262607c1 isisd, ospf6d, pimd: set vrf_id when creating bfd sessions
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-05-31 15:04:13 +03:00
Igor Ryzhov
d16cff32b2 ospf6d: fix using vrf interface as a loopback
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-05-28 16:14:34 +03:00
Pat Ruddy
de4a0bdaa6 ospf6: fix memory leak in ospf6_abr_examin_summary
Ensure that if allocated route is not added to a table then it is
deleted to avoid leaking memory.
Add a new memory type for route table so that ospf6 routes can be
distinguished in the show memory output in isolation.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-05-27 12:57:25 +01:00
Igor Ryzhov
92699b9bbe ospf6d: unlink router from vrf on deletion
Otherwise `ospf6_lookup_by_vrf_id` returns stale pointer.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-05-27 14:39:28 +03:00
Igor Ryzhov
6e33da3839
Merge pull request #8738 from gromit1811/bugfix_ospf6_set_tag
ospf6d: Fix route map "set tag" command
2021-05-27 10:07:13 +03:00
Rafael Zalamena
12a52d5551
Merge pull request #8736 from idryzhov/fix-ospf6-debug
ospf6d: fix debug message issues
2021-05-26 15:25:08 -03:00
Mark Stapp
1c8fe10c98
Merge pull request #8732 from idryzhov/fix-ospf6d-crashes
ospf6d: fix possible crashes
2021-05-26 11:32:33 -04:00
Martin Buck
45024ca042 ospf6d: Fix route map "set tag" command
So far, "set tag" was 99% implemented in ospf6d, but registration of the
hook functions was missing, causing "set tag" actions in route maps to be
ignored in ospf6d.

This commit adds the missing hook registration.

Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
2021-05-26 16:03:51 +02:00
Igor Ryzhov
c9ac777a7e ospf6d: fix debug message config write
Fix the following issues:
- if "send" is combined with "recv-hdr", only "send" is shown
- if "recv" is combined with "send-hdr", only "recv" is shown
- if both "send-hdr" and "recv-hdr" are enabled, "; header only" is shown

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-05-26 11:48:09 +03:00
Igor Ryzhov
63d00b52e7 ospf6d: fix invalid "no debug ospf6 message unknown"
The message is always shown in the config, because IS_OSPF6_DEBUG_MESSAGE
works incorrectly when negated because of missing outer brackets.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-05-26 11:45:07 +03:00
Igor Ryzhov
b4b6bd0017 ospf6d: fix possible crashes
OSPF6 instance may not exist when processing interface state change.
Do not execute processing steps that require an instance if an area is
not configured for an interface.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-05-25 21:59:46 +03:00
Rafael Zalamena
0f8443653d ospf6d: fix address sanitizer crash
Don't `memcpy` a `struct prefix` the memory size varies depending on the
original intended type. In this case the original type was (casted away)
`struct prefix_ipv6` and we tried to copy `struct prefix` which is
bigger.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-05-24 08:30:26 -03:00
Donald Sharp
d516382e12
Merge pull request #8645 from idryzhov/ospf6-redistribute-fixes
ospf6 redistribution fixes
2021-05-19 14:42:54 -04:00
Igor Ryzhov
23929ec918 ospf6d: free "default-information originate" config when removing router
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-05-18 01:27:16 +03:00
Igor Ryzhov
c84bbb2ad0 ospf6d: fix crash when removing router from vrf that doesn't exist
`listgetdata(listhead(list))` crashes for an empty list.

Reproducible with:
```
router ospf6 vrf doesntexist
 default-information originate always
 exit
no router ospf6 vrf doesntexist
```

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-05-18 01:27:16 +03:00
Igor Ryzhov
8696e8be34 ospf6d: always free redistribute config
When the ospf6 instance in unknown VRF is deleted, the redistribution
config is not freed, because it is not registered in zebra. We should
always free the config regardless of zebra registration status.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-05-18 01:27:16 +03:00
Igor Ryzhov
82bc4b8a96 ospf6d: fix "default-information originate" in non-existing vrf
If the default route redistribution is configured in OSPF6 router before
the VRF is created, then this is not currently registered in zebra after
the VRF creation.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-05-18 01:24:22 +03:00
Martin Winter
d390582e64
Merge pull request #8658 from gromit1811/bugfix_8567
Fix #8567 OSPFv3-26.13 ANVL failure
2021-05-13 20:12:43 +02:00
lynne
f85b76195a ospf6d: Limit the number of interface addresses being supported
The code had no limits on addresses configured on an interface running
ospf6d.  The code would crash when more than 100 addresses were added.
This change limits the number of interface address to 100 if mtu is set
to the default value.  If the mtu is set to a jumbo packet size or larger
we will support 200 interface addresses.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2021-05-11 09:43:07 -04:00
Martin Buck
2d84ae9c29 ospf6d: Send MAXAGE LS update for received old self-originated LSAs
Fixes OSPFv3-26.13 ANVL RFC conformance bug #8576 by improving the bugfix
for #7030 from 4c63a76a. That commit changed handling of received old
non-MAXAGE LSAs with a MAXAGE counterpart in the LSDB from "add all LSAs to
LSDB and flood non-self-originated ones" to "add & flood only
non-self-originated LSAs and ignore self-originated LSAs". The new behaviour
is similar but adds sending a MAXAGE LS Update for received self-originated
LSAs to remove the old LSAs from the network, resulting in "add & flood
non-self-originated LSAs, don't add but send MAXAGE LS Update for
self-originated LSAs". The missing MAXAGE LS Update is what OSPFv3-26.13
ANVL complained about.

Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
2021-05-11 11:52:07 +02:00
Rafael Zalamena
34723b2fad
Merge pull request #8639 from idryzhov/isis-new-bfd-lib
isisd: rework BFD integration
2021-05-09 17:10:42 -03:00
Russ White
d2b7ab9445
Merge pull request #8347 from volta-networks/fix_ospv6_filter_debug
ospf6d: Fix when an "export-list" or "filter-list out" is configured
2021-05-07 14:27:01 -04:00
Igor Ryzhov
c97b34cf1a lib: remove old bfd library
This commit also adds missing `bfd_protocol_integration_set_shutdown` to
ospf6d and pimd.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-05-07 12:03:57 +03:00
Rafael Zalamena
4478793c43
Merge pull request #8636 from idryzhov/ospfv3-vrf-support
OSPFv3 VRF support
2021-05-06 08:50:32 -03:00
harios_niral
d48ef099db ospf6d: add vty support for multiple vrfs
Co-authored-by: Kaushik Nath <kaushiknath.null@gmail.com>
Signed-off-by: harios_niral <hari@niralnetworks.com>
2021-05-06 10:54:31 +03:00
harios_niral
4e8ccd9213 ospf6d: add internal support for multiple vrfs
Co-authored-by: Kaushik Nath <kaushiknath.null@gmail.com>
Signed-off-by: harios_niral <hari@niralnetworks.com>
2021-05-05 23:17:01 +03:00
lynne
f6c5f2e0c3 ospf6d: Fix when an "export-list" or "filter-list out" is applied.
When an "export-filter" or "filter-list out" was configured on an area the
filter was not applied to existing database.    The user would either have
to restart the neighboring router in the other area or issue a "clear ipv6
ospf6 interface" to cause the neighbor router to resend it's LSAs.   The
new filter would then be applied to these LSAs and permit or deny summary
LSAs from being added/removed from the database.  The code now applies the
filters to the existing database without user needing to take any action
to clear ospfv3 adjacencies.

The second part of the problem was if a rule changed the updated filter was
not applied.  The code has been modifed to now process the rule update and
reapply the filter.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2021-05-04 15:28:56 -04:00
Russ White
52a65a8cc6
Merge pull request #8587 from volta-networks/fix_ospf6_message_logs
ospf6d: Make debug logs configurable to only display message headers
2021-05-04 11:53:17 -04:00
Russ White
be7916a032
Merge pull request #8504 from ranjanyash54/link_lsa_priority
ospf6d: Send Link LSAs when interface priority is changed
2021-05-04 10:24:45 -04:00
Russ White
7e4085ca98
Merge pull request #8506 from ranjanyash54/route_json_change
ospf6d: Change structure of "show ipv6 ospf6 route json" command
2021-05-04 10:24:03 -04:00
Mark Stapp
f71e1ff6a9
Merge pull request #8545 from opensourcerouting/assert-our-own
*: make our own assert() actually work
2021-05-03 11:17:36 -04:00
Yash Ranjan
17ab36c6c4 ospf6d: Send Link LSAs when interface priority is changed
As per the ospfv3 conformance test 24.3

SETUP: Configure DIface-0 with priority set to <hprty>.
ANVL: Establish full adjacency with DUT for neighbor Rtr-0-A on DIface-0.
DUT: Exchange all the <OSPF-DD> packets, during adjacency establish- ment.
ANVL: Verify that the received <OSPF-DD> packets contain: • one header of Link-LSA, originated by DUT.
ANVL: Send <OSPF-LSR> packet from neighbor Rtr-0-A to DIface-0 con- taining:
• One Request Tuple for Link-LSA originated by DUT.
ANVL: Listen (for upto 2 * <RxmtInterval> seconds) on DIface-0. DUT: Send <OSPF-LSU> packet.
ANVL: Verify that the received <OSPF-LSU> packet contains:
• •
one Link-LSA, originated by DUT, contains: Rtr Pri field set to <hprty>.
----------
When interface priority is changed Link LSAs should be tranmitted
with the priority set.

When the link priorty chanages, the drbdr algorithm is called, which
can change the state of the interface. But if the state does not
changes then LINK LSAs are not transmitted.

This PR fixes this issue. If the state is changed, then LINK LSAs
will anyways be tranmitted. But in case the state is not changed,
even in that case Link LSAs are tranmitted.

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-05-02 10:19:16 -07:00
lynne
f44d0f5eca ospf6d: Make debug logs configurable to only display message headers
This change allows the user to only log the message header and not
include all the LSAs in each packet.   In a large setup printing out
all the LSAs in each packet can make the system very hard to debug.
When the user finds an issue with the adjacency not coming up or in a
specific packet type they can turn on a full dump of the message.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2021-04-29 08:40:34 -04:00
Yash Ranjan
a49ef569de ospf6d: Change structure of "show ipv6 ospf6 route json" command
The output of "show ipv6 ospf6 route json" was not in the same
format as "show ip ospf route json". Currently ipv6 and ipv4 route
tables as well as ospfv2 have prefix as the key, but the same
is not true for ospfv3.

The structure of the json objects needs to be changed.

Currently the structure present is
frr(config-ospf6)# do show ipv6 ospf6 route json
{
  "routes":[
    {
      "destination":"66:ff::\/64",
      "isBestRoute":true,
      "destinationType":"N",
      "pathType":"IA",
      "duration":"00:00:06",
      "nextHops":[
        {
          "nextHop":"::",
          "interfaceName":"ens256"
        }
      ]
    }
  ]
}
It is changed to:
frr(config-ospf6)# do show ipv6 ospf6 route json
{
  "routes":{
    "12::2\/128":{
      "isBestRoute":true,
      "destinationType":"N",
      "pathType":"IA",
      "duration":"00:01:22",
      "nextHops":[
        {
          "nextHop":"::",
          "interfaceName":"ens192"
        }
      ]
    }
}

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-04-28 21:18:04 -07:00
Russ White
43f337aee8
Merge pull request #8487 from pguibert6WIND/ospf6_vrfs
ospf6d: add 'show ipv6 ospf6 vrfs' command
2021-04-27 15:06:11 -04:00
David Lamparter
1f8031f79a *: make sure config.h or zebra.h is first
`config.h` has all the defines from autoconf, which may include things
that switch behavior of other included headers (e.g. _GNU_SOURCE
enabling prototypes for additional functions.)

So, the first include in any `.c` file must be either `config.h` (with
the appropriate guard) or `zebra.h` (which includes `config.h` first
thing.)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-04-23 12:06:35 +02:00
Rafael Zalamena
1f7be0d242 ospf6d: add support for BFD profiles
Allow user to pre configure BFD sessions using profiles.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-04-22 16:10:04 -03:00
Rafael Zalamena
d06cc41644 ospf6d: rework BFD integration
Use the new BFD library to integrate with BFD.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-04-22 16:10:01 -03:00
David Lamparter
0c4285d77e build: properly split CFLAGS from AC_CFLAGS
`CFLAGS` is a "user variable", not intended to be controlled by
configure itself.  Let's put all the "important" stuff in AC_CFLAGS and
only leave debug/optimization controls in CFLAGS.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-04-21 15:42:36 +02:00
David Lamparter
09781197b6 build: make builddir include path consistent
... by referencing all autogenerated headers relative to the root
directory.  (90% of the changes here is `version.h`.)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-04-21 15:42:33 +02:00
Mobashshera Rasool
ffdc63f9b4 ospf6d: Do not delete external table when configure max-path
Issue: When maximum-path is configured in ospf6 view, the
function ospf6_restart_spf deletes the external table as well
which is not required since that stores the redistribute routes.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-04-19 05:28:24 +00:00
Yash Ranjan
f85a41124b ospf6d: Fix coredump when "no interface IFNAME area <A.B.C.D>" is called
When oi->area == NULL, it tries to print the
interface's area name, but no area is present.
Print the area name from the command argument instead.

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-04-18 04:22:56 -07:00
Philippe Guibert
dd7fb1db6c ospf6d: add 'show ipv6 ospf6 vrfs' command
this command summarises the ospf6 instances along with the router-id and
the vrf_id associated.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2021-04-16 16:21:13 +02:00
Quentin Young
b832909b42 *: remove *.conf.sample files
Most of these are many, many years out of date. All of them vary
randomly in quality. They show up by default in packages where they
aren't really useful now that we use integrated config. Remove them.

The useful ones have been moved to the docs.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2021-04-09 13:14:30 -04:00
Sarita Patra
078110ca60 ospf6d: North-bound implementation for ospf6d rmaps
This commit introduces the implementation for the north-bound
callbacks for the ospf6d-specific route-map match and set clauses.

Signed-off-by: NaveenThanikachalam <nthanikachal@vmware.com>
Signed-off-by: Sarita Patra <saritap@vmware.com>
2021-03-30 22:59:30 +03:00
Russ White
1bed7a6fef
Merge pull request #8057 from ranjanyash54/default-route
ospf6d: Default Route functionality
2021-03-30 10:34:05 -04:00
Russ White
44f6359d08
Merge pull request #8368 from volta-networks/fix_isis_ospfv3_coverity
ospf6d: fix coverity warning
2021-03-30 10:22:05 -04:00
Martin Winter
9b25636e14
Merge pull request #8351 from volta-networks/fix_ospf6_abr_examin_summary_check_cost_change
ospf6d: fix ospf6_abr_examin_summary to check for a path cost change
2021-03-30 01:00:51 +02:00
lynne
4ff390e747 ospf6d: fix coverity warning
Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2021-03-29 13:33:07 -04:00
Yash Ranjan
5f6635b9d4 ospf6d: Minor changes for stub area
Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-03-29 06:37:10 -07:00
Yash Ranjan
c4122b55a6 ospf6d: Add logic to set metric if route-map not present
Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-03-29 06:37:10 -07:00
Yash Ranjan
b8212e0310 ospf6d: Add logic to change the status of router to ASBR
Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-03-29 06:37:10 -07:00
Yash Ranjan
b19502d3b0 ospf6d: Add CLI and logic for default-information originate command
Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-03-29 06:37:10 -07:00
Mark Stapp
ee6ccc96b4 ospf6d: fix unguarded debug
Put a debug under a conditional.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2021-03-26 16:00:25 -04:00
Karen Schoener
d8ff370922 ospf6d: fix ospf6_abr_examin_summary to check for a path cost change
Fixes a regression in test case: anvl-ospfv3-16.14.

Signed-off-by: Karen Schoener <karen@voltanet.io>
2021-03-26 14:20:40 -04:00
Donald Sharp
67bf1a4215
Merge pull request #8329 from volta-networks/fix_unkown_lsa_U_bit
ospf6d: Do not flood unknown LSAs if U-bit is clear
2021-03-25 08:29:13 -04:00
Yash Ranjan
e161c2dc9e ospf6d: Link LSAs are not getting MAX_AGE in neighbor
When the ospf6 daemon goes down, it originates MAX_AGE
LSAs for all the self-originated LSAs so that it gets
flushed from the neighbor's database. But the link-LSAs
are not getting MAX_AGE.
Set the self-originated link-LSAs age to MAX_AGE and
flood it

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-03-25 00:25:16 -07:00
Karen Schoener
0889da248b ospf6d: Do not flood unknown LSAs if U-bit is clear
Do not flood unknown LSAs if U-bit is clear.

Signed-off-by: Karen Schoener <karen@voltanet.io>
2021-03-24 13:58:41 -04:00
David Lamparter
30043e4ce2 ospf6d: kill ospf6_memory.h, use MTYPE_STATIC
Same as other commits -- convert most DEFINE_MTYPE into the _STATIC
variant, and move the remaining non-static ones to appropriate places.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 19:31:56 +01:00
David Lamparter
771e1fbee0 ospf6d: split off ospf6_lsa_alloc()
... so we can make the MTYPEs static to ospf6_lsa.c

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 19:26:02 +01:00
Donatas Abraitis
37916b2b11
Merge pull request #8121 from opensourcerouting/macro-cleanup
*: require ISO C11 + semicolons after file-scope macros
2021-03-22 11:00:34 +02:00
Donald Sharp
6dfe243c38
Merge pull request #8278 from ckishimo/ospfv3_iface
ospf6d: fix iface commands lost when removing from area
2021-03-20 20:11:16 -04:00
Donald Sharp
5b21cd300c
Merge pull request #8248 from volta-networks/fix_ospf6_chunk_msgs
ospfd6: Clear locks when ospf messages need to be chunked
2021-03-17 09:09:28 -04:00
David Lamparter
67b0f40c98 *: require semicolon after FRR_CFG_DEFAULT_*
... again ...

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-17 06:18:39 +01:00
David Lamparter
80413c2073 *: require semicolon after FRR_DAEMON_INFO & co.
... again ...

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-17 06:18:39 +01:00
David Lamparter
960b9a5383 *: require semicolon after DEFINE_<typesafe...>
Again, see previous commits.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-17 06:18:39 +01:00
David Lamparter
96244aca23 *: require semicolon after DEFINE_QOBJ & co.
Again, see previous commits.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-17 06:18:37 +01:00
David Lamparter
8451921b70 *: require semicolon after DEFINE_HOOK & co.
See previous commit.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-17 06:18:17 +01:00
David Lamparter
bf8d3d6aca *: require semicolon after DEFINE_MTYPE & co
Back when I put this together in 2015, ISO C11 was still reasonably new
and we couldn't require it just yet.  Without ISO C11, there is no
"good" way (only bad hacks) to require a semicolon after a macro that
ends with a function definition.  And if you added one anyway, you'd get
"spurious semicolon" warnings on some compilers...

With C11, `_Static_assert()` at the end of a macro will make it so that
the semicolon is properly required, consumed, and not warned about.

Consistently requiring semicolons after "file-level" macros matches
Linux kernel coding style and helps some editors against mis-syntax'ing
these macros.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-17 06:18:17 +01:00
David Lamparter
247c7e27a9 snmp: change -std=gnu99 to -std=gnu11
The point of the `-std=gnu99` was to override a `-std=c99` that may be
coming in from net-snmp.  However, we want C11, not C99.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-17 06:18:17 +01:00
ckishimo
800cc91882 ospf6d: fix warning message when interfae disabled
When removing an interface from an existing area,
the warning message we get is not correct

  interface r1-r2-eth0
   ipv6 address 2013:12::1/64
   ipv6 ospf6 dead-interval 4
   ipv6 ospf6 hello-interval 1
  !
  interface dummy
   ipv6 ospf6 dead-interval 4
   ipv6 ospf6 hello-interval 1
   ipv6 ospf6 network point-to-point
  !
  router ospf6
   ospf6 router-id 1.1.1.1
   interface r1-r2-eth0 area 0.0.0.0
  !

  r1(config-if)# router ospf6
  r1(config-ospf6)# no interface dummy area 0.0.0.0
  No such Area-ID: 0.0.0.0   <--- area 0.0.0.0 exists

This is fixing the error message

Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
2021-03-17 00:14:32 +01:00
ckishimo
d100d0b00c ospf6d: remove interface prefix when area is removed
This bug was first reported in PR#7717. When removing an interface
from the area, the interface prefix is still shown

  r1# sh ipv6 ospf6 interface prefix
  *N IA 2013:12::/64       ::1      r1-r2-eth0 00:00:12

  r1# conf t
  r1(config)# router ospf6
  r1(config-ospf6)# no interface r1-r2-eth0 area 0.0.0.0
  r1(config-ospf6)# exit

  r1# sh ipv6 ospf6 interface prefix
  *N IA 2013:12::/64       ::1      r1-r2-eth0 00:00:22

This fix will check if the interface is disabled so the
prefix is not shown

Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
2021-03-17 00:01:22 +01:00
ckishimo
5ac69ec52a ospf6d: fix iface commands lost when removing from area
In OSPFv3 when removing the interface from an area, all ospf6
interface commands are lost, so when changing the area you need
to reconfigure all ospf6 interface commands again

  r1# sh run
  interface r1-r2-eth0
   ipv6 address 2013:12::1/64
   ipv6 ospf6 dead-interval 4
   ipv6 ospf6 hello-interval 1
   ipv6 ospf6 network point-to-point
  !
  router ospf6
   ospf6 router-id 1.1.1.1
   interface r1-r2-eth0 area 0.0.0.0
  !

  r1# conf t
  r1(config)# router ospf6
  r1(config-ospf6)# no interface r1-r2-eth0 area 0.0.0.0
  r1(config-ospf6)# exit

  r1# sh run
  interface r1-r2-eth0
   ipv6 address 2013:12::1/64
  !                            <----- missing all ipv6 ospf6 commands
  router ospf6
   ospf6 router-id 1.1.1.1
  !

This is because the interface is being deleted instead of disabled
(see PR#7717) I believe the interface should be left as disabled
(not deleted) when removing the interface from the area

Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
2021-03-16 23:47:23 +01:00
lynne
1f4a8543d7 ospf6d: Fix coverity errors
Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2021-03-16 16:08:59 -04:00
lynne
ccf260c4c8 ospfd6: Clear locks when ospf messages need to be chunked
When there are too many LSA updates to be sent in a packet the code needs to
correctly clear the locks that are taken while walking the lists and then wait
for the appropriate timer to expire to continue walking the list.   The routine
that was being called would not properly remove all the locks that needed to be
cleared, and would also try to incorrectly delete the lsa/route.   The code now
clears the locks and leaves the lsa on the list.  When the timers fire again
the code continues walking the list to send the rest of the lsas to the
neighbor.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2021-03-16 11:34:17 -04:00
David Lamparter
5145a17261 *: fix printf extension types
Some mistakes have crept in again.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-14 22:56:07 +01:00
Donald Sharp
d47b448de5 ospf6d: Convert to use builtin printf functionality
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-03-14 22:56:07 +01:00
Russ White
846706b0e1
Merge pull request #8138 from ckishimo/ospfv3_prefix
ospf6d: fix LSA prefix options
2021-03-09 10:56:54 -05:00
Donald Sharp
133d893124
Merge pull request #8185 from volta-networks/fix_ospf6_changing_area_to_stub
ospf6d: Don't advertise AS-External LSAs into stub area
2021-03-07 09:02:58 -05:00
lynne
bac66c5c64 ospf6d: Don't advertise AS-External LSAs into stub area
If area is a normal area and has adjacencies up and then the user changes
the area to a stub area, the code was leaving existing AS-External LSAs in
the database and was sending AS-External LSAs into the stub area causing
the adjacency to stay in Ex-Start.   With this change we now cleanup the
AS-External LSAs that existed when area was not a stub and do not advertise
AS-External LSAs into the stub area.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2021-03-03 09:20:36 -05:00
Emanuele Di Pascale
7bfc5ae813 ospf6d: fix setting NOAUTOCOST flag
ospf6 keeps a flag to remember whether the cost for an interface
was manually added via config or computed automatically, but if
the configured value matches the auto-computed one we were not
setting this flag, meaning that the config would not show up in
the config.

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2021-03-03 10:56:51 +01:00
Yash Ranjan
305b639bca ospf6d: Json support added for command "show ipv6 ospf6 spf tree [json]"
Modify code to add JSON format output in show command
"show ipv6 ospf6 spf tree" with proper formating

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-03-02 02:14:57 -08:00
Donald Sharp
1bc19a9e1a ospf6d: turn some info->debug
The log is being spammed every spf interval:

Feb 27 16:19:34  ospf6d[462371]: SPF processing: # Areas: 1, SPF runtime: 0 sec 2043 usec, Reason: R+, R-, N+
Feb 27 16:20:59  ospf6d[462371]: SPF: Scheduled in 0 msec
Feb 27 16:20:59  ospf6d[462371]: SPF processing: # Areas: 1, SPF runtime: 0 sec 2284 usec, Reason: R+, R-
Feb 27 16:21:01  ospf6d[462371]: SPF: Scheduled in 0 msec
Feb 27 16:21:01  ospf6d[462371]: SPF processing: # Areas: 1, SPF runtime: 0 sec 2153 usec, Reason: R+, R-, N-

There is no reason to do this

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-02-27 10:42:07 -05:00
Donald Sharp
30b3fb20d4
Merge pull request #8139 from volta-networks/fix_ospf6_show_database
ospf6d: fix display of unknown LSAs in show ipv6 ospf6 database command
2021-02-25 06:34:52 -05:00
Mark Stapp
15869cd81d
Merge pull request #8035 from qlyoung/remove-more-sprintf
*: remove more sprintf()
2021-02-23 15:55:02 -05:00
lynne
3e67830c5f ospf6d: fix display of unknown LSAs in show ipv6 ospf6 database command
When an unknown LSA is in the database and the user issues the
"show ipv6 ospf6 database" command there is a crash.  The code currently
doesn't properly handle display of unknown LSAs.

Signed-off-by: Lynne Morrison <lynne@voltaio.net>
2021-02-23 13:04:06 -05:00
ckishimo
600d28e311 ospf6d: add DN bit in prefix options
According to RFC 5340 appendix A.4.1.1

     0  1  2  3  4  5  6  7
    +--+--+--+--+--+-+--+--+
    |  |  |  |DN| P|x|LA|NU|
    +--+--+--+--+--+-+--+--+

Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
2021-02-23 18:04:27 +01:00
ckishimo
8ae79ff269 ospf6d: remove redundant code when printing prefix options
Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
2021-02-23 18:04:18 +01:00
ckishimo
66721aaee7 ospf6d: print prefix options for lsa type 3 and 5
Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
2021-02-23 15:39:25 +01:00
Donald Sharp
ba877ace25
Merge pull request #8102 from volta-networks/fix_ospf6_error_logs
ospf6d: Update logs that indicate why ospf6 adjacency is not coming up.
2021-02-19 08:22:47 -05:00
Yash Ranjan
2727b66027 ospf6d: Metric option in intra-prefix LSA detail
Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-02-18 20:36:13 -08:00
lynne
ff99e5b648 ospf6d: Update logs that indicate why ospf6 adjacency is not coming up.
Add more details to these logs to help make it easier to determine why
ospf6 adjacency is not coming up.   Also make these logs show up without
having to turn on debug logging, again making it easier to debug the
misconfiguration.

Signed-off-by: Lynne Morrison <lynne@voltaio.net>
2021-02-18 10:24:51 -05:00
Russ White
67821bf2ad
Merge pull request #8051 from volta-networks/fix_ospf6_hello_lo
ospf6d: Don't send hellos on loopback interface
2021-02-16 11:42:01 -05:00
David Lamparter
1d5453d607 *: remove tabs & newlines from log messages
Neither tabs nor newlines are acceptable in syslog messages.  They also
break line-based parsing of file logs.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-02-14 15:36:51 +01:00
Soman K S
b9b87bfc36 ospf6d : fix issue in ecmp inter area route
Issue: When a path in the inter area ecmp route is deleted, the route is removed

Fix: The fix is to remove the specific path from the inter area route using
     ospf6_abr_old_route_remove() when abr route entry is not found.
     In  the function ospf6_abr_old_route_remove() the path to be removed needs
     to match adv router and link state ID

     Fixed memory leak in ospf6_intra_prefix_update_route_origin() caused by
     route node lock not getting released.

Signed-off-by: kssoman <somanks@gmail.com>
2021-02-10 16:45:22 +05:30
lynne
cb978d686b ospf6d: Don't send hellos on loopback interface
When ospf6 passive is turned off on a loopback interface don't start
sending ospf6 hellos.

Signed-off-by: Lynne Morrison <lynne@voltanet.io>
2021-02-09 19:31:18 -05:00
Quentin Young
7533cad751 *: remove more sprintf()
Should be just a couple non-development, non-test occurrences of this
function left now.

Signed-off-by: Quentin Young <qlyoung@qlyoung.net>
2021-02-09 15:40:40 -05:00
Russ White
a384dd69d8
Merge pull request #7980 from gromit1811/fix_ospf6_lsa_str_oob
Fix ospf6 LSA formatting out-of-bounds access
2021-02-09 07:36:29 -05:00
Quentin Young
684b9f2447
Merge pull request #7981 from gromit1811/fix_ospf6_lsa_str_retval
ospf6d: Fix LSA formatting inconsistent retvals
2021-02-05 14:08:37 -05:00
Mark Stapp
4a9178f2f4
Merge pull request #7961 from mobash-rasool/ospfv3-feature
ospf6d: add CLI to control maximum paths for routes.
2021-02-04 13:32:34 -05:00
Russ White
a67b8731d2
Merge pull request #7991 from donaldsharp/valgrind_cleanups1
Valgrind cleanups
2021-02-02 07:30:06 -05:00
Donald Sharp
d512cb376a
Merge pull request #7402 from ranjanyash54/dev_2
ospf6d: Json support added for command "show ipv6 ospf6 route [json]"
2021-02-01 21:07:57 -05:00
Donald Sharp
aaef26cef6 ospf6d: prevent use after free
Valgrind reports:

2437395-==2437395== Invalid read of size 8
2437395:==2437395==    at 0x40B610: ospf6_asbr_update_route_ecmp_path (ospf6_asbr.c:327)
2437395-==2437395==    by 0x40BC7C: ospf6_asbr_lsa_add (ospf6_asbr.c:544)
2437395-==2437395==    by 0x40C5DF: ospf6_asbr_lsentry_add (ospf6_asbr.c:829)
2437395-==2437395==    by 0x42D88D: ospf6_top_brouter_hook_add (ospf6_top.c:185)
2437395-==2437395==    by 0x4188E3: ospf6_intra_brouter_calculation (ospf6_intra.c:2320)
2437395-==2437395==    by 0x42C624: ospf6_spf_calculation_thread (ospf6_spf.c:638)
2437395-==2437395==    by 0x4904B7E: thread_call (thread.c:1681)
2437395-==2437395==    by 0x48CAA27: frr_run (libfrr.c:1126)
2437395-==2437395==    by 0x40AF43: main (ospf6_main.c:232)
2437395-==2437395==  Address 0x5c668a8 is 24 bytes inside a block of size 256 free'd
2437395:==2437395==    at 0x48399AB: free (vg_replace_malloc.c:538)
2437395-==2437395==    by 0x429027: ospf6_route_delete (ospf6_route.c:419)
2437395-==2437395==    by 0x429027: ospf6_route_unlock (ospf6_route.c:460)
2437395-==2437395==    by 0x429027: ospf6_route_remove (ospf6_route.c:887)
2437395-==2437395==    by 0x40B343: ospf6_asbr_update_route_ecmp_path (ospf6_asbr.c:318)
2437395-==2437395==    by 0x40BC7C: ospf6_asbr_lsa_add (ospf6_asbr.c:544)
2437395-==2437395==    by 0x40C5DF: ospf6_asbr_lsentry_add (ospf6_asbr.c:829)
2437395-==2437395==    by 0x42D88D: ospf6_top_brouter_hook_add (ospf6_top.c:185)
2437395-==2437395==    by 0x4188E3: ospf6_intra_brouter_calculation (ospf6_intra.c:2320)
2437395-==2437395==    by 0x42C624: ospf6_spf_calculation_thread (ospf6_spf.c:638)
2437395-==2437395==    by 0x4904B7E: thread_call (thread.c:1681)
2437395-==2437395==    by 0x48CAA27: frr_run (libfrr.c:1126)
2437395-==2437395==    by 0x40AF43: main (ospf6_main.c:232)
2437395-==2437395==  Block was alloc'd at
2437395:==2437395==    at 0x483AB65: calloc (vg_replace_malloc.c:760)
2437395-==2437395==    by 0x48D2A32: qcalloc (memory.c:115)
2437395-==2437395==    by 0x427CE4: ospf6_route_create (ospf6_route.c:402)
2437395-==2437395==    by 0x40BA8A: ospf6_asbr_lsa_add (ospf6_asbr.c:490)
2437395-==2437395==    by 0x40C5DF: ospf6_asbr_lsentry_add (ospf6_asbr.c:829)
2437395-==2437395==    by 0x42D88D: ospf6_top_brouter_hook_add (ospf6_top.c:185)
2437395-==2437395==    by 0x4188E3: ospf6_intra_brouter_calculation (ospf6_intra.c:2320)
2437395-==2437395==    by 0x42C624: ospf6_spf_calculation_thread (ospf6_spf.c:638)
2437395-==2437395==    by 0x4904B7E: thread_call (thread.c:1681)
2437395-==2437395==    by 0x48CAA27: frr_run (libfrr.c:1126)
2437395-==2437395==    by 0x40AF43: main (ospf6_main.c:232)

ospfv3 loops through the ecmp routes to decide what to clean up.  In some
situations the code free's up an existing route at the head of the list.
Cleaning the pointers in the list but never touching the original pointer.
In that case notice and update the old pointer.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-02-01 08:55:20 -05:00
Mobashshera Rasool
1958143e30 ospf6d: add CLI to control maximum paths for routes.
CLI added:
maximum-paths (1-64)

Issue: #7961

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-02-01 09:05:52 +00:00
Martin Buck
8e04b88b8d ospf6d: Fix LSA formatting inconsistent retvals
Make return values for lh_get_prefix_str LSA handlers consistent, i.e.
return NULL in case of error without having written to the passed buffer
and non-NULL (address of buffer) if a string was written to the buffer.

Previously, it was possible in certain cases (bogus LSAs) to not initialize
(and 0-terminate) the buffer but still return non-NULL, causing the caller
to print random junk.

Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
2021-01-29 19:39:24 +01:00
Martin Buck
100f2989b3 ospf6d: Fix LSA formatting out-of-bounds access
Check whether full struct ospf6_router_lsdesc/ospf6_prefix is accessible
before accessing its contents. Previously, we only checked for the first
byte in ospf6_router_lsa_get_nbr_id() or not even that (due to an additional
off-by-one error) in ospf6_link_lsa_get_prefix_str() and
ospf6_intra_prefix_lsa_get_prefix_str().

Also check *before* accessing the first prefix instead of starting the
checks only at the 2nd prefix.

The previous code could cause out-of-bounds accesses with valid LSAs in case
of ospf6_link_lsa_get_prefix_str() and
ospf6_intra_prefix_lsa_get_prefix_str() and with specially crafted LSAs
(bad length field) in case of ospf6_router_lsa_get_nbr_id().

Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
2021-01-29 19:38:17 +01:00
Donald Sharp
8b36526475 ospf6d: Remove #if 0 code that has not been used in a long time
The earliest that some of this code is 2018.  There is not
much point in keeping this code around.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-01-28 13:34:55 -05:00
Yash Ranjan
35aeb295ed ospf6d: Json support added for command "show ipv6 ospf6 interface prefix [json]"
Modify code to add JSON format output in show command
"show ipv6 ospf6 interface prefix" with proper formating

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-01-26 20:06:02 -08:00
Yash Ranjan
eacd0828d4 ospf6d: Json support added for command "show ipv6 ospf6 route [json]"
Modify code to add JSON format output in show command
"show ipv6 ospf6 route [<intra-area|inter-area|external-1|
external-2|X:X::X:X|X:X::X:X/M|detail|summary>]"
with proper formating

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-01-26 20:06:02 -08:00
Donald Sharp
9ae41e3105 ospf6d: Track wait_timer and disable when needed
When removing ospfv3 from an interface that has been previously
put into wait state, there is a possible use after free of the
oi because the wait_timer could have been started for the interface.
This is because the wait_timer was not tracked by the interface
and we just created a thread for it without storing the thread
pointer.

Issue: #7932
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-01-26 08:13:44 -05:00
Donald Sharp
8f17f6eb2d ospf6d: use a new json_object per loop iteration
When redistributing multiple route types into ospfv3
the code must create a new array per route type into
the the json code.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-01-25 09:15:36 -05:00
Yash Ranjan
e4bacbaac4 ospf6d: Json support added for command "show ipv6 ospf6 database [json]"
Modify code to add JSON format output in show command
"show ipv6 ospf6 database" with proper formating

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-01-13 00:06:28 -08:00
Yash Ranjan
de851bf2e3 ospf6d: Structural changes in ospf6d.c
Removes the code redundancy for the show ipv6 ospf6 database
command.

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2021-01-13 00:06:28 -08:00
Russ White
30ff2a502e
Merge pull request #7717 from ranjanyash54/2368
ospf6d: ospfv3 disable on the interface, but interface prefix still s…
2020-12-15 07:29:10 -05:00
Mobashshera Rasool
bb4c56616f ospf6d: Link LSA is not updated when router priority is modified
Issue: #7727

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2020-12-14 07:57:13 +00:00
Yash Ranjan
4a30f0568f ospf6d: ospfv3 disable on the interface, but interface prefix still shown in the output
When the ospfv3 interface is disabled by the command "no interface <eth> area <area-id>
the linked interface prefixes does not get flushed

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2020-12-13 05:50:57 -08:00
Yash Ranjan
08d8fa4587 ospf6d: Fix for "show ipv6 ospf6 database link"
Some prefixes were not shown in the link database
show command, due to issues with pointer calculation.

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2020-12-10 21:25:41 -08:00
Yash Ranjan
8044f7aa55 ospf6d: Fix for "show ipv6 ospf6 database intra-prefix"
Some prefixes were not shown in the intra-prefix database
show command, due to issues with pointer calculation.

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2020-12-10 21:25:41 -08:00
Rafael Zalamena
551e30a5ff
Merge pull request #7492 from Niral-Networks/niral_ospfv3_fix_redist
ospf6d : Code refactoring for route redistribution.
2020-12-10 09:01:12 -03:00
Kaushik
a069482f1f ospf6d : Code refactoring for route redistribution.
1. Created new ospf6_redist structure.
2. Moved the 'route_map' structure from structure 'ospf6' to
   structure 'ospf6_redist'.
3. Added new message type OSPF6_REDISTRIBUTE.
4. Added the placeholder for metric option in structure ospf6_redist
   for redistribute.
5. Added few API's for route redistribute lookup, add & del.

Signed-off-by: Kaushik <kaushik@niralnetworks.com>
2020-12-09 13:27:23 +05:30
Yash Ranjan
786b76d03a ospf6d: Router-ID filter is not filtering the show command "do show ipv6 ospf6 neighbour A.B.C.D"
Compare the neighbour id string from the arguments to the router_id of
the neighbor. If equal then call the show function.

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2020-12-04 04:15:30 -08:00
Igor Ryzhov
d313699058 ospf6: move serv_close to ospf6_delete
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-11-30 17:36:10 +03:00
Igor Ryzhov
1fa5858735 ospf6: fix crash on shutdown
The crash is sometimes reproduced by all_protocol_startup topotest.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-11-30 17:36:10 +03:00
Igor Ryzhov
f5f26b8fca ospf6: get instance from lsdb data
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-11-30 17:36:10 +03:00
Igor Ryzhov
e285b70d3c ospf6: get instance from route table scope
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-11-30 17:36:10 +03:00
Igor Ryzhov
360d6f517f ospf6: don't create instance at startup
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-11-20 01:48:11 +03:00
Donald Sharp
680b8ceb9e ospf6d: More lists being leaked
Apparently the person who wrote this code was big into
cut-n-paste.  Commit 710a61d57c
found the first instance, but upon code inspection this morning
it became evident that 2 other functions had the exact same
problem.

Fix.  Note I have not cleaned up the cut-n-paste code for
two reasons: a) I'm chasing something else b) this code
has been fairly un-maintained for a very long time.  No
need to start up now.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-11-19 08:04:51 -05:00
Donald Sharp
b84696e6c0
Merge pull request #7454 from ranjanyash54/dev_8
ospf6d: Json support added for command "show ipv6 ospf6 interface traffic [json]"
2020-11-18 18:37:30 -05:00
Donald Sharp
74c6aba12e
Merge pull request #7455 from ranjanyash54/dev_3
ospf6d: Json support added for command "show ipv6 ospf6 redistribute [json]"
2020-11-18 18:33:09 -05:00
Donald Sharp
c3f5f46868
Merge pull request #7296 from YashRanjanVMWare/dev_1
ospf6d: Json support added for command "show ipv6 ospf6 [json]"
2020-11-18 17:50:42 -05:00
Mark Stapp
abed797ef5
Merge pull request #7556 from donaldsharp/memory_shenanigans
Memory shenanigans
2020-11-18 17:31:03 -05:00
Mark Stapp
84c709bc6e
Merge pull request #7555 from idryzhov/cppcheck-fixes
fix a couple of issues found by cppcheck
2020-11-18 14:29:25 -05:00
Donald Sharp
710a61d57c ospf6d: Free up list memory
OSPFv3 snmp code creates a list but never deletes the actual
list.  Do so.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-11-18 11:42:50 -05:00
Igor Ryzhov
0db96688aa ospf6d: fix compilation of debug code
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-11-18 19:06:10 +03:00
Mark Stapp
926bc58f78
Merge pull request #7478 from donaldsharp/buffer
Buffer
2020-11-18 08:30:47 -05:00
Russ White
b1545a5c59
Merge pull request #7450 from ranjanyash54/dev_5
ospf6d: Json support added for command "show ipv6 ospf6 zebra [json]"
2020-11-17 07:55:10 -05:00
Russ White
4b5eb21a66
Merge pull request #7453 from ranjanyash54/dev_7
ospf6d: Json support added for command "show ipv6 ospf6 interface [json]"
2020-11-17 07:53:41 -05:00
github login name
f16ae8cf5d ospf6d: Json support added for command "show ipv6 ospf6 interface [json]"
Modify code to add JSON format output in show command
"show ipv6 ospf6 interface" with proper formating

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2020-11-16 21:18:39 -08:00
github login name
9ebb75c56b ospf6d: Json support added for command "show ipv6 ospf6 zebra [json]"
Modify code to add JSON format output in show command
"show ipv6 ospf6 zebra" with proper formating

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2020-11-16 19:44:06 -08:00
github login name
35a45deada ospf6d: Json support added for command "show ipv6 ospf6 [json]"
Modify code to add JSON format output in show command
"show ipv6 ospf6" with proper formating.

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2020-11-16 19:37:26 -08:00
github login name
ba30b37677 ospf6d: Json support added for command "show ipv6 ospf6 interface traffic [json]"
Modify code to add JSON format output in show command
"show ipv6 ospf6 interface traffic" with proper formating

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2020-11-15 21:16:10 -08:00
github login name
dd726234aa ospf6d: Json support added for command "show ipv6 ospf6 redistribute [json]"
Modify code to add JSON format output in show command
"show ipv6 ospf6 redistribute" with proper formating

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2020-11-15 21:11:30 -08:00
Donald Sharp
8a3f8f2e4a bgpd, lib, sharpd: Add enum for zclient_send_message return
Add a `enum zclient_send_status` for appropriate handling
of return codes from zclient_send_message.  Touch all the places
where we handle this.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-11-15 14:50:17 -05:00
Donald Sharp
1782514fb9 *: Remove route_map_object_t from the system
The route_map_object_t was being used to track what protocol we were
being called against.  But each protocol was only ever calling itself.
So we had a variable that was only ever being passed in from route_map_apply
that had to be carried against and everyone was testing if that variable
was for their own stack.

Clean up this route_map_object_t from the entire system.  We should
speed some stuff up.  Yes I know not a bunch but this will add up.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-11-13 19:35:20 -05:00
Donald Sharp
42e122614b
Merge pull request #7448 from mjstapp/fix_gcc10_formats
* : clean up format specifiers for gcc-10
2020-11-10 11:23:02 -05:00
Russ White
087336f5de
Merge pull request #7445 from ranjanyash54/dev_4
ospf6d: Json support added for command "show ipv6 ospf6 neighbor [json]"
2020-11-10 11:15:02 -05:00
Donald Sharp
9811fcdca3
Merge pull request #7137 from kssoman/ospf
ospf6d : Intra area route for connected prefix not installed
2020-11-05 11:57:50 -05:00
github login name
6a5bb30062 ospf6d: Json support added for command "show ipv6 ospf6 neighbor [json]"
Modify code to add JSON format output in show command
"show ipv6 ospf6 neighbor" with proper formating

Signed-off-by: Yash Ranjan <ranjany@vmware.com>
2020-11-04 22:44:21 -08:00
Mark Stapp
72327cf3e7 * : clean up format specifiers for gcc-10
gcc 10 complains about some of our format specs, fix them. Use
atomic size_t in thread stats, to work around platform
differences.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-11-04 16:56:17 -05:00
Rafael Zalamena
7c62dc76d4
Merge pull request #7261 from Niral-Networks/niral_dev_vrf_ospf6
ospf6d : Transformation changes for ospf6 vrf support.
2020-11-03 11:59:38 -03:00
harios_niral
96117716ba ospf6d : Transformation changes for ospf6 vrf support.
1. Reviews comments taken care.

Signed-off-by: harios_niral <hari@niralnetworks.com>
2020-11-02 08:24:21 -08:00
harios_niral
beadc736bb ospf6d : Transformation changes for ospf6 vrf support.
1. All the changes are related to handle ospf6 with different vrf.
2. The dependancy of global ospf6 is removed.

Co-authored-by: Kaushik <kaushik@niralnetworks.com>
Signed-off-by: harios_niral <hari@niralnetworks.com>
2020-10-30 23:50:08 -07:00
Donald Sharp
130830323d ospf6d: Give a bit more data when sendmsg fails
When sendmsg fails add a bit more data in hopes we can
figure out what is going wrong.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-10-29 08:53:43 -04:00
Donald Sharp
b66ec22ca9 ospf6d: ifindex should not be a pointer for ospf6_sendmsg
Let's cleanup the ospf6_sendmsg api and not pass in a pointer
to the ifindex to use.  It's an integer.

Also remove the assert(*ifindex);  We never use ifindex of 0

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-10-29 07:01:40 -04:00
Donald Sharp
01d8acff73 ospf6d: Clean up ospf6_network.h header
Make it compliant.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-10-29 06:55:04 -04:00
Donatas Abraitis
2dbe669bdf :* Convert prefix2str to %pFX
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-10-22 09:07:41 +03:00
Donald Sharp
299ce4b3bd ospf6d: Convert to using %pFX
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-10-17 13:39:10 -04:00
Donald Sharp
c10e14e96d *: Create/Use accessor functions for lock count
Create appropriate accessor functions for the rn->lock
data.  We should be accessing this data through accessor
functions since it is private data to the data structure.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-10-17 13:39:10 -04:00
Donald Sharp
2e37407f9d ospf6d, tests: Prevent use after free
The code pattern:

for (ALL_LSDB(lsdb, lsa)) {
	remove_lsa(lsa)
}

has a use after free in ALL_LSDB, since we ask for the next pointer,
after it has been freed.

Modify the code such that we grab the next pointer before we can
possibly free it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-10-11 11:16:44 -04:00
Donald Sharp
62270cc3ee ospf6d: Make ospf6_lsa_lock follow normal FRR pattern
The normal ospf6_lsa_lock call should return the pointer
to the lock data structure we are holding.  This is the
normal pattern for locking a data structure in FRR.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-10-11 11:14:45 -04:00
Renato Westphal
8b6b6b694d
Merge pull request #7222 from idryzhov/fix-debug
fix debug commands node inconsistencies
2020-10-09 21:58:24 -03:00
Donald Sharp
c527acf1eb ospf6d: Move header includes around to reflect reality
ospf6_network.h needs ospf6_top.h to be included
first.

This makes newer versions of gcc much much happier.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-10-08 20:44:23 -04:00
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
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
Soman K S
cad3ca4cf9 ospf6d : Intra area route for connected prefix not installed
Issue: When ospfv3 is configured on interface between routers in different network,
       the intra area route for the remote connected prefix is not installed in ospf
       route table and zebra

Fix: When the advertising router is directly connected but in different network
     the interface lookup in the intra area lsa processing does not provide
     the matching interface and valid nexthop. Therefore the nexthop is
     copied from the link state entry which contains valid
     ifindex required for installing the route.

Signed-off-by: kssoman <somanks@gmail.com>
2020-10-04 22:00:07 +05:30
Igor Ryzhov
d7b86ae4fe vtysh: dynamically generate the list of daemons for commands
Some daemons were actually missing from the static definitions: nhrpd,
babeld, eigrpd and bfdd.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-10-02 15:06:27 +03:00
Igor Ryzhov
dd73744d8c *: move "show debugging ..." commands to enable node
Use the same node for "show debugging" commands in all daemons.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2020-10-02 15:06:05 +03:00
Martin Buck
4c63a76a63 ospf6d: Fix flooding of old copies of self-originated LSAs
When receiving old copies (e.g. originated before the local ospf6d was
restarted) of supposedly self-originated LSAs which we previously tried to
flush from the network (by setting them to MaxAge), neither flood them nor
add them to our LSDB. Instead, keep the MaxAge version until we actually
(re-)originate them.

Possible fix for #7030. Testcase in #7168
(tests/topotests/ospf6-dr-no-netlsa-bug7030).

Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
2020-09-29 23:07:40 +02:00
Mark Stapp
f6d11a9bf6 ospf6d: fix SA warning
Fix an SA issue in ospf6_interface.c.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-09-03 12:57:36 -04:00
Kaushik
c5d28568c6 ospf6d : Preparing for ospf6d VRF support.
1. Removed the VRF_DEFAULT dependency from ospf6d.
2. The dependency on show command still exist
   will be fixed when the ospf6 master is available.

Co-authored-by: Harios <hari@niralnetworks.com>
Signed-off-by: Kaushik <kaushik@niralnetworks.com>
2020-09-01 03:02:46 -07:00
Quentin Young
25ee44b522
Merge pull request #6732 from opensourcerouting/printfrr-prep
*: preparations for printfrr coccinelle run
2020-07-29 14:29:34 -04:00
Quentin Young
65b86778c1
Merge pull request #6711 from GalaxyGorilla/bfd_isis_profiles
Add BFD profiles for IS-IS
2020-07-21 14:45:31 -04:00
David Lamparter
a5d68ac07a
Merge pull request #6700 from deastoe/ospf6-interface-decimal-area 2020-07-21 13:42:59 +02:00
Patrick Ruddy
de842255f9 ospf6d: decimal area format in interface command
The ospf6 "interface <blah> area <x>" command only allows the area to
be specified in the ipv4 address format, whereas the show run command
always shows it in the format in which the area was created. This causes
the frr-reload script to be unable to remove ospfv3 interfaces when the
area was created in decimal format. The solution is to allow both formats
to be configured as they can be for other area commands.

Signed-off-by: Duncan Eastoe <duncan.eastoe@att.com>
2020-07-14 17:50:54 +01:00
David Lamparter
dc13886849 ospf6d: pre-fix coccinelle hang points
coccinelle gets stuck in a few locations in ospf6d...

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-07-14 11:27:41 +02:00
David Lamparter
858f9c0822 ospf6d: use in_addr_t for area/router IDs
Signed-off-by: David Lamparter <equinox@diac24.net>
2020-07-14 11:16:01 +02:00
David Lamparter
3efd0893d0 *: un-split strings across lines
Remove mid-string line breaks, cf. workflow doc:

  .. [#tool_style_conflicts] For example, lines over 80 characters are allowed
     for text strings to make it possible to search the code for them: please
     see `Linux kernel style (breaking long lines and strings)
     <https://www.kernel.org/doc/html/v4.10/process/coding-style.html#breaking-long-lines-and-strings>`_
     and `Issue #1794 <https://github.com/FRRouting/frr/issues/1794>`_.

Scripted commit, idempotent to running:
```
python3 tools/stringmangle.py --unwrap `git ls-files | egrep '\.[ch]$'`
```

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-07-14 10:37:25 +02:00
GalaxyGorilla
4affdba79e *: add BFD profile support for IS-IS
BFD profiles can now be used on the interface level like this:

	interface eth1
	  ip router isis 1
          isis bfd
          isis bfd profile default

Here the 'default' profile needs to be specified as usual in the
bfdd configuration.

Signed-off-by: GalaxyGorilla <sascha@netdef.org>
2020-07-10 11:28:43 +00:00
Rafael Zalamena
c2aab69336 *: add filter northbound support
Allow all daemons to work with filter northbound.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-06-05 14:31:26 -03:00
Russ White
cb47b207f5
Merge pull request #6407 from donaldsharp/revert_ospfv3_fix
ospf6d: Revert "ospf6d: Prevent use after free"
2020-05-21 15:15:07 -04:00
Donald Sharp
e2e60c48bf ospf6d: Revert "ospf6d: Prevent use after free"
This reverts commit 0f9f74baeb.

This commit was causing crashes and the goal of this commit
was to make coverity sanity happy.  I'd rather have coverity
sad and not have ospfv3 crash

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-05-14 15:35:19 -04:00
Don Slice
780d4bdd80 ospf6d: withdraw redistributed prefixes based on prefix-list changes
Problem reported that when an a previously advertised redistributed
route should be withdrawn based on a prefix-list change or route-map
deletion, the external LSAs would remain in the database and not be
withdrawn from peers. This fix does the withdraw when the prefix-list
is changed or route-map is deleted.

Ticket: CM-28944
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2020-05-05 13:18:15 +00:00
David Lamparter
2768748b88 build: use VPATH for vtysh_scan
No need to put $(top_srcdir) everywhere.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2020-04-27 09:30:01 +02:00
David Lamparter
c334a16ef1
Merge pull request #6262 from qlyoung/remove-sprintf 2020-04-23 20:27:26 +02:00
Mark Stapp
4b0e09d878 ospf6d: fix SA warnings
Clean up some SA warnings in use of ospf6_lsa_unlock()

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-04-21 11:01:18 -04:00
Quentin Young
772270f3b6 *: sprintf -> snprintf
Replace sprintf with snprintf where straightforward to do so.

- sprintf's into local scope buffers of known size are replaced with the
  equivalent snprintf call
- snprintf's into local scope buffers of known size that use the buffer
  size expression now use sizeof(buffer)
- sprintf(buf + strlen(buf), ...) replaced with snprintf() into temp
  buffer followed by strlcat

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-04-20 19:14:33 -04:00
Donald Sharp
744ba56969 ospf6d: Prevent use after free
ospf6_lsa_unlock may free the lsa data structure as such
we cannot use the passed in data structure after freeing it.

Provide a mechanism to know if the data has been freed
using the same usage patterns of other _unlock functions
in FRR.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-04-18 08:35:06 -04:00
Donald Sharp
a83014ccd6
Merge pull request #6247 from FRRouting/nb_conversions
Merge nb_converions branch to master
2020-04-16 19:39:14 -04:00
Chirag Shah
6fd8972aef *: include vrf northbound module in init
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-16 08:00:15 -07:00
David Lamparter
f4b8291fcb *: move CLI node names to cmd_node->name
And again for the name.  Why on earth would we centralize this, just so
people can forget to update it?

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-16 12:53:59 +02:00
David Lamparter
243895805a *: move CLI parent data to cmd_node->parent_node
Same as before, instead of shoving this into a big central list we can
just put the parent node in cmd_node.

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-16 12:53:00 +02:00
David Lamparter
612c2c15d8 *: remove second parameter on install_node()
There is really no reason to not put this in the cmd_node.

And while we're add it, rename from pointless ".func" to ".config_write".

[v2: fix forgotten ldpd config_write]

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-16 12:53:00 +02:00
David Lamparter
249a771b63 *: remove cmd_node->vtysh
The only nodes that have this as 0 don't have a "->func" anyway, so the
entire thing is really just pointless.

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-16 12:53:00 +02:00
David Lamparter
62b346eefa *: clean up cmd_node initializers
... and use named assignments everywhere (so I can change the struct.)

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-16 12:53:00 +02:00
Don Slice
14ff96e67d ospf6d: stop looping thru same Inter-Area Router LSAs
Processing loop uncovered when there are multiple ABRs also
acting as ASBRs into the same area in ospf6.  The problem
was that when looking thru the list of Inter-area router
entries, if the current entry being processed matched, it
still merged next-hops and re-initiated the process.  In
this fix, if the route/path matches and the next-hops also
match, there is no need to re-initiate the examine process.

Ticket: CM-28900
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2020-04-09 18:46:45 +00:00
Donatas Abraitis
c4efd0f423 *: Do not cast to the same type
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-04-08 17:15:06 +03:00
David Lamparter
4c1458b595 bgpd, ospfd, ospf6d: long is not bool :(
... Oops ...

(for context, the defaults code originally didn't have a dedicated
"bool" variant and just used long for bools...  I derp'd this when
adding bool as a separate case :( )

Reported-by: Donald Sharp <sharpd@cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@diac24.net>
2020-04-02 21:16:04 +02:00
Donald Sharp
4062abfae5 ospf6d: Recent changes in our build cause const to be respected
We are seeing this crash:

New LWP 7673]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/lib/frr/ospf6d -d -F datacenter -M snmp -A ::1'.
Program terminated with signal SIGABRT, Aborted.
(gdb) bt
    vtysh=vtysh@entry=0) at lib/command.c:1288
(gdb)

The command entered is `debug ospf6 lsa inter-router examin`.  Code
inspection leads us to the fact that FRR is declaring the data as
const but we are attempting to modify it, causing the crash.

Remvoe the const of this set/get and let things work.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-04-01 06:37:34 -04:00
Donald Sharp
84b7a388c0 ospf6d: Fix spelling mistakes found by debian packaging
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-13 19:13:57 -04:00
Donatas Abraitis
0d6f7fd6fd *: Replace sizeof something to sizeof(something)
Satisfy checkpatch.pl requirements (check for sizeof without parenthesis)

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-03-08 21:44:53 +02:00
Donald Sharp
5e81f5dd1a *: Finish off the __PRETTY_FUNCTION__ to __func__
FINISH IT

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-03-06 09:23:22 -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
Donatas Abraitis
752022670a *: Remove break after return
Just a deadcode.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-13 15:39:54 +02:00
Renato Westphal
4b08a72ed1
Merge pull request #5763 from ton31337/fix/return_without_parent
*: Remove parenthesis on return for constants
2020-02-10 18:49:06 -03:00
Donatas Abraitis
95f7965d09 *: Remove parenthesis on return for constants
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-09 14:21:56 +02:00
Donald Sharp
792465c09f
Merge pull request #5104 from opensourcerouting/route-map-nbv2
lib: migrate route map to use northbound
2020-02-05 11:54:21 -05:00
Quentin Young
e1b36e132b *: remove null check before XFREE
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2020-02-04 13:19:37 -05:00
Rafael Zalamena
91835f1fd2 *: fix route map integration
Add the appropriated code to bootstrap route map northbound for all
daemons.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-02-04 14:05:43 -03: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
Sri Mohana Singamsetty
e164eb7012
Merge pull request #5473 from yasuhiro-ohara-ntt/ospf6d-self-orig-maxage-fix
ospf6d: ospf6_flood.c: self-originated MaxAge LSAs to install and refresh.
2020-01-21 22:34:04 +05:30
David Lamparter
429576883e doc: rename man pages to frr-*
The vrrpd one conflicts with the standalone vrrpd package; also we're
installing daemons to /usr/lib/frr on some systems so they're not on
PATH.

Signed-off-by: David Lamparter <equinox@diac24.net>
2020-01-15 14:05:11 +01:00
David Lamparter
c572fbfe2d ospfd: use new defaults mechanism (v2)
Some preprocessor constants converted to enums to make the names usable
in the preprocessor.

v2: better isolation between core and vty code to make future northbound
conversion easier.

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
Yasuhiro Ohara
15d9041bd9 ospf6d: ospf6_flood.c: self-originated MaxAge LSAs to install and refresh.
Signed-off-by: Yasuhiro Ohara <yasu@nttv6.jp>
2019-12-04 21:38:36 +09:00
David Lamparter
2b64873d24 *: generously apply const
const const const your boat, merrily down the stream...

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-12-02 15:01:29 +01: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
David Lamparter
364deb0487 *: make all route_map_rule_cmd const
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-11-30 00:38:32 +01:00