summaryrefslogtreecommitdiffstats
path: root/isisd/isis_lsp.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* *: Rename `struct thread` to `struct event`Donald Sharp2023-03-241-2/+2
| | | | | | | | | 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>
* *: auto-convert to SPDX License IDsDavid Lamparter2023-02-091-14/+1
| | | | | | Done with a combination of regex'ing and banging my head against a wall. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* isisd: Add overload timer and overload on startup functionalityIsabella de Leon2022-09-301-0/+1
| | | | Signed-off-by: Isabella de Leon <ideleon@microsoft.com>
* Merge pull request #10701 from rampxxxx/feat_isis_json_show_cmdsRuss White2022-03-081-5/+12
|\ | | | | Feat isis json show cmds
| * isisd: Add json to show isis database command.Javier Garcia2022-03-021-5/+12
| | | | | | | | Signed-off-by: Javier Garcia <javier.martin.garcia@ibm.com>
* | *: Change thread->func to return void instead of intDonald Sharp2022-02-241-1/+1
|/ | | | | | | The int return value is never used. Modify the code base to just return a void instead. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* isisd: fix processing of the attached bitIgor Ryzhov2021-07-131-0/+2
| | | | | | | | | | There are two problems with the current code for processing the attached bit: - we should process it when acting both a level-1-only and level-1-2 - we should add the default route when we don't have L2 adjacensies, not when we don't have other routers configured on the device Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
* *: require semicolon after DEFINE_<typesafe...>David Lamparter2021-03-171-2/+2
| | | | | | Again, see previous commits. Signed-off-by: David Lamparter <equinox@diac24.net>
* *: remove more sprintf()Quentin Young2021-02-091-2/+2
| | | | | | | Should be just a couple non-development, non-test occurrences of this function left now. Signed-off-by: Quentin Young <qlyoung@qlyoung.net>
* isisd: introduce two LSP iteration functionsRenato Westphal2020-08-271-0/+20
| | | | | | | | | | | | | | | | | | | Iterating over all IP or IS reachability information from a given LSP isn't a trivial task. That information is scattered throughout different TLV types, and which ones need to be used depend on multiple variables (e.g. the SPF tree address family, MT-ID, etc). This not to mention that an LSP might consist of multiple fragments. Introduce the following two LSP iteration function to facilitate obtaining IP/IS reachability information from a given LSP: * isis_lsp_iterate_ip_reach() * isis_lsp_iterate_is_reach() These functions will be used extensively by the upcoming TI-LFA code. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
* isisd : Transformational changes to support different VRFs.Kaushik2020-08-141-4/+8
| | | | | | | | | 1. Created a structure "isis master". 2. All the changes are related to handle ISIS with different vrf. 3. A new variable added in structure "isis" to store the vrf name. 4. The display commands for isis is changed to support different VRFs. Signed-off-by: Kaushik <kaushik@niralnetworks.com>
* isisd: replace dict_* with DECLARE_RBTREEDavid Lamparter2019-04-271-10/+21
| | | | | | | | Historically, isisd has been carrying around its own red-black tree to manage its LSP DB in. This replaces that with the newly-added DECLARE_RBTREE_*. This allows completely removing the dict_* code. Signed-off-by: David Lamparter <equinox@diac24.net>
* fabricd: Improve LSP flooding logChristian Franke2018-12-071-0/+2
| | | | | | | Also track when we received an LSP as do not reflood, as well as the time when we last considered flooding it. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* fabricd: Add `show openfabric flooding` commandChristian Franke2018-12-071-0/+3
| | | | | | Add a command to show to what neighbors an LSP has been flooded. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* isisd: Make lspid_print non-staticChristian Franke2018-12-071-0/+1
| | | | | | | `lspid_print` is useful in other places, so make it available in `isis_lsp.h`. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* isisd: Provide better flooding debuggingChristian Franke2018-12-071-1/+5
| | | | | | Show from where LSP flooding is triggered. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* isisd: delay lsp regeneration while events are still coming inChristian Franke2018-10-241-3/+3
| | | | | | | | | | | | | | | When there is a stream of events coming in, where IS-IS learns about a lot of updates, IS-IS would regenerate its LSPs before the updates have been processed completely. This causes suboptimal convergence because the intermediate state will be flooded. Only after the configured `lsp_gen_interval`, a new update with the correct and final state will be generated. Resolve this by holding off LSP generation while there are still events coming in. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* isisd: Log LSP-update trigger sourceChristian Franke2018-10-241-1/+6
| | | | | | | | For debugging the timing of LSP generation, it is useful to know which event caused a regeneration to be scheduled. Therefore, add this information to the debug log. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* isisd: Replace isis_event_adjacency_state_change with a hookChristian Franke2018-10-051-0/+1
| | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* fabricd: reimplement LSP transmission logicChristian Franke2018-09-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Before this commit, isisd/fabricd maintained a bitfield for each LSP to track the SRM bit for each circuit, which specifies whether an LSP needs to be sent on that circuit. Every second, it would scan over all LSPs in `lsp_tick` and queue them up for transmission accordingly. This design has two drawbacks: a) it scales poorly b) it adds unacceptable latency to the update process: each router takes a random amount of time between 0 and 1 seconds to forward an update. In a network with a diamter of 10, it might already take 10 seconds for an update to traverse the network. To mitigate this, a new design was chosen. Instead of tracking SRM in a bitfield, have one tx_queue per circuit and declare that an LSP is in that queue if and only if it would have SRM set for that circuit. This way, we can track SRM similarly as we did before, however, on insertion into the LSP queue, we can add a timer for (re)transmission, alleviating the need for a periodic scan with LSP tick and reducing the latency for forwarding of updates. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* *: use C99 standard fixed-width integer typesQuentin Young2018-03-271-8/+8
| | | | | | | | | | | | | | | | | | | | | | The following types are nonstandard: - u_char - u_short - u_int - u_long - u_int8_t - u_int16_t - u_int32_t Replace them with the C99 standard types: - uint8_t - unsigned short - unsigned int - unsigned long - uint8_t - uint16_t - uint32_t Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* isisd: always link fragments to fragment #0, even when learned by CSNPChristian Franke2017-08-111-1/+2
| | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* isisd: purge LSP correctly on confusionChristian Franke2017-08-031-1/+1
| | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* isisd: send/receive LSPs with new parserChristian Franke2017-08-031-18/+18
| | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* isisd: send/receive *SNPs with new parserChristian Franke2017-08-031-3/+0
| | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* isisd: Don't use structs to encode/decode PDU headerChristian Franke2017-08-031-1/+0
| | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* *: reindentreindent-master-afterwhitespace / reindent2017-07-171-76/+69
| | | | | | indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'` Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* *: make consistent & update GPLv2 file headersDavid Lamparter2017-05-151-4/+4
| | | | | | | | | | | The FSF's address changed, and we had a mixture of comment styles for the GPL file header. (The style with * at the beginning won out with 580 to 141 in existing files.) Note: I've intentionally left intact other "variations" of the copyright header, e.g. whether it says "Zebra", "Quagga", "FRR", or nothing. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* isisd: function lsp_te_tlv_fit is never usedChristian Franke2017-04-281-2/+0
| | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org>
* isisd: remove topology generatorDavid Lamparter2016-11-141-11/+0
| | | | | | | Licensing is unclear and the tool is a testbed-only half-broken pile of goo. Remove. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* Add support of Traffic Engineering to IS-ISOlivier Dugeon2016-09-031-0/+2
| | | | | | | | | | | | | | | | | | | | | | These patches is an implementation of RFC5305 that enable the support of Traffic Engineering in IS-IS * isisd/Makefile.am: Add new files isis_te.c and isis_te.h * isisd/isis_circuit.[c,h]: Add new mpls_te_circuit structure to isis_circuit structure to handle new Traffic Engineering TLVs * isisd/isis_lsp.c: Update LSP handler to mux/demux Traffic Engineering TLVs * isisd/isis_main.c: Add initialisation of ISIS TE * isisd/isis_pdu.c: Update function process_p2p_hello() to retrieve remote IP address to populate Traffic Engineering TLV. * isisd/isis_te.[c,]: Implementation of RFC5305 * isisd/isis_tlv.[c,h]: Update TLV definition and function to handle Traffic Engineering ones * isisd/isis_zebra.c: Add new function isis_zebra_link_params() to retrieve the link parameters of interfaces from ZBus to populate the Traffic Engineering TLVs * isisd/isisd.[c,h]: Add Traffic Engineering support with new debug command Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
* isisd: purge on correct levelChristian Franke2016-03-301-1/+2
| | | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org> Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
* isisd: allow to adjust lsp-mtuChristian Franke2016-03-301-1/+2
| | | | | Signed-off-by: Christian Franke <chris@opensourcerouting.org> Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
* isisd: add Google's changes to IS-ISJosh Bailey2012-04-071-27/+19
|
* * isis_lsp.h: Added backpointer to the area from LSP. For now it's usedhasso2005-09-191-0/+2
| | | | | | | | | | | | | only in generated topology LSPs. * isisd.[ch]: Cleanup CLI commands related to topology generation and added command to specify base fo dynamic hostname for topology LSPs. * isis_lsp.c: Rewrite almost all code related to generation topology LSPs (top_lsp_refresh(), generate_topology_lsps() and build_topology_lsp_data() functions). Topology is connected to own LSP now (lsp_build_nonpseudo). Commented out lsppdu_realloc functions, it's not used any more hopefully. Topology generation feature is actually useful now.
* * isis_lsp.c (lsp_update): Remove LSP from database before updatinghasso2005-09-161-1/+1
| | | | | | its data and put it back after. Database entry MUST contain at least correct pointers to the sysid to get correct compare results. * isis_lsp.[ch], isis_pdu.c: Pass level to the lsp_update() function.
* No warnings here any more.hasso2004-10-071-1/+1
|
* Compile with gcc-4.0.hasso2004-09-261-2/+2
|
* * isisd.c: thread_master *master is already defined in isis_main.c.hasso2004-09-241-3/+0
| | | | | * isis_misc.[c|h], isis_lsp.[c|h]: Move static variables out of header files.
* Indentation only. No any functional changes.hasso2004-09-101-41/+42
|
* Initial revisionjardin2003-12-231-0/+132