summaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
* 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
| | |
| | * [bgpd] TCP-MD5: password vty configuration and initial Linux supportPaul Jakma2008-07-215-2/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-07-21 Paul Jakma <paul.jakma@sun.com> * bgp_packet.c: (bgp_open_receive) fix warning in a zlog call * bgp_vty.c: (bgp_vty_return) add return code * bgpd.c: (bgp_master_init) setup the socket list. * bgp_network.c: Remove the dual IPv4/6 socket thing for now, which was implemented by Michael, until such time as its clear its required for Linux (see sockopt comments). IPv6 support, including IPv4 sessions on AF_INET6 sockets, therefore is broken, and the '-l 0.0.0.0' arguments would need to be given to bgpd to make things work here. 2008-07-21 Michael H. Warfield <mhw@wittsend.com> YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Tomohiko Kusuda <kusuda@inetcore.com> Leigh Brown <leigh@solinno.co.uk> * bgp_network.c: (bgp_md5_set_one) shim between libzebra tcp-md5 sockopt and bgpd. (bgp_md5_set_socket) Helper for bgp_connect (bgp_md5_set) setup TCP-MD5SIG for the given peer. (bgp_connect) call out to bgp_md5_set_socket for the outgoing connect socket. (bgp_socket) save references to the listen sockets, needed if TCP-MD5SIG is applied later or changed. * bgp_vty.c: (*neighbor_password_cmd) New 'neighbor ... password' commands. * bgpd.c: (peer_{new,delete) manage TCP-MD5 password (peer_group2peer_config_copy) inherit TCP-MD5 password (peer_password_{un,}set) orchestrate the whole add/remove of TCP-MD5 passwords: applying checks, stopping peers, and trying to return errors to UI, etc. (bgp_config_write_peer) save password. Fix missing newline in writeout of neighbor ... port. 2008-07-21 Paul Jakma <paul.jakma@sun.com> * sockunion.c: ifdef out various places that converted v4mapped sockets to pure v4. Doesn't seem necessary at all, presumably a workaround for now historical inet_ntop bugs (?) 2008-07-21 Michael H. Warfield <mhw@wittsend.com> YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> * sockopt.{c,h}: (sockopt_tcp_signature) Add TCP-MD5SIG support.
| | * [lib] trivial: add const qualifier to stream_put/writePaul Jakma2008-06-073-4/+9
| | | | | | | | | | | | | | | | | | | | | 2008-06-07 Paul Jakma <paul@jakma.org> * stream.{c,h}: (stream_{put,write}) add const qualifier to source argument. Change u_char to void *.
| | * + initial edition of meta-queue for RIB updates processing (bug #431)Denis Ovsienko2008-06-023-17/+9
| | |
| | * [zebra/linux] Use BPF to filter out responses, to try avoid netlink overrunsPaul Jakma2008-05-291-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | 2008-05-29 Stephen Hemminger <stephen.hemminger@vyatta.com> * rt_netlink.c: (netlink_install_filter) BPF filter to catch and drop responses to zebra's own route messages. (kernel_init) add BPF filter on the netlink socket.
| | * [lib] Fix the struct message LOOKUP function to be more robustPaul Jakma2008-02-283-10/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-02-28 Paul Jakma <paul.jakma@sun.com> * log.c: (mes_lookup) Sowmini Varadhan diagnosed a problem where this function can cause a NULL dereference, on lookups for unknown indices, or messages with NULL strings. Can occur, e.g., debug logging code when processing received messages. Fixed to accept a pointer to a default string to be used if there is no match. * log.h: LOOKUP adjusted to match
| | * [lib/linklist] Enforce "nodes must have data" invariant more rigorouslyPaul Jakma2008-02-282-5/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-02-28 Paul Jakma <paul.jakma@sun.com> * linklist.c: This implementation expects that the data pointer not be null, e.g. listgetdata() asserts this. The list add methods don't apply the same sanity check. Noted by Jim Carlson in bug #437.
| | * [c++] remove/rename some names in headers that clash with C++ reserved wordsPaul Jakma2008-02-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-01-30 Peter Szilagyi <sp615@hszk.bme.hu> * lib/stream.h: Remove named 'new' parameter in prototype for c++ header compatibility. * ospfd/ospf_opaque.h: ditto * ospfd/ospfd.h: Renamed struct export to _export for c++ header compatibility. * ospf6d/ospf6_area.h: ditto
| | * [link-detect] Improve BSD support.Andrew J. Schorr2008-01-112-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-01-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * lib/zebra.h: Revert previous change, no need to include <net/if_media.h> here. * zebra/ioctl.c: If HAVE_BSD_LINK_DETECT is defined, include <net/if_media.h> (if_get_flags) Remove debug messages about BSD link state. * zebra/kernel_socket.c: (bsd_linkdetect_translate) If link state is unknown, we should set the IFF_RUNNING flag.
| | * [link-detect] Try to get BSD link-detect to work properly.Andrew J. Schorr2008-01-102-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2008-01-10 Ingo Flaschberger <if@xip.at> * configure.ac: Define HAVE_BSD_LINK_DETECT if <net/if_media.h> is present. * lib/zebra.h: If HAVE_BSD_LINK_DETECT is defined, include <net/if_media.h>. * zebra/ioctl.c: (if_get_flags) If HAVE_BSD_LINK_DETECT, use the SIOCGIFMEDIA ioctl to ascertain link state. * zebra/kernel_socket.c: (bsd_linkdetect_translate) New function to map the ifm_data.ifi_link_state value into the IFF_RUNNING flag. (ifm_read) Call bsd_linkdetect_translate to fix the IFF_RUNNING flag before calling if_flags_update.
| | * [lib] add mising UL qualifier to numerical constantPaul Jakma2008-01-082-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | 2008-01-08 Pavol Rusnak <prusnak@suse.cz> * memory.c: (mtype_memstr) Fix accidental shift past width of type, constant should have been forced to UL, rather than being left to default to int.
| | * + fixed bug #418 (changing address on an existing interface doesn't cause ↵Denis Ovsienko2007-11-124-11/+41
| | | | | | | | | | | | existing static routes to be revalidated)
| | * [snmp-smux] Fix problems if 'smux peer ...' is issued multiple timesPaul Jakma2007-10-222-2/+17
| | | | | | | | | | | | | | | | | | | | | 2007-10-22 Lorenzo Colitti <lorenzo@colitti.com> * smux.c: (smux_stop) Avoid cancelling a defunct thread pointer (smux_start) Stop smux before trying to start it, possibly again.
| | * + pidfiles are now always created with 0644 perms instead if LOGFILE_MASK (0600)Denis Ovsienko2007-10-042-3/+10
| | |
| | * [privs/Solaris] Quagga should work in zones with IP instancesPaul Jakma2007-09-182-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | 2007-09-18 Paul Jakma <paul.jakma@sun.com> * privs.c: definition of ZCAP_NET_ADMIN on Solaris should be PRIV_SYS_IP_CONFIG, when that's available. Thus allowing Quagga to work with in Solaris zones with exclusive IP instances.