| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
This reverts commit 2585b03455c2c495ab3a0cfbe13c4e5d3ac70e11.
|
|
|
|
| |
This reverts commit 5405c4db88bd0b439f41776c94452b4360de1509.
|
|
|
|
| |
May fix issues with IPV6 and MD5.
|
|
|
|
|
| |
The socket address is already normalize during the accept handling,
so the broken code in md5sig is unnecessary.
|
|
|
|
|
| |
This is probably why using IPV4 in IPV6 doesn't work in BGP.
The code to normalize address was not copying port value!
|
|
|
|
| |
route_node_delete used by inline before defined.
|
|\
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
bgpd/bgp_aspath.c
bgpd/bgpd.c
lib/smux.c
lib/workqueue.c
ospfd/ospf_snmp.c
|
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| | |
* 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
|
| |
| |
| |
| | |
route_node_lock/route_node_unlock are trivial and used often.
|
| |
| |
| |
| | |
smux_trap and oid_copy should allow read-only source.
|
| |
| |
| |
| |
| | |
Avoid bugs, and improve cache locality by allowing message lists
to be read/only.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
If shutting down, thread may still be pending, so cancel it.
Fixes one possible OOPS in BGP
|
| |
| |
| |
| | |
When BGP crashes, sometimes all we get to see is syslog.
|
| |
| |
| |
| |
| | |
An external user was building on system without IPV6 and
it wouldn't work.
|
| | |
|
| |
| |
| |
| | |
Doesn't really help and unlikely to get upstream (pun intended).
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| | |
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)
|
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| |
| | |
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
|
| | |
|
| |
| |
| |
| |
| | |
Make the quagga upstream and vyatta where only difference was
white space.
|
| |
| |
| |
| |
| |
| | |
This reverts commit ebc04ce20a871c99dbb116a4fbada967dd750c43.
Don't really need this and it would be too hard to convince upstream
to take it.
|
| |
| |
| |
| | |
Change lost in merge.
|
| |
| |
| |
| | |
Change lost in merge.
|
|\|
| |
| |
| |
| |
| | |
Conflicts:
lib/checksum.c
|
| |
| |
| |
| |
| | |
* lib/sockunion.c: (sockunion_accept) sockunion needs to be normalised here,
as it used to before this was moved to a dedicated function..
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 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.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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 current upstream version of quagga.
|
| |\|
| | |
| | |
| | | |
Resolve all conflicts by using upstream version.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* 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.
|
| | |\ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* 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.
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | | |
--without-crypto
Autoconfig work by me, the rest was done by
"Kirill K. Smirnov" <lich@math.spbu.ru>
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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>
|
| | | |
|