commit 438589e31fe38943247f3011388b819346e473fe Author: Denis Ovsienko Date: Tue Mar 9 13:53:20 2010 +0300 release: 0.99.16 * configure.ac: bump up version number commit dca6c883ea6219460efbe3dadde4b8b9cb12c845 Author: Stephen Hemminger Date: Wed Jan 27 12:38:16 2010 +0300 lib: undo the last PIE commit 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. commit 3f3dc2bd5f8cbde24cb581ed0aed0e372bfd556c Author: Mathias Krause Date: Wed Jan 20 17:39:13 2010 +0300 lib: fix PIE build flags 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. commit 65957886bfd0dd9d95360d8b015781fc82cc09be Author: Stephen Hemminger Date: Fri Jan 15 16:22:10 2010 +0300 bgp: use monotonic clock for time of day BGP uses time() to get system time of day; but that value fluctuates with time adjustments from NTP. This can cause premature flapping of peer sessions and other failures. Use the system monotonic clock supported by Quagga thread library to avoid issue. See: http://bugzilla.vyatta.com/show_bug.cgi?id=4467 * bgpd/bgp_fsm.c * bgp_uptime_reset(): dismiss function * bgpd/bgpd.c * bgp_clock(): new function * bgpd/bgp_damp.c * bgp_reuse_timer(): employ bgp_clock() instead of time(NULL) * bgp_damp_withdraw(): idem * bgp_damp_update(): idem * bgp_damp_scan(): idem * bgp_damp_info_vty(): idem * bgp_damp_reuse_time_vty(): idem * bgpd/bgp_fsm.c * bgp_routeadv_timer(): idem * bgp_stop(): idem * bgp_establish(): idem * bgpd/bgp_packet.c * bgp_update_receive(): idem * bgpd/bgp_route.c * bgp_update_rsclient(): idem * bgp_update_main(): idem * bgp_static_update_rsclient(): idem * bgp_static_update_main(): idem * bgp_static_update_vpnv4(): idem * bgp_aggregate_route(): idem * bgp_aggregate_add(): idem * bgp_redistribute_add(): idem * bgpd/bgp_snmp.c * bgpPeerTable(): idem * bgpTrapEstablished(): idem * bgpTrapBackwardTransition(): idem * bgpd/bgpd.c * peer_create(): idem * peer_uptime(): idem * bgp_master_init(): idem commit 2cd754de60210748e61069fed2c9d4086d24c21e Author: Paul Jakma Date: Thu Jan 14 16:26:12 2010 +0300 ospfd: Fix debug messages that were masked by DISCARD_LSA * ospf_packet.c: (ospf_ls_upd) DISCARD_LSA continues, and so should be after debug messages, not before them. commit efbbcaf1aea686d118019514dcde92b13c92b0fc Author: Paul Jakma Date: Thu Jan 14 16:19:40 2010 +0300 ospfd: remove unneeded memset from a very hot function * ospf_lsdb.c: (lsdb_prefix_set) memset is unneeded, as all fields are initialised explicitly, and this function can be in the top-3 of a profile when there are a lot of LSAs. commit 0917f7e7c5920b70295c44bd8aad537bc3ee8581 Author: David Ward Date: Wed Jan 13 20:10:56 2010 +0300 lib: fix memory logging * 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). commit b6516829595ed4fc47af955de8bda9ef5be14ffd Author: Stephen Hemminger Date: Mon Dec 21 18:50:43 2009 +0300 zebra: change router-id selection algo The router-id table looks like is supposed to be sorted in current quagga code, but the nodes are not added with the sorting function. The sorting function is host byte order dependent. The values need to converted before comparison. Fixing this causes Zebra to choose the largest IP address as router-id, rather than the last address. This probably will surprise some users. The other option would be to just remove the comparison function and keep the existing LIFO behavior. Lastly, simple subtraction works well for comparing. * zebra/router-id.c * router_id_add_address(): employ listnode_add_sort() * router_id_cmp(): employ ntohl(), then compare integers commit 2d362d1099f346202cb628665ff4ae563b2594f5 Author: Stephen Hemminger Date: Mon Dec 21 12:54:58 2009 +0300 lib: make some structures constant * 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 commit da88ea82acd70adf3bab641b2300ee24319da422 Author: Stephen Hemminger Date: Thu Dec 17 13:14:28 2009 +0300 bgpd: code cleanup * bgpd/bgp_aspath.c * ashash: only used in one file, make static * aspath_count_numas(): dead code, sayonara * bgpd/bgpd.c * peer_nsf_stop(): only used in one file, make static * bgpd/bgp_packet.h * bgp_capability_receive(): add missing prototype for a global function commit 2c2397059d4d4177ed4636c08aa476a138425dc8 Author: Stephen Hemminger Date: Thu Dec 10 19:16:05 2009 +0300 ripd: fix compiler warnings * ripd/rip_interface.c * rip_request_neighbor(): comment out, unused * rip_request_neighbor_all(): idem * rip_interface_up(): Cast flags otherwise compiler complains about %lld not matching uint64_t on 64 bit x86. Print in hex since flags are bit field. * rip_interface_add(): idem * rip_interface_delete(): idem * ripd/rip_zebra.c * rip_redistribute_set(): comment out, unused * ripd/ripd.h * rip_redistribute_check(): move prototype here so compiler can check function against prototype * ripd/ripd.c * rip_update_default_metric(): comment out, unused commit e580216e1ba2db506d1942e382852d07973a5fad Author: Stephen Hemminger Date: Thu Dec 10 16:18:41 2009 +0300 ospf6d: remove dead code * ospf6d/ospf6_interface.c * loopind(): sayonara * ospf6d/ospf6_top.c * ospf6_delete(): comment out, it might be useful if real shutdown is added commit 813f6a0064e76fdc8d509ddfbd4d3870d7027850 Author: Stephen Hemminger Date: Thu Dec 10 16:13:09 2009 +0300 ospf6d: fix warnings from recent prefix bit commit * lib/prefix.h * prefix6_bit(): add IPv6 wrapper for prefix_bit() * ospf6d/ospf6_lsdb.c * ospf6_lsdb_type_router_head(): employ prefix6_bit() * ospf6_lsdb_type_head(): idem commit 5eb9d11bf6bbe99ce47f929a14ac03351f21fe27 Author: Stephen Hemminger Date: Thu Dec 10 15:52:33 2009 +0300 ripngd: compiler warnings cleanup * ripngd/ripng_interface.c * ripng_check_max_mtu(): unused, sayonara * ripng_interface_down(): cast flag arguments to logging function * ripng_interface_add(): idem * ripng_interface_delete(): idem * ripngd/ripngd.c * ripng_recv_packet(): avoid aliasing warning dereferencing pointer commit ab0f61552622084a13ede59adefc4c54b5513d7b Author: Stephen Hemminger Date: Thu Dec 10 14:22:44 2009 +0300 zebra: deal with irdp compile warnings * zebra/irdp.h * irdp_send_thread(): move prototype to common header file * irdp_advert_off(): idem * process_solicit(): idem * irdp_read_raw(): idem * send_packet(): idem * zebra/irdp_interface.c * inet_2a(): move function to where it is used * in_cksum(): lib/checksum.h already provides prototype * irdp_send_thread(): prototype moved away * inet_2a(): idem * irdp_advert_off(): idem * b1, b2, b3, b4: get rid of global buffers for inet_2a() * if_group(): add local buffer for inet_2a() * if_add_group(): idem * if_drop_group(): idem * irdp_config_write(): idem * Adv_new(): make static * zebra/irdp_main.c * irdp_read_raw(): prototype moved away * send_packet(): idem * in_cksum(): lib/checksum.h already provides prototype * inet_2a(): function moved to irdp_interface.c * zebra/irdp_packet.c * b1, b2, b3, b4: get rid of global buffers for inet_2a() * in_cksum(): lib/checksum.h already provides prototype * process_solicit(): prototype moved away * irdp_read_raw(): fix uninitialized variable commit 9e4ca89c3678431560a8259c75f8b5874d83d351 Author: Stephen Hemminger Date: Thu Dec 10 11:57:05 2009 +0300 bgpd: compile warnings cleanup * bgpd/bgp_fsm.c * bgp_clearing_completed(): only used in one file, can be static * bgpd/bgp_packet.c * afi2str(): sayonara * safi2str(): sayonara * bgpd/bgp_route.c * bgp_distance_reset(): sayonara * bgpd/bgp_zebra.c * bgp_ifindex_by_nexthop(): sayonara commit cc2dd9280c4456586080d1cf4537d26c02fa9a36 Author: Stephen Hemminger Date: Wed Dec 9 17:54:49 2009 +0300 zebra: cleanup RIB meta queue code * zebra/zebra_rib.c * rib_queue_add(): indent comments and simplify debug code * rib_queue_init(): remove unneeded assert() calls and extra return statements commit 1352ef32d70dcc102074814de63b5d08e591dd2d Author: Stephen Hemminger Date: Wed Dec 9 14:43:17 2009 +0300 lib: move check_bit into prefix common code Make one version of check prefix bit, and put it inline with proper prototype. This gets rid of some macro's and also some assert() that can never happen on a non-broken compiler. * bgpd/bgp_table.c * CHECK_BIT(): sayonara * check_bit(): sayonara * SET_LINK(): sayonara * set_link(): make use of prefix_bit() instead of check_bit() * bgp_node_match(): idem * bgp_node_lookup(): idem * bgp_node_get(): idem * lib/prefix.h * prefix_bit(): new inline version of check_bit() * lib/table.c * CHECK_BIT(): sayonara * check_bit(): sayonara * SET_LINK(): sayonara * set_link(): make use of prefix_bit() instead of check_bit() * route_node_match(): idem * route_node_lookup(): idem * route_node_get(): idem * ospf6d/ospf6_lsdb.c * CHECK_BIT(): sayonara * ospf6_lsdb_lookup_next(): make use of prefix_bit() instead of CHECK_BIT() * ospf6_lsdb_type_router_head(): idem * ospf6_lsdb_type_head(): idem * ospf6d/ospf6_route.c * CHECK_BIT(): sayonara * ospf6_route_match_head() make use of prefix_bit() instead of * CHECK_BIT() commit 3949a60c350fea947d2701e2fe709b174ae7af16 Author: Stephen Hemminger Date: Wed Dec 9 14:13:27 2009 +0300 lib: fix warning on little endian * md5.c * md5_calc(): If building on little endian then X will be 'const uint32_t' which causes compiler warning in code that never gets used. Just move the endif to make sure code is not checked. commit b0b709ab6656ba07f12fe0d256912dcabba19017 Author: Stephen Hemminger Date: Tue Dec 8 13:26:14 2009 +0300 zebra: fix more warnings in rtadv * zebra/rtadv.c * rtadv_free(): remove unused function * rtadv_recv_packet(): break up cast/dereference to avoid compiler type pun warning * rtadv_read(): initialize ifindex, because compiler can't figure out that it is okay commit d02c56cdf0c2e01a986417ed973dd7a2a5368ac1 Author: Stephen Hemminger Date: Tue Dec 8 13:14:27 2009 +0300 zebra: fix more compiler warnings * zebra/zebra_rib.c * nexthop_active_update(): make local int vars unsigned * nexthop_active_check(): return unsigned for consistency * rib_dump(): cast time in printf format * vrf_free(): remove unused function * vrf_lookup_by_name(): idem * rib_if_up(): idem * rib_if_down(): idem commit ffac19c58ee636274cd3972b584e37cd9a3331de Author: Stephen Hemminger Date: Tue Dec 8 12:27:02 2009 +0300 zebra: remove unused function to fix warning * zebra/interface.c * if_supported_family(): sayonara commit 38cc00cd823fe945c7748de18c3e8932d98dd8f8 Author: Stephen Hemminger Date: Tue Dec 8 12:00:50 2009 +0300 lib: make match functions take const args * table.c: general type safety and compiler help: * maskbit[]: become const * route_node_match(): take const args * route_node_match_ipv4(): idem * route_node_match_ipv6(): idem * check_bit(): idem, plus adjust local vars typing commit 0d6388abc7a5da2a20a4854c400c8e176127e480 Author: Denis Ovsienko Date: Mon Dec 7 19:19:13 2009 +0300 lib: remove unused function: route_dump_node() commit 78e6cd98dd88393d0863388caf37dae45435db7a Author: heasley Date: Mon Dec 7 16:41:14 2009 +0300 lib: log source of vty connections (bug #566) heasley: I've used this for a while to track usage. commit 64bf3ab7291cc5c39c5add0dc1a7de447914248b Author: Ondrej Zajicek Date: Mon Dec 7 12:33:20 2009 +0300 ospf6d: review LSA sequence number comparison It seems that there is a bug in ospf6d in ospf6_lsa_compare(): If LSA A has sequence number smaller than 0x80000000 and LSA B has sequence number larger than 0x80000000, ospf6_lsa_compare() returns that B is more recent than A, although RFC says that sequence numbers should be compared as signed numbers (0x8000001 smallest and 0x7FFFFFFF largest). In ospfd, the function ospf_lsa_more_recent() has it right. The problem appears when Quagga is used together with OSPFv3 in development version of BIRD daemon ( http://bird.network.cz/ ), which creates LSAs with maximum sequence number (0x7FFFFFFF) as a part of flushing/premature aging LSA from OSPF area. Because both daemons has different idea of which LSA instance is more recent, it would lead to LSA storm. commit 2eb445e1c22e36d07e2dbfd302ff438c4190b9fe Author: Denis Ovsienko Date: Fri Dec 4 17:32:54 2009 +0300 bgpd: work around warning in assegments_parse() commit e6f148e6e06a37a65afb322eca6a3298b8ade8d2 Author: David Ward Date: Thu Dec 3 21:43:11 2009 +0300 zebra: handle RTF_CLONING removal from FreeBSD 8.0 The RTF_CLONING flag has been removed in FreeBSD 8.0 with arp-v2 (see http://svn.freebsd.org/viewvc/base/stable/8/UPDATING?view=markup), since it no longer has any meaning. This patch checks if RTF_CLONING exists before using it. commit 4a4bba04c7398069a6d43fa8ccf0d15bad5faaa2 Author: David Ward Date: Thu Dec 3 21:24:36 2009 +0300 isisd: fix --enable-isis-topology for 64-bit Linux commit a0f63a4c7d7a6404fd43d139809202a693ae42e9 Author: heasley Date: Thu Dec 3 21:14:16 2009 +0300 zebra: fix argument reference in strncpy() call for BSD commit 362573e5642b29ffeef5000351adc2d6ed6dfca3 Author: David Ward Date: Thu Dec 3 20:44:35 2009 +0300 isisd: fix BPF ioctl() calls, treat "true" and "false" as reserved Avoid a potential conflict with the C99 defines 'true' and 'false' found in by choosing better variable names. Also fix the calls to these ioctls, as described in in FreeBSD, NetBSD, and OpenBSD: * BIOCGBLEN, BIOCIMMEDIATE, BIOCSSEESENT (the parameter should be of type 'u_int') * BIOCPROMISC (there should be no parameters) commit cdb9950482e1180b4a2b6ba05d171bdf2649c84c Author: David Ward Date: Thu Dec 3 20:22:47 2009 +0300 configure: fix spelling commit 8b6a15b2821e687177cef3ff057e1c4ec76df888 Author: Stephen Hemminger Date: Thu Dec 3 19:25:04 2009 +0300 ospfd: VTY strings cleanup Several bits of text can be local or are unused. commit 3408afe2acf34729730a7dc1efdd587c561b6f59 Author: Stephen Hemminger Date: Thu Dec 3 19:18:26 2009 +0300 ospfd: comment out unused function commit 917e29954e652518326dbbdb90325a978ef69535 Author: Stephen Hemminger Date: Thu Dec 3 19:07:00 2009 +0300 ospfd: make local functions static 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. commit a50c107e3fbdaaea78a12a868a3865fd25136ad2 Author: David Ward Date: Thu Dec 3 15:34:39 2009 +0300 zebra: fix RIB debug message for IPv6 Apply changes from commit f304cb48f0d7d0ff8f36e7aca8293141a9fa9e60 to rib_queue_add. Also includes spelling fixes. commit 80b2a9418f0ee70318c677778d63f860f0f397c3 Author: Tom Goff Date: Thu Dec 3 14:53:15 2009 +0300 zebra: make declaration const in rtm_flag_dump() * kernel_socket.c: (rtm_flag_dump) Use a const message pointer to be in sync with commit ce0db9cb11c0bc2e7f89a7d042e50afa495556b4. commit 16c1c4872b29bb22c0ff77bd1ef1018c63ca25fa Author: Tom Goff Date: Tue Dec 1 21:12:38 2009 +0300 ospf6d: fix LSA locking in ospf6_new_ls_id() * 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. commit 9964fcfc2282c8f3468b3b7355c5dea3089f0f14 Author: Dmitry Tejblum Date: Thu Nov 5 16:50:36 2009 +0300 configure: fix HAVE_CLOCK_MONOTONIC spelling commit 827341b797f602f4cd7932a777f819b530521b05 Author: Denis Ovsienko Date: Mon Sep 28 19:34:59 2009 +0400 [ospfd] enable more OSPF cost command aliases 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. commit 50adf7832004191cdaf5a908bd9a9c0b2373e993 Author: David Ward Date: Mon Aug 31 10:42:06 2009 -0400 zebra: Fix router advertisements for non-Ethernet link layer addresses * 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