OpenSourceRouting
  1. OpenSourceRouting

quagga-snap

Public
AuthorCommitMessageCommit dateIssues
Tom GoffPaul JakmaTom Goff
e7a6d80d4feospf6d: Route locking (memory) cleanup* ospf6_route.c: (ospf6_route_best_next) Allows unlock route, even when there's no next route. This is consistent with how ospf6_route_next() behaves. * ospf6_intra.c: (ospf6_intra_prefix_lsa_remove) Make sure the last route considered is always unlocked. This is needed when the for loop terminates because ospf6_route_is_prefix() returns zero.
Tom GoffPaul JakmaTom Goff
ae2254aa7f2ospf6d: Have ospf6d cleanup when it terminates normallyA clean exit makes it easier to use memory debuggers. * ospf6_asbr.c: (ospf6_asbr_terminate) Add a function to do route map cleanup. * ospf6_lsa.c: (ospf6_lsa_terminate) Add a function to cleanup the lsa handler vector. * ospf6_main.c: (ospf6_exit) Add an function that causes ospf6d to gracefully exit. * ospf6_message.c: (ospf6_message_terminate) Add a function that frees the send and ...
Tom GoffPaul JakmaTom Goff
fd795eb89ccospf6d: Remove obsolete code* ospf6_area.c: (ospf6_area_delete) Get rid of unused code that refers to a nonexistent function and structure member.
Tom GoffPaul JakmaTom Goff
1d19234e79cospf6d: Fix memory allocation issues in SPF* ospf6_area.c: Call ospf6_spf_table_finish() before deleting the spf table. This ensures that the associated ospf6_vertex structures are also freed. * ospf6_spf.c: Only allocate a priority queue when a spf calculation is actually performed. Also defer calling ospf6_spf_table_finish().
Tom GoffPaul JakmaTom Goff
7e69d993673lib: zlog should clean up its memory* log.c: (closezlog) Also free the dynamically allocated filename when a log is closed.
Tom GoffPaul JakmaTom Goff
4bd045d5dd2lib: Add a function to delete all interfacesif.c: (if_terminate) This adds a cleanup function that can be called when a daemon exits, similar to vty_terminate().
Stephen HemmingerPaul JakmaStephen Hemminger
c8e7b895905bgpd: use Jenkins hash for BGP transit, cluster and attr hashes* bgp_attr.c: I observed while doing some debugging that even for simple tests there was a lot of hash collisions for BGP attributes. Switch to using Jhash rather than additive hashing. Probably overkill, but the function is fast and available. ({attrhash,cluster,transit}_hask_key_make) convert to Jenkins hash, instead of additive hash.
Stephen HemmingerPaul JakmaStephen Hemminger
6392aa83c4flib: Better hashing of string values using Bernstein hash* hash.{h,c}: (string_hash_make) Hash optimised for strings, current implementation using Bernstein hash, which offers a good compromise between distribution and performance. * distribute.c: (distribute_hash_make) use previous instead of additive string hash. * if_rmap.c: (if_rmap_hash_make) ditto
Barry FriedmanPaul JakmaBarry Friedman
25ff1e88bb5bgpd: Remove extra lock on interior table nodeIf the radix tree creates an extra interior node in bgp_node_get(), it locks the interior node even though this node is not returned to the caller, so it may never be unlocked. The lock prevents this node from being deleted. * bgpd/bgp_table.c: (bgp_node_get) Remove lock on interior node which prevents proper node deletion
Wataru TanitsuPaul JakmaWataru Tanitsu
c099baf6f0abgpd: Fix display of unsigned attributes* bgp_route.c: (route_vty_out*) The local prefix, metric and weight values are all stored as uint32_t. Change the format to %u so that large values are not displayed as negative integers.
Stephen HemmingerPaul JakmaStephen Hemminger
7badc26301cbgpd: fix use of free memory by update_rsclient* bgp_route.c: (bgp_static_update_rsclient) BGP sometimes crashes when removing route server client because of use after free. The code to update rsclient created a local static copy of bgp attributes but neglected to handle the extra information pointer. The extra information was getting freed by bgp_attr_unintern() and reused later when the copy was passed to bgp_attr_intern(). ...
Robert BaysPaul JakmaRobert Bays
368473f6120bgpd: unlock node on aggregate error* bgp_route.c: (bgp_aggregate_set) make sure to unlock BGP node if failure
Robert BaysPaul JakmaRobert Bays
f6269b4f7a2bgpd: fix errors in aggregate address command* bgpd: (bgp_aggregate_{set,unset,delete}) This fixes locking and other issues with aggregate set/unset command
Stephen HemmingerPaul JakmaStephen Hemminger
fac9c6b63aabgpd: use XCALLOC to allocate bgpd damp array* bgpd: (bgp_damp_parameter_set) The BGP reuse_index is not initialized properly. This would cause sporadic crash when disabling dampening. Use XCALLOC correctly and the right size array is initialized and no memset is needed.
Chris CaputoPaul JakmaChris Caputo
6c88b44dcb2bgpd: fix bgp_node locking issues* bgpd: Connected table locks were being locked but not unlocked, such that eventually a lock would exceed 2^31 and become negative, thus triggering an assert later on. * bgp_main.c: (bgp_exit) delete connected elements along with ifp's. * bgp_nexthop.c: (bgp_nexthop_lookup{,_ipv6}) add missing unlocks (bgp_multiaccess_check_v4) ditto (bgp_connected_{add,delete}) Use a distinct memtype ...
Chris HallPaul JakmaChris Hall
cca85d27a59lib: Fix accounting of memory* lib/memory.c: (zrealloc) If is called with NULL pointer then it should increment allocations because it behaves the same as zmalloc. (zfree) is called with NULL pointer, it does nothing therefore allocation count should not change.
Paul JakmaPaul Jakma
d1de1c25962MMerge paul/ospfd/201012-review ospfd and lib/ fixes and performance improvements
Denis OvsienkoDenis Ovsienko
e6844aa5d23doc: fix "ipv6 address" interface command syntax (#608)
John KempDenis OvsienkoJohn Kemp
30b0017696dbgpd: improve "monotonic" uptime correctionOlder versions of Quagga/Zebra would output a value in MRT table dump files for "uptime" aka "ORIGINATED" that was a WALL clock value. Given that uptime is now internally a bgp_clock MONOTONIC value, the output in the MRT files is showing up as monotonic. Note: time of MRT dump is still recorded correctly as a time() based value, so we haven't lost that value. Proposal is to correct the upti...
Stephen HemmingerDenis OvsienkoStephen Hemminger
b016e9def42ripngd: copy debug statements fix from ripdDoesn't ripng needs same fix as ripd.
Andrew J. SchorrDenis OvsienkoAndrew J. Schorr
0fa0335316cripd: resolve debug statements issue (bug 442)...A nasty bug, if you forgot to disable debugging, stored the config and reboot your machine - if you really depend on ripd, then the machine will not fully come back on the network, because ripd fails.
David WardDenis OvsienkoDavid Ward
6e22b9017e1bgpd: VTY string fixes for debug commands* bgpd/bgp_debug.c: fix VTY strings for BGP debug commands to match correct syntax
Dmitrij TejblumDenis OvsienkoDmitrij Tejblum
c7aa8abd878bgpd: fix handling of "Unsupported Capability"* bgp_packet.c: (bgp_notify_receive) justify the difference between BGP_NOTIFY_OPEN_UNSUP_PARAM and BGP_NOTIFY_OPEN_UNSUP_CAPBL cases, as it is explained in RFC5492, page 3, paragraph 1. "Unsupported Capability" error does not mean, that the peer doesn't support capabilities advertisement -- quite the opposite (if the peer would not support capabilities advertisement, the code would be "Unsupp...
Dmitrij TejblumDenis OvsienkoDmitrij Tejblum
403138e189cospf6d: fix crash in SPF calculation* ospf6_spf.c: Don't replace a node with another node with a lower number of hops, instead get them from the queue in the correct order. (Actually, the replacement crashed the ospf6d daemon rather than worked.)
Paul JakmaPaul Jakma
4dd87df5af8ospfd: Remove oi field from LSA, have network_lsa_refresh look up when needed* ospf_lsa.h: (struct ospf_lsa) remove oi pointer * ospf_lsa.c: (ospf_network_lsa_refresh) instead of keeping a pointer, just lookup the oi when it's needed. This decouples network LSA from oi lifetime and avoids having to invalidate pointers in LSAs when an oi changes, simplifying the code.
Paul JakmaPaul Jakma
dfbd5176ea8ospfd: potential fix for router-id change assert on refresh cleanup patch* ospf_lsa.c: (various) unregister LSAs from refresher before flushing.
Paul JakmaPaul Jakma
02d942c9d4aospfd: Fix maxage/flush to not try flood twice, remember maxages for longer2006-05-30 Paul Jakma <paul.jakma@sun.com> * (general) Fix confusion around MaxAge-ing and problem with high-latency networks. Analysis and suggested fixes by Phillip Spagnolo, in [quagga-dev 4132], on which this commit expands slightly. * ospf_flood.{c,h}: (ospf_lsa_flush) new function. Scope-general form of existing flush functions, essentially the dormant ospf_maxage_flood(...
Paul JakmaPaul Jakma
c363d3861b5ospfd: Unify router and network LSA refresh logic with general refresher* (general) Get rid of the router and network LSA specific refresh timers and make the general refresher do this instead. Get rid of the twiddling of timers for router/network LSA that was spread across the code. This lays the foundations for future, general LSA refresh improvements, such as making sequence rollover work, and having generic LSA delays. * ospfd.h: (struct ospf) Bye bye...
Paul JakmaPaul Jakma
7eb5b47e541ospfd: Remember network LSA sequence numbers across up/downs of an interface* ospf_interface.h: (struct ospf_if_params) add field for saved network LSA seqnum * ospf_interfa.c: (ospf_new_if_params) init network_lsa_seqnum field to initial seqnum - doesnt matter though. * ospf_lsa.c: (ospf_network_lsa_new) check for any saved sequence number, and use if it exists. Save the result back. This should help avoid needless round of LSUpdate/LSRequests when a neighbou...
Paul JakmaPaul Jakma
aa276fd783fospfd: Prioritise hellos for sending by queueing to head of output buffer* It's possible for the packet output buffer to be filled up with a long series of non-Hello packets in between Hellos packets, such that the router's neighbours don't receive the Hello packet in time, even though the hello-timer ran at about the right time. Fix this by prioritising Hello packets, letting them skip the queue and go ahead of any packets already on the queue. This pr...
Paul JakmaPaul Jakma
57c5c6526dfospfd: Reset neighbour inactivity timer for any packet arrival* The hello protocol monitors connectivity in 2 different ways: a) local -> remote b) remote -> local Connectivity is required in both directions (2-way) for adjacencies to form. The first requires a round-trip to detect, and is done by advertising which other hosts a router knows about in its hello messages. This allows a host to detect which other routers are and are not rec...
Paul JakmaPaul Jakma
94b6bfd2835ospfd: the maxage_lsa_remover should check whether it needs to yield the cpu
Paul JakmaPaul Jakma
e8f2226195eospfd: Fix various route_unlock discrepencies* ospf_ase.c: (ospf_ase_calculate_route) Fix compiler warning about eval needing brackets. (various) add defensive asserts. * ospf_lsdb.c: (ospf_lsdb_add) add missing node unlock if same lsa already was indexed. (ospf_lsdb_delete) check it's actually the same as specified lsa before deleting (ospf_lsdb_lookup_by_id_next) fix another corner case - no result => don't go on.
Paul JakmaPaul Jakma
6634974d68bospfd: fix lsa_refresh_walker unlock before use bug* ospf_lsa.c: (ospf_lsa_refresh_walker) fix an "unlock before use" bug (various) add asserts for lsa refcounting.
Paul JakmaPaul Jakma
8a81ee114a1ospfd: interface code should leave network_lsa_self alone* ospf_interface.c: (ospf_if_{new,cleanup}) don't touch the network_lsa_self, ISM and NSM take care of cleaning it up if needs be + we want to keep network_lsa_self around when possible for the the seqnum. This shouldn't really make much difference though, particularly as we have a separate sequence number memory mechanism.
Paul JakmaPaul Jakma
2c9f8e36c4dospfd: OSPF_MIN_LS_ARRIVAL compare should be >= to match ospf_flood* ospf_packet.c: (ospf_ls_upd) the corresponding test on the arrival side in (ospf_flood) is <, so this should be >=, not >, purely for consistency. There is no practical effect here though.
Paul JakmaPaul Jakma
cfd670f3af2ospfd: ospf_if_free can leave dangling references on ISM events - cancel them* ospf_interface.c: (ospf_if_free) events with dangling pointers left scheduled can be seriously bad for ospfd's health. Cancel the event.
Paul JakmaPaul Jakma
ec70497bc5eospfd: Lower level of some common messages from info to debug* ospf_{ism,network}.c: Certain oft-repeated but trivial messages should be debug log level, not info, to avoid spamming 'terminal monitor'
Paul JakmaPaul Jakma
f8416810aadlib: Fix bug in prefix trie lookup* lib/table.c: (route_node_match) fix overshoot that was causing this function to go 1 bit too far and thus reading past end of prefix. (route_node_lookup) be defensive - don't assume others will clean up leaves when removing info.
Paul JakmaPaul Jakma
d358344759dlib: prefix.c nano-optimisation* lib/prefix.c: (prefix_match) nano-optimisation, let it return early without copying pointers.
Paul JakmaPaul Jakma
3322055b392lib: Make workqueue more conservative about ramping up* workqueue.c: (work_queue_run) Err more on the side of keeping granularity down, by being more conservative about increasing it. Also, fix mispelling.
Paul JakmaPaul Jakma
e276eb82820lib: Add a command to clear the thread CPU history data* (general) this can be useful when investigating thread latency problems, when you don't want to have to restart a daemon between tests. * thread.c: (cpu_record_(hash_)clear) wipe the stored thread cpu history data, according to the filter, similar to the vty print code. (clear_thread_cpu_cmd) new command to clear data. * thread.h: export new command * command.c: install it
Paul JakmaPaul Jakma
2613abe64felib: Thread scheduler should be fair and not let events starve I/O and timers* thread.c: (thread_fetch) the current scheduler will service events indefinitely, ignoring I/O and timers, so long as there are events. In other words, events can crowd out I/O and timers. In theory this shouldn't be a huge problem as events are generated only by timers and I/O, however in practice it means normal-load behaviour is not as useful a predictor of high-load behaviour as...
Paul JakmaPaul Jakma
8526100eebflib: thread history funcname shouldn't be constant, it's freed* thread.h: (struct cpu_thread_history.funcname) malloc gets called on this so it should not be const * thread.c: (cpu_record_print) cast the (const char *) to (char *), this function knows what it's doing (free wont be called on it).
Paul JakmaPaul Jakma
838bbde0426bgpd: Simplify process queue init* bgp_route.c: (bgp_process_queue_init) rsclient wasn't getting all the same things initialised as the main queue. Simplify to make it more robust.
Denis OvsienkoDenis Ovsienko
b729294c8c5bgpd: fix community-list error message spelling* bgp_vty.c: (community_list_perror, show_ip_community_list_arg, show_ip_extcommunity_list_arg) fix spelling
Greg TroxelGreg Troxel
5195e17f8b4infrastructure: Express preference for published git repos* HACKING: Express notion that a published git repository is preferred. Fold request for commit message into patch section. Express desire for comments in code explaining correctness of post-commit state, and for commit message to explain correctness of the change.
Greg TroxelGreg Troxel
a8e474a598einfrastructure: Whitespace cleanup.HACKING: Whitespace changes only.
Greg TroxelGreg Troxel
d7a97797427infrastructure: Clarify commit message format.Note 54/72 line length rules, and that this is intended to play nice with "git log --oneline".
Greg TroxelGreg Troxel
f3bd05011ceAdjust description of tomhenderson repo.Tom's repo is now a clone of the official repo and has an mttr branch off of 0.99.17.