commit 43cd33a44e010f818633b7f144b5a0be352b41e7 Author: Paul Jakma Date: Fri Dec 8 21:27:08 2006 +0000 [0.99] Bump version to 0.99.6 2006-12-08 Paul Jakma * configure.ac: Bump to 0.99.6 commit 41b36e9013111a6da812ca000e3b978282bd27a9 Author: Paul Jakma Date: Fri Dec 8 01:09:50 2006 +0000 [isisd] Fix compiler warnings and allow v4-only compilation 2006-12-08 Hannes Gredler * isis_adjacency.c: (isis_new_adj) Allow NULL snpa argument. * isis_pdu.c: (various) Update calls to isis_new_adj() to pass NULL and use default. * (general) Add forward declarations where required. Fix up const char *'s. Allow V4-only compilation. commit 3c0755dc9772deccff2ba6e9dc0511a9af2b9d1b Author: Paul Jakma Date: Fri Dec 8 00:53:14 2006 +0000 [zebra] Changes of nexthops of static routes didnt take effect 2006-12-08 Piotr Chytla * zebra_rib.c: (static_install_ipv{4,6}) Case where existing RIB is updated must explicitely rib_addqueue the route_node, to ensure the update actually takes effect. commit 95fdcd8a793d6c271996da221c4030d8ee277891 Author: Paul Jakma Date: Fri Dec 8 00:31:22 2006 +0000 [bgpd] Bug #302, bgpd can get stuck in state Clearing 2006-12-07 Paul Jakma * bgp_fsm.c: Bug #302 fix, diagnosis, suggestions and testing by Juergen Kammer . Fix follows from his suggested fix, just made in a slightly different way. (bgp_event) Transitions into Clearing always must call bgp_clear_route_all(). (bgp_stop) No need to clear routes here, BGP FSM should do it. commit ed589c157781f92bcff0e0b1664c75b2dc6d6965 Author: Andrew J. Schorr Date: Mon Dec 4 18:26:37 2006 +0000 [ospfd] Consider all connected addresses when creating ospf interfaces 2006-12-04 Andrew J. Schorr * ospfd.c: (ospf_network_run) Remove an offending 'break' statement. Previously, after creating a single ospf_interface on a given network interface, the code would skip to the next interface without considering other connected addresses on the interface. After removing the 'break', we now consider all connected addresses. commit a39275d76d33e2b17b8f90441863ca030412a664 Author: Andrew J. Schorr Date: Thu Nov 30 16:36:57 2006 +0000 [bgpd] Implement 'debug bgp zebra' to log all messages to and from zebra. 2006-11-30 Andrew J. Schorr * bgp_debug.h: Declare new bgp_debug_zebra conf and term flags, and define BGP_DEBUG_ZEBRA. * bgp_debug.c: Declare conf_bgp_debug_zebra and term_bgp_debug_zebra. (debug_bgp_zebra, no_debug_bgp_zebra, undebug_bgp_zebra) New functions to enable/disable bgp zebra debugging. (no_debug_bgp_all) Turn off zebra debugging. (show_debugging_bgp) Show whether zebra debugging is on. (bgp_config_write_debug) Add 'debug bgp zebra' if configured. (bgp_debug_init) Add new zebra debugging commands. * bgp_zebra.c: (bgp_router_id_update, bgp_interface_add, bgp_interface_delete, bgp_interface_up, bgp_interface_down, bgp_interface_address_add, bgp_interface_address_delete, zebra_read_ipv4, zebra_read_ipv6, bgp_zebra_announce, bgp_zebra_withdraw, bgp_redistribute_set, bgp_redistribute_unset) If zebra debugging is enabled, log an appropriate debug message. commit 7f643ebf2bca2ef446cdf4f4a3e7b16958c18069 Author: Andrew J. Schorr Date: Thu Nov 30 16:17:02 2006 +0000 [ospfd] Add debug messages for a few zebra messages that had been overlooked 2006-11-30 Andrew J. Schorr * ospf_zebra.c: (ospf_router_id_update_zebra, ospf_interface_address_add, ospf_interface_address_delete) If (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE)) is enabled, then add a debug message about what Zebra is telling us. (ospf_zebra_add_discard) Add a debug message matching the one already in ospf_zebra_delete_discard. commit 8d45210e7c9e221b519d975825cb83aea5ebe47e Author: Andrew J. Schorr Date: Tue Nov 28 19:50:46 2006 +0000 [bgpd] Fix bug where a deleted route that was quickly re-added was being lost 2006-11-28 Andrew J. Schorr * bgp_route.c: (bgp_info_restore) New function that undoes the effects of a previous call to bgp_info_delete. This is used when a route is deleted and quickly re-added before the deletion has been processed. (bgp_static_update_rsclient, bgp_static_update_main, bgp_redistribute_add) Check whether a pre-existing route has the BGP_INFO_REMOVED set, and, if so, we need to call bgp_info_restore to resurrect it. commit 435408866187f3bc3c49b26f11bc83c374e55dd5 Author: Andrew J. Schorr Date: Tue Nov 28 16:36:39 2006 +0000 [ospfd] Fix bug in passive-interface default commands. 2006-11-28 Andrew J. Schorr * ospf_vty.c: (ospf_passive_interface_default) Take additional 'newval' arg so we can update ospf->passive_interface_default inside this function. More importantly, we now call ospf_if_set_multicast on all ospf_interfaces. (ospf_passive_interface, no_ospf_passive_interface) Fix bug: for 'default' case, argv[0] is undefined, so we must test for (argc == 0) before using argv[0]. And since ospf_passive_interface_default now calls ospf_if_set_multicast as needed, we can just return after calling ospf_passive_interface_default. commit 56395af70588c8fda89bf5ef327df64b5efbeb67 Author: Paul Jakma Date: Fri Oct 27 16:58:20 2006 +0000 [bgpd] trivial: non C99 u_int.._t should be uint.._t 2006-10-27 Paul Jakma * bgp_route.c: (bgp_table_stats) oops, u_intXX_t should be uintXX_t commit 8fb8a504e2c7c216b34c58e5658d84cb7dbe79b0 Author: Andrew J. Schorr Date: Tue Oct 24 19:04:26 2006 +0000 [ospfd] Stop losing subsequent default-information originate 'always' info 2006-10-24 Andrew J. Schorr * ospf_zebra.c: (ospf_redistribute_default_set) Fix bug where a new value for ospf->default_originate was being ignored if a previous 'default-information originate' command had already been processed. commit 7ffa8fa2322fb759cf1f93730cde2cee3d4ad8ee Author: Paul Jakma Date: Sun Oct 22 20:07:53 2006 +0000 [ospfd] Add passive-interface default support 2006-10-22 Yar Tikhiy * (general) Add support for passive-interface default (with minor edits by Paul Jakma). * ospf_interface.h: Add OSPF_IF_PASSIVE_STATUS macro, looking at configured value, or the global 'default' value, as required. * ospf_interface.c: (ospf_if_new_hook) Leave passive unconfigured per default, allowing global 'default' to take effect for unconfigured interfaces. * ospf_packet.c: (various) use OSPF_IF_PASSIVE_STATUS * ospf_vty.c: (ospf_passive_interface_default) new function, unset passive from all interfaces if default is enabled, as the per-iface settings become redundant. (ospf_passive_interface_update) new func, update passive setting taking global default into account. ({no,}ospf_passive_interface_addr_cmd) Add support for 'default' variant of command. (show_ip_ospf_interface_sub) Update to take global default into account when printing passive status. (ospf_config_write) ditto. * ospfd.c: (ospf_new) set global passive-interface default. * ospfd.h: (struct ospf) Add field for global passive-interface. commit 6f58544db526b4dfb09d45f8507926b0ae5fe12b Author: Paul Jakma Date: Sun Oct 22 19:13:07 2006 +0000 [bgpd] struct peer must have bgp field valid (redistribute crash) 2006-10-19 Paul Jakma * bgpd.c: (peer_new) bgp element of peer absolutely must be filled in, make peer_new() require it as argument and update all callers. Fixes a crash reported by Jan 'yanek' Bortl and Andrew Schorr where bgpd would crash in bgp_pcount_adjust trying to dereference the bgp member of bgp->peer_self, triggered through redistribution. * bgp_route.c: (bgp_pcount_adjust) assert sanity of arguments. commit ed3ebfa36b45fe487015e1918e848f0ff4500bff Author: Paul Jakma Date: Sun Oct 15 23:50:16 2006 +0000 [bgpd] Coverity CID #64: Needless NULL check, CID #64: Deref of potentially NULL pointer. 2006-10-15 Paul Jakma * bgp_packet.c: (bgp_update_packet) adv->rn can not be NULL, check is bogus - changed to assert(), CID#64. binfo is checked for NULL, but then dereferenced unconditionally, fix, CID #63. (bgp_withdraw_packet) Assert adv->rn is valid, as with bgp_update_packet(). commit 53d9f67a18dc59fd688fce999cb35653010a54fb Author: Paul Jakma Date: Sun Oct 15 23:41:16 2006 +0000 [bgpd] CID#73, potential crash in bgp statistics if called for AFI/SAFI with emtpy table 2006-10-15 Paul Jakma * bgp_route.c: (bgp_table_stats_walker) NULL deref if table is empty, bgp_table_top may return NULL, Coverity CID#73. commit dcdf399fbc7420d3edc230c9646f720825fcecda Author: Paul Jakma Date: Sun Oct 15 23:39:59 2006 +0000 [bgpd] Bug #302 fixes. ClearingCompleted event gets flushed, leaving peers stuck in Clearing. 2006-10-14 Paul Jakma * bgp_fsm.h: Remove BGP_EVENT_FLUSH_ADD, dangerous and not needed. * bgp_fsm.c: (bgp_stop) Move BGP_EVENT_FLUSH to the top of the of the function, otherwise it could flush a ClearingCompleted event, bug #302. * bgp_packet.c: Replace all BGP_EVENT_FLUSH_ADD with BGP_EVENT_ADD, fixing bug #302. commit 876b8be0ab24721e8f94d47dde022563f76db992 Author: Paul Jakma Date: Sun Oct 15 23:35:57 2006 +0000 [daemon startup] Add --dry-run/-C argument to daemons, to check config file syntax 2006-10-04 Oliver Hookins * bgpd/bgp_main.c: Add configuration check option, with '-C' rather than '-c' for consistency between daemons. * isisd/isis_main.c: ditto * ospf6d/ospf6_main.c: ditto * ospfd/ospf_main.c: ditto * ripngd/ripng_main.c: ditto * vtysh/vtysh_main.c: ditto * ripd/rip_main.c: Change the config check option to '-C' and tidy up the code. * zebra/main.c: ditto 2006-10-04 Stergiakis Alexandros * ripd/rip_main.c: This trivial patch introduces a new command-line option '-c', which instructs zebra/ripd to check its configuration file for validity, print any error message, and then exit. This is useful when the configuration file is edited by hand or otherwise, and you simply want to validate it without any other effect. * zebra/main.c: ditto commit 98954844ae56d142e96341d5dff959ec5518111e Author: Paul Jakma Date: Sun Oct 15 23:33:50 2006 +0000 [lib] Handle upgrade from SUNWzebra to Quagga for 'interface fooX:Y' commands 2006-10-14 Paul Jakma * if.c: (general) Handle upgrades from SUNWzebra, which tried to track each logical interface as a seperate struct interface, to Quagga, which assigns only one struct interface per ifindex. (if_sunwzebra_get) Try decompose a logical interface name (fooX:Y) to the 'primary' name (fooX), for Solaris. (interface_cmd) Use if_sunwzebra_get on Solaris. commit 965b83f9cc287ca36f5a4152c2ac39007c5bc6d8 Author: Andrew J. Schorr Date: Tue Sep 26 15:30:43 2006 +0000 [snmp] Fix asn_build calls to pass correct variable sizes (fixes 64-bit issues) 2006-09-26 Pierre-Yves Ritschard * smux.c: (smux_open,smux_trap,smux_register) Fix various asn_build_* calls to pass the proper length in the final argument: use sizeof() instead of sizeof(), since there were several inconsistencies between the actual variable type and the size that was passed. This should fix some problems on 64-bit architectures where sizeof(int) != sizeof(long). commit 08c8367197cb847eb88942e5d7273cf3352d967f Author: Andrew J. Schorr Date: Mon Sep 25 13:26:14 2006 +0000 [ospfd] Improve some warning messages. 2006-09-25 Andrew J. Schorr * ospf_packet.c: (ospf_packet_dup, ospf_make_md5_digest) Fix zlog_warn messages to eliminate compiler warnings. (ospf_hello) Improve warning messages to show why we are complaining. commit 301e4fb0cfab692c9ec9cbd5fdcb50058547d7cf Author: Greg Troxel Date: Wed Sep 20 14:46:07 2006 +0000 Add recent NetBSD/FreeBSD versions to list of what ought to work. Add Dragonfly. Clarify that the C99 requirement includes libraries and headers, not just compiler. commit 0cd1c32dc36ad650d6e21d44c3b289982d1f62a0 Author: Andrew J. Schorr Date: Tue Sep 19 18:51:53 2006 +0000 [bgpd] Trivial fix of printf format/arg mismatch 2006-09-19 Andrew J. Schorr * bgpd.c: (peer_uptime) Fix printf format/arg mismatch in zlog_warn message (%ld/size_t -> %lu/u_long). commit 09dd561eb444ab009103b2dde62db212eae7064a Author: Paul Jakma Date: Thu Sep 14 03:38:16 2006 +0000 [bgpd] reduce the process queue hold time to something more sensible 2006-09-14 Paul Jakma * bgp_route.c: (bgp_process_queue_init) process queue hold time too high, adds extra memory load. Change to be much lower, until such time as it's made configurable. commit 8383a9bd2721dbd8fb1b657269a2cdc40b4226e1 Author: Paul Jakma Date: Thu Sep 14 03:06:54 2006 +0000 [bgpd] RIB statistics address space size shouldnt double count space 2006-09-14 Paul Jakma * bgp_route.c: (bgp_table_stats_walker) Address space announced should only count top-level unaggregateable prefixes, to avoid falling afoul of anti-dodgy-accounting regulations in various jurisdictions.. ;) commit 9fde6624fc480995449d8243fe85602d89927eb6 Author: Paul Jakma Date: Thu Sep 14 03:02:02 2006 +0000 [bgpd] simplify peer refcounts, squash slow peer leak 2006-09-14 Paul Jakma * (general) fix the peer refcount issue exposed by previous, by just removing refcounting of peer threads, which is mostly senseless as they're references leading from struct peer, which peer_free cancels anyway. No need to muck around.. * bgp_fsm.h: Just remove the refcounting from the various TIMER/READ/WRITE/EVENT ON/OFF/ADD macros. * bgp_fsm.c: (bgp_stop) use BGP_EVENT_FLUSH, no refcounts attached to events anymore. (bgp_event) remove peer_unlock, events not refcounted. * bgpd.c: (peer_free) flush events before free. commit ca058a30b1ea57f83871ab4cf1c9a91ea4064d52 Author: Paul Jakma Date: Thu Sep 14 02:58:49 2006 +0000 [bgpd] Fix 0.99 shutdown regression, introduce Clearing and Deleted states 2006-09-14 Paul Jakma * (general) Fix some niggly issues around 'shutdown' and clearing by adding a Clearing FSM wait-state and a hidden 'Deleted' FSM state, to allow deleted peers to 'cool off' and hit 0 references. This introduces a slow memory leak of struct peer, however that's more a testament to the fragility of the reference counting than a bug in this patch, cleanup of reference counting to fix this is to follow. * bgpd.h: Add Clearing, Deleted states and Clearing_Completed and event. * bgp_debug.c: (bgp_status_msg[]) Add strings for Clearing and Deleted. * bgp_fsm.h: Don't allow timer/event threads to set anything for Deleted peers. * bgp_fsm.c: (bgp_timer_set) Add Clearing and Deleted. Deleted needs to stop everything. (bgp_stop) Remove explicit fsm_change_status call, the general framework handles the transition. (bgp_start) Log a warning if a start is attempted on a peer that should stay down, trying to start a peer. (struct .. FSM) Add Clearing_Completed events, has little influence except when in state Clearing to signal wait-state can end. Add Clearing and Deleted states, former is a wait-state, latter is a placeholder state to allow peers to disappear quietly once refcounts settle. (bgp_event) Try reduce verbosity of FSM state-change debug, changes to same state are not interesting (Established->Established) Allow NULL action functions in FSM. * bgp_packet.c: (bgp_write) Use FSM events, rather than trying to twiddle directly with FSM state behind the back of FSM. (bgp_write_notify) ditto. (bgp_read) Remove the vague ACCEPT_PEER peer_unlock, or else this patch crashes, now it leaks instead. * bgp_route.c: (bgp_clear_node_complete) Clearing_Completed event, to end clearing. (bgp_clear_route) See extensive comments. * bgpd.c: (peer_free) should only be called while in Deleted, peer refcounting controls when peer_free is called. bgp_sync_delete should be here, not in peer_delete. (peer_delete) Initiate delete. Transition to Deleted state manually. When removing peer from indices that provide visibility of it, take great care to be idempotent wrt the reference counting of struct peer through those indices. Use bgp_timer_set, rather than replicating. Call to bgp_sync_delete isn't appropriate here, sync can be referenced while shutting down and finishing deletion. (peer_group_bind) Take care to be idempotent wrt list references indexing peers. commit 2815e61ffbbf9c362896f3912d925cf78e125ee1 Author: Paul Jakma Date: Thu Sep 14 02:56:07 2006 +0000 [bgpd] Add RIB reporting commands, show bgp ... statistics 2006-09-13 Paul Jakma * bgp_aspath.c: (aspath_highest) new, return highest ASN in an aspath. * bgp_route.c: (bgp_peer_count_walker) new, do the walk done in bgp_peer_counts as a thread. (bgp_peer_counts) move walk to previous and call it via thread_execute so this RIB walk shows up in thread stats. (bgp_table_stats) New, gather some statistics for a given RIB. (bgp_table_stats_walker) New, RIB walker thread for former. (bgp_table_stats_vty) Parsing front-end for 'show bgp ...', useful model for future rationalisation of 'show ... bgp'. (bgp_route_init) Add new RIB stats commands. commit 9458b8191563eb5569f341172484a234ef2f743e Author: Greg Troxel Date: Wed Sep 13 12:13:08 2006 +0000 2006-09-13 Tom Everett * kernel_socket.c (rtm_type_str): ifdef RTM_OLD{ADD,DEL} to compile on systems that no longer define them. commit b25ea4d085c858137ec28b1be9d6ab6c30a97303 Author: Paul Jakma Date: Mon Sep 11 02:14:16 2006 +0000 [ripd] bug #293: routemap set metric doesn't check for underflow correctly 2006-09-11 Paul Jakma * rip_routemap.c: (route_set_metric) underflow check needs to use signed, problem identified and diagnosed by Pavel Nikiforov in bug #293. commit 3e557ae1ea7693d91b6df42c2529952d6a349911 Author: Paul Jakma Date: Mon Sep 11 02:10:40 2006 +0000 [ripd] bug #278: remove gratuitous use of mid-function declaration 2006-09-11 Paul Jakma * ripd.c: (rip_read) remove gratuitous use of mid-function declaration of vrecv, bug #278. commit 1a392d46db1917dfca2ddd06d7f0021396f8ecfa Author: Paul Jakma Date: Thu Sep 7 00:24:49 2006 +0000 [bgpd] Handle pcount as flags are changed, fixing pcount issues 2006-09-06 Paul Jakma * (general) Squash any and all prefix-count issues by abstracting route flag changes, and maintaining count as and when flags are modified (rather than relying on explicit modifications of count being sprinkled in just the right places throughout the code). * bgp_route.c: (bgp_pcount_{dec,inc}rement) removed. (bgp_pcount_adjust) new, update prefix count as needed for a given route. (bgp_info_{uns,s}et_flag) set/unset a BGP_INFO route status flag, calling previous function when appropriate. (general) Update all set/unsets of flags to use previous. Remove pcount_{dec,inc}rement calls. No need to unset BGP_INFO_VALID in places where bgp_info_delete is called, it does that anyway. * bgp_{damp,nexthop}.c: Update to use bgp_info_{un,}set_flag. * bgp_route.h: Export bgp_info_{un,}set_flag. Add a 'meta' BGP_INFO flag, BGP_INFO_UNUSEABLE. Move BGP_INFO_HOLDDOWN macro to here from bgpd.h commit ff7924f6c0437e2f3cc3710570414ae87a828724 Author: Paul Jakma Date: Mon Sep 4 01:10:36 2006 +0000 [bgpd] Add 'show ... neighbor .... prefix-counts' command 2006-09-03 Paul Jakma * bgp_route.c: Add 'show ... bgp ... prefix-count' commands, to provide detailed counts of prefixes for a peer. Informative, and should help pin down to pfxcnt drift problems. commit b5aeb4410ae3722a5f331850acbc84c39e3fcd9f Author: Paul Jakma Date: Wed Aug 30 18:47:37 2006 +0000 [ospfd] Fix assertion in DB-exchange fix, hit by ogier-db-ex-opt commit 2006-08-28 Andy Gay * ospf_packet.c: (ospf_make_db_desc) Assert added with More-bit fixes does not hold up with addition of Ogier DB-Exchange optimisation, which can empty the db-summary list in between sent DD packets. Remove assert, update More-bit always when in Exchange.