OpenSourceRouting
  1. OpenSourceRouting

quagga-snap

Public
AuthorCommitMessageCommit dateIssues
Christian FrankeDavid LamparterChristian Franke
c78a46c27f6ospf6d: fix refcounting in ospf6_asbr_lsa_removeWhen iterating over a list, also the last node should be unlocked again. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Vincent BernatDavid LamparterVincent Bernat
fd5006896fcospf6d: add "auto-cost reference-bandwidth" commandThis command allows the user to change to default reference bandwidth for cost calculations. The default value is 100 Mbps. With a default bandwidth of 10 MBps, the default cost becomes 10. Those values are consistent with OSPFv2. [DL: resolved conflicts in vty command additions & docs] Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Vincent BernatDavid LamparterVincent Bernat
c19543b223dospf6d: compute interface cost from its bandwidthPreviously, the interface cost was a fixed default value that a user was allowed to change with "ipv6 ospf6 cost XX". As what is done with OSPFv2, we change this behaviour to compute the default interface cost from the interface bandwidth. The user can still force a cost with "ipv6 ospf6 cost XX". He can get the default value with "no ipv6 ospf6 cost". Moreover, the default cost value was 1. T...
Ingo FlaschbergerDavid LamparterIngo Flaschberger
1db65fadf62ospf6d: solve segfaults with ospf6d on FreeBSDDo not send ospf6d hellos on fresh created interfaces without configuration (ie. no vlan configured). Ospf6d use ip6_mtu, if it's not initalised, Ospf6d tries to alloc indefinite size of memory. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
David LamparterDavid Lamparter
e708ed69aa0MMerge volatile/cumulus_ospf6dSigned-off-by: David Lamparter <equinox@opensourcerouting.org>
David LamparterDavid Lamparter
424cc3bd48dospf6d: fix interface_down() stopping hellosinterface_down() - which also handles some nonobvious cases like the last linklocal address disappearing - was previously not cancelling the hello timer. This had the effect of multiple such threads ending up scheduled after a quick down-up cycle. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
David LamparterDavid Lamparter
11b4f013557ospf6d: clear lsa->refresh before clearing LSAsThis fixes a SEGV when we receive a higher-SeqNum copy of a LSA that we originated ourselves, before a reboot of ospf6d. We create a new copy of the LSA to resync the SeqNum, but then half an hour later the old refresh thread ends up trying to refresh the free()'d old LSA. The SEGV is triggered by this chain: ospf6_lsdb_maxage_remover -> thread_execute(ospf6_lsa_refresh) -> old->refr...OSPFV3-16
Christian FrankeDavid LamparterChristian Franke
b13c1d9299dospf6d: handle missing link local address more gracefullyospf6 can't run on an interface without a link local address. Don't start the state machine when an interface comes up without such an ip and bring it up later, when a usable link local address is added. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
d9628728e09ospf6d: improve ordered shutdownImprove the _disable/_enable infrastructure so it gets into a more usable shape and make 'no router ospf6' actually work. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Remi GacogneVincent JARDINRemi Gacogne
a11e012e866security: Fix some typos and potential NULL-derefThis patch against the git tree fixes minor typos, some of them possibily leading to NULL-pointer dereference in rare conditions. Signed-off-by: Remi Gacogne <rgacogne-github@coredump.fr> Signed-off-by: Joachim Nilsson <troglobit@gmail.com> Acked-by: Feng Lu <lu.feng@6wind.com>
Christian FrankeDavid LamparterChristian Franke
b52aef18a9fzebra: log routes w/o gateway in rib_delete_ipv4Signed-off-by: Christian Franke <chris@opensourcerouting.org> Acked-by: Feng Lu <lu.feng@6wind.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Christian FrankeVincent JARDINChristian Franke
23f5f7c3dd8zebra: match gateway when deleting NEXTHOP_IPV4_IFINDEX routesSigned-off-by: Christian Franke <chris@opensourcerouting.org> Acked-by: Feng Lu <lu.feng@6wind.com>
Christian FrankeVincent JARDINChristian Franke
a25a1264a56ospfd: fixup log message in ospf_zebra_deleteSigned-off-by: Christian Franke <chris@opensourcerouting.org> Acked-by: Feng Lu <lu.feng@6wind.com>
Pradosh MohapatraVincent JARDINPradosh Mohapatra
6ee06fa9ed9bgpd: bgpd-set-v4-nexthop-for-v6-peering.patchBGP: While advertising v4 prefixes over a v6 session, set the correct v4 nexthop. ISSUE: For an IPv6 peer, BGPd sets the local router-id as the next-hop's v4 address. This is incorrect as the router-id may not be a valid next-hop to be included in UPDATEs that contain v4 prefixes. PATCH: Set the v4 address in the next-hop field based on the interface that the peering is on (directly connect...
Christian FrankeDavid LamparterChristian Franke
37531a7ec38ospf6d: clear DR info on interface_downThis fixes an issue where ospf6d would send incorrect hellos and perform wrong DR election when an interface went down and up again. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
1579a67f130ospf6d: set cmsg size correctlyOn both Linux and FreeBSD, msg_controllen should be set to CMSG_LEN, not CMSG_SPACE. This avoids sending 4 bytes of trailing garbage to the kernel. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
7d4aa1d57d5ospf6d: don't run DR election early on "ipv6 ospf6 priority"On changing the router priority, DR election should only be run when it was completed at least once before. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Dinesh DuttDavid LamparterDinesh Dutt
ba960d5ae43ospf6d: fix integrated configWith integrated config, the line defining an interface to be p2p is defined before assigning the interface to an area. When during the interface transition, there is an attempt to generate a router LSA, the process crashes. This fix addresses that. Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Pradosh Mohapatra <pmohapat at cumulusnetworks.com> Reviewed-by: Scott Fel...
Dinesh DuttDavid LamparterDinesh Dutt
a0edf6740e8ospf6d: add SPF logs, statistics, and display of SPF parametersSigned-off-by: Pradosh Mohapatra <pmohapat at cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com> [DL: adapted to rebase / readded randomly lost line] [DL: killed timeval_subtract] Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Dinesh DuttDavid LamparterDinesh Dutt
3d35ca482baospf6d: add 'log-adjacency-changes [detail]'Similar to OSPFv2, add support for 'log-adjacency-changes [detail]' to log changes in adjacency state of ospfv3 neighbors. Signed-off-by: Pradosh Mohapatra <pmohapat at cumulusnetworks.com> Reviewed-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com> Reviewed-by: Shrijeet Mukherjee <shm at cumulusnetworks.com> Signed-off-by: David Lampar...
Dinesh DuttDavid LamparterDinesh Dutt
7cf997226e8ospf6d: don't send LSAck on an interface if we've flooded the LSU out that i/fIf we flood an LSA back out the same interface we received it from, don't send an LSAck out that interface for that LSA. This is as per RFC 2328, section 13.5 Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Pradosh Mohapatra <pmohapat at cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com> Signed-off-by: David Lamparter <equinox@opensourcero...
Dinesh DuttDavid LamparterDinesh Dutt
01879114f73ospf6d: handle Prefix and Router Options bits correctlyEnsure that prefixes with the NU/LA bit set do not get added to the routing table. Ensure that routers with the V6/R bit set do not get added as transit routes. Signed-off-by: Dinesh Dutt <ddutt at cumulusnetworks.com> [DL: adjust to rebase] Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Dinesh DuttDavid LamparterDinesh Dutt
e68a67672ccospf6d: add LSA payload to show summary outputUnlike OSPFv2, the LSID of an LSA isn't sufficient to know what the contents of the LSA are. Its useful for debugging and basic eyeball tests to see the contents of the LSA in the simple tabular format of "show ipv6 ospf6 database". This patch adds that output to the command. It replaces the existing fields of "duration, Chksum and Length" with a single field called Payload which is dependent o...
Dinesh DuttDavid LamparterDinesh Dutt
931b1b8c9a6ospf6d: increment dbdesc seqnum on SeqNumberMismatch/BadLsReq eventAs per RFC 2328, section 10.3, if the neighbor state machine reaches SeqNumberMismatch state when the NSM is in state Exchange or greater, "router increments the DD sequence number in the neighbor data structure, declares itself master (sets the master/slave bit to master), and starts sending Database Description Packets, with the initialize (I), more (M) and master (MS) bits set.". The existi...
Dinesh DuttDavid LamparterDinesh Dutt
7a10a359e97ospf6d: don't change SeqNum on initial DbDesc messageThe code was setting the DbDesc seqnum to the current seconds value of time if this was the initial DbDesc. However, the same code was getting invoked if the initial DbDesc was retransmitted. Caused ANVL test XX.XX to fail. Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Dinesh DuttDavid LamparterDinesh Dutt
3b220289a4dospf6d: handle seqnum wrappingSigned-off-by: Shrijeet Mukherjee <shm at cumulusnetworks.com> Reviewed-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> [DL: mechanical adjust to rebase] [DL: adjust to removal of timerwheel code] Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Dinesh DuttDavid LamparterDinesh Dutt
f41b4a02165ospf6d: add overload supportOSPFv3: Support setting/clearing overload bit on router It is sometimes necessary for a router to gracefully remove itself from the SPF tree i.e. it cannot act as a transit router. It does this by setting the overload bit in the router LSA. This patch adds support for enabling/disabling the overload bit. Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Pradosh Mohapatr...
Dinesh DuttDavid LamparterDinesh Dutt
e7ad6b20d7aospf6d: fix linkdown handlingEnsure OSPFv3 handles link down even correctly. OSPFv3 checks only the administrative status of a link instead of its operative status. This prevents it up from detecting a real link down event and reacting appropriately. Only protocol timer timeouts make it detect a link down eventually. This patch makes it look for the operative status of a link instead of admin status. Signed-off-by: Dines...
Dinesh DuttDavid LamparterDinesh Dutt
b81e97a8a7fospf6d: correct nexthop through directly connected networksThis is implementing this part of RFC 2328: This is the "first case", see below, 16.1.1. The next hop calculation ... If there is at least one intervening router in the current shortest path between the destination and the root, the destination simply inherits the set of next hops from the parent. Otherwise, there are two cases. In the first case, the parent vertex is the root (the calculati...
Dinesh DuttDavid LamparterDinesh Dutt
17d003da963ospf6d: don't suppress empty router LSACurrently in OSPFv3 implementation, if all the interfaces are down/loopback or are without any full adjacencies, the router LSA is suppressed. So for a router with only stub networks, no router LSA is generated. However, intra-prefix LSAs are generated for the stub networks and these intra-prefix LSAs will reference the router LSA. So the router LSA really should not be suppressed. It needs to ...
Dinesh DuttDavid LamparterDinesh Dutt
e39d05384d4ospf6d: turn off expensive debuggingOSPF6 has very expensive LSDB and route debug on by default. This needs to be turned off for scaled performance. Signed-off-by: James Li <jli at cumulusnetworks.com> Reviewed-by: Dinesh G Dutt <ddutt at cumulusnetworks.com>Summary: Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Dinesh DuttDavid LamparterDinesh Dutt
a765eb9383cospf6d: convert LSDB to use route_node, improve performancethe performance in the presence of a large number of LSAs. I also verified that the performance improvements stayed in the presence of a large number of peers (I tested upto 128). Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com>Summary: Reviewed-by: James Li <jli at cumulusnetworks.com> Signed-off-by: David Lamparter <equin...
Dinesh DuttDavid LamparterDinesh Dutt
eb82e9ee817ospf6d: fix neighbor state machine (faster lsdb sync, RFC compliance)The OSPFv3 code doesn't do the following things right as part of an adjacency bringup: - Transmit DbDesc frames appropriately to ensure faster state transition to Loading state - Transmit LsReq frames when switching to exchange state and on receipt of an LS update in Loading state - Requesting LSAs multiple times in LsReq. It currently uses retransmit timer expiry to send the LsReq an...
Dinesh DuttDavid LamparterDinesh Dutt
c5926a92235ospf6d: add p2p interface supportSigned-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Signed-off-by: Ayan Banerjee <ayabaner at gmail.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com> Reviewed-by: James Li <jli at cumulusnetworks.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Dinesh DuttDavid LamparterDinesh Dutt
bf986da797eospf6d: fix various bugs in installing and flooding LSAsSigned-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Pradosh Mohapatra <pmohapat at cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Dinesh DuttDavid LamparterDinesh Dutt
8ae454e779dospf6d: add more details to show ipv6 ospf6 dataSpecifically, it displays the flags, lock and retransmission count fields. Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: JR Rivers <jrrivers at cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Dinesh DuttDavid LamparterDinesh Dutt
09df4574b95ospf6d: enable the commands to support detailed debugging of LSAs.The code for the commands exists, but it hasn't been defined in the definition of the command itself. This patch fixes that. Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Dinesh DuttDavid LamparterDinesh Dutt
ac58e143f72ospf6d: remove older version of LSA from neigbor retx list before prematurely aging it.See comment in code for very detailed issue and fix. Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Dinesh DuttDavid LamparterDinesh Dutt
2449fcd64aeospf6d: reinvoke MaxAge remover thread if not all MaxAge LSAs were flushed.MaxAge LSAs are being flushed out only on an event, unlike OSPFv2 where they're flushed out periodically. This causes certain LSAs to hang around forever, never getting flushed out. This patch makes flushing out MaxAge LSAs periodic, retriggered after a certain period if not all MaxAge LSAs were flushed out. Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Scott Feldman...
Dinesh DuttDavid LamparterDinesh Dutt
3810e06eebeospf6d: schedule SPF to run on events rather than directly on each event.OSPV3 SPF triggers on every SPF-able event instead of using timers the way OSPFv2 does. This patch makes SPF be triggered/throttled similar to OSPFv2. It adds a command to quagga identical to the OSPFv2 equivalent to configure these timers. Summary: Signed-off-by: Dinesh Dutt <ddutt at cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com> [DL: removed reference to oa...
Dinesh DuttDavid LamparterDinesh Dutt
8551e6dadceospf6d/ospfd: refactor some common definesRearranging common defs and structures for use betweeen OSPFv2 and OSPFv3. Created a new file called libospf.h under lib directory to hold defines that are common between OSPFv2 and OSPFv3 code bases. [DL: split of defines refactor from timer refactor] Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
David LamparterDavid Lamparter
a83a1e9c2f0build: fix tests/prng.h missing from distbroken by fa713d9... "zebra: rework recursive route resolution", and I forgot to squash the fix into that. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Vincent BernatDavid LamparterVincent Bernat
fed643f4093zebra: make rib_dump() compatible with IPv6 RIB[DL: resolved conflicts in zebra_rib.c] [DL: fix usage with --disable-ipv6] Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
f3a1732eb3bzebra: apply route-maps for interface routesSigned-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
c3e6b595160zebra: fix recursive-routes via ifindex routesSigned-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
e8d3d2991f7zebra: implement NEXTHOP_FLAG_ONLINKOn Linux, the kernel will only allow for a route to be installed when its gateway is directly attached according the kernel fib. There are cases when this restriction by the kernel is too strong, in those cases, we deploy the RTNH_F_ONLINK netlink flag. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
48a53dc71cbzebra: handle blackholes encountered in recursive resolutionSigned-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
fa713d9ee5ezebra: rework recursive route resolutionChange the datastructure for recursive routes. This brings the following benefits: By using struct nexthop also to store nexthops obtained by recursive resolution, we can get rid of quite a bit of code duplication in the fib management. (rt_netlink, rt_socket, ...) With the new datastructure we can make use of all available paths when recursive routes are resolved with multipath routes. Sign...
Christian FrankeDavid LamparterChristian Franke
bfac8dcd2fezebra: improve interface shutdown behaviourLinux removes IPv6 addresses when the interface is set down. Those addresses need to be readded when the interface is set up again. Also, an interface should not be reactivated from shutdown by configuring an ip address. Finally, remove the three-state logic for the shutdown setting as its sole current use may be mild confusion. Signed-off-by: Christian Franke <chris@opensourcerouting.org> S...
Christian FrankeDavid LamparterChristian Franke
02b4805f391zebra: don't change connected state from zebra/interface.cTry to avoid changing connected state from zebra/interface.c as this means making assumptions about kernel behaviour which may be or may become wrong. This state should rather be updated by events from the kernel. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>