summaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'pipework' of /git/quagga.euro-ix into euro_ix_bex19bChris Hall2011-09-0612-777/+904
|\ | | | | | | Updated version to v0.99.18ex19b.
| * Further improvements to "pipework".ex19pChris Hall2011-09-0612-777/+904
| | | | | | | | | | | | | | | | | | | | | | | | | | Version advanced to 0.99.18ex19p. Fixed occasional failure to immediately display prompt after previous command output was abandonned by ^C, particularly with "--more--". Completely removed the "~" temporary prompt, and simplified some logic. Added indication of pthread running to "show version".
* | Update the scaled number output and memory show commands.Chris Hall2011-09-068-1052/+609
| | | | | | | | | | | | | | | | | | | | | | Functions to output scaled decimal and binary numbers were implemented for memory show commands. Those have been generalised and placed in the qfstring.c. The memory show commands have been updated to use the newer functions, and a small test program for those has been implemeted. Other small updates to qfstring.c, qstring.c and qpath.c.
* | Merge branch 'pipework' of /git/quagga.euro-ix into euro_ix_bChris Hall2011-09-055-69/+101
|\|
| * Improve scheduling of background tasks in qnexus.Chris Hall2011-09-051-55/+76
| |
| * Work around issues with IPV6_MINHOPCOUNT -- -DNO_LINUX_IN6_HChris Hall2011-09-051-5/+15
| | | | | | | | | | | | | | | | On GNU_LINUX IPV6_MINHOPCOUNT is defined in linux/in6.h. Unfortunately, that will not always compile due to clashes with netinet/in.h !! So, as a work-around -DNO_LINUX_IN6_H disables the inclusion of linux/in6.h -- which avoids the compilation issue, but turns off IPV6_MINHOPCOUNT.
| * Fix absolute paths in bgp dump configuration commands.Chris Hall2011-09-051-8/+8
| |
* | Merge branch 'pipework' of /git/quagga.euro-ix into euro_ix_bChris Hall2011-09-0526-210/+1049
|\|
| * Fix display of times for "show nexus xxx"Chris Hall2011-09-021-20/+22
| |
| * Changed gcc options to -std=c99 and -O2, and tighted warnings.Chris Hall2011-09-027-19/+19
| | | | | | | | Some small changes to accomodate same.
| * Merging of euro_ix branch into pipework.Chris Hall2011-09-0217-188/+1025
| | | | | | | | | | | | | | | | Bring in fixes for bgp dumping with pthreaded BGP Engine. Bring in new "show nexus xxx" command. Fix removal of '~' prompt.
| * Fix qassert()Chris Hall2011-09-011-1/+1
| |
| * Merge branch 'euro_ix' of /git/quagga.euro-ix into pipeworkChris Hall2011-08-261-2/+2
| |\
| | * Fix compilation of sockopt.c when no IP_MINTTL or IPV6_MINHOPCOUNT (II)Chris Hall2011-08-261-1/+1
| | |
| | * Fix compilation of sockopt.c when no IP_MINTTL or IPV6_MINHOPCOUNT.Chris Hall2011-08-261-2/+4
| | |
| * | Fix compilation of sockopt.c when no IP_MINTTL or IPV6_MINHOPCOUNT.Chris Hall2011-08-261-2/+4
| | |
* | | Fix compilation of sockopt.c when no IP_MINTTL or IPV6_MINHOPCOUNT.Chris Hall2011-08-261-2/+4
| | |
* | | Updated the "symbol table" and added AVL treeChris Hall2011-08-2610-974/+3193
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Modified the symbol table so that the name of the symbol is now a property of its value -- which simplifies some of the semantics, because the name no longer has a separate existence (a name which refers to an empty or undefined value is now a matter for the value, not for the symbol table). It also allows for the symbol table to be used where the value and the name are almost indistinguishable. Introduced AVL tree to support large prefix lists, routemaps, etc. etc. Updated testsymtab and added testavl. Updated exiting use of the symbol table.
* | Merge branch 'euro_ix' of /git/quagga.euro-ix into pipeworkex18pChris Hall2011-08-1212-645/+1349
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Merge with euro_ix branch v0.99.18ex17. Update version to: 0.99.18ex18p Of particular note: * includes support for GTSM: neighbor ... ttl-security hops X no neighbor ... ttl-security hops X where X is 1-254. For usual case of immediately connected peer, X == 1. Cannot set ttl-security while ebgp-multihop is set, and vice-versa. If underlying O/S does not support GTSM, then will set ttl as per ebgp-multihop. In passing, have fixed various bugs in the main Quagga branch. * initial support for draft-ietf-idr-optional-transitive Does not yet support "neighbor-complete" flag. * main Quagga now uses TCP_CORK and permanent non-blocking Do not beleive TCP_CORK to be necessary for euro_ix code... which has a different buffering strategy. The euro_ix code already runs sockets permanently non-blocking. * various fixes to attribute intern/unintern Trying to remove memory leaks. Nobody seems convinced that this has been perfected, yet. * fixes for ospfd and ospf6d issues. Up to date with master branch up to: commit 538cb284864c17de66152a5236db4cd80e3e7639 Merge: 036a6e6 8ced4e8 Author: Paul Jakma <paul@quagga.net> Date: Fri Jul 29 18:21:50 2011 +0100
| * Merge with main Quagga source as of 29-Jul-2011.ex17Chris Hall2011-08-1211-634/+1291
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Create euro_ix branch. Update version to: 0.99.18ex17 Of particular note: * includes support for GTSM: neighbor ... ttl-security hops X no neighbor ... ttl-security hops X where X is 1-254. For usual case of immediately connected peer, X == 1. Cannot set ttl-security while ebgp-multihop is set, and vice-versa. If underlying O/S does not support GTSM, then will set ttl as per ebgp-multihop. In passing, have fixed various bugs in the main Quagga branch. * initial support for draft-ietf-idr-optional-transitive Does not yet support "neighbor-complete" flag. * main Quagga now uses TCP_CORK and permanent non-blocking Do not beleive TCP_CORK to be necessary for euro_ix code... which has a different buffering strategy. The euro_ix code already runs sockets permanently non-blocking. * various fixes to attribute intern/unintern Trying to remove memory leaks. Nobody seems convinced that this has been perfected, yet. * fixes for ospfd and ospf6d issues. Up to date with master branch up to: commit 538cb284864c17de66152a5236db4cd80e3e7639 Merge: 036a6e6 8ced4e8 Author: Paul Jakma <paul@quagga.net> Date: Fri Jul 29 18:21:50 2011 +0100
| | * lib: Add support for IPv6 ttl securityStephen Hemminger2011-03-241-11/+19
| | | | | | | | | | | | | | | * sockunion.c: (sockopt_minttl) Add IPv6 support for min hop count. The kernel support is Linux kernel 2.6.35 or later.
| | * bgpd: Cleanups & fixes for minttl / GTSMStephen Hemminger2011-03-241-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | * bgp_vty.c: (peer_ebgp_multihop_{un,}set_vty) tail-call cleanup. ({no_,}neighbor_ttl_security) ditto. * bgpd.c: (peer_ttl_security_hops_set) Peer group checks and TTL set only need to be done on transition. * sockunion.c: (sockopt_minttl) remove always-on debug and improve readability.
| | * bgpd: RFC 5082 Generalized TTL Security Mechanism supportNick Hilliard2011-03-232-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bgpd: Add support for RFC 5082 GTSM, which allows the TTL field to be used to verify that incoming packets have been sent from neighbours no more than X IP hops away. In other words, this allows packets that were sent from further away (i.e. not by the neighbour with known distance, and so possibly a miscreant) to be filtered out. * lib/sockunion.{c,h}: (sockopt_minttl) new function, to set a minimum TTL using the IP_MINTTL socket opt. * bgpd.h: (BGP_ERR_NO_EBGP_MULTIHOP_WITH_TTLHACK) define for command error for minttl. (struct peer) add a config variable, to store the configured minttl. (peer_ttl_security_hops_{set,unset}) configuration handlers * bgpd.c: (peer_group_get) init gtsm_hops (peer_ebgp_multihop_{un,}set) check for conflicts with GTSM. Multihop and GTSM can't both be active for a peer at the same time. (peer_ttl_security_hops_set) set minttl, taking care to avoid conflicts with ebgp_multihop. (bgp_config_write_peer) write out minttl as "neighbor .. ttl-security hops X". * bgp_vty.c: (bgp_vty_return) message for BGP_ERR_NO_EBGP_MULTIHOP_WITH_TTLHACK (peer_ebgp_multihop_{un,}set_vty) * bgp_network.c: (bgp_accept) set minttl on accepted sockets if appropriate. (bgp_connect) ditto for outbound.
| | * lib: fix more format warnings (#637)Christian Hammers2011-03-232-2/+2
| | | | | | | | | | | | | | | | | | | | | The following patch was also neccessary to compile. * command.c: (config_logmsg_cmd) use "%s" format spec * if.c: (connected_log) ditto
| | * lib: add TCP_CORK wrapperStephen Hemminger2011-03-212-0/+11
| | | | | | | | | | | | | | | * sockunion.{c,h}: (sockopt_cork) wrapper for TCP_CORK socket option for those platforms that provide it. For other platforms, it is just a nop.
| | * lib: zlog should clean up its memoryTom Goff2011-03-211-0/+3
| | | | | | | | | | | | | | | * log.c: (closezlog) Also free the dynamically allocated filename when a log is closed.
| | * lib: Add a function to delete all interfacesTom Goff2011-03-212-0/+19
| | | | | | | | | | | | | | | if.c: (if_terminate) This adds a cleanup function that can be called when a daemon exits, similar to vty_terminate().
| | * lib: Better hashing of string values using Bernstein hashStephen Hemminger2011-03-214-16/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
| | * bgpd: fix bgp_node locking issuesChris Caputo2011-03-211-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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 for bgp_connected_ref. (bgp_scan_finish) reset the nexthop cache to clean it up when bgpd exits * bgp_route.c: fix missing bgp_node unlocks * lib/memtype.c: (memory_list_bgp) add MTYPE_BGP_CONN * testing: has been tested for almost 2 months now.
| | * lib: Fix accounting of memoryChris Hall2011-03-211-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | * 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.
| | * lib: Fix bug in prefix trie lookupPaul Jakma2010-12-081-6/+8
| | | | | | | | | | | | | | | | | | | | | * 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.
| | * lib: prefix.c nano-optimisationPaul Jakma2010-12-081-4/+5
| | | | | | | | | | | | | | | * lib/prefix.c: (prefix_match) nano-optimisation, let it return early without copying pointers.
| | * lib: Make workqueue more conservative about ramping upPaul Jakma2010-12-081-8/+9
| | | | | | | | | | | | | | | | | | * workqueue.c: (work_queue_run) Err more on the side of keeping granularity down, by being more conservative about increasing it. Also, fix mispelling.
| | * lib: Add a command to clear the thread CPU history dataPaul Jakma2010-12-083-0/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * (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
| | * lib: Thread scheduler should be fair and not let events starve I/O and timersPaul Jakma2010-12-081-16/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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 it should be. Fix this by considering all the kinds of threads, in every run of the scheduler. For any given run, we prioritise events, however across runs the scheduler should be fair. This has been observed to give more stable inter-packet times in testing of ospfd (i.e. lower std-dev). (thread_process) new heler to queue all the given threads onto the ready list
| | * lib: thread history funcname shouldn't be constant, it's freedPaul Jakma2010-12-082-2/+2
| | | | | | | | | | | | | | | | | | | | | * 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).
| | * zclient: fix router-id calculation for IPv6 (#595)Dmitry Tejblum2010-10-181-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If router-id is not specified in ospf6d.conf, ospf6d will get it from the zebra daemon. But ospf6d originates Link LSAs before the router-id is returned by zebra, thus this router's Link LSAs will be flooded with AdvRouter set to 0. * zclient.c: zclient_start(): send ZEBRA_INTERFACE_ADD message after ZEBRA_ROUTER_ID_ADD, not before
| | * bgpd, lib: adopt afi_t and safi_t in several placesMichael Lambert2010-10-062-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | * bgpd/bgp_attr.c, bgpd/bgp_open.h, bgpd/bgp_route.c, lib/prefix.c, lib/prefix.h: Various integer types were being used where, if we had strict type checking, afi_t and safi_t would be required. Signed-off-by: G.Balaji <balajig81@gmail.com> (cherry picked from commit c8af35ffa2dc79ff7d7ff00b1b61f1f50a100ab6)
| | * lib/vty.c: add missing format string when printing out motd messageNico Golde2010-09-171-1/+1
| | | | | | | | | | | | Signed-off-by: G.Balaji <balajig81@gmail.com>
| | * Document rules for zalloc and friends.Greg Troxel2010-09-171-5/+27
| | | | | | | | | | | | | | | lib/memory.c:z{a,c,re}alloc, zfree, zdup: add requires/effects comments.
| | * lib: undo the last PIE commitStephen Hemminger2010-01-271-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Stephen: A recent change breaks build Quagga on Debian Lenny with amd64 (but not i386). Not sure whether this is cause by ld, gcc, or libtool; but whatever it just won't work for a large number of users. Mathias: I would guess it's a problem of libtool because it adds "-fPIC -DPIC" to the compiler flags but doesn't remove -fPIE. That wouldn't be a problem if the compiler would ignore the -fPIE in favor to the latter -fPIC, but obviously it does not. [...] Those objects were actually compiled with -fPIC but also -fPIE which seems to confuse gcc.
| | * lib: fix PIE build flagsMathias Krause2010-01-201-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because the final executables are built as position independent executables (PIE) -- when configure has detected compiler supported for PIE -- the objects in the library archive must be built in that way, too. Otherwise the runtime linker has to do unneccesary relocation for each start of the program. Even worse, the programs won't even be able to start on a (hardened) kernel that doesn't allow those relocations to happen by preventing making the .text segment writable (PaX's MPROTECT feature comes to mind). The attached patch fixes this issue by adding the appropriate flags to the Makefile.am.
| | * lib: fix memory loggingDavid Ward2010-01-131-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lib/memory.h * mtype_zcalloc(): correct function prototype * XFREE(): make both definitions consistent in setting the pointer to NULL after freeing the memory These changes will only have an effect if MEMORY_LOG is defined (it is not by default).
| | * lib: make some structures constantStephen Hemminger2009-12-212-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * isisd/isis_pdu.c * maskbit: this pre-initialized array is not modified * lib/prefix.c * maskbit: idem * lib/command.c * facility_map: idem * itoa64: idem * default_motd: make local var static * facility_name(): update local var accordingly * facility_match(): idem
| * | Fix SEGV when closing legacy threaded VTYex20bChris Hall2011-08-021-1/+1
| | | | | | | | | | | | Fix of simple typo.
* | | Disable the "~" VTY Terminal prompt.Chris Hall2011-07-212-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commands sent to the Routing Engine are now sent as priority messages, so should no longer be a need for the "~" prompt which kept the CLI "live" while a command was waiting for the Routing Engine to pay attention. Also: reinstated test-vector.c tests for vector_move_item_here(), which seem somehow to have got lost.
* | | Added features to configure.Chris Hall2011-07-211-629/+0
| | | | | | | | | | | | | | | | | | | | | | | | --with-defines -Dxxx -Dyyy -- can add things to the cc line --with-memory-tracker -- add -DMEMORY_TRACKER to cc line --enable-gcc-debug -- -O0 -g3
* | | Update pipework and improve memory reporting.Chris Hall2011-07-2159-4229/+9770
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Improve error handling for all new pipework inputs and outputs. Change behaviour of ^C from VTY Terminal, so that will interrupt output and terminate all running pipes -- including running shell commands. In pipe commands, recognise "~/..." and "~user/..." home directory forms. Changed "~/" to mean the usual home for the current user. "~~/" now means the configuration file directory. Introduced "shdir DIR" command to show what is (currently) what. Changed "<|" so that if the command has a path, it is expanded using Quagga's rules (including "~~/" and "~./") and the "here" directory is set to that path. Fixed collection of stderr output from all pipes so that is separate from stdout output, and is always sent to the base output (eg VTY Terminal). Increase amount of information about the heap that "show mem" shows -- particularly if the "memory_tracker" is enabled. Tested and applied resulting fixes.
* | | Merge branch 'master' of /git/quagga.euro-ix into pipeworkChris Hall2011-05-243-37/+96
|\| |
| * | Improve writing of pid lock file and error reporting.Chris Hall2011-05-181-34/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added fsync() after writing the pid to the lock file to push the result to the file system immediately. Any error in the procedure is now treated as fatal, and the daemon will exit(1). (Previously only the open and the lock had to succeed.) Any error is logged and is (now) output to stderr. If the pid file is locked, the error message reports the pid which owns the lock.