| Age | Commit message (Collapse) | Author | 
|---|
|  | [backport candidate] | 
|  | neighbor x.x.x.x routemap [export|import] commands work again.
	Fixes bugzilla #184. [backport candidate] | 
|  | * bgp_fsm.h: Add extern qualifier to exported functions
	* bgp_nexthop.c: add static to nexthop specific globals
	* *.h: Add guard defines | 
|  | * bgp_routemap.c: add semi-colons to VTY_GET_* to match vty.h change | 
|  | * bgp_network.c: (bgp_accept) use XSTRDUP
	* bgpd.c: (peer_delete) XFREE the correct memtype, not free.
	  (peer_create) use XSTRDUP
	* bgp_packet.c: (bgp_stream_dup) deleted, stream_dup should be used
	  (various) update -> s/bgp_stream_dup/stream_dup | 
|  | * bgp_fsm.c: (bgp_stop) use sockunion_free, not XFREE..
	* bgp_network.c: (bgp_getsockname) ditto
	* bgp_routemap.c: (route_match_peer) ditto, als use a ret value and
	  remove one sockunion_free.
	* bgpd.c: (peer_delete) ditto | 
|  | Implement non-blocking zclient I/O with buffering.
	* zclient.h (struct zclient): Add two fields to support non-blocking
	  I/O: struct buffer *wb, and struct thread *t_write.
	  (zclient_free): Remove function.
	  (zebra_redistribute_send): Change 2nd arg from socket fd to
	  struct zclient * (needed to support non-blocking I/O and buffering).
	  (zclient_send_message): New function to send an arbitrary
	  message with non-blocking I/O.
	* zclient.c (zclient_new): Create write buffer.
	  (zclient_free): Remove unused function.
	  (zclient_stop): Must cancel new t_write thread.  Also, reset
	  all buffers: ibuf, obuf, and wb.
	  (zclient_failed): New helper function for typical error handling.
	  (zclient_flush_data): New thread to flush queued data.
	  (zclient_send_message): New function to send the message in
	  zclient->obuf to zebra using non-blocking I/O and buffering.
	  (zebra_message_send, zapi_ipv4_route, zapi_ipv6_route): Use
	  new zclient_send_message function instead of calling writen.
	  (zclient_start): Set socket non-blocking.  Also, change 2nd arg
	  to zebra_redistribute_send from zclient->sock to zclient.
	  (zebra_redistribute_send): Change 2nd arg to struct zclient *.
	  Can now use zclient->obuf to assemble the message instead of
	  allocating a temporary stream.  And call zclient_send_message to
	  send the message instead of writen.
	  (zclient_read): Convert to support non-blocking I/O by using
	  stream_read_try instead of deprecated stream_read.
	  (zclient_redistribute): Change 2nd arg to zebra_redistribute_send
	  from zclient->sock to zclient.
	* ospf6_zebra.c (ospf6_zebra_redistribute, ospf6_zebra_no_redistribute):
	  Change 2nd arg to zebra_redistribute_send from zclient->sock
	  to zclient.
	* ospf_zebra.c (ospf_zebra_add): Call zclient_send_message instead
	  of writen.
	* rip_zebra.c (rip_redistribute_set, rip_redistribute_unset,
	  rip_redistribute_clean): Change 2nd arg to zebra_redistribute_send
	  from zclient->sock to zclient.
	* ripng_zebra.c (ripng_redistribute_unset, ripng_redistribute_clean):
	  Change 2nd arg to zebra_redistribute_send from zclient->sock
	  to zclient.
	* bgp_zebra.c (bgp_redistribute_set, bgp_redistribute_unset):
	  The 2nd arg to zebra_redistribute_send is now zclient instead of
	  zclient->sock.
	* isis_zebra.h (isis_zebra_finish): Remove declaration of unused
	  function.
	* isis_zebra.c (isis_zebra_route_add_ipv4): Call zclient_send_message
	  to send the message to zebra instead of calling writen directly, since
	  zclient_send_message understands non-blocking I/O and will manage
	  the buffer queue appropriately.
	  (isis_zebra_finish): Remove unused function, particularly since
	  the zclient_free function has been removed. | 
|  | family node.
	[backport candidate] | 
|  | * bgp_aspath.[ch], bgp_route.c, bgp_vty.c, bgpd.[ch]: Allow to enable
	  the length of confederation path segments to be included during the
	  as-path length check in the best path decision. | 
|  | * (global): Fix up list loops to match changes in lib/linklist,
	  and some basic auditing of usage.
	* configure.ac: define QUAGGA_NO_DEPRECATED_INTERFACES
	* HACKING: Add notes about deprecating interfaces and commands.
	* lib/linklist.h: Add usage comments.
	  Rename getdata macro to listgetdata.
	  Rename nextnode to listnextnode and fix its odd behaviour to be
	  less dangerous.
	  Make listgetdata macro assert node is not null, NULL list entries
          should be bug condition.
          ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use
          with for loop, Suggested by Jim Carlson of Sun.
          Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the
          "safety" of previous macro.
	  LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to
	  distinguish from the similarly named functions, and reflect their
	  effect better.
	  Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section
	  with the old defines which were modified above,
	  for backwards compatibility - guarded to prevent Quagga using it..
	* lib/linklist.c: fix up for linklist.h changes.
	* ospf6d/ospf6_abr.c: (ospf6_abr_examin_brouter) change to a single
	  scan of the area list, rather than scanning all areas first for
	  INTER_ROUTER and then again for INTER_NETWORK. According to
	  16.2, the scan should be area specific anyway, and further
	  ospf6d does not seem to implement 16.3 anyway. | 
|  | Fix problems when netlink interfaces are renamed (same ifindex used
	for a new interface).  Start cleaning up some problems with the way
	interface names are handled.
	* interface.c: (if_new_intern_ifindex) Remove obsolete function.
	  (if_delete_update) After distributing the interface deletion message,
	  set ifp->ifindex to IFINDEX_INTERNAL.
	  (if_dump_vty) Detect pseudo interface by checking if ifp->ifindex is
	  IFINDEX_INTERNAL.
	  (zebra_interface) Check return code from interface_cmd.func.
	  Do not set internal ifindex values to if_new_intern_ifindex(),
	  since we now use IFINDEX_INTERNAL for all pseudo interfaces.
	* kernel_socket.c: (ifm_read) Fix code and comments to reflect that
	  all internal interfaces now have ifp->ifindex set to IFINDEX_INTERNAL.
        * rt_netlink.c: (set_ifindex) New function used to update ifp->ifindex.
	  Detects interface rename events by checking if that ifindex is already
	  being used.  If it is, delete the old interface before assigning
	  the ifindex to the new interface.
	  (netlink_interface, netlink_link_change) Call set_ifindex to update
	  the ifindex.
	* if.h: Remove define for IFINDEX_INTERNBASE and add define
	  IFINDEX_INTERNAL 0, since all internal (i.e. non-kernel) pseudo-
	  interfaces should have ifindex set to 0.
	  (if_new) Remove function.
	  (if_delete_retain) New function to delete an interface without
	  removing from iflist and freeing the structure.
	  (ifname2ifindex) New function.
	* if.c: (if_new) Remove function (absorb into if_create).
	  (if_create) Replace function if_new with call to calloc.
	  Set ifp->ifindex to IFINDEX_INTERNAL.  Fix off-by-one error
	  in assert to check length of interface name.  Add error message
	  if interface with this name already exists.
	  (if_delete_retain) New function to delete an interface without
	  removing from iflist and freeing the structure.
	  (if_delete) Implement with help of if_delete_retain.
	  (ifindex2ifname) Reimplement using if_lookup_by_index.
	  (ifname2ifindex) New function to complement ifindex2ifname.
	  (interface) The interface command should check the name length
	  and fail with a warning message if it is too long.
	  (no_interface) Fix spelling in warning message.
	  (if_nametoindex) Reimplement using if_lookup_by_name.
	  (if_indextoname, ifaddr_ipv4_lookup) Reimplement using
	  if_lookup_by_index.
	* bgp_zebra.c: (bgp_interface_delete) After deleting, set ifp->ifindex
	  to IFINDEX_INTERNAL.
	* isis_zebra.c: (isis_zebra_if_del) Call if_delete_retain instead
	  of if_delete, since it is generally not safe to remove interface
	  structures.  After deleting, set ifp->ifindex to IFINDEX_INTERNAL.
	  (zebra_interface_if_lookup) Tighten up code.
	* ospf6_zebra.c: (ospf6_zebra_if_del) Previously, this whole function
	  was commented out.  But this is not safe: we should at least update
	  the ifindex when the interface is deleted.  So the new version
	  updates the interface status and sets ifp->ifindex to
	  IFINDEX_INTERNAL.
	  (ospf6_zebra_route_update) Use if_indextoname properly.
	* ospf_vty.c: (show_ip_ospf_interface_sub) Show ifindex and interface
	  flags to help with debugging.
	* ospf_zebra.c: (ospf_interface_delete) After deleting, set ifp->ifindex
	  to IFINDEX_INTERNAL.
	  (zebra_interface_if_lookup) Make function static.  Tighten up code.
	* rip_interface.c: (rip_interface_delete) After deleting, set
	  ifp->ifindex to IFINDEX_INTERNAL.
	* ripng_interface.c: (ripng_interface_delete) After deleting, set
	  ifp->ifindex to IFINDEX_INTERNAL. | 
|  | must be after lib/ includes in some systems. Introduce SNMP_INCLUDES
	  for that. | 
|  | no particular afi/safi configured.
	[backport candidate] | 
|  | work again. | 
|  |  | 
|  | how much storage is required. | 
|  | * (global) Update code to match stream.h changes.
	  stream_get_putp effectively replaced with stream_get_endp.
	  stream_forward renamed to stream_forward_getp.
	  stream_forward_endp introduced to replace some previous
	  setting/manual twiddling of putp by daemons.
	* lib/stream.h: Remove putp. Update reference to putp with endp.
	  Add stream_forward_endp, which daemons were doing manually.
	  Rename stream_forward to stream_forward_getp.
	  lib/stream.c: Remove/update references to putp.
	  introduce stream_forward_endp. | 
|  | transparent-nexthop" commands.
	[merge from GNU Zebra] | 
|  | [merge from GNU Zebra] | 
|  | community-list cleanup.
	[merge from GNU Zebra] | 
|  | -> "disable-connected-check".
	[merge from GNU Zebra] | 
|  | bgpd.[ch]: Add BGP_INFO_STALE flag and end-of-rib support. "bgp
	  graceful-restart" commands added. Show numbers of individual
	  messages in "show ip bgp neighbor" command. Final pieces of graceful
	  restart.
	[merge from GNU Zebra] | 
|  | capability route-refresh" commands. Route refresh capability is sent
	  anyway now. Preserve dummy deprecated commands.
	[merge from GNU Zebra] | 
|  | draft - ie. "neighbor version 4-" commands. Preserve dummy "neighbor
	  version" command as deprecated.
	[merge from GNU Zebra] | 
|  | maximum-prefix limit" feature support.
	[merge from GNU Zebra] | 
|  | * bgpd.[ch], bgp_nexthop.c, bgp_snmp.c: Remove useless bgp_get_master()
          function.
        * bgp_packet.c: MP AFI_IP update and withdraw parsing.
        * bgp_fsm.c: Reset peer synctime in bgp_stop(). bgp_fsm_change_status()
          is better place to log about peer status change than bgp_event().
          Log in bgp_connect_success().
        * bgp_vty.c: Fix typo in comment.
        * bgp_attr.c: Better log about unknown attribute.
	[merge from GNU Zebra] | 
|  | * buffer.h: Fix comment on buffer_getstr to reflect that it now
	  uses XMALLOC.
	* buffer.c: (buffer_getstr) Use XMALLOC(MTYPE_TMP) instead of malloc.
	* filter.c: (access_list_remark,ipv6_access_list_remark) Use
	  argv_concat instead of buffer_getstr.
	* if.c: (interface_desc) Use argv_concat instead of buffer_getstr.
	* plist.c: (ip_prefix_list_description,ipv6_prefix_list_description)
	  Use argv_concat instead of buffer_getstr.
	* bgp_filter.c: (ip_as_path,no_ip_as_path) Use argv_concat instead
	  of buffer_getstr.
	* bgp_route.c: (bgp_show_regexp) Fix memory leak: need to free string
	  returned by buffer_getstr.
	  (bgp_show_community) Must use XFREE instead of free on string
	  returned by buffer_getstr.
	* bgp_routemap.c: (set_community) Must use XFREE instead of free
	  on string returned by buffer_getstr.
	* bgp_vty.c: (neighbor_description) Use argv_concat instead of
	  buffer_getstr. | 
|  | if old one is flaged as BGP_INFO_ATTR_CHANGED. | 
|  | configured or not. Being not configured is even better reason to
	  do it. | 
|  | * bgp_packet.c: (bgp_write) set socket to nonblock while writing
          this should be generalised. See bugzilla #102. Fix supplied by
	  wawa@yandex-team.ru (Vladimir Ivanov). | 
|  | size_t being used for streams.  Perhaps cast to unsigned long before
printf?  Surely that's big enough even if size_t could be larger in
theory.
(no changelog, since only comment changes) | 
|  | * *.c: Change level of debug messages to LOG_DEBUG. | 
|  | * *.c: Change level of debug messages to LOG_DEBUG. | 
|  | * *.c: Change level of debug messages to LOG_DEBUG. | 
|  | * *.c: Change level of debug messages to LOG_DEBUG. | 
|  | * *.c: Change level of debug messages to LOG_DEBUG. | 
|  | * *.c: Change level of debug messages to LOG_DEBUG. | 
|  | * bgp_main.c: (main) The 2nd argument to openzlog has been removed.
	* isis_main.c: (main) The 2nd argument to openzlog has been removed.
	* ospf6_main.c: (main) The 2nd argument to openzlog has been removed.
	  Note that stdout logging will no longer be enabled by default when
	  not running as a daemon.
	* ospf_main.c: (main) The 2nd argument to openzlog has been removed.
	* rip_main.c: (main) The 2nd argument to openzlog has been removed.
	* ripng_main.c: (main) The 2nd argument to openzlog has been removed.
	* main.c: (main) The 2nd argument to openzlog has been removed.
	  So stdout logging will no longer be enabled by default.
	* irdp_main.c: (irdp_finish) Reduce severity of shutdown message
	  from LOG_WARNING to LOG_INFO.
	* vtysh.c: Make several functions static instead of global.
	  Added several commands to support destination-specific logging levels.
	  (vtysh_completion) This function is unused, so comment it out.
	* basic.texi: Document new logging features.  Separate basic config
	  commands from basic VTY commands.
	* log.h: Replace struct zlog flags and maskpri fields with maxlvl
	  array to support individual logging levels for each destination.
	  Remove the 2nd argument to openzlog since the default logging config
	  should be standardized inside the library.  Replaced the
	  zlog_set_flag and zlog_reset_flag functions with zlog_set_level.
	  And zlog_set_file now requires an additional log_level argument.
	  Declare zlog_proto_names for use inside command.c in the
	  "show logging" command.  Added defines useful for command
	  construction.
	* log.c: (vzlog) Decide where to send the message based on the
	  individual logging levels configured for each destination.
	  Remove support for ZLOG_STDERR since it was never actually used.
	  Support record-priority for terminal monitors.
	  (zlog_signal,zlog_backtrace_sigsafe) Support destination-specific
	  logging levels.  Remove stderr support (was never used).  Added
	  support for terminal monitor logging.
	  (_zlog_assert_failed) Increase message severity to LOG_EMERG.
	  (openzlog) Remove 2nd argument since default config should be
	  standardized in library.  By default, terminal monitoring
	  is set to debug, and all other logging is disabled.
	  (zlog_set_flag,zlog_reset_flag) Removed.
	  (zlog_set_level) New function to replace zlog_set_flag and
	  zlog_reset_flag.  Supports destination-specific logging levels.
	  (zlog_set_file,zlog_reset_file) Support file-specific logging level.
	  (zlog_rotate) Log an error message if fopen fails, and support
	  new file-specific logging level.
	* command.h: Change DEFUN_CMD_FUNC_DECL and DEFUN_CMD_FUNC_TEXT so that
	  command functions will be static instead of global.  Remove
	  declarations for config_exit and config_help.  Define new macros
	  DEFUNSH_ATTR, DEFUNSH_HIDDEN, and DEFUNSH_DEPRECATED so we can
	  have deprecated commands in vtysh.  Similarly, for completeness,
	  define macros ALIAS_SH, ALIAS_SH_HIDDEN, and ALIAS_SH_DEPRECATED.
	  Also, fix bug in ALIAS_ATTR macro (didn't matter because it
	  was never used).
	* command.c: Make many functions static instead of global.
	  (facility_name,facility_match,level_match) New functions
	  to support enhanced destination-specific logging levels.
	  (config_write_host) Support new destination-specific logging levels.
	  (config_logmsg) Added new "logmsg" command to help test logging
	  system.
	  (show_logging) Added "show logging" command to show the current
	  configuration of the logging system.
	  (config_log_stdout_level) Support explicit stdout logging level.
	  (no_config_log_stdout) Now takes optional LEVEL arg.
	  (config_log_monitor,config_log_monitor_level,no_config_log_monitor)
	  New commands creating new "log monitor" commands to set terminal
	  monitoring log level.
	  (config_log_file_level) Support explicit file logging level.
	  (config_log_syslog_level) Support explicit syslog logging level.
	  (config_log_facility,no_config_log_facility) Implement new
	  "log facility" command.
	  (cmd_init) Add hooks for new commands: "show logging", "logmsg",
	  "log stdout <level>", "log monitor", "log monitor <level>",
	  "no log monitor", "log file <filename> <level>",
	  "no log file <filename> <level>", "log syslog <level>",
	  "log facility", and "no log facility".
	* vty.h: Added a "level" argument to vty_log so it can support
	  "log record-priority".  Declare new function vty_log_fixed for
	  use in signal handlers.
	* vty.c: (vty_log,vty_log_out) Added a "level" argument to support
	  "log record-priority" for vty terminal monitors.
	  (vty_down_level) Use config_exit_cmd.func instead of calling
	  config_exit directly (since command functions will now be static
	  instead of global).
	  (vty_log_fixed) New function to send terminal monitor messages
	  from inside a signal handler. | 
|  | * bgp_main.c: (sigint) Use zlog_notice for termination message.
	  (main) Use zlog_notice for startup announcement.
	* isis_main.c: (sigint,sigterm) Use zlog_notice for termination message.
	  (terminate) This function should be static, not global.
	  (main) Use zlog_notice for startup announcement, and remove
	  ifdef ZEBRA_VERSION.
	* version.h.in: Remove declaration for pid_output_lock, this function
	  is now static, not global.
	* pid_output.c: (pid_output_lock) This function should be static, not
	  global.  And remove "old umask" error message, since it was really
	  an unimportant debug message, not an error.
	  (pid_output) Need to declare static function pid_output_lock.
	* ospf6_main.c: (sigint,sigterm) Use zlog_notice for termination
	  message.
	  (main) Remove commented-out call to pid_output_lock (which should
	  never be called other than from inside pid_output).  And use
	  zlog_notice to print the startup message, which now includes
	  the vty port.
	* ospf_main.c: (sigint) Use zlog_notice for termination message.
	  (main) Issue a startup announcement using zlog_notice.
	* rip_main.c: (sigint) Use zlog_notice for termination message.
	  (main) Add a startup announcement using zlog_notice.
	* ripng_main.c: (sighup) Remove spurious terminating message.
	  (sigint) Use zlog_notice for termination message.
	  (main) Issue a startup announcement using zlog_notice.
	* main.c: (sigint) Use zlog_notice for termination message.
	  (main) Add a startup announcement using zlog_notice. | 
|  |  | 
|  | * global: Replace strerror with safe_strerror.  And vtysh/vtysh.c
	  needs to include "log.h" to pick up the declaration. | 
|  | * bgp_nexthop.c: collapse bgp_connected_ipvX, bgp_nexthop_cache_ipvX
	  and cache{1,2}.. into arrays of tables and hence collapse
          bgp_scan_ipv{4,6} into a single bgp_scan function. Tested, though
          a long time ago (and this change was hand-merged). | 
|  | * vty.h: Remove fields in struct vty that were related to VTY_CONTINUE
	  capabilities (that were used only in bgpd/bgp_route.c and are now
	  removed).  Also remove some other fields that were not being
	  used at all.
	* vty.c: (vty_execute) Do not test for obsolete status values VTY_START
	  and VTY_CONTINUE.
	  (vty_read) Remove calls to vty->output_func since that was part
	  of the VTY_CONTINUE infrastructure that has been removed.
	  (vty_flush) Remove code to support VTY_START and VTY_CONTINUE.
	  (vty_close) Remove code to cancel vty->t_output thread, since that
	  thread was never actually used.
	* bgp_route.c: Remove all code related to VTY_CONTINUE; this feature
	  is deprecated because the output did not represent a single point
	  in time.  All output needs to be generated inline and buffered
	  by the library code.
	  (route_vty_out,route_vty_out_tag,damp_route_vty_out,
	   flap_route_vty_out) Remove code to count number of lines of output,
	   since this was only useful for VTY_CONTINUE behavior.
	  (bgp_show_callback) Removed.
	  (bgp_show_table) Remove hooks for VTY_CONTINUE callback support.
	  As a result, there's a new output_arg argument to this function.
	  Make function static.
	  (bgp_show) Make function static and add a new output_arg argument.
	  Change all functions that call bgp_show or bgp_show_table to
	  pass the new output_arg argument (that used to be passed inside
	  vty->output_arg).
	* bgp_mplsvpn.c: Remove declarations of functions defined in
	  bgp_route.c; these declarations belong in bgp_route.h.
	* bgp_route.h: Declare 3 global functions used in both bgp_route.c
	  and in bgp_mplsvpn.c. | 
|  | with CVS trees. | 
|  | * {bgpd,bgp_attr}.c: size_t printf format should be ld. | 
|  | * Update with fix in debian bug id 222930.
	* bgp_main.c: Add ZCAP_RAW, needed to bind to interfaces.
	  bgp_network.c: (....) raise/lower privs around call to
          SO_BINDTODEVICE sockopt. | 
|  | ripd might need some more testing though. | 
|  |  | 
|  |  | 
|  | initializes connection, and "no smux peer" command terminates it. Fixes
bugzilla #47 and #112. |