| Age | Commit message (Collapse) | Author | 
|---|
|  | 2007-04-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* log.c: (quagga_timestamp) Optimize the subsecond timestamp generation. | 
|  | 2007-04-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* command.c: (config_write_host) Save "log timestamp precision"
	  if not default value.
	  (show_logging) Show configured timestamp precision.
	  (config_log_timestamp_precision) Enable configuration of timestamp
	  precision.
	  (no_config_log_timestamp_precision) Restore default timestamp
	  precision.
	  (cmd_init) Install new timestamp precision commands.
	* log.h: (struct zlog) New timestamp_precision field.
	  (quagga_timestamp) New function to generate a timestamp with the
	  desired precision.
	  (struct timestamp_control) Declare a structure for use in avoiding
	  repeated duplicate calls to quagga_timestamp.
	* log.c: (quagga_timestamp) New function to generate a timestamp
	  of the desired precision.
	  (time_print) Call quagga_timestamp if the time hasn't already been
	  calculated.
	  (vzlog) Initialize a timestamp_control structure and pass it to
	  time_print and vty_log.
	  (zlog_backtrace) Fix 64-bit problem: cannot print size_t with %u.
	* vty.h: Must now include "log.h".
	  (vty_log) Takes an additional struct timestamp_control argument.
	* vty.c: (vty_log_out) Use new struct timestamp_control and new
	  quagga_timestamp function to print timestamps of the desired
	  precision.
	  (vty_time_print) Use new quagga_timestamp function.
	  (vty_log) Accept new struct timestamp_control argument and pass it
	  down to vty_log_out. | 
|  | 2007-04-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* lib/smux.c: (smux_trap) Fix printf format to work with 64-bit size_t.
	* ospf6d/ospf6_snmp.c: (ospfv3AreaEntry, ospfv3AreaLsdbEntry) Fix some
	  zlog_debug printf formats to work with 64-bit size_t. | 
|  | 2007-04-07 Paul Jakma <paul.jakma@sun.com>
	* lib/prefix.h: Add define to match IPv4 Link-Local addresses
	* zebra/redistribute.c: (zebra_check_addr) Don't redistribute routes
	  to IPv4 link-local prefixes, fixes bug #351.
	* zebra/redistribute.h: Export zebra_check_addr.
	* zebra/router-id.c: (router_id_bad_address) re-use zebra_check_addr
	  rather than implementing similar logic. | 
|  | 2007-03-20 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* log.c: (mes_lookup) Make the function more robust: check for
	  cases where the index does not match the key value at that position.
	  If so, give a warning and fall back to a linear search.
	  And improve the error message in cases where even that fails. | 
|  | 2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* if.h: (struct connected) Add new ZEBRA_IFA_PEER flag indicating
	  whether a peer address has been configured.  Comment now shows
	  the new interpretation of the destination addr: if ZEBRA_IFA_PEER
	  is set, then it must contain the destination address, otherwise
	  it may contain the broadcast address or be NULL.
	  (CONNECTED_DEST_HOST,CONNECTED_POINTOPOINT_HOST) Remove obsolete
	  macros that were specific to IPv4 and not fully general.
	  (CONNECTED_PEER) New macro to check ZEBRA_IFA_PEER flag.
	  (CONNECTED_PREFIX) New macro giving the prefix to insert into
	  the RIB: if CONNECTED_PEER, then use the destination (peer) address,
	  else use the address field.
	  (CONNECTED_ID) New macro to come up with an identifying address
	  for the struct connected.
	* if.c: (if_lookup_address, connected_lookup_address) Streamline
	  logic with new CONNECTED_PREFIX macro.
	* prefix.h: (PREFIX_COPY_IPV4, PREFIX_COPY_IPV6) New macros
	  for better performance than the general prefix_copy function.
	* zclient.c: (zebra_interface_address_read) For non-null destination
	  addresses, set prefixlen to equal the address prefixlen.  This
	  is needed to get the new CONNECTED_PREFIX macro to work properly.
	* connected.c: (connected_up_ipv4, connected_down_ipv4,
	  connected_up_ipv6, connected_down_ipv6) Simplify logic using the
	  new CONNECTED_PREFIX macro.
	  (connected_add_ipv4) Set prefixlen in destination addresses (required
	  by the CONNECTED_PREFIX macro).  Use CONNECTED_PEER macro instead
	  of testing for IFF_POINTOPOINT.  Delete invalid warning message.
	  Warn about cases where the ZEBRA_IFA_PEER is set but no
	  destination address has been supplied (and turn off the flag).
	  (connected_add_ipv6) Add new flags argument so callers may set
	  the ZEBRA_IFA_PEER flag.  If peer/broadcast address satisfies
	  IN6_IS_ADDR_UNSPECIFIED, then reject it with a warning.
	  Set prefixlen in destination address so CONNECTED_PREFIX will work.
	* connected.h: (connected_add_ipv6) Add new flags argument so
	  callers may set the ZEBRA_IFA_PEER flag.
	* interface.c: (connected_dump_vty) Use CONNECTED_PEER macro
	  to decide whether the destination address is a peer or broadcast
	  address (instead of checking IFF_BROADCAST and IFF_POINTOPOINT).
	* if_ioctl.c: (if_getaddrs) Instead of setting a peer address
	  only when the IFF_POINTOPOINT is set, we now accept a peer
	  address whenever it is available and not the same as the local
	  address.  Otherwise (no peer address assigned), we check
	  for a broadcast address (regardless of the IFF_BROADCAST flag).
	  And must now pass a flags value of ZEBRA_IFA_PEER to
	  connected_add_ipv4 when a peer address is assigned.
	  The same new logic is used with the IPv6 code as well (and we
	  pass the new flags argument to connected_add_ipv6).
	  (if_get_addr) Do not bother to check IFF_POINTOPOINT: just
	  issue the SIOCGIFDSTADDR ioctl and see if we get back
	  a peer address not matching the local address (and set
	  the ZEBRA_IFA_PEER in that case).  If there's no peer address,
	  try to grab SIOCGIFBRDADDR regardless of whether IFF_BROADCAST is set.
	* if_ioctl_solaris.c: (if_get_addr) Just try the SIOCGLIFDSTADDR ioctl
	  without bothering to check the IFF_POINTOPOINT flag.  And if
	  no peer address was found, just try the SIOCGLIFBRDADDR ioctl
	  without checking the IFF_BROADCAST flag.  Call connected_add_ipv4
	  and connected_add_ipv6 with appropriate flags.
	* if_proc.c: (ifaddr_proc_ipv6) Must pass new flags argument to
	  connected_add_ipv6.
	* kernel_socket.c: (ifam_read) Must pass new flags argument to
	  connected_add_ipv6.
	* rt_netlink.c: (netlink_interface_addr) Copy logic from iproute2
	  to determine local and possible peer address (so there's no longer
	  a test for IFF_POINTOPOINT).  Set ZEBRA_IFA_PEER flag appropriately.
	  Pass new flags argument to connected_add_ipv6.
	  (netlink_address) Test !CONNECTED_PEER instead of if_is_broadcast
	  to determine whether the connected destination address is a
	  broadcast address.
	* bgp_nexthop.c: (bgp_connected_add, bgp_connected_delete)
	  Simplify logic by using new CONNECTED_PREFIX macro.
	* ospf_interface.c: (ospf_if_is_configured, ospf_if_lookup_by_prefix,
	  ospf_if_lookup_recv_if) Simplify logic using new CONNECTED_PREFIX
	  macro.
	* ospf_lsa.c: (lsa_link_ptop_set) Using the new CONNECTED_PREFIX
	  macro, both options collapse into the same code.
	* ospf_snmp.c: (ospf_snmp_if_update) Simplify logic using new
	  CONNECTED_ID macro.
	  (ospf_snmp_is_if_have_addr) Simplify logic using new CONNECTED_PREFIX
	  macro.
	* ospf_vty.c: (show_ip_ospf_interface_sub) Use new CONNECTED_PEER macro
	  instead of testing the IFF_POINTOPOINT flag.
	* ospfd.c: (ospf_network_match_iface) Use new CONNECTED_PEER macro
	  instead of testing with if_is_pointopoint.  And add commented-out
	  code to implement alternative (in my opinion) more elegant behavior
	  that has no special-case treatment for PtP addresses.
	  (ospf_network_run) Use new CONNECTED_ID macro to simplify logic.
	* rip_interface.c: (rip_interface_multicast_set) Use new CONNECTED_ID
	  macro to simplify logic.
	  (rip_request_interface_send) Fix minor bug: ipv4_broadcast_addr does
	  not give a useful result if prefixlen is 32 (we require a peer
	  address in such cases).
	* ripd.c: (rip_update_interface) Fix same bug as above. | 
|  | 2006-10-14 Paul Jakma <paul.jakma@sun.com>
	* 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. | 
|  | 2006-09-26 Pierre-Yves Ritschard <pierre-yves@spootnik.org>
	* smux.c: (smux_open,smux_trap,smux_register) Fix various
	  asn_build_* calls to pass the proper length in the final
	  argument: use sizeof(<variable>) instead of sizeof(<type>),
	  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). | 
|  | 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-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 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-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* vty.c: (vty_log_out) Debug messages to terminal vty sessions
	  should include timestamps. | 
|  | - entry was left in wrong order, according to date. | 
|  | 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-27 Paul Jakma <paul.jakma@sun.com>
	* route_types.awk: Remove setting the 'bare' numeric route type
	  in redist strings. | 
|  | 2006-05-23 Paul Jakma <paul.jakma@sun.com>
	* route_types.txt: New file, table of ZEBRA_ROUTE definitions.
	* route_types.awk: New script, to parse previous and generate
	  (for now) redistribute string defines.
	* Makefile.am: build route_types.h using previous two, ala
	  memtypes.h, include the script and table file in EXTRA_DIST.
	* command.h: pull in route_types.h, add a REDIST_STR define. | 
|  | 2006-06-15 Paul Jakma <paul.jakma@sun.com>
	* lib/if.c: (if_flag_dump) remove the whitespace indentation, callers
	  should provide.
	* zebra/interface.c: (if_flag_dump_vty) redundant code, remove.
	  (if_dump_vty) use libzebra if_flag_dump. | 
|  | 2006-06-15 Paul Jakma <paul.jakma@sun.com>
	* linklist.c: (list_delete) call list_delete_all_node, don't
	  duplicate it. | 
|  | 2006-06-15 Paul Jakma <paul.jakma@sun.com>
	* memory.h: Experimental, have XFREE macro NULL out the freed
	  pointer. | 
|  | 2006-06-15 Paul Jakma <paul.jakma@sun.com>
	* command.c: (cmd_describe_command_real) Fix leak, CID #38. | 
|  | 2006-05-28 Paul Jakma <paul.jakma@sun.com>
	* configure.ac:
	  Check for Sun libc printstack(), add a general HAVE_STACK_TRACE
	  define for lib/log.c, if any supported stack symbol dumping
	  function is found (glibc backtrace/sun libc printstack).
	* log.c: (general) Add support for Sun libc printstack().
	  (hex_append) make the cpp conditional on general HAVE_STACK_TRACE
	  define.
	  (zlog_backtrace_sigsafe) Ditto. Add printstack() version of the
	  the DUMP macro in this function. | 
|  | 2006-05-28 Paul Jakma <paul.jakma@sun.com>
	* vty.c: (vty_log/vty_log_fixed) dont crash if called when vty
	  hasn't been initiliased. | 
|  | 2006-05-28 Paul Jakma <paul.jakma@sun.com>
	* memory.c: malloc.h is deprecated in favour of stdlib.h, however
	  we still need it on GNU Libc for mallinfo(). | 
|  | 2006-05-28 Paul Jakma <paul.jakma@sun.com>
	* zebra.h: Include inttypes.h rather than stdint.h, best practice
	  according to the autoconf manual.
	  Add UINT*_MAX defines for older platforms lacking these (FBSD 4) | 
|  | 2006-05-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* if.h: (struct connected) Document the meaning of the
	  ZEBRA_IFC_REAL and ZEBRA_IFC_CONFIGURED flags.
	* connected.c: (connected_withdraw) Do not delete the connected
	  address if the ZEBRA_IFC_CONFIGURED flag is set.
	  (connected_add_ipv4,connected_add_ipv6) Before calling
	  connected_withdraw, unset the ZEBRA_IFC_CONFIGURED flag
	  on the superseded connected structure. | 
|  | 2006-05-15 Paul Jakma <paul.jakma@sun.com>
	* log.c: (general) Generalise struct zebra_route_desc into
	  struct zebra_desc_table and, similar to route_types, add a
	  command_types table to describe Zserv protocol commands.
	  (route_types[]) use a macro to use designated initialisers
	  while avoiding tedious duplication.
	  (zserv_command_string) lookup string from zebra_desc_table,
	  similar to zebra_route_string
	* zebra.h: Add declaration for zserv_command_string, adjust the
	  comments to reflect zebra_desc_table. | 
|  | 2006-05-13 Paul Jakma <paul.jakma@sun.com>
	* vty.c: (vty_describe_command) CID #39 fix was too hasty, just
	  cause it /can/ leak doesn't mean it always will have, check
	  first. | 
|  | 2006-05-12 Paul Jakma <paul.jakma@sun.com>
	* command.c: (cmd_describe_command_real) Fix return of freed
	  pointer when no-match, CID #55. | 
|  | 2006-05-12 Paul Jakma <paul.jakma@sun.com>
	* vty.c: (vty_describe_command) fix leak of describe vector in
	  error path, CID #39. | 
|  | 2006-05-12 Paul Jakma <paul.jakma@sun.com>
	* command.c: (cmd_complete_command_real) Fix leak of cmd_vector
	  in error case, Coverity CID #37. | 
|  | 2006-05-12 Paul Jakma <paul.jakma@sun.com>
	* plist.c: (vty_prefix_list_uninstall) Fix potential NULL deref
	  of prefix and typestr strings, Coverity CID #3. | 
|  | 2006-03-14 Paul Jakma <paul.jakma@sun.com>
	* privs.c: (zprivs_caps_init) Change user IDs before lowering
	  privileges, while this seems to work on Linux, on Solaris
	  it rightfully refuses due to PRIV_PROC_SETID having been
	  dropped.
	* command.h: Add the struct host global exported from command.c | 
|  | 2006-03-30 Paul Jakma <paul.jakma@sun.com>
	* workqueue.c: (work_queue_run) fix line length of comment | 
|  | 2006-03-30 Paul Jakma <paul.jakma@sun.com>
	* command.h: (DEFUN_CMD_FUNC_TEXT) Annotate arguments as
	  potentially being unused. | 
|  | 2006-03-27 Paul Jakma <paul.jakma@sun.com>
	* memtypes.awk: Fix gensub call, g should be a string.. | 
|  | 2006-03-25 Paul Jakma <paul.jakma@sun.com>
	* workqueue.h: (struct work_queue) Remove status field and
	  state flag, no longer used. | 
|  | 2006-03-19 Paul Jakma <paul.jakma@sun.com>
	* memtypes.c: Add MTYPE_BGP_SYNCHRONISE.
	* bgp_advertise.c: Use a distinct memory type for struct
	  bgp_synchronize. | 
|  | 2006-03-16 Paul Jakma <paul.jakma@sun.com>
	* Makefile.am: Fix -version-info argument. | 
|  | 2006-02-15 Paul Jakma <paul.jakma@sun.com>
	* configure.ac: Check for mallinfo, being careful to link test
	  so we can detect things like umem being used (which doesn't
	  provide a mallinfo).
	* lib/memory.c: (mtype_memstr) new helper function to
	  return human friendly string for a byte count.
	  (mtype_stats_alloc) new function, for users to retrieve
	  number of objects allocated.
	  (show_memory_mallinfo) New function, show mallinfo statistics
	  if available.
	  (show_memory_all_cmd) Call show_memory_mallinfo, if mallinfo
	  is available.
	* lib/memory.h: Export mtype_memstr and mtype_stats_alloc.
	  Provide a define for a reasonable buffer size for
	  mtype_memstr. | 
|  | 2006-03-14 Paul Jakma <paul.jakma@sun.com>
	* privs.c: (zprivs_caps_init) Change user IDs before lowering
	  privileges, while this seems to work on Linux, on Solaris
	  it rightfully refuses due to PRIV_PROC_SETID having been
	  dropped. | 
|  | 2006-03-06 Paul Jakma <paul.jakma@sun.com>
	* if.h: export show_address_cmd, for anyone who wishes to use
	  it. | 
|  | 2006-02-21 Paul Jakma <paul.jakma@sun.com>
	* sockunion.c: (sockunion_{su2str,log}) Use XSTRDUP.
	  Particularly with _su2str, as that string gets XFREEd,
	  which can be annoying if run debug code in memory.c. | 
|  | 2006-02-02 Paul Jakma <paul.jakma@sun.com>
	* workqueue.h: (struct work_queue) Remove the delay field.
	  It served no purpose and just introduced bad behaviour.
	  Should be excised before its allowed to escape into 1.0.
	  This removes need for the 'flood' and runs_since_clear
	  fields.
	* workqueue.c: (general) excise delay factor between queue
	  runs, hence the 'flood' crap too.. See above.
	* bgp_route.c: (bgp_{clear_node,process}_queue_init) delay
	  field is removed from workqueue spec. | 
|  | 2006-01-19 Paul Jakma <paul.jakma@sun.com>
	* stream.c: (stream_getq_from) should use POSIX uint64_t
	  not u_int64_t. Latter is neither a traditional BSD type, nor
	  a POSIX type. | 
|  | * md5.c: Don't forget to keep const.
        * regex.c: Cleanup code and remove warnings. | 
|  | 2006-01-17 Paul Jakma <paul.jakma@sun.com>
	* zclient.{c,h}: (zclient_create_header) export this, seems others
	  could use it (in lieu of more complete zserv helpers). | 
|  | 2006-01-17 Paul Jakma <paul.jakma@sun.com>
	* vty.c: (no_terminal_monitor_cmd) New ALIAS for
	  terminal_no_monitor, in the more normal negating format,
	  to be kind to my fingers.
	  (vty_init) install new ALIAS. | 
|  | 2006-01-17 Paul Jakma <paul.jakma@sun.com>
	* md5.{c,h}: (md5_loop) Is better off taking a void * and doing
	  cast to byte wise type internally, avoids needs for casts
	  in users. | 
|  | 2006-01-16 Paul Jakma <paul.jakma@sun.com>
	* lib/zclient.h: Update the Zserv protocol header with a version
	  field.  Define the old command field to be a 'marker', to
	  allow old Zserv and updated Zserv to be differentiated.
	  Future updates will bump the version field obviously. New
	  command field is made wider.  Try to stop using the
	  'zebra_size_t' typedef in the callbacks.
	* lib/zclient.c: Update to read/write new format header.
	* zebra/zserv.c: Ditto |