summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| * | ospfd: make local functions staticStephen Hemminger2009-12-032-55/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | This code is only used one place and can be made local. Gcc is smart enough to inline local functions if it wants to. The function also has a big chunk of compatiablity code that is no longer used; since quagga is now in a version control system the source does not need to be used as a historical reference.
| * | zebra: fix RIB debug message for IPv6David Ward2009-12-031-4/+4
| | | | | | | | | | | | | | | | | | | | | Apply changes from commit f304cb48f0d7d0ff8f36e7aca8293141a9fa9e60 to rib_queue_add. Also includes spelling fixes.
| * | zebra: make declaration const in rtm_flag_dump()Tom Goff2009-12-031-1/+1
| | | | | | | | | | | | | | | * kernel_socket.c: (rtm_flag_dump) Use a const message pointer to be in sync with commit ce0db9cb11c0bc2e7f89a7d042e50afa495556b4.
| * | ospf6d: fix LSA locking in ospf6_new_ls_id()Tom Goff2009-12-011-0/+3
| | | | | | | | | | | | | | | | | | | | | * ospf6_lsdb.c: (ospf6_new_ls_id) Unlock the current LSA when breaking out of the ospf6_lsdb_*_head() / ospf6_lsdb_*_next() loop early. No explicit unlocking is needed when all LSAs are looped through because ospf6_lsdb_*_next() manages everything in that case.
* | | Fix qps_pselect() so that zeroises results, not enabled.Chris Hall (GMCH)2009-12-091-2/+2
| | |
* | | Ensure all timeouts are timeout times in qtime_mono_t.Chris Hall (GMCH)2009-12-0912-209/+202
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduced separate types for qtime_mono_t and qtime_real_t, to distinguish the time base of a given value. Revised all users of timeouts so that they are all expressed as qtime_mono_t values, so are all Quagga monotonic time based. Revised qpt_cond_timedwait() so that all condition variables use the same timebase (CLOCK_MONOTONIC if available, by default). Now all timeout times are qtime_mono_t, and are converted to whatever the condition variable is set to, if necessary. Added explicit timeout to mqueue. Fixed qps_pselect() to zeroise result vectors if no fds are reported pending -- seems the O/S does not do this.
* | | Fixed -ve return from qps_pselect. Fixed calls of qps_enable_mode - usespaulo2009-12-092-10/+6
| | | | | | | | | | | | mnum, not mbits.
* | | Changed timeout handling in qpn_start -- lib/qpnexus.cChris Hall (GMCH)2009-12-091-3/+2
| | |
* | | Bug fix in qps_selection_validate(), lib/qpselect.cChris Hall (GMCH)2009-12-091-33/+132
| | | | | | | | | | | | | | | | | | Also, added testing for qps_make_super_set_map() to simulate wide range of little-/big-endian word sizes and forwards/backwards bit numbering.
* | | Fix timeouts in nexus, fix LOCK in vtypaulo2009-12-093-9/+13
| | |
* | | Fixes to get as far as creating the thread and calling qps_pselectpaulo2009-12-096-34/+28
| | |
* | | Bug fix in qps_make_super_set_map(), lib/qpselect.cChris Hall (GMCH)2009-12-091-2/+2
| | |
* | | Add qps_selection_ream() to lib/qpselect.cChris Hall (GMCH)2009-12-082-200/+449
| | | | | | | | | | | | Tidied up and implemented qps_selection_validate() as a debug aid.
* | | Nexus handling.paulo2009-12-082-0/+208
| | |
* | | Wired up the CLI thread with new qpnexus type. Still work in progress.paulo2009-12-085-86/+356
| | | | | | | | | | | | Needs debugging.
* | | Fixes to lib/qtime.c and lib/qtimers.hChris Hall (GMCH)2009-12-082-5/+5
| | | | | | | | | | | | Needs to use lldiv in qtime.c on 32bit machine.
* | | Merge branch 'pthreads' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-086-210/+515
|\ \ \
| * | | Make vty and log thread safe under single mutex.paulo2009-12-076-210/+515
| | | |
* | | | Improved lib/qt_craft_monotonic() handling of overflow.Chris Hall (GMCH)2009-12-082-40/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Improved the arithmetic and changed code to deal with wrap around only if clock_t is 32-bits (and not to compile if it is less !). Updated documentation.
* | | | Added qtimer_pile_top_time() to lib/qtimers.cChris Hall (GMCH)2009-12-084-112/+177
|/ / / | | | | | | | | | | | | | | | | | | | | | For use when preparing for pselect or other timed wait. Simplified the handling of pending unsets. Tidied up in heap.c & .h.
* | | Fixed qpt_mutex_unlock() (debug version).Chris Hall (GMCH)2009-12-071-2/+2
| | |
* | | Enabled qpt_mutex_recursive in lib/qpthreads.Chris Hall (GMCH)2009-12-072-17/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | This allows mutexes to be initialised as recursive. Required correctly placed setting of _GNU_SOURCE (for gcc). It is assumed that "config.h" will enable the required pthreads features -- which are now documented in lib/qpthread.c.
* | | Initial commit for lib/qpselect.c & .h and lib/qtimers.c & .hChris Hall (GMCH)2009-12-066-2/+1665
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lib/qpselect supports data structure to multiplex between many file descriptors using pselect(). lib/qtimers supports data structures to run multiple timers. Also affected: lib/Makefile.am -- to add the new files lib/memtypes.c -- to add further memory types for the above
* | | Updates to lib/qtime.c & .hChris Hall (GMCH)2009-12-062-12/+66
| | | | | | | | | | | | | | | | | | | | | Added conversion routines for CLOCK_REALTIME/timeofday to/from monotonic clock -- so can set timers to actual time, if required. Added confirms and tidied up documentation.
* | | Updates to lib/qpthreads.c & .hChris Hall (GMCH)2009-12-062-3/+18
| | | | | | | | | | | | | | | | | | Added qpt_thread_self(). Initialised output sigset_t before setting it in qpt_thread_sigmask().
* | | Updates after code review: lib/heap.c & .h lib/vector.c & .hChris Hall (GMCH)2009-12-064-127/+180
| | | | | | | | | | | | | | | | | | | | | Added vector_unset_item() & recast vector_unset(). Added heap_pop_push_item() and made a number of simple operations Inline functions.
* | | Initial commit of lib/mqueue.c & .hChris Hall (GMCH)2009-12-035-4/+716
| | | | | | | | | | | | | | | Adds message queue structure to manage the passing of messages between qpthreads.
* | | Add signal functions to lib/qpthreads.cChris Hall (GMCH)2009-12-032-0/+60
| | | | | | | | | | | | Adding qpt_thread_sigmask() and qpt_thread_signal().
* | | Allow floating argument for QTIME(s) in lib/qtime.hChris Hall (GMCH)2009-12-031-1/+2
| | | | | | | | | | | | | | | Changed casts around so that the seconds argument can be a floating point value. So that, in particular, QTIME(2.33) works.
* | | Added zlog_abort functions. Changed pthread mutes to qpthread mutexespaulo2009-12-035-115/+183
| | |
* | | Merge branch 'pthreads' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-0210-240/+710
|\ \ \
| * | | Fix nested LOCK bugpaulo2009-12-012-9/+35
| | | |
| * | | Fix raise_count in zprivs_change_caps HAVE_LCAPS casepaulo2009-12-011-9/+18
| | | |
| * | | log_r.h no longer needed. It was invented incase we needed a separatepaulo2009-11-301-32/+0
| | | | | | | | | | | | | | | | pthread safe interface for logging. log.h is that interface.
| * | | Make logging (lib.c) and privileges (privs.c) pthread safepaulo2009-11-309-205/+672
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lib.c: use a mutex to protect all public methods. Replaced code in command.c etc that modified zlog_default directly with interlocked getters and setters. Requires that vty_log in vty.c handles its own pthread safety TBA. privs.c: use a mutex to protect all public methods. Counts RAISE and LOWER so that privilege stays RAISED until all pthreads have lowered. Improved messages in test-privs.c
* | | | Pthreads infrastructure -- initial commitChris Hall (GMCH)2009-12-029-5/+1818
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New files: lib/qpthreads.c & .h Encapsulates the Pthreads facilities to be used in Quagga. Implicitly documents the sub-set of Pthreads being used. Provides error checking for a number of functions which may return errors, but are not generally expected to and for whom an error is treated as fatal. Could be modified to "null out" the use of Pthreads. New files: lib/qtime.c & .h Defines a 64-bit integer time value which is a lot easier to handle than the usual timespec and timeval structures. (C99 requires a 64-bit integer.) Provides front ends for gettimeofday() & clock_gettime() which return 64-bit time value. Also conversions to and from timespec and timeval. Provides a monotonic clock for when CLOCK_MONOTONIC is not available. (This is based on code from Joakim Tjernlund.) New files: lib/heap.c & .h Implements a heap data structure closely allied to the vector. This will be used for timer handling. Modified: lib/memtypes.c New memory types for qpthreads structures and for the heap. Modified: lib/zassert.h Added explicit "passert" == assert which is not subject to NDEBUG. Added explicit "nassert" == assert which is subject to NDEBUG. Added zabort, zabort_errno and zabbort_err for when something has gone fatally wrong. (Require changes to lib/log.c which are TBD.)
* | | | Merge branch 'master' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-021-50/+37
|\ \ \ \ | |/ / / |/| | / | | |/ | |/|
| * | Avoid deleting symbol reference twice in prefix_list_delete().Chris Hall (GMCH)2009-12-021-50/+37
| | | | | | | | | | | | | | | | | | | | | Affects: lib/plist.c Merged otherwise unused prefix_list_free() into prefix_list_delete(), and removed second call of symbol_unset_value().
* | | Start populating pthreads branchpaulo2009-11-271-0/+32
|/ /
* | Fix return values for str2prefix_ipv4 and str2prefix_ipv6Chris Hall (GMCH)2009-11-261-32/+60
| | | | | | | | | | | | There appears to be some divergence of opinion over the return values from these functions. This change makes the return == 1 if OK, and 0 otherwise. This is consistent with all usage.
* | Upgrade Prefix-List & BGP Community-List handlingChris Hall (GMCH)2009-11-2612-2522/+2657
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Affects: lib/plist.c & .h and bgpd/bgp_clist.c & .h With very long prefix-lists the repeated scanning of the linked list of prefix_list_entry slowed things down (scaled O(n**2)). For lists of 10,000 or more entries this could consume several *minutes* while reading a configuration file. This is a substantial re-working of the code, making use of new facilities introduced in lib/symtab and lib/vector. The prefix-list names are held in a symbol table. The addition of entries to a prefix-list uses binary-chop searches rather than linear list scans. For bgpd, all references to prefix-lists are replaced by symbol table references. The peer_prefix_list_update function is called every time a prefix-list changes. This used to run through every possible reference to a prefix-list to see if its address needed updating. For other daemons, the old interfaces have been preserved. The prefix match code has been stream-lined a little. The BGP community-list and extcommunity-list handling has also been updated to use a symbol table to hold the names. This improves the processing of route-maps, which look-up the list by name each time it is used. (In the longer term, this should be replaced by the use of symbol references.) Other files affected: bgpd/bgpd.c & .h bgpd/bgp_route.c & .h bgpd/bgp_packet.c bgpd/bgp_vty.c updated to use prefix list references & community list symbols. symtab.c & .h small change to symbol_dec_ref & symbol_zero_ref to return NULL if reference count goes to zero, and the symbol otherwise.
* | Test programs.paulo2009-11-254-3/+1560
| | | | | | | | | | Enabled building of the test programs. Added tests for vectors and sybtabs.
* | Add functions to lib/vty.c & .hChris Hall (GMCH)2009-11-242-5/+35
| | | | | | | | | | | | | | | | | | Added: vty_puts -- output string vty_out_newline -- output newline of appropriate form vty_out_indent -- output given number of spaces Made (vty == NULL) a synonym for VTY_TERM, for vty_out and related functions.
* | Introduce lib/symtab.c & .hChris Hall (GMCH)2009-11-244-2/+1502
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These are two brand new files. They provide a "Symbol Table" data structure, which maps symbol "names" to symbol "values. (Inside the dta structure is a hash table.) There is also support for managing references to symbols, and the ability to visit all references to a symbol when its value is set or unset. Other files affected: lib/Makefile.am -- to add the new files. lib/memtypes.c -- additional memory types for symbol table stuff
* | Upgrade lib/vector.c & .hChris Hall (GMCH)2009-11-247-287/+1539
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This upgrade maintains the existing vector operations, but changes the underlying mechanisms. It then adds a number of new functions, extending the operations on vectors. The "struct vector" is redefined, which affects only some code in lib/command.c -- which pokes around inside what should be treated as a private data structure. Pro tem this is supported by a macro. The constant VECTOR_MIN_SIZE has been removed -- if there is a minimum size that should be enforced by the vector code. New functions include: vector_insert_item -- insert item, moving existing items vector_move_item -- move item from place to place in vector vector_delete_item -- delete item and close up gap vector_reverse -- reverse order of vector vector_push_item -- simple push vector_pop_item -- simple pop vector_insert -- insert 1 or more NULL items, moving existing items vector_delete -- delete 1 or more items and close up gap vector_bsearch -- perform binary search on vector vector_sort -- qsort vector vector_copy_here -- make copy of body of vector vector_move_here -- move body of vector vector_copy_append -- append copy of vector to end of another vector_move_append -- move body of vector to the end of another vector_copy_extract -- copy part of one vector to another vector_move_extract -- move part of one vector to another vector_copy_splice -- copy part of one vector to replace part of another, taking a copy of the replaced part vector_move_splice -- move part of one vector to replace part of another, taking a copy of the replaced part vector_copy_replace -- copy part of one vector to replace part of another vector_move_replace -- move part of one vector to replace part of another vector_discard -- discard body of vector vector_chop -- discard any unused memory in body of vector vector_decant -- decant vector to new body Other files affected: command.c: -- removal of VECTOR_MIN_SIZE -- use of vector_sort() -- use of VECTOR_INDEX to poke around inside vector (removing this is TODO) memtypes.c & memory.c -- updating names and comments for vectors vty.c -- removal of VECTOR_MIN_SIZE memory.h -- added SIZE(t,n) macro -- (sizeof(t) * (n))
* configure: fix HAVE_CLOCK_MONOTONIC spellingDmitry Tejblum2009-11-051-1/+1
|
* [ospfd] enable more OSPF cost command aliasesDenis Ovsienko2009-09-281-0/+88
| | | | | | | | | | | | The following syntax forms were not historically supported by Quagga, although IOS accepted them w/o a problem: no ip ospf cost <1-65535> no ospf cost <1-65535> no ip ospf cost <1-65535> A.B.C.D no ospf cost <1-65535> A.B.C.D From now on Quagga also supports these variants.
* zebra: Fix router advertisements for non-Ethernet link layer addressesDavid Ward2009-09-011-2/+16
| | | | | * rtadv.c: round up when calculating the link-layer address option length; add padding to the option if needed to end on an octet boundary
* release: 0.99.15quagga_0_99_15_releasePaul Jakma2009-08-281-1/+1
| | | | * configure.ac: Bump to 0.99.15
* ospf6d: bug #529, fix endianness problem in earlier commit Tom Henderson2009-08-281-7/+4
| | | | | | * ospf6_lsa.c: (ospf6_lsa_age_current) arithmetical compares make no sense in non-host order..