| Age | Commit message (Collapse) | Author | 
|---|
|  | 2006-08-26 Paul Jakma <paul.jakma@sun.com>
	* heavy-wq.c: (slow_func_del,slow_func) update to match workqueue
	  changes | 
|  | 2006-08-25 Paul Jakma <paul.jakma@sun.com>
	* (general) Bug #134. Be more robust to backward time changes,
	  use the newly added libzebra time functions.
	  In most cases: recent_time -> recent_relative_time()
	  gettimeofday -> quagga_gettime (QUAGGA_CLK_MONOTONIC, ..)
	  time -> quagga_time.
	  (ospf_make_md5_digest) time() call deliberately not changed.
	  (ospf_external_lsa_refresh) remove useless gettimeofday, LSA
	  tv_orig time was already set in ospf_lsa_new, called via
	  ospf_external_lsa_new. | 
|  | 2006-08-25 Paul Jakma <paul.jakma@sun.com>
	* thread.c: (general) Add support for monotonic clock, it may still
	  jump forward by huge amounts, but should be immune to going
	  backwards. Fixes bug #134.
	  (quagga_gettimeofday_relative_adjust) helper, does what name
	  says - adjusts gettimeofday based relative timer.
	  (quagga_gettimeofday) helper to keep recent_time up to date.
	  (quagga_get_relative) helper, update and getch the relative
	  timer using gettimeofday(). POSIX CLOCK_MONOTONIC is also
	  supported, but the code is not enabled yet nor tested.
	  (quagga_real_stabilised) helper, retrieve absolute time but
	  stabilised so as to never decrease.
	  (quagga_gettime) Exported interface, analogous to POSIX
	  clock_gettime() in interface, supporting several clocks.
	  (quagga_time) Exported interface, analogous to traditional
	  time(), will never decrease.
	  (recent_relative_time) Convenience function to retrieve
	  relative_time timeval, similar to existing recent_time absolute
	  timeval, for when an approximately recent value will do.
	  (remainder) Update to use above helpers.
	  (thread_getrusage) Previously was a macro, but needs to be
	  a function to twiddle with thread.c private stuff.
	* thread.c: Point the GETRUSAGE macro at previous function.
	  Export quagga_gettime, quagga_time and recent_relative_time for
	  general use. | 
|  | 2006-08-03 Paul Jakma <paul.jakma@sun.com>
	* ospf_packet.c: (ospf_make_db_desc) Implement
	  draft-ogier-ospf-dbex-opt DB-exchange optimisation. | 
|  | 2006-08-03 Paul Jakma <paul.jakma@sun.com>
	* ospf_packet.c: (ospf_make_db_desc) Unset the DD More bit
	  after constructing the packet, if appropriate.
	  (ospf_db_desc_proc) Speed up Exchange, slave should raise
	  ExchangeDone earlier, as RFC mandates, by forming its reply
	  before deciding whether both sides are done, avoids a
	  needless round of empty DD packet exchanges at the end of
	  Exchange, hence speeding up ExchangeDone.
	  (ospf_db_desc) use UNSET_FLAG macro. | 
|  | 2006-08-04 Paul Jakma <paul.jakma@sun.com>
	* ospf_lsdb.c: (ospf_lsdb_delete_entry) new function, consolidate
	  exact same functionality replicated in other functions.
	  (ospf_lsdb_add) Strip out code by using ospf_lsdb_delete_entry.
	  (ospf_lsdb_delete) ditto.
	  (ospf_lsdb_delete_all) ditto. | 
|  | 2006-08-06 Paul Jakma <paul.jakma@sun.com>
	* rtadv.h: depends on interface.h, so should include it. | 
|  | 2006-08-06 Paul Jakma <paul.jakma@sun.com>
	* interface.h: (ifstat_update_proc) declaration should match
	  ifstat_update_sysctl really, which is to not return status, as
	  such status is not used anywhere.
	* if_{proc,sysctl}.c: Make ifstat_update_* definitions and return values
	  consistent with each other and their declarations, ie:
	  (void) (*) (void). | 
|  | 2006-08-06 Paul Jakma <paul.jakma@sun.com>
	* bgp_aspath.c: (aspath_loop_check) Fix the typo-bug which
	  essentially had disabled this check. Problem reported by
	  Bartek Kania <mrbk@gnarf.org> in [quagga-users 7388].
	* aspath_test.c: (validate) Fix the sense of the aspath_loop_check,
	  which was the wrong way around and had actually been testing for
	  aspath_loop_check to be buggy. | 
|  | 2006-08-01 Paul Jakma <paul.jakma@sun.com>
	* irdp_main.c: (irdp_advertisement) free the stream here, when done,
	  right under where it was allocated so it's blindingly obvious
	  it's correct. This possibly fixes a very slow leak of streams in
	  zebra.
	* irdp_packet.c: (send_packet) don't free the stream here as
	  it's hard to tell if right, plus an error case seemed to
	  returning before free anyway. | 
|  | 2006-08-04 Paul Jakma <paul.jakma@sun.com>
	* misc_null.c: Add ifstat_update_sysctl, add another required
	  header. | 
|  | 2006-08-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* misc_null.c: Must include header files to get older versions of gcc
	  to process the #pragma statements properly. | 
|  | 2006-07-28 Paul Jakma <paul.jakma@sun.com>
	* main.texi: link-detect works on Solaris too.
	* ospfd.texi: Twiddle around with anchors a bit more.
	  Clarify how setting MD5 auth by area and by interface interact,
	  and add cross-references, as well as to the required
	  command for setting key material. | 
|  | 2006-07-27 Paul Jakma <paul.jakma@sun.com>
	* quagga.texi: Remove unused index definitions
	  Add an Index node - for the concept index.
	* routeserver.texi: Set exampleindex to 0, so the example configs
	  with long IPv6 addresses stand better chance of fitting.
	* overview.texi: 'Supported RFC' -> 'Supported RFCs'
	  Remove paragraph indentation - texinfo does that.
	  Revise the supported OS list slightly.
	  Remove the IPv6 stack list, seems very dated and irrelevant.
	  Revise the 'How to get Quagga' section.
	* ospfd.texi: minor tweaks: add some anchors, fix some minor
	  format issues.
	  Revise the help for 'abr-type'.
	  Note that text authentication is unwise, recc'd MD5.
	  Add some extra text for redistribute and passive-interface,
	  about how latter can substitute for redist connected. | 
|  |  | 
|  | 2006-07-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* ospfd.c: (ospf_router_id_update) Fix and document the algorithm for
	  selecting the router ID: if there is not a statically configured ID,
	  then stick to the most recent value to avoid disruptive changes.
	  This should fix bug #288. | 
|  | 2006-07-27 Paul Jakma <paul.jakma@sun.com>
	* rib.h: (struct rib) Add a route_node rn_status flag field,
	  this has to be copied every time head RIB of a route_node
	  changes.
	  Remove the rib lock field, not needed - see below.
	  Add a status field for RIB-private flags.
	* zebra_rib.c: Add a global for the workqueue hold time, useful
	  for testing.
	  (general) Fix for bug #268. Problem originally
	  detailed by Simon Bryden in [quagga-dev 4001].
	  Essentially, add/delete of a RIB must happen /before/ the
	  queue. Best-path selection (ie rib_process) and reaping of
	  freed RIBs can then be done after queueing. Only the route_node
	  is queued - no important RIB state (i.e. whether a RIB is to be
	  deleted) is queued.
	  (struct zebra_queue_node_t) Disappears, no longer need to
	  track multiple things on the queue, only the route_node.
	  (rib_{lock,unlock}) removed, RIBs no longer need to be
	  refcounted, no longer queued.
	  (rib_queue_qnode_del) Removed, deleted RIBs no longer deleted
	  via the queue.
	  (rib_queue_add_qnode) deleted
	  (rib_queue_add) Only the route_node is queued for best-path
	  selection, we can check whether it is already queued or
	  not and avoid queueing same node twice - struct rib * argument
	  is not needed.
	  (rib_link/unlink) (un)link RIB from route_node.
	  (rib_{add,del}node) Front-end to updates of a RIB.
	  (rib_process) Reap any deleted RIBs via rib_unlink.
	  Unset the route_node 'QUEUED' flag.
	  (General) Remove calls to rib_queue_add where add/del node was
	  called - not needed, update calls where not.
	  Ignore RIB_ENTRY_REMOVEd ribs in loops through route_nodes | 
|  | 2006-07-27 Paul Jakma <paul.jakma@sun.com>
	* debug.{c,h}: Add 'debug zebra rib' and 'debug zebra rib queue'. | 
|  | 2006-07-27 Paul Jakma <paul.jakma@sun.com>
	* {ioctl,kernel}_null.c: Dummy/Null kernel method implementations,
	  useful for testing zebra code that calls such methods.
	* {redistribute,misc}_null.c: Dummy/Null methods, as above. But
	  for zclient, and for various misc functions.
	* test_main.c: Test harness for zebra, currently just to test the
	  RIB.
	* Makefile.am: Build testzebra using above.
	* zebra_rib.c: Add a global for the workqueue hold time, useful
	  for testing. | 
|  | 2006-07-27 Paul Jakma <paul.jakma@sun.com>
	* bgpd.c: (peer_delete) Ensure freed buffers can not be
	  accidently reused. A potential fix for bug #287. | 
|  | 2006-07-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* vtysh.1: Document new options -d and -E, and note that now multiple
	  -c options may be supplied, with embedded linefeed now supported.
	  In BUGS section, remove warning about vtysh causing a daemon
	  to freeze, since this has been fixed.
	* vtysh_main.c: (usage) Add new -d and -E options.  And note that
	  -c can be used multiple times, possibly with embedded linefeeds.
	  (longopts) Add new -d and -E options.
	  (main) Add new -d and -E options, and create a linked list to
	  support multiple -c options.  Do not call vtysh_connect_all until
	  after vtysh_read_config(config_default) and vtysh_auth have
	  succeeded.  This prevents the vtysh.conf file from configuring
	  any daemons, and it ensures that authentication has been passed
	  before we send any commands to any daemons.  Call vtysh_connect_all
	  with any daemon name supplied with -d.  If it is unable to connect
	  to any daemons, issue an error message and exit immediately.
	  When used in -c mode, call vtysh_execute("enable") before
	  executing the commands in order to match interactive behavior.
	  And detect embedded linefeed chars in -c commands and break them up
	  appropriately.
	* vtysh.h: (vtysh_connect_all) Fix proto to reflect new
	  daemon_name argument, and that it now returns an integer -- the
	  number of daemons to which we were able to connect.
	* vtysh.c: (vtysh_connect_all) Add a new daemon_name argument.
	  If supplied, connect only to that daemon.  And return
	  the number of daemons to which we were able to connect.
	  (vtysh_prompt): Performance enhancement -- make struct utsname
	  static so we call uname to get the hostname only once. | 
|  | 2006-07-27 Rumen Svobodnikov <rumen@telecoms.bg>
	* connected.c: (connected_up_ipv4) interface connected routes always
	  go to table main (or otherwise they cannot be used by linux as
          nexthops)
	* zserv.c: (zread_ipv4_add) send route to the correct routing table
	* zebra_rib.c (static_install_ipv4) set routing table | 
|  | 2006-07-26 Paul Jakma <paul.jakma@sun.com>
	* ospf_lsa.{c,h}: (ospf_lsa_unlock) Change to take a double pointer
	  to the LSA to be 'unlocked', so that, if the LSA is freed, the
	  callers pointer to the LSA can be NULLed out, allowing any further
	  use of that pointer to provoke a crash sooner rather than later.
	* ospf_*.c: (general) Adjust callers of ospf_lsa_unlock to match
	  previous. Try annotate 'locking' somewhat to show which 'locks'
	  are protecting what LSA reference, if not obvious.
	* ospf_opaque.c: (ospf_opaque_lsa_install) Trivial: remove useless
	  goto, replace with return.
	* ospf_packet.c: (ospf_make_ls_ack) Trivial: merge two list loops,
	  the dual-loop predated the delete-safe list-loop macro. | 
|  | 2006-07-25 Paul Jakma <paul.jakma@sun.com>
	* ospf_neigbor.h: (struct ospf_neighbor) Add some additional
	  neighbour state statistics fields, timestamps for progressive
	  and regressive state changes, and pointer to event string
	  for the latter state change.
	* ospf_nsm.c: (nsm_notice_state_change) Update new state changs
	  history as required.
	* ospf_vty.c: (show_ip_ospf_neighbor_detail_sub) Print out above
	  new per-neighbour state change stats. | 
|  | 2006-07-25 Paul Jakma <paul.jakma@sun.com>
	* thread.h: (struct thread) Add a cache pointer to the struct
	  cpu_thread_history, if it is known - saving hash lookup on
	  each thread_call.
	* thread.c: (thread_call) Cache the pointer to the
          cpu_thread_history, so that future thread_calls of same
          thread can avoid the hash_lookup. | 
|  | 2006-07-10 Paul Jakma <paul.jakma@sun.com>
	* ospf_nsm.c: (ospf_nsm_event) Record state change timestamp
	  and event in nbr struct.
	* ospf_neighbor.h: (struct ospf_neighbor) Add fields to record
	  timestamp of last NSM change and event.
	* ospf_vty.c: (show_ip_ospf_neighbor_detail_sub) Print
	  last state change timestamp and event, if available. | 
|  | 2006-07-10 Paul Jakma <paul.jakma@sun.com>
	* ospf_nsm.c: (nsm_notice_state_changes) Move state change
	  logging code to new func to declutter nsm_change_state and
	  ospf_nsm_event.
	  Log event with AdjChange, it's useful to know.
	  (nsm_change_state) move adjchange and snmp logging to previous.
	  (ospf_nsm_event) call nsm_notice_state_changes from here.
	  Move the debug message to entry of function, so it gets out
	  even if something goes wrong. | 
|  | 2006-07-10 Paul Jakma <paul.jakma@sun.com>
	* ospf_nsm.c: (nsm_change_state) call nsm_clear_adj for all
	  adjacency losses, hence removing need for nsm_reset_nbr.
	  (nsm_reset_nbr) kill it, clear_adj in previous does fine.
	  (nsm_kill_nbr,nsm_start) remove nsm_reset_nbr call.
	  (ospf_nsm_event) Allow NSM function to be NULL, this along with
	  removal of nsm_reset_nbr, allows a bunch of now useless functiosn
	  to be removed.
	  Remove some useless variables.
	  (nsm_ignore) now useless, remove.
	  (nsm_bad_ls_req) ditto
	  (nsm_seq_number_mismatch)   "
	  (nsm_oneway_received)       "
	  (nsm_inactivity_timer)      "
	  (nsm_ll_down)               "
	  (NSM) replace removed action functions with NULL. | 
|  | 2006-07-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* ospf_packet.c: (ospf_hello) Improve NetworkMask mismatch warning
	  message to include interface name and conflicting prefix lengths. | 
|  | 2006-07-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* vty.c: (vty_log_out) Do not call vty_close, because this could
	  result in a parent function's accessing the freed memory.
	  Instead, set status VTY_CLOSE and call shutdown(vty->fd, SHUT_RDWR).
	  And add a comment on vty_close. | 
|  | 2006-07-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* vty.c: (vty_log_out, vty_read, vty_flush, vtysh_flush, vtysh_read)
	  After an I/O error, must set vty->monitor to 0 before calling
	  zlog_warn, otherwise an infinite recursion could occur
	  (since zlog_warn triggers a message to be written to the vty,
	  and that in turn triggers another error message when it fails, etc.). | 
|  | 2006-07-07 Paul Jakma <paul.jakma@sun.com>
	* ospf_nsm.h: Add a NSM_Deleted neighbour state, to act as dummy
	  state indicating the neighbour is to be deleted.
	* ospf_nsm.c: (general) Use the NSM_Deleted state to delete
	  neighbours, thus allowing code to be slightly more obvious
	  in its flow.
	  (nsm_timer_set) Add NSM_Deleted. Add another timer the code
	  missed.
	  (nsm_kill_nbr) No need for special case call to nsm_change_state
	  anymore.
	  Make the assert and error-handling for same case more readable
	  (Andrew Schorr)
	  Remove the call to ospf_nbr_delete, nsm_change_state can do
	  this generally now via NSM_Deleted.
	  (struct ... NSM) Add the dummy NSM_Deleted state, the 3 events
	  that can lead to nsm_kill_nbr all now transition the NBR to
	  NSM_Deleted and the general change_state function can be left
	  to do the work.
	  (ospf_nsm_event) Special casing of events and early-return can
	  be removed now.
	  On transition into Deleted, delete the nbr.
	* ospf_dump.c: (ospf_nsm_state_msg) Add Deleted. | 
|  | 2006-07-06 Paul Jakma <paul.jakma@sun.com>
	* ospf_nsm.c: (ospf_nsm_event) LLDown event also results in nbr
	  being deleted, requires early-return too. Likely explains
	  some crash reports after interface events. | 
|  | 2006-07-04 Paul Jakma <paul.jakma@sun.com>
	* quagga.info: remove auto-generated file. It will still be
	  present in dist tarballs, so shouldn't affect anyone but
	  direct users of CVS. Required texinfo version should be
	  widely available.
	* .cvsignore: ignore quagga.info | 
|  | 2006-07-04 Paul Jakma <paul.jakma@sun.com>
	* ospf_nsm.c: (general) Various small cleanups from Andrew's
	  review of last set of patches.
	  (nsm_timer_set) Loading, Full and default can share
	  same code too.
	  (nsm_should_adj) Can just be one big OR.
	  (nsm_twoway_received) Collapse into return statement. | 
|  | 2006-07-02 Paul Jakma <paul.jakma@sun.com>
	* ospf_lsa.c: (ospf_translated_nssa_refresh) CID #13. | 
|  | 2006-07-02 Paul Jakma <paul.jakma@sun.com>
	* ospf_nsm.c: (nsm_clear_adj) clear adjacency related state for a
	  neighbour, needed for some state changes from > ExStart down
	  to ExStart or less, which need not go through nsm_reset_nbr.
	  (nsm_reset_nbr) move code to former. Should be static.
	  (ospf_nsm_event) Remove long dead code.
	  Use nsm_clear_adj for state changes that take down
	  adjacencies to TwoWay/ExStart.
	  (nsm_kill_nbr) Oops, action function shouldn't try return
	  1 for error. | 
|  | 2006-07-02 Paul Jakma <paul.jakma@sun.com>
	* ospf_nsm.c: (nsm_timer_set) ls_req timer should be OFF in
	  early states.
	  Compact several identical sections.
	  Set inactivity timer to OFF for Down, for documentary purposes. | 
|  | 2006-07-02 Paul Jakma <paul.jakma@sun.com>
	* ospf_nsm.c: (ospf_nsm_event) Don't allow action functions to
	  change next_state if the NSM tables do not indicate
	  next_state is conditional, log warning if one tries -
	  existing code appears fine though. | 
|  | 2006-07-02 Paul Jakma <paul.jakma@sun.com>
	* ospf_nsm.c: (nsm_should_adj) New function, just consolidate the
	  10.4 adjacency check from nsm_twoway_received/nsm_adj_ok.
	  (nsm_twoway_received/nsm_adj_ok) Use former. | 
|  | 2006-07-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* vty.c: (vty_log_out) Debug messages to terminal vty sessions
	  should include timestamps. | 
|  | 2006-07-02 Paul Jakma <paul.jakma@sun.com>
	* rt_netlink.c: (netlink_interface_addr) Fix CID #104, can not
	  proceed if addr is NULL.
	* zebra_rib.c: (static_add_ipv6) Fix CID #18, double check
	  required arguments are supplied for the given nexthop type. | 
|  | 2006-07-02 Paul Jakma <paul.jakma@sun.com>
	* bgp_fsm.c: (bgp_{stop,start}) Move clear/free of certain
	  bits of state from stop to start, as they may be used via
	  peer references on clearing queues.. | 
|  | 2006-06-29 Paul Jakma <paul.jakma@sun.com>
	* rip_zebra: (general) convert redistribute commands to use
	  the auto-generated defines. | 
|  | - entry was left in wrong order, according to date. | 
|  | 2006-06-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* ospf_vty.c: (show_ip_ospf_neighbor_id) Should show all instances
	  of that neighbor (since it may appear on multiple interfaces)
	  instead of bailing out after showing the first match. | 
|  | 2006-06-28 Paul Jakma <paul.jakma@sun.com>
	* memory.c: Fix typo in cpp conditional around malloc.h, from
	  comment in bug #269. | 
|  | 2006-06-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* ospf_nsm.c: (nsm_twoway_received) When deciding whether to
	  change from state Init to ExStart, the test for whether the
	  neighboring router is DR or BDR should be against the
	  local router's notion of DR/BDR, not the neighbor's view. | 
|  | 2006-06-28 Erik Muller <erikm@internap.com>
	* ospfd.h: Define 2 new struct ospf config flags:
	  OSPF_LOG_ADJACENCY_CHANGES and OSPF_LOG_ADJACENCY_DETAIL
	* ospf_nsm.c (nsm_change_state): Log adjacency changes if
	  requested.
	* ospf_vty.c (ospf_log_adjacency_changes): New command function
	  to implement ospf subcommand "log-adjacency-changes [detail]".
	  (no_ospf_log_adjacency_changes) Turn off log-adjacency-changes.
	  (show_ip_ospf) Show whether adjacency changes are logged.
	  (ospf_config_write) Add "log-adjacency-changes [detail]" to config.
	  (ospf_vty_init) Add ospf_log_adjacency_changes and
	  no_ospf_log_adjacency_changes.
	* ospfd.texi: Document new ospf router subcommand
	  "log-adjacency-changes [detail]". | 
|  | 2006-06-27 Paul Jakma <paul.jakma@sun.com>
	* route_types.awk: Fix previous commit. Forgot to remove the
	  printf of the bare/numeric route-type help string (empty string) |