summaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* Use separate sockets for IPV4/IPV6Stephen Hemminger2009-07-151-0/+1
| | | | | | | | New code to keep track of two listener threads, with common code for both cases. Revert "Use single socket for both IPV4 and IPV6" This reverts commit 3e36dfb3cf0c4a631f693da58e7b80dff9ccce06.
* Revert "Remove code in md5sig that attempts to normalize IPV4 mapped socket"Stephen Hemminger2009-07-151-3/+43
| | | | This reverts commit 2585b03455c2c495ab3a0cfbe13c4e5d3ac70e11.
* Revert "Copy full address to md5 key"Stephen Hemminger2009-07-151-1/+1
| | | | This reverts commit 5405c4db88bd0b439f41776c94452b4360de1509.
* Copy full address to md5 keyStephen Hemminger2009-07-151-1/+1
| | | | May fix issues with IPV6 and MD5.
* Remove code in md5sig that attempts to normalize IPV4 mapped socketStephen Hemminger2009-07-131-43/+3
| | | | | The socket address is already normalize during the accept handling, so the broken code in md5sig is unnecessary.
* Fix bug in IPV6 normalized addressesStephen Hemminger2009-07-111-0/+1
| | | | | This is probably why using IPV4 in IPV6 doesn't work in BGP. The code to normalize address was not copying port value!
* Move route_lock_node to fix warningsStephen Hemminger2009-06-051-18/+18
| | | | route_node_delete used by inline before defined.
* Merge branch 'upstream' into jennerStephen Hemminger2009-06-042-5/+5
|\ | | | | | | | | | | | | | | | | Conflicts: bgpd/bgp_aspath.c bgpd/bgpd.c lib/smux.c lib/workqueue.c ospfd/ospf_snmp.c
| * [snmp] Compiler warning fixes for when "--enable-snmp" is configured.Chris Caputo2009-06-021-51/+44
| | | | | | | | | | Compiled on 32-bit and 64-bit linux gcc 4.1.2 platforms. No run-time testing on 32-bit and limited run-time testing on 64-bit.
| * [smux] 64-bit fix for lib/smux.h SNMP_INTEGER() macroChris Caputo2009-06-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Macro SNMP_INTEGER() prepares data which is eventually processed by asn_build_int(). SNMP_INTEGER() was using "int32_t" whereas asn_build_int() uses "long". On 32-bit systems these are the same, both 4 bytes, but on x86 64-bit systems "long" is 8 bytes. asn_build_int()'s reaction to an improperly sized value is to return a NULL pointer. Quagga's smux.c would eventually get this NULL pointer and use it in calculations to determine how much data to send over the smux connection, resulting in garbage being sent to the SNMP agent. Corrected SNMP_INTEGER() to use "long". Tested on 32-bit and 64-bit x86 Linux 2.6.27.10 systems running Quagga 0.99.11 with bgpd smux.
| * [bgp] Fix crash on SIGHUP, deref of freed workqueuesSteve Hill2009-06-021-0/+3
| | | | | | | | | | | | | | * lib/workqueue.c: free-ing workqueues had never been tested obviously, queue's thread was not being stopped * bgpd/bgpd.c: null out freed workqueues, to prevent acting on freed workqueues
* | Inline trivial reference count functionsStephen Hemminger2009-06-042-20/+18
| | | | | | | | route_node_lock/route_node_unlock are trivial and used often.
* | Use const in smux interfaceStephen Hemminger2009-05-152-10/+11
| | | | | | | | smux_trap and oid_copy should allow read-only source.
* | Allow message tables to be constantStephen Hemminger2009-05-152-2/+2
| | | | | | | | | | Avoid bugs, and improve cache locality by allowing message lists to be read/only.
* | 64-bit fix for lib/smux.h SNMP_INTEGER() macroChris Caputo2009-05-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Macro SNMP_INTEGER() prepares data which is eventually processed by asn_build_int(). SNMP_INTEGER() was using "int32_t" whereas asn_build_int() uses "long". On 32-bit systems these are the same, both 4 bytes, but on x86 64-bit systems "long" is 8 bytes. asn_build_int()'s reaction to an improperly sized value is to return a NULL pointer. Quagga's smux.c would eventually get this NULL pointer and use it in calculations to determine how much data to send over the smux connection, resulting in garbage being sent to the SNMP agent. Corrected SNMP_INTEGER() to use "long". Tested on 32-bit and 64-bit x86 Linux 2.6.27.10 systems running Quagga 0.99.11 with bgpd smux.
* | Compiler warning fixes for when --enable-snmp is configured.Chris Caputo2009-05-061-23/+16
| | | | | | | | | | Compiled on 32-bit and 64-bit linux gcc 4.1.2 platforms. No run-time testing on 32-bit and limited run-time testing on 64-bit.
* | Cancel thread in work_queue_freeStephen Hemminger2009-04-061-0/+3
| | | | | | | | | | If shutting down, thread may still be pending, so cancel it. Fixes one possible OOPS in BGP
* | Put symbolic backtrace on system logStephen Hemminger2009-03-091-6/+15
| | | | | | | | When BGP crashes, sometimes all we get to see is syslog.
* | sockopt_tcp_signature: sin6 requires IPV6Stephen Hemminger2009-02-191-0/+2
| | | | | | | | | | An external user was building on system without IPV6 and it wouldn't work.
* | whitespace fixStephen Hemminger2009-02-092-2/+2
| |
* | revert: don't bother with gcc builtin_expect()Stephen Hemminger2009-02-091-8/+8
| | | | | | | | Doesn't really help and unlikely to get upstream (pun intended).
* | Merge branch 'master' of /home/shemminger/src/quagga into jennerStephen Hemminger2009-02-092-2/+2
|\|
| * [lib] Fix timer precision.Joakim Tjernlund2008-11-291-1/+1
| | | | | | | | | | | | | | | | Whenever a thread adds an timer funcname_thread_add_timer_timeval() gets called to add the timer. Before adding the timer a quagga_gettimeofday() call is made to do some time house keeping. However quagga_gettimeofday() only updates recent_time, not relative_time that is used to calculate the alarm_time. Replace with quagga_get_relative (NULL)
| * [lib] Move type cast in Fletcher checksumJoakim Tjernlund2008-11-291-1/+1
| | | | | | | | | | | | | | | | The int type cast should be on the whole expression passed to the mod operator. Otherwise it won't work when/if c0/c1 is unsigned. Making c0/c1 unsigned makes it possible to use 5802 as MODX value.
* | Handle rename to existing deviceStephen Hemminger2008-12-191-6/+11
| | | | | | | | | | | | In the case of rename, delete_retain would be called twice. Once when the interface is removed from the system, and again when interface is being replaced during rename.
* | Handle interfaces coming back from deadStephen Hemminger2008-12-121-15/+18
| | | | | | | | | | | | | | Need to handle the case where interface comes back after being deleted. After deletion state is retained but ifindex is set to IFINDEX_INTERNAL. When new interface arrives with same name, then update index
* | Fix inversion of likely/unlikely in assertStephen Hemminger2008-12-021-11/+3
| |
* | Minor whitespaceStephen Hemminger2008-12-012-2/+1
| | | | | | | | | | Make the quagga upstream and vyatta where only difference was white space.
* | Revert "Add compiler directive to mark code paths that log as cold"Stephen Hemminger2008-12-012-26/+18
| | | | | | | | | | | | This reverts commit ebc04ce20a871c99dbb116a4fbada967dd750c43. Don't really need this and it would be too hard to convince upstream to take it.
* | Make command nodes static (again)Stephen Hemminger2008-12-011-4/+4
| | | | | | | | Change lost in merge.
* | Make command nodes static (again)Stephen Hemminger2008-12-011-6/+6
| | | | | | | | Change lost in merge.
* | Merge branch 'master' of /home/shemminger/src/quagga into jennerStephen Hemminger2008-12-013-54/+45
|\| | | | | | | | | | | Conflicts: lib/checksum.c
| * [lib] fix missing sockunion_normalise_mappedPaul Jakma2008-11-241-0/+1
| | | | | | | | | | * lib/sockunion.c: (sockunion_accept) sockunion needs to be normalised here, as it used to before this was moved to a dedicated function..
| * [lib] Switch Fletcher checksum back to old ospfd versionPaul Jakma2008-11-162-33/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lib/checksum.c: (fletcher_checksum) Switch the second phase of the checksum back to the old ospfd logic. The isisd-derived version: a) is very hard to follow b) had some kind of subtle bug that caused it be wrong when c0=0 and c1=254 (potentially fixable by doing the mods before adjusting x and y) Additionally: - explicitely cast expressions using non-internal variables to int, to ensure the result is signed. - defensively change the length argument to 'size_t', to ensure the code works with that argument being unsigned.. Thanks to Joakim Tjernlund for the investigative work into this bug. * tests/test-checksum.c: new file to exercise the checksum code.
* | Fix Fletcher checksum bug.Joakim Tjernlund2008-11-071-39/+37
| | | | | | | | | | | | | | | | | | | | The new impl. of the Fletcher checkum is buggy. I have changed back the critical part to the orginal method and fixed the buggy one, hid it behind UNSIGNED_FLETCHER. Also did some simple optimizations to reduce the number of instructions in the hot path for both fletcher_checksum() and in_cksum().
* | Merge in latest quagga (0.99.11)Stephen Hemminger2008-10-2718-4332/+217
|\ \ | | | | | | | | | Merge in current upstream version of quagga.
| * | Merge branch 'master' of /home/shemminger/src/quagga into upstreamStephen Hemminger2008-10-1324-4298/+292
| |\| | | | | | | | | | Resolve all conflicts by using upstream version.
| | * [lib] re-enable conversion of v6mapped INET6 sockunions to regular INETPaul Jakma2008-09-091-40/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lib/sockunion.c: Re-enable conversion of v6mapped INET6 sockunions to regular INET sockunions, which was disabled in 0df7c9, as it leads to failures in sockunion_cmp. (sockunion_normalise_mapped) consolidate here (sockunion_accept) remove conversion code altogether here - no sockunion is created (sockunion_get{sockname,peername}) normalise newly created sockunion.
| | * Merge branch 'restricted-mode'Paul Jakma2008-09-044-4/+75
| | |\
| | | * [vty] Add support for a 'restricted mode' with anonymous vty connectionsPaul Jakma2008-08-234-4/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lib/command.h: Add a RESTRICTED_NODE, intended for use with anonymous, 'no login' vtys, to provide a subset of 'view' mode commands. * lib/command.c: Add RESTRICTED_NODE bits, nothing special, just following VIEW_NODE. * lib/vty.c: (vty_auth) enable authentication should fall back to restricted/view node as appropriate. (vty_create) init vty's to restricted/view node as appropriate, for the 'no login' case. (vty_{no_,}restricted_mode_cmd) config commands to enable 'anonymous restricted' in vty configuration. (vty_config_write) 'anonymous restricted' config. (vty_init) Install some commands to restricted mode, and the 'anonymous restricted' config commands into VTY_NODE. * bgpd/*.c: Install some of the safe(r) BGP commands into 'restricted mode', i.e. lookup commands of non-sensitive data. Useful with looking-glass route-servers.
| | * | Make --enable-snmp cross compile and make libcrypto optional with ↵Joakim Tjernlund2008-08-251-1/+3
| | |/ | | | | | | | | | | | | | | | | | | --without-crypto Autoconfig work by me, the rest was done by "Kirill K. Smirnov" <lich@math.spbu.ru>
| | * [administrivia] Git should ignore backup files and .loT filesPaul Jakma2008-08-221-0/+4
| | |
| | * [trivia] Remove ChangeLog files, as this data is now maintained in SCMPaul Jakma2008-08-221-4270/+0
| | |
| | * [warnings] Fix various SOS warningsPaul Jakma2008-08-224-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-08-15 Paul Jakma <paul.jakma@sun.com> * */*: Fix various problems flagged by Sun Studio compiler. - '<qualifier> <storage>' obsolescent in declarations - empty statements (';' after ALIAS definitions) - implicit declarations (e.g printstack in lib/log.c) - "\%" in printf string instead of "%%" - loops that return on the first iteration (legitimately, but compiler can't really know), e.g. bgp_routemap.c - internal declarations which mask prototypes.
| | * [lib] Fix mistake in tcp-md5sig commit which broke compile on BSDPaul Jakma2008-08-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | 2008-08-15 Paul Jakma <paul.jakma@sun.com> * lib/sockopt.c: (sockopt_tcp_signature) ifdef'ing hid variable declaration for HAVE_DECL_TCP_MD5SIG && !GNU_LINUX, breaking compile - fix.
| | * [lib] mes_lookup string lookup table argument should be marked constStephen Hemminger2008-08-225-4/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-08-14 Stephen Hemminger <stephen.hemminger@vyatta.com> * lib/log.{c,h}: struct message argument should point to const * */*.c: adjust to suit, Signed-off-by: Paul Jakma <paul@quagga.net>
| | * [lib] hash compare function arguments ought to be const qualifiedStephen Hemminger2008-08-225-16/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-08-14 Stephen Hemminger <stephen.hemminger@vyatta.com> * lib/hash.h: (struct hash) Hash comparator callback really ought to treat storage behind arguments as constant - a compare function with side-effects would be evil. * */*.c: Adjust comparator functions similarly, thus fixing at least a few compiler warnings about const qualifier being dropped. Signed-off-by: Paul Jakma <paul@quagga.net>
| | * [lib] Add fletcher checksum implementationJingjing Duan2008-08-222-0/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-08-13 Jingjing Duan <Jingjing.Duan@sun.com> * lib/checksum.?: (fletcher_checksum) implementation of Fletcher checksum, as per RFC1008. Signed-off-by: Paul Jakma <paul@quagga.net>
| | * [vty] Allow delete during password entryRoy2008-08-221-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-08-13 roy <quagga@de.vio.us> * lib/vty.c: (vty_delete_char) move check for authentication down a bit, so we do the delete, but still not re-write of line. Signed-off-by: Paul Jakma <paul@quagga.net>
| | * [administrivia] Add .gitignore files, based on .cvsignores.Paul Jakma2008-08-221-0/+12
| | |