Age | Commit message (Collapse) | Author |
|
The forwarding table was filled with wrong next-hops, and which is even
worse, it was done in a totally non-deterministic way.
The next-hop set for an IP prefix by isisd was the neighbor IS from
which the flooded LSP about the IP prefix was arrived. So, if an IS
received all the LSPs through its, say, eth0 interface, all entries
in the forwarding table contained the next IS reachable via eth0 as
the next-hop.
The solution is to propagate the correct next-hop further from node to
node as the SPF algorithm traverses the graph and selects the next
node to be added to the set of already covered nodes.
Also, the construction of the tentative node list (the nodes where the
shortest path is not known yet) was buggy: if a node was already a
member of this list with a certain path cost, and an alternative path
was found to it with a lower cost while processing a pseudo-node LSP,
it was not added to the list. This way, the path selected by isisd for
a certain prefix was the first one it encountered during the LSDB
processing.
Signed-off-by: Fritz Reichmann <fritz@reichmann.nl>
|
|
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.
|
|
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.
|
|
|
|
|
|
* isis_misc.[c|h], isis_lsp.[c|h]: Move static variables out of header
files.
|
|
|
|
|