Commit Graph

271 Commits

Author SHA1 Message Date
Donald Sharp
b2654e35e5
Merge pull request #16232 from zhou-run/202406171755
isisd: Even after configuring "no hostname dynamic", the topology still displays the hostname.
2024-07-24 10:30:34 -04:00
Russ White
893ba83ff3
Merge pull request #16090 from zhou-run/202405271057
isisd: When operating multiple areas, the system ID behaves abnormally.
2024-07-08 23:00:35 -04:00
zhou-run
0db469958c isisd: Even after configuring "no hostname dynamic", the topology still displays the hostname.
The command "show isis topology" calls print_sys_hostname() to display the system ID or hostname, but it does not check the area->dynhostname flag.

Signed-off-by: zhou-run <zhou.run@h3c.com>
2024-06-19 15:44:51 +08:00
zhou-run
1f5446d2fc isisd: When operating multiple areas, the system ID behaves abnormally.
When clearing the net in one of the areas, the system ID is unconditionally cleared, even if the net does not include the current system ID.

Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com>

isisd: When operating multiple areas, the system ID behaves abnormally.

When deleting one of the areas, even if the net under the area includes the current system ID, the system ID still remains.

Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com>

isisd: fix frrbot styling issues found

fix frrbot styling issues found

Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com>

isisd: fix frrbot styling issues found

fix frrbot styling issues found

Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com>

isisd: Resolve compilation issues.

The higher version updates 'struct area_addr' to 'struct iso_address'.

Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com>

isisd: fix frrbot styling issues found

fix frrbot styling issues found

Signed-off-by: zhou-run <166502045+zhou-run@users.noreply.github.com>
2024-05-27 16:39:30 +08:00
Louis Scalbert
c3ccc0a53b isisd: fix non present level display is show isis database detail json
When a level is not present in show isis database detail json, {} is
displayed.

Display nothing for non present level.

Fixes: a2cac12a63 ("isisd: Add json to show isis database command.")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-05-23 14:43:21 +02:00
Louis Scalbert
980d76c403 isisd: fix display of router in show isis database <rtr> json
Display information about a particular router in show isis database in
an single value array for compatibility with the display of all routers.

Fixes: a2cac12a63 ("isisd: Add json to show isis database command.")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2024-05-23 14:43:21 +02:00
Russ White
8756deffbf
Merge pull request #15947 from anlancs/isisd/fix-lsp-json
isisd: fix json display for database command
2024-05-07 11:29:46 -04:00
anlan_cs
639d8027f1 isisd: fix json display for database command
The current json display lost a lot of LSPs, added them.

Fixed the json format for two commands:
"show isis database detail json"
"show isis database json"

Signed-off-by: anlan_cs <anlan_cs@tom.com>
2024-05-07 14:23:06 +08:00
anlan_cs
563fa1fdc4 isisd: remove unnecessary check for vrf
The `vrf_name` is always non-NULL in `isisd` code, so remove the
unnecesary check to make it clear.

Signed-off-by: anlan_cs <anlan_cs@tom.com>
2024-05-05 19:08:43 +08:00
anlan_cs
fa4ad1f347 isisd: adjust the format of display command
Before:
```
anlan# show isis neighbor
Area xx:
  System Id           Interface   L  State        Holdtime SNPA
 0023.0000.0000      enp1s0      2  Down          Expiring2c53.4a30.0820
```

After:
```
anlan# show isis neighbor
Area xx:
 System Id           Interface   L  State         Holdtime SNPA
 0023.0000.0000      enp1s0      2  Down          Expiring 2c53.4a30.0820
```

The `-` display format caused by no hello packet in `isis_adj_print_vty()`
is same as that of above "Expiring".

Signed-off-by: anlan_cs <anlan_cs@tom.com>
2024-05-03 23:41:36 +08:00
David Lamparter
e354c6e343 isisd: fix overload state location
This belongs in `/var/lib`, not `/var/run`.  Also the filename was
typo'd (`isid-restart.json`).

Change to proper location and fall back to previous in case it's the
first restart after an FRR update from a version with the bugged path.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-01-27 19:02:52 +01:00
Carmine Scarpitta
bdbbb26d55 isisd: Make SRv6 Node MSDs customizable
Add CLI commands to customize SRv6 Node MSD values.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-09-11 22:11:50 +02:00
Carmine Scarpitta
c57ff2d123 isisd: Add CLI command to enable SRv6
r1# conf
r1(config)# router isis <area-tag>
r1(config-router)# segment-routing srv6

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:16 +02:00
Carmine Scarpitta
af3141985f isisd: Terminate SRv6 when an area is created
Call `isis_srv6_area_term()` to cleanup the per-area SRv6 information
when an IS-IS area is terminated.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00
Carmine Scarpitta
943bce654e isisd: Initialize SRv6 when an area is created
Call `isis_srv6_area_init()` to initialize the per-area SRv6 DB when an
IS-IS area is created.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-08-04 09:29:15 +02:00
Philippe Guibert
4aee03bfd5 isisd: add the 'redistribute table' internal support
The 'redistribute table' command does not create the internal
contexts with the appropriate table identifier.

Redistributed prefixes in IS-IS do not care about the
table identifier. Add a linked list of redistribution
contexts, and map the nb configuration to the linked list.

- A new 'table' attribute is added in the 'struct
isis_redist' context.
- The 'isis_redist_update_zebra_subscriptions()' function
is removed and is replaced by direct call to zebra API
for turning on/off redirection.
- The redistributed routes coming from zebra import the
'tableid' information.
- The fabricd redistribute running-config is reworked,
and the 'get_redist_settings()' function is removed.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-07-12 14:06:00 +02:00
Donald Sharp
161972c9fe *: Rearrange vrf_bitmap_X api to reduce memory footprint
When running all daemons with config for most of them, FRR has
sharpd@janelle:~/frr$ vtysh -c "show debug hashtable"  | grep "VRF BIT HASH" | wc -l
3570

3570 hashes for bitmaps associated with the vrf.  This is a very
large number of hashes.  Let's do two things:

a) Reduce the created size of the actually created hashes to 2
instead of 32.

b) Delay generation of the hash *until* a set operation happens.
As that no hash directly implies a unset value if/when checked.

This reduces the number of hashes to 61 in my setup for normal
operation.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-06-26 14:59:21 -04:00
Louis Scalbert
87acad8698 isisd, lib: fix flex-algo database memory leak at area destruction
Free flex-algorithm database memory when an IS-IS area is destroyed.

Fixes: 735fb37db1 ("lib: add library for igp flexible-algorithm")
Fixes: 7f198e063c ("isisd: add isis flex-algo base interface")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2023-04-27 15:37:36 +02:00
Louis Scalbert
eb74bbd5b3 isisd: fix wrong pointer test in area_resign_level()
Fix a wrong pointer test issue reported by coverity scanner #1560314

Fixes: 860b75b40e ("isisd: calculate flex-algo constraint spf")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2023-04-20 16:23:50 +02:00
Louis Scalbert
06ddebc822 isisd: clarify ifdef fabricd
clarify ifdef fabricd

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2023-04-18 11:33:15 +02:00
Hiroki Shirokura
80ef2e89ee isisd: merge algorithm tables
Create a temporary "merge" route table that contains the routing
information from all algorithms and install the merge route table
into the FIB.

Signed-off-by: Hiroki Shirokura <hiroki.shirokura@linecorp.com>
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2023-04-18 11:33:15 +02:00
Hiroki Shirokura
860b75b40e isisd: calculate flex-algo constraint spf
Take into account the flex-algo affinity constraints to compute the SPF
tree.

Signed-off-by: Hiroki Shirokura <hiroki.shirokura@linecorp.com>
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2023-04-18 11:33:15 +02:00
Hiroki Shirokura
7f198e063c isisd: add isis flex-algo base interface
Adds basic functionality to Flex-Algo for IS-IS wrapping lib/flex_algo.
The configuration interface will be added in the next commit.

Signed-off-by: Hiroki Shirokura <hiroki.shirokura@linecorp.com>
Signed-off-by: Eric Kinzie <ekinzie@labn.net>
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2023-04-18 10:14:28 +02:00
Hiroki Shirokura
46fb37cf67 lib,vtysh,isisd,yang: algo cli/yang/callbacks
Define the IS-IS flex-algo structure in yang, the CLI configuration
commands and the skeletons of frontend and backend functions that are
called by the CLI code.

Signed-off-by: Hiroki Shirokura <hiroki.shirokura@linecorp.com>
Signed-off-by: Eric Kinzie <ekinzie@labn.net>
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2023-04-18 10:13:59 +02:00
Russ White
f26a87cd24
Merge pull request #12698 from Orange-OpenSource/isisd
Isisd/Lib: Add new printfrr format facility for Intermediate System ID
2023-04-11 09:49:01 -04:00
Isabella de Leon
f64adebdee isisd: Add PDU drop counter to "show isis summary"
Adding a new drop counters section to "show isis summary".

New output:

Drop counters per PDU type:
  P2P IIH: <count>
  L2 LSP: <count>
  L2 CSNP: <count>
  L2 PSNP: <count>
  ...

Before:
r1# show isis summary
vrf             : default
Process Id      : 972
System Id       : 0000.0000.0001
Up time         : 00:00:48 ago
Number of areas : 1
Area TE:
  Net: 49.0000.0000.0000.0001.00
  TX counters per PDU type:
    P2P IIH: 36
     L2 LSP: 8
    L2 CSNP: 12
    L2 PSNP: 11
  RX counters per PDU type:
    P2P IIH: 37
     L2 LSP: 17
    L2 CSNP: 12
    L2 PSNP: 6
Advertise high metrics: Disabled
...

After:
r1# show isis summary
vrf             : default
Process Id      : 972
System Id       : 0000.0000.0001
Up time         : 00:00:19 ago
Number of areas : 1
Area TE:
  Net: 49.0000.0000.0000.0001.00
  TX counters per PDU type:
    P2P IIH: 16
     L2 LSP: 2
    L2 CSNP: 4
    L2 PSNP: 6
   LSP RXMT: 0
  RX counters per PDU type:
    P2P IIH: 16
     L2 LSP: 5
    L2 CSNP: 4
    L2 PSNP: 2
  Drop counters per PDU type:
    P2P IIH: 2
  Advertise high metrics: Disabled
...

Signed-off-by: Isabella de Leon <ideleon@microsoft.com>
2023-03-28 16:25:01 -07:00
Donald Sharp
24a58196dd *: Convert event.h to frrevent.h
We should probably prevent any type of namespace collision
with something else.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24 08:32:17 -04:00
Donald Sharp
cd9d053741 *: Convert struct event_master to struct event_loop
Let's find a better name for it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24 08:32:17 -04:00
Donald Sharp
e16d030c65 *: Convert THREAD_XXX macros to EVENT_XXX macros
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24 08:32:17 -04:00
Donald Sharp
2453d15dbf *: Convert struct thread_master to struct event_master and it's ilk
Convert the `struct thread_master` to `struct event_master`
across the code base.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24 08:32:17 -04:00
Donald Sharp
4f830a0799 *: Convert thread_timer_remain_XXX to event_timer_remain_XXX
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24 08:32:17 -04:00
Donald Sharp
332beb64b8 *: Convert thread_cancelXXX to event_cancelXXX
Modify the code base so that thread_cancel becomes event_cancel

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24 08:32:17 -04:00
Donald Sharp
907a2395f4 *: Convert thread_add_XXX functions to event_add_XXX
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24 08:32:17 -04:00
Donald Sharp
e6685141aa *: Rename struct thread to struct event
Effectively a massive search and replace of
`struct thread` to `struct event`.  Using the
term `thread` gives people the thought that
this event system is a pthread when it is not

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24 08:32:17 -04:00
Donald Sharp
cb37cb336a *: Rename thread.[ch] to event.[ch]
This is a first in a series of commits, whose goal is to rename
the thread system in FRR to an event system.  There is a continual
problem where people are confusing `struct thread` with a true
pthread.  In reality, our entire thread.c is an event system.

In this commit rename the thread.[ch] files to event.[ch].

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-24 08:32:16 -04:00
Olivier Dugeon
5d39a81907 isisd: Update to the new printfrr ISO format
This path replaces isisd_format_id, sysid_print, snpa_print, rawlspid_print and
isonet_print functions by the new printfrr ISO System ID & Network Address
format facilities. It also updates the isisd code to the new iso_address
structure defined in lib/iso.h

Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
2023-03-21 15:21:47 +01:00
Isabella de Leon
7c47551763 isisd: Add advertise high metrics base functionality
Implement advertise-high-metrics set function - when advertise-high-metrics is configured, iterate through each isis interface and update each metric to its high metric value. When advertise-high-metrics is disabled, revert each interface's metric to its originally configured value.

Signed-off-by: Isabella de Leon <ideleon@microsoft.com>
2023-02-28 11:39:12 -08:00
Isabella de Leon
d74f913c5f isisd: Add advertise-high-metrics CLI/YANG support, modify show output
New config and show functionality:

r1# conf
r1(config)# router isis 1
r1(config-router)#
  advertise-high-metrics  Advertise high metric value on all interfaces
  area-password           Configure the authentication password for an area
  ...
r1(config-router)# advertise-high-metrics
r1(config-router)# end
r1# show isis summary
...
Area 1:
  Net: 49.0001.1720.1700.0002.00
  TX counters per PDU type:
     L2 IIH: 1
    P2P IIH: 36
   LSP RXMT: 0
  RX counters per PDU type:
  Advertise high metrics: Enabled
  Level-2:
   ...
r1# conf
r1(config)# router isis 1
r1(config-router)# no advertise-high-metrics
r1(config-router)# end
r1# show isis summary
...
Area 1:
  Net: 49.0001.1720.1700.0002.00
  TX counters per PDU type:
     L2 IIH: 1
    P2P IIH: 45
   LSP RXMT: 0
  RX counters per PDU type:
  Advertise high metrics: Disabled
  Level-2:
   ...
r1#

Signed-off-by: Isabella de Leon <ideleon@microsoft.com>
2023-02-28 11:39:12 -08:00
Russ White
4fa0162568
Merge pull request #12819 from isabelladeleon12/isis_load_config_before_lsp_gen
isisd: Delay lsp generation to after config processing is complete
2023-02-28 08:38:44 -05:00
Isabella de Leon
3b0e97e150 isisd: Fix isisd to generate lsps after config processing is complete
Before:
isisd generates its initial lsp before fully processing the written config. Ex: lsp_generate() is called in isis_instance_area_address_create(), before other configs that may affect the lsp are loaded in, like set-overload-bit.

After:
isisd generates its initial lsp as soon as the config is fully processed. This was done by utilizing the initialization config callbacks, similar to bgp's implementation.

Signed-off-by: Isabella de Leon <ideleon@microsoft.com>
2023-02-21 08:49:34 -08:00
David Lamparter
acddc0ed3c *: auto-convert to SPDX License IDs
Done with a combination of regex'ing and banging my head against a wall.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-02-09 14:09:11 +01:00
Donald Sharp
a348c9456f isisd: Add missing enum's to switch statement
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-01-31 15:15:42 -05:00
Pushpasis Sarkar
5b86dc9f0f
Merge pull request #11594 from louis-6wind/lfa-netlink
isisd: apply fast-reroute as soon an interface or an adjacency falls down
2022-11-08 23:19:39 +05:30
Donald Sharp
103372fd75 isisd: Make clang-16 compiler happy with isisd
Signed-off-by: Donald Sharp <donaldsharp72@gmail.com>
2022-10-25 20:06:49 -04:00
Louis Scalbert
694fa86728 isisd: apply fast-reroute on an adjacency failure
When a adjacency falls down, the primary routes are not deleted on the
dataplane until the SPF is recomputed. Even the backup routes are
pre-installed on the dataplane, there is no fast-route optimization.

Reasons for an adjacency to come down are:
- BFD down
- Hello timer timeout
- User adjacency clear

Apply the backup route switchover for fast-reroute as soon an IS-IS
adjacency falls down before the first SPF re-computation. Pre-computed
backup routes are applied sooner.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2022-10-24 11:50:13 +02:00
Russ White
07735ca345
Merge pull request #11980 from isabelladeleon12/set_overload_startup
isisd: Add support for set-overload on-startup
2022-10-13 10:59:24 -04:00
Isabella de Leon
450841fe05 isisd: Add JSON object functions to save overload status between restarts.
Signed-off-by: Isabella de Leon <ideleon@microsoft.com>
2022-10-12 16:57:32 -07:00
Isabella de Leon
4afc783610 isisd: Add expected behavior with set-overload-bit
Signed-off-by: Isabella de Leon <ideleon@microsoft.com>
2022-10-12 10:52:27 -07:00
Donald Sharp
cf00164b69 *: Create and use infrastructure to show debugs in lib
There are lib debugs being set but never show up in
`show debug` commands because there was no way to show
that they were being used.  Add a bit of infrastructure
to allow this and then use it for `debug route-map`

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-07 12:39:05 -04:00
Isabella de Leon
49b27ea24d isisd: Add overload timer and overload on startup functionality
Signed-off-by: Isabella de Leon <ideleon@microsoft.com>
2022-09-30 10:39:18 -07:00