OpenSourceRouting
  1. OpenSourceRouting

quagga-snap

Public
AuthorCommitMessageCommit dateIssues
Leonid RosenboimDavid LamparterLeonid Rosenboim
8d083b9ec5bbuild: update .gitignore for all test programs
David LamparterDavid Lamparter
f6295c29070build: add buildtest.sh scriptThis script compiles Quagga in a variety of configurations and optionally with LLVM and ICC (if those are installed). Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Hasso TepperDavid LamparterHasso Tepper
ea05767770dbuild: Fix build on MacOSX 10.8 (Mountain Lion)Newer MacOSX versions have support for both IPv6 advanced socket API RFCs (2292 and 3542) switchable in compile time, but neither of these is default for some strange reason. RFC3542 will be default in future, but for now we have to declare that we want to use the RFC3542 API before including <netinet/in.h>. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Hasso TepperDavid LamparterHasso Tepper
303bb005889build: Remove deprecated AM_CONFIG_HEADERAM_CONFIG_HEADER has been deprecated for many years and is removed completely from automake 1.13. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Stephen HemmingerDavid LamparterStephen Hemminger
3a69f74a0a9bgpd: uncork after each writeKeep data flowing, uncork after each BGP_WRITE_PACKET_MAX. This makes TCP send data sooner, since thread may not be scheduled again for a a longish time because of new UPDATE's coming in. Signed-off-by: Stephen Hemminger <shemminger@vyatta.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Stephen HemmingerDavid LamparterStephen Hemminger
d61c1bbd4bfbgpd: use recent monotonic time for readtimeThe readtime value is for diagnostic, and doesn't have to be highly accurate. This also fixes a problem where the readtime was being measured with system clock, but the peer_uptime() was comparing with bgp_clock. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Stephen HemmingerDavid LamparterStephen Hemminger
47f6aef02b8configure: allow building without getrusageMeasuring the resource usage of threads is moderately expensive since it requires doing an additional system call everytime a thread context switches. Make it possible to disable this with a configuration option. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Stephen HemmingerDavid LamparterStephen Hemminger
07ff4dc4d29bgpd: mark route nodes scheduled into work queueThe flag bit BGP_NODE_PROCESS_SCHEDULED is checked but never set. This causes route node to be scheduled multiple times under load. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Leonid RosenboimDavid LamparterLeonid Rosenboim
1e0ce7caa62bgpd: improve logging of invalid BGP NotificationsInvalid BGP Notification messages should be logged locally, cf. RFC4271, Sect. 6.4, p 34, NOTIFICATION Message Error Handling Current notification for invalid Notification code: 2012/10/10 02:17:54 BGP: message index 10 not found in bgp_notify_msg (max is 8) 2012/10/10 02:17:54 BGP: 192.168.1.1 received NOTIFICATION 10/0 ((no item found)) 0 bytes the logging should be a bit more clear....
Leonid RosenboimDavid LamparterLeonid Rosenboim
a689e6a9f47bgpd: fix error response to invalid BGP version numberBGP4-ANVL 20.1 ANVL tries to open BGP with version 5 and expects correct notification in response. Quagga sends notification, but with incorrect information in it. The data needs to be a 2-byte value, and for now we respond with 0004 for any peer version other than 4. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
a0de1d16cd0bgpd: fix a bug in bgp_attr_dupCommit 558d1fec11749d3257e improved bgp_attr_dup so it would be possible for the caller to provide attr_extra, allowing to use the stack instead of the heap for operations requiring only a short lived attr. However, this commit introduced a bug where bgp_attr_dup wouldn't copy attr_extra at all (but provide a reference to the original) if the caller provided attr_extra. Cc: Jorge Boncompte [D...
Christian FrankeDavid LamparterChristian Franke
b06b35f0754bgpd: fix a memleak on "set community none"Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Leonid RosenboimDavid LamparterLeonid Rosenboim
9499bf2bc6dzebra: don't overrun afi/safi array boundarieszebra was not checking afi/safi values. This was leading to crashes where these values were coming directly from some protocol's on-wire fields. Safeguarding them in zebra is a good start. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
15c71348569bgpd: store "no neighbor activate" for IPv4 unicastIf a neighbor was in a peer group for any AFI/SAFI, bgpd would never write a "no neighbor activate" line for IPv4 unicast, so a valid setup like following could be configured, but not saved: router bgp 64600 bgp router-id 198.51.100.1 network 198.51.100.0/24 neighbor peers peer-group neighbor 2001:db8::2 remote-as 64601 no neighbor 2001:db8::2 activate ! a...
Jorge Boncompte [DTI2]David LamparterJorge Boncompte [DTI2]
24e50f2013ebgpd: avoid heap fragmentation in bgp_clear_route_tableIn bgp_clear_route_table, moved cleanup code before the allocation of the work queue items. This returns the memory to the system allocator before allocating new and might therefore help avoiding heap fragmentation. * bgp_route.c: (bgp_clear_route_table) moved code blocks. Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net> Reviewed-by: Leonid Rosenboim <Leonid.Rosenboim@windriver.com> Sig...
Jorge Boncompte [DTI2]David LamparterJorge Boncompte [DTI2]
ebbb5fca5cabgpd: fix for leaked struct bgp_adj_[in|out] on peer shutdown If a peer with soft-reconfiguration configured is cleared, the function bgp_clear_route_table() doesn't free the bgp_adj_in and bgp_adj_out structures of route nodes that for some reason, ej. denied by a filter, don't have routes attached "rn->info == NULL". Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net> Reviewed-by: Leonid Rosenboim <Leonid.Rosenboim@windriver.com> Signed-off-by: ...
David LamparterDavid Lamparter
a5c851c7ff4lib: remove ALL_LIST_ELEMENTS dead code branchALL_LIST_ELEMENTS is checking node == NULL twice, which is causing a whole slew of false positives in Coverity. In this particular case, addressing this in the code is reasonable; being a macro, this appears all over the place without easy remedy. Acked-by: Scott Feldman <sfeldma@cumulusnetworks.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
高鹏David Lamparter高鹏
913ff66ba30zebra: fix netlink NL_PKT_BUF_SIZEChange default value of variable NL_PKT_BUF_SIZE to 8192UL. Cf. NLMSG_GOODSIZE definition of linux in include/linux/netlink.h for detail. Previously, on platforms with a page size greater than 8192, if you had added too many interfaces, zebra would not have enough buffer space to get the entire interface list. This resulted in an incomplete interface list. From: 高鹏 <gpstrive@gmail.com> [upd...
Hasso TepperDavid LamparterHasso Tepper
61be0ee8824build: Fix build for systems with no /bin/trueThere are systems with no /bin/true - it might have different path (/usr/bin/true) or even a shell builtin. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Hasso TepperDavid LamparterHasso Tepper
675769b1b17build: MacOSX needs BSD struct ip_mreq hack tooSigned-off-by: David Lamparter <equinox@opensourcerouting.org>
Doug VanLeuvenDavid LamparterDoug VanLeuven
327c4cdf757testzebra: pragma weak: detect systems with weak alias and provide alternativeLLVM clang does not support #pragma weak (bug 3679) on OS X. There are other systems where the #pragma weak has varying syntax. Added m4 file from the autoconf archives: http://www.gnu.org/software/autoconf-archive/ax_sys_weak_alias.html Fix up zebra/*_null.c files to use #pragma weak alias or stub functions if not available. It's incomplete in that the different format #pragma enable easier ...
David LamparterDavid Lamparter
b2e5bdbe10cMMerge remote-tracking branch 'savannah/sf/ospfd'Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Dinesh G DuttScott FeldmanDinesh G Dutt
e0630cb4d61ospfd: Remove dup MaxAge LSA floodStop additional, unnecessary flooding of MaxAge LSAs. When a MaxAge LSA is installed, if the LSA is prematurely aged or the LSA is not self-originated, the LSA is flushed. This results in a the LSA being flooded a second time and in some cases flooded back to the receiver (unless the receiver is also the advertising router). A MaxAge'd LSA has already been flooded in ospf_flood() as part of th...
Vishal KumarScott FeldmanVishal Kumar
d265548ffb8ospfd: Corrected ospfd Type-4/Type-5 ls update handlingThis fix is for Type-4 LS updates handling at a ABR router where ospf daemon is not distributing Type-4 LS updates with correct LS-Age after learning about a ASBR router in a ospf network. Because of this Type-5 LS updates are not learnt in ospf network. Testing Scenario: This can be re-produced by restarting the ospfd daemon on DUT (mentioned in figure below)before the Hello time interval expi...
Andrew CertainScott FeldmanAndrew Certain
0798cee34f5ospfd: compile warning cleanupsA set of patches to clarify some comments as well as cleanup code that was causing warnings. After these patches, the code can be compiled with -Wall -Wsign-compare -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wchar-subscripts -Wcast-qual -Wextra -Wno-unused-parameter -Wno-missing-field-initializers (what is current in trunk plus -Wextra -W...
Andrew CertainScott FeldmanAndrew Certain
de54b26cacaospfd: Update nsm_change_state to static scope, as it is not called from elsewhereSigned-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Andrew CertainScott FeldmanAndrew Certain
703819a9314ospfd: Changed TE instance check to remove -Wtype-limits warningSince LEGAL_TE_INSTANCE_RANGE() was being passed an unsigned int, a warning was being thrown due to the compare against >= 0. Since this macro was used only in one place, I removed the macro for an explict compare against a constant for the MAX. Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Andrew CertainScott FeldmanAndrew Certain
7798b6321cdlib: Changes to VTY string-parsing macros to remove warningsThe VTY_GET_INTEGER_RANGE macro was being used also just to check the range on a variable that wasn't used (for the "no" version of a VTY command), so I split the macro into two. Also, since the variable is unsigned, if MIN is zero, you get a warning about comparing an unsigned number against 0, giving rise to slightly convoluted logic. Note that the previous two patches were found by the -Wt...
Andrew CertainScott FeldmanAndrew Certain
f92c57f8ba4ospfd: Update comments to be more clear in packet processingSigned-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Andrew CertainScott FeldmanAndrew Certain
fbc043a8471ospfd: Fixed signed/unsigned masking of negative metricsIn the original code, negative metrics would be converted successfully by atoi() and then converted to an unsigned int that would always compare successfully against >= 0, leaving a large positive metric in the route map. Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Andrew CertainScott FeldmanAndrew Certain
1a61ad1011cospfd: Fixed typo bug in ospf_vty.h:ospf_neighborTypo bug. ospf_nbr_nbma_poll_interval_set() was being sent priority instead of interval. Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Christian FrankeScott FeldmanChristian Franke
bda3c326a3fospfd: fix argument parsing for distribute-listUse the correct argument for the protocol lookup in ospf distribute-list commands. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
David LamparterScott FeldmanDavid Lamparter
822d8f55199ospf: fix apiserver enableThe ospf_apiserver_enable flag was being cleared _after_ the "-a" command-line option set it to 1. Move up the initialisation, so enabling the OSPF API is actually possible. Reported-by: Rosario Mattera <rosmattera@gmail.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Leonard TracyScott FeldmanLeonard Tracy
2345a2221aaospf: Fix type-4 network mask to 0 per RFCThe OSPF RFC (2328) states that the network mask field of a type 4 LSA "is not meaningful and must be zero". OSPFD has been setting the mask as /32. This patch changes OSPFD to set the mask to 0 per the RFC Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Ayan BanerjeeScott FeldmanAyan Banerjee
faf98758325ospf: Reduce MaxAge log levelReduce the log level for the MaxAge LSA reception when such an LSA does not exist in the database. Signed-off-by: Ayan Banerjee <ayan@cumulusnetworks.com> Reviewed-by: Scott Feldman <sfeldma@cumulusnetworks.com> Reviewed-by: Nolan Leake <nolan@cumulusnetworks.com> Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Dinesh DuttScott FeldmanDinesh Dutt
91e6a0e5ca9ospf: Convert MAX_AGE LSA list to treeStore the MaxAge LSA list in a tree instead of a linked list for efficient access. Walking the list can be quite inefficient in some large systems and under certain tests. ospfd maintains the list of LSA's that have been MaxAge'd out in a separate linked list for removal by a remover/walker thread. When a new LSA is to be installed, the old LSA is ejected and when it is ejected, the MaxAge LSA...
Ayan BanerjeeScott FeldmanAyan Banerjee
4ba4fc85768ospf: forward ref. of areas for "max-metric router-lsa administrative" cmdIn the event areas are created at a later point of time with respect to the playback of the "max-metric router-lsa administrative" command, those areas do not get into indefinite max-metric mode. This patch is inteneded to store the configuration and apply it to all future areas that may be created. In the process, some other bugs that were there with respect to restart etc are fixed up. Test...
Ayan BanerjeeScott FeldmanAyan Banerjee
16a86b3e2f8ospf: suppress delete using replacementAfter a SPF run, OSPF deletes routes that have changed in terms of any metric, type, and/or next-hops and re-adds them. Given that the Zebra-RIB already support replacement semantics, we suppress deletes for routes that will be added back again. This has the following advantages. It reduces the number of IPC messages between OSPF/Zebra. Also, in the current flow, a batch of route deletes were ...
David LamparterDavid Lamparter
a16dcf7c11dbuild: check for .git in configure.acDon't error out when someone tries using --with-pkg-git-version on something that isn't actually a git checkout (like a dist tarball). Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
David LamparterDavid Lamparter
4209a88759cbuild: fix dist tarballautomake file lists haven't quite kept up with recent changes, time to fix them up so the dist tarball actually works... Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
David LamparterDavid Lamparter
fd76f41ac02build: update ICC warning CFLAGSIntel's icc doesn't accept "-wd <number>" anymore, it's "-wd<number>" these days. But, anyhow, the warnings disabled in Quagga's configure.ac don't seem to appear anywhere at all, so let's just remove the option completely. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Nick HilliardDavid LamparterNick Hilliard
e1a555b67ccisisd: fix ipv6 metric endiannessthe isis ipv6 reachability metric is transmitted in big endian / network format, but isis_spf_process_lsp() does not convert this into host endian format when mucking around with local cost + received metric. This patch fixes this problem and makes received ipv6 metrics work properly on little-endian machines. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
478c1125cfcisisd: verify metrics on metric-style transitionWhen switching to metric-style transition, circuit metrics should also be verified to be in the narrow range 0..63. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Christian FrankeDavid LamparterChristian Franke
4fb7c84f1b5isisd: fix metrics check for metric-style narrowWhen switching to narrow metric style, all configured circuits are verified to have a valid narrow style metric. Check te_metric instead of metric_default as the latter is only 8bit wide and may overflow for wide style metrics. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
David LamparterDavid Lamparter
e8aca32f312isisd: address Coverity warningsthis fixes a bunch of issues found by Coverity SCAN and flagged as "high" impact -- although, they're all rather minute issues. * isisd/isis_adjacency.c: one superfluous check, one possible NULL deref * isisd/isis_circuit.c: two prefix memory leaks * isisd/isis_csm.c: one missing break * isisd/isis_lsp.c: one possible NULL deref * isisd/isis_pfpacket.c: one error-case fd leak * isisd/isis_rout...
David LamparterDavid Lamparter
318c8040abcisisd: always join all IS-IS multicast groupsThe socket is only created once when an interface is brought up, and the multicast groups were joined according to configuration at that point. This breaks when later switching an interface to another IS-IS level. Since, for a separate conformance issue (ANVL ISIS-6.4), we should be inspecting the destination address anyway, the simplest fix here is to just join all groups unconditionally. Th...ISIS-6
Christian FrankeDavid LamparterChristian Franke
f818c8f3fb9isisd: save metric-style narrowisisd defaults to wide metric style. So if narrow metric style is configured, a matching setting should be written to the configuration, allowing a narrow metric-style setting to be saved. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
David LamparterDavid Lamparter
de543de3d76isisd: fix spftree_area_del typo causing SEGVspftree_area_del didn't clear the IPv6 L2 spftree due to a simple typo, leading to a SEGV on shutdown when the still-armed timer would try to run an IPv6 L2 SPF calculation with its data free'd already. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
David LamparterDavid Lamparter
b72f345d2e0isisd: drop hellos without supported protocol listisisd should not form adjacencies on receiving an IS-IS Hello without a list of supported protocols (cf. RFC 1195 s4.4 p32 "Maintaining Router Adjacencies") Also fixes memleaks in these error cases. * isisd/isis_pdu.c: improve TLVFLAG_NLPID handling Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Tested-by: Martin Winter <mwinter@opensourcerouting.org>
David LamparterDavid Lamparter
19f78cebd2cisisd: refuse adjacencies with our own system IDisisd would form an adjacency with another router despite the system IDs being identical. This would later cause an assertion failure like this: assertion=0x555555596db8 "isis_find_vertex (spftree->paths, id, vtype) == ((void *)0)", file=0x555555596c60 "isis_spf.c", line=515, function=0x555555597900 "isis_spf_add2tent") at log.c:619 which is caused by trying to add a path expected to not...