summaryrefslogtreecommitdiffstats
path: root/ospfd (follow)
Commit message (Collapse)AuthorAgeFilesLines
* ospfd: avoid the redundant timersanlan_cs8 days1-2/+1
| | | | | | | Since the timer thread for ```OSPF_ROUTE_AGGR_DEL``` has been created, the subsequent "no summary-address" commands shouldn't trigger redundant timers. Signed-off-by: anlan_cs <anlan_cs@126.com>
* ospfd: fix wrong check for two commandsanlan_cs11 days1-4/+8
| | | | | | | The users would know the failure of some case for the two commands, just return the error ```CMD_WARNING_CONFIG_FAILED```. Signed-off-by: anlan_cs <anlan_cs@126.com>
* ospfd: Correct one wordanlan_cs2025-01-036-13/+13
| | | | Signed-off-by: anlan_cs <anlan_cs@126.com>
* ospfd: Correct invalid SR-MPLS output labelOlivier Dugeon2024-11-231-0/+6
| | | | | | | | | | | | | | | | | | | | | | | When OSPFd starts, there is 2 possible scenarios for Segment Routing: 1/ Routes associated to Prefixes are not yet available i.e. Segment Routing LSA are received before LSA Type 1. In this case, the function ospf_sr_nhlfe_update() is triggered when a new SPF is launch. Thus, neighbors and output label are always synchronise with the routing table. 2/ Routes are already available i.e. LSA Type 1 are received before Segment Routing LSA, in particular the Router Information which contains the SRGB. During nhlfe computation, perfixes are leave with incomplete configuration, in particular, the SR nexthop is set to NULL. If this scenario is handle through the function update_out_nhlfe (triggered when SRGB is received or modified from a neighbor node), the output label is not correctly configured as the nexthop SR node associated to the prefix has been leave to NULL. This patch correct this problem by calling the function compute_nhlfe() when the nexthop SR Node associated to the prefix is NULL within the update_out_nhlfe() function. Thus, we guarantee that the SR prefix is always correctly configuration indpedently of the scenario i.e. arrival of the different LSA. Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
* ospfd: OSPF multi-instance default origination fixesAcee Lindem2024-11-176-21/+96
| | | | | | | | | | | | When originating a default AS-External LSA in one OSPF instance, it wasn't working if the criteria route was installed by another OSPF instance. This required more flexible processing of the OSPF external route information. Also fix problem multi-instance display for "show ip ospf <instance> database ...". Signed-off-by: Acee Lindem <acee@lindem.com>
* Merge pull request #17346 from ↵Jafar Al-Gharaibeh2024-11-051-2/+7
|\ | | | | | | | | LabNConsulting/aceelindem/fix_ospf_refresh_interval_assert ospfd: Fix assert in LSA refresh interval setting
| * ospfd: Fix assert in LSA refresh interval settingAcee2024-11-051-2/+7
| | | | | | | | | | | | | | | | | | Under certain timing conditions, the current logic asserts in ospf_lsa_refresh_delay(). While this isn't readily reproducible, the only explanation is that the conversion from struct timeval to milliseconds is 0 due to rounding off the microseconds. Signed-off-by: Acee <aceelindem@gmail.com>
* | Merge pull request #17319 from opensourcerouting/fix/no_ospf_router-idRuss White2024-11-052-6/+8
|\ \ | |/ |/| ospfd: Use router_id what Zebra has if we remove a static router_id
| * ospfd: Use router_id what Zebra has if we remove a static router_idDonatas Abraitis2024-10-311-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we set router-id, e.g. `router-id x.x.x.x`, then we have: ``` pc.donatas.net# show ip ospf | include Router ID OSPF Routing Process, Router ID: x.x.x.x ``` But once we remove it (`no router-id x.x.x.x`), the old router-id remains. This is kinda OK, but to be consistent with OSPFv3 we should use what Zebra already has, instead of retaining the old one. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
| * ospfd: Add a hidden command for old `no router-id`Donatas Abraitis2024-10-311-0/+7
| | | | | | | | | | | | | | A new command is `ospf router-id ...`, but the old one is also valid. Just a no form was missed. Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
* | Merge pull request #17194 from ↵Russ White2024-11-014-78/+58
|\ \ | | | | | | | | | | | | LabNConsulting/aceelindem/ospf-ls-refresh-interval-fix ospfd: Fix opaque LSA refresh interval and modify LSA cmds.
| * | ospfd: Fix opaque LSA refresh interval and modify LSA cmds.Acee Lindem2024-10-254-78/+58
| | | | | | | | | | | | | | | | | | | | | | | | The configured OSPF refresh interval was not being used for opaque LSA (it always used the constant). Also, modified the timers lsa min-arrival command to have a maximum of 5000 msecs as well as providing a path for backward command compatibility. Added missing user documentation for both timers lsa min-arrival and timers throttle lsa all. Signed-off-by: Acee Lindem <acee@lindem.com>
* | | Revert "ospfd: update ospf_asbr_status when using no_area_nssa command"Donald Sharp2024-11-011-2/+0
| |/ |/| | | | | This reverts commit 71aa5ab7f6f166065e3b869e3c33ba5b7a57fccb.
* | Merge pull request #17189 from Shbinging/fix_some_ospf_unset_commands_syntaxDonatas Abraitis2024-10-291-7/+7
|\ \ | | | | | | ospfd:fix syntax of some ospf no commands
| * | ospfd:fix syntax of some no commandsShbinging2024-10-231-7/+7
| |/ | | | | | | | | | | | | | | | | | | | | | | | | Fix syntax of the following no commands: 1. `no area virtual link A.B.C.D hello-interval <NUM>`, `<NUM>` can be omitted. 2. `no area nssa default-information-originate metric <NUM>`, `<NUM>` can be omitted. 3. `no area nssa range cost <NUM>`, `<NUM>` can be omitted. 4. `no area default cost <NUM>`, `<NUM>` can be omitted. 5. `no ospf write-multiplier <NUM>`, `<NUM>` can be omitted. 6. `no default-information originate metric <NUM>`, `<NUM>` can be omitted. 7. `no distance <NUM>`, `<NUM>` can be omitted. Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
* / ospfd:fix the bug that the empty area was not free after no area range ↵Shbinging2024-10-221-0/+2
|/ | | | | | | | command was executed When we use the no area X.X.X.X range A.B.C.D/M command, if the area no longer has an interface to which it belongs, then the area should be deleted from the LSDB. This processing logic is consistent with instructions such as no network area and no area authentication. Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
* Merge pull request #17134 from Shbinging/fix_no_area_nssa_commandDonatas Abraitis2024-10-181-0/+2
|\ | | | | ospfd: update ospf_asbr_status when using no_area_nssa command
| * ospfd: update ospf_asbr_status when using no_area_nssa commandShbinging2024-10-171-0/+2
| | | | | | | | | | | | In the processing of nssa, if the number of areas that need to be translated is greater than 0, then abr will be regarded as asbr, and it will be marked (0x3) in the flag of router lsa. When a certain area is set from nssa to a normal area, the areas that need to be translated may be reduced. The asbr should be re-interpreted as abr when the translated area is 0. Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
* | Merge pull request #17065 from Shbinging/fix_some_ospf_commandsDonatas Abraitis2024-10-171-2/+3
|\ \ | | | | | | ospfd: fix some ospf commands
| * | ospfd: fix no area shortcut MODE command, MODE can be defaultShbinging2024-10-161-1/+2
| | | | | | | | | | | | Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
| * | ospfd: fix no_area_range_cost_NUM command, NUM can be omittedShbinging2024-10-111-1/+1
| |/ | | | | | | Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
* | ospfd: Fixup ospf_lsa.[ch] to properly spell out parameters for functionsDonald Sharp2024-10-162-89/+77
| | | | | | | | | | | | | | | | | | | | Our standard says when in a .h file and declaring a function all parameters must have their variables spelled out. Let's do this for ospf_lsa.h Modified ospf_lsa.c to also use event instead of thread, and uint8_t instead of unsigned short. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* | ospfd:fix the bug that the empty area was not free after the command was ↵Shbinging2024-10-151-0/+2
|/ | | | | | | | executed When we use the no area X.X.X.X range A.B.C.D/M command, if the area no longer has an interface to which it belongs, then the area should be deleted from the LSDB. This processing logic is consistent with instructions such as no network area and no area authentication. Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
* Merge pull request #16853 from Shbinging/no_ip_ospf_dead_interval_minimalRuss White2024-09-241-2/+2
|\ | | | | ospfd: fix snytax of some no commands
| * ospfd: fix no ospf abr-type syntaxShbinging2024-09-201-1/+1
| | | | | | | | Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
| * ospfd: fix no ip ospf dead-interval minimal hello-multiplier syntaxShbinging2024-09-181-1/+1
| | | | | | | | Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
* | Merge pull request #16851 from Shbinging/fix_timer_throttle_spfRuss White2024-09-241-0/+4
|\ \ | | | | | | ospfd: reset spf_hold_multiplier when current SPF delay state is changed
| * | ospfd: reset spf_hold_multiplier when current SPF delay state is changedShbinging2024-09-231-0/+4
| |/ | | | | | | Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
* | ospfd: Interface 'ip ospf neighbor-filter' startup config not applied.Acee Lindem2024-09-201-0/+9
| | | | | | | | | | | | | | | | When 'ip ospf neighbor-filter <filter-name>' is configured in the startup configuration, it is in the running configuration but not applied on the interface. Signed-off-by: Acee Lindem <acee@lindem.com>
* | ospfd: Fix heap corruption vulnerability when parsing SR-Algorithm TLVAcee Lindem2024-09-181-1/+2
| | | | | | | | | | | | | | | | When parsing the SR-Algorithm TLV in the OSPF Router Information Opaque LSA, assure that not more than the maximum number of supported algorithms are copied from the TLV. Signed-off-by: Acee Lindem <acee@lindem.com>
* | ospfd: Add vrf name to debug functions in ospf_zebra.cDonald Sharp2024-09-181-86/+102
|/ | | | | | | | | This file had a bunch of debugs that were operating on specific vrf's but not telling you which vrf this was happening in. Add code to allow operator debugging to understand what vrf is being worked on. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* ospfd: fix missing '[no]ip ospf graceful-restart hello-delay <N>' commandsDmitrii Turlupov2024-09-131-0/+4
| | | | Signed-off-by: Dmitrii Turlupov <turlupov@bk.ru>
* ospfd: An OSPF Ack should be sent when P2MP reflooding is delayed.Acee Lindem2024-09-121-4/+12
| | | | | | | | | | When "ip ospf network point-to-multipoint delayed-reflooding" is configured, LSAs received on an OSPF P2MP network are not reflooded. Since LSA reflooding would normally serve as an implied LSA acknowledgment, an explicit OSPF ack should be sent to avoid retransmission by the neighbor which orginally flooded the LSA on the P2MP network. Signed-off-by: Acee Lindem <acee@lindem.com>
* Merge pull request #16759 from lsang6WIND/ospf_logRuss White2024-09-101-3/+10
|\ | | | | ospfd: logging behavior for area id mismatches
| * ospfd: logging behavior for area id mismatchesLoïc Sang2024-09-091-3/+10
| | | | | | | | | | | | | | | | | | When an ospf interface is not in the backbone area, but it receives a packet from the backbone, no logs are generated for this mismatch. However, the opposite scenario does generate logs. Add a log for this case. Signed-off-by: Loïc Sang <loic.sang@6wind.com>
* | ospfd: add assert to resolve SA warningMark Stapp2024-09-061-0/+10
|/ | | | | | | Resolve a couple of SA warnings by asserting that pointers are valid. Signed-off-by: Mark Stapp <mjs@cisco.com>
* *: Spelling issuesDonald Sharp2024-08-181-3/+2
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* ospfd: Fix SA warnings in ospf_packet.c and ospf_vty.cAcee2024-08-162-4/+3
| | | | | | | Fix SA warnings in ospf_packet.c and ospf_vty.c. The former was introduced by commit ed480148844259b7e9e30ed92489cdf44085457e. Signed-off-by: Acee <aceelindem@gmail.com>
* Merge pull request #16590 from donaldsharp/spelling_in_masterMark Stapp2024-08-152-6/+5
|\ | | | | *: Fix spelling errors found
| * *: Fix spelling errors foundDonald Sharp2024-08-152-6/+5
| | | | | | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* | ospfd: Remove deprecated router_info_area_id_cmdDonatas Abraitis2024-08-141-11/+0
|/ | | | Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
* Merge pull request #16376 from c-po/ospfd-ldp-syncRuss White2024-07-231-1/+1
|\ | | | | ospfd: fix internal ldp-sync state flags when feature is disabled
| * ospfd: fix internal ldp-sync state flags when feature is disabledChristian Breunig2024-07-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | When enabling "mpls ldp-sync" under "router ospf" ospfd configures SET_FLAG(ldp_sync_info->flags, LDP_SYNC_FLAG_IF_CONFIG) so internally knowing that the ldp-sync feature is enabled. However the flag is not cleared when turning of the feature using "nompls ldp-sync"! https://github.com/FRRouting/frr/issues/16375 Signed-off-by: Christian Breunig <christian@breunig.cc>
* | ospfd: fix state location mixupDavid Lamparter2024-07-101-8/+22
|/ | | | | | | | | | In the "2x2 matrix" of these, I accidentally edited "row-wise" when I should've edited "column-wise"... *sigh* Reported-by: github.com/rbfnet Fixes: #16349 Fixes: 110945ba0d2 ("ospfd: fix GR state location") Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* ospfd: Fix several problems with direct acknowledgments and improved delay acks.Acee Lindem2024-07-067-108/+264
| | | | | | | | | | | | | | | | | | | | 1. On P2MP interfaces, direct ack would include the same LSA multiple times multiple packets are processed before the OSPF interfae direct LSA acknowledgment event is processed. Now duplicates LSA in the same event are suppressed. 2. On non-broadcast interfaces, direct acks for multiple neighbors would be unicast to the same neighbor due to the multiple OSPF LS Update packets being process prior to the OSPF interface direct ack event. Now, separate direct acks are unicast to the neighbors requiring them. 3. The interface delayed acknowledgment timer runs would run continously (every second as long as the interace is up). Now, the timer is set when delayed acknowledgments are queued and all queued delayed acknowledges are sent when it fires. 4. For non-broadcast interface delayed acknowledgments, the logic to send to multiple neighbors wasn't working because the list was emptied while building the packet for the first neighbor. Signed-off-by: Acee Lindem <acee@lindem.com>
* ospfd: Improve OSPF neighbor retransmission list granularity and precisionAcee Lindem2024-06-2014-96/+414
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current OSPF neighbor retransmission operates on a single per-neighbor periodic timer that sends all LSAs on the list when it expires. Additionally, since it skips the first retransmission of received LSAs so that at least the retransmission interval (resulting in a delay of between the retransmission interval and twice the interval. In environments where the links are lossy on P2MP networks with "delay-reflood" configured (which relies on neighbor retransmission in partial meshs), the implementation is sub-optimal (to say the least). This commit reimplements OSPF neighbor retransmission as follows: 1. A new data structure making use the application managed typesafe.h doubly linked list implements an OSPF LSA list where each node includes a timestamp. 2. The existing neighbor LS retransmission LSDB data structure is augmented with a pointer to the list node on the LSA list to faciliate O(1) removal when the LSA is acknowledged. 3. The neighbor LS retransmission timer is set to the expiration timer of the LSA at the top of the list. 4. When the timer expires, LSAs are retransmitted that within the window of the current time and a small delta (50 milli-secs default). The LSAs that are retransmited are given an updated retransmission time and moved to the end of the LSA list. 5. Configuration is added to set the "retransmission-window" to a value other than 50 milliseconds. 6. Neighbor and interface LSA retransmission counters are added to provide insight into the lossiness of the links. However, these will increment quickly on non-fully meshed P2MP networks with "delay-reflood" configured. 7. Added a topotest to exercise the implementation on a non-fully meshed P2MP network with "delay-reflood" configured. The alternative was to use existing mechanisms to instroduce loss but these seem less determistic in a topotest. Signed-off-by: Acee Lindem <acee@lindem.com>
* ospfd: Fix memory leak after cleaning cleaning up interfaceIp JSON fieldDonatas Abraitis2024-06-121-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ``` ================================================================= ==6717==ERROR: LeakSanitizer: detected memory leaks Direct leak of 1008 byte(s) in 14 object(s) allocated from: 0 0x7f9ea0dc7d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28) 1 0x7f9ea034d51f in json_object_new_object (/lib/x86_64-linux-gnu/libjson-c.so.3+0x351f) 2 0x564b56d0fed6 in show_ip_ospf_interface_common ospfd/ospf_vty.c:4011 3 0x564b56d1068c in show_ip_ospf_interface ospfd/ospf_vty.c:4285 4 0x7f9ea06fe1c0 in cmd_execute_command_real lib/command.c:1002 5 0x7f9ea06fe684 in cmd_execute_command lib/command.c:1060 6 0x7f9ea06feb03 in cmd_execute lib/command.c:1227 7 0x7f9ea08415b2 in vty_command lib/vty.c:616 8 0x7f9ea0841a5d in vty_execute lib/vty.c:1379 9 0x7f9ea084b367 in vtysh_read lib/vty.c:2374 10 0x7f9ea08350cd in event_call lib/event.c:2011 11 0x7f9ea0764386 in frr_run lib/libfrr.c:1217 12 0x564b56c25b18 in main ospfd/ospf_main.c:295 13 0x7f9e9fd5bc86 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21c86) Indirect leak of 7168 byte(s) in 14 object(s) allocated from: 0 0x7f9ea0dc7d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28) 1 0x7f9ea0350fa4 in lh_table_new (/lib/x86_64-linux-gnu/libjson-c.so.3+0x6fa4) Indirect leak of 1232 byte(s) in 14 object(s) allocated from: 0 0x7f9ea0dc7d28 in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xded28) 1 0x7f9ea0350f82 in lh_table_new (/lib/x86_64-linux-gnu/libjson-c.so.3+0x6f82) SUMMARY: AddressSanitizer: 9408 byte(s) leaked in 42 allocation(s). *********************************************************************************** ``` Fixes: e24ff4c275f0729f75be9f68d08be80ac1e0ec56 ("ospfd: Drop `interfaceIp` from `show ip ospf neigh json") Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
* ospfd: Drop `interfaceIp` from `show ip ospf neigh json`Donatas Abraitis2024-06-111-166/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Deprecated. Now it's under interface field directly: ``` { "interfaces":{ "enp3s0":{ "ifUp":true, "ifIndex":2, "mtuBytes":1500, "bandwidthMbit":100, "ifFlags":"<UP,LOWER_UP,BROADCAST,RUNNING,MULTICAST>", "ospfEnabled":true, "ipAddress":"192.168.10.19", "ipAddressPrefixlen":24, "ospfIfType":"Broadcast", "localIfUsed":"192.168.10.255", "area":"0.0.0.0", "routerId":"100.100.100.100", "networkType":"POINTOPOINT", "cost":1000, "transmitDelaySecs":1, "state":"Point-To-Point", "priority":1, "opaqueCapable":true, "mcastMemberOspfAllRouters":true, "timerMsecs":10000, "timerDeadSecs":40, "timerWaitSecs":40, "timerRetransmitSecs":5, "timerHelloInMsecs":2924, "nbrCount":0, "nbrAdjacentCount":0, "grHelloDelaySecs":10, "prefixSuppression":false, "nbrFilterPrefixList":"N\/A" } } } ``` Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
* Merge pull request #16075 from anlancs/ospfd/fix-cmd-instanceDonald Sharp2024-05-281-1/+14
|\ | | | | ospfd: add instance id for one command
| * ospfd: add instance id for one commandanlan_cs2024-05-251-1/+14
| | | | | | | | | | | | | | | | | | Add the specific instance id for the command: ``` show ip ospf [{(1-65535)$instance|vrf <NAME|all>}] graceful-restart helper [detail] [json] ``` Signed-off-by: anlan_cs <anlan_cs@tom.com>