| Age | Commit message (Collapse) | Author | 
|---|
|  | 2008-01-10 Ingo Flaschberger <if@xip.at>
	* configure.ac: Define HAVE_BSD_LINK_DETECT if <net/if_media.h> is
	  present.
	* lib/zebra.h: If HAVE_BSD_LINK_DETECT is defined,
	  include <net/if_media.h>.
	* zebra/ioctl.c: (if_get_flags) If HAVE_BSD_LINK_DETECT, use the
	  SIOCGIFMEDIA ioctl to ascertain link state.
	* zebra/kernel_socket.c: (bsd_linkdetect_translate) New function to
	  map the ifm_data.ifi_link_state value into the IFF_RUNNING flag.
	  (ifm_read) Call bsd_linkdetect_translate to fix the IFF_RUNNING
	  flag before calling if_flags_update. | 
|  | 2008-01-08 Michael Larson <mike@vyatta.com>
	* zebra_rib.c: (nexthop_active_check) Replace if_is_up with
	  if_is_operative to solve problems with static interface
	  routes not behaving properly with link-detect. | 
|  | existing static routes to be revalidated) | 
|  | the RIB debug changeset).
after | 
|  |  | 
|  | calls. Fixed. | 
|  |  | 
|  | of the first one before dying
+ we are not going to receive routing messages originated by old_pid,
  because rib_sweep_route() is called after damon() now. This will allow
  to drop old_pid completely soon. | 
|  |  | 
|  | to zlog_err() uninitialized with debug disabled. Fixed. | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | zebra/zebra_rib.c:nexthop_active_update()) | 
|  |  | 
|  |  | 
|  | 2007-08-06  Denis Ovsienko
	* zebra_rib.c: (general) Add extra debug logging for RIB and
	  RIB queue. | 
|  | 2007-08-02  Denis Ovsienko
	* rt_socket.c (kernel_rtm_ipv4): Only call rtm_write when changes
	are intended.  Don't set FIB flag on failed additions (such as
	occur with multiple paths.
http://bugzilla.quagga.net/attachment.cgi?id=235&action=view | 
|  | 2007-06-25 Denis Ovsienko
	* zebra_rib.c: (rib_add_ipv4_multipath) Loop through RIB
	  is using 'same' variable, but RIB_ENTRY_REMOVED check
	  is testing the constant 'rib' variable, fix. Impact
	  unknown at this point. | 
|  | 2007-05-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* zebra_routemap.c: (route_set_src_compile) Use '#ifdef HAVE_IPV6'
	  as needed.
	* zebra_vty.c: (vty_show_ip_route_detail, vty_show_ip_route) Use
	  '#ifdef HAVE_IPV6' as needed.
	  (show_ip_protocol) Move function definition outside of
	  '#ifdef HAVE_IPV6' section. | 
|  | 2007-05-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* kernel_socket.c: (ifam_read_mesg) Grab RTA_DST and RTA_GATEWAY
	  addresses from the message (if present, which seems unlikely on
	  current BSD platforms), and show them in the debug messages.
	  Also, add ifam_flags to the debug messages.
	  (ifam_read) If the interface is point-to-point, then the RTA_BRD
	  address should be treated as a peer address. | 
|  | 2007-05-01 David L Stevens <dlstevens@us.ibm.com>
	* (general) These changes collectively add route-map and
	  prefix-list support to zebra and fix a bug in "show
	  route-map" (with no argument).
	* doc/main.texi: added route-map, prefix-list, ip protocol
	  and set src documentation
	* lib/command.h: added PROTOCOL_NODE type
	* lib/log.c: (proto_name2num) new function, protocol name to
	  number translation.
	* lib/routemap.c: (vty_show_route_map) fixed "show route-map"
	  without route-map name
	* lib/routemap.h: added RMAP_ZEBRA type
	* lib/zebra.h: added proto_name2num() prototype
	* vtysh/extract.pl.in: added VTYSH_ZEBRA flag for route-map and
	  plist
	* vtysh/Makefile.am: added zebra_routemap.c
	* vtysh/vtysh.h: added VTYSH_ZEBRA flag to VTYSH_RMAP
	* zebra/connected.c: (connected_up_ipv4) added src preference argument
	  to rib_add_ipv4()
	* zebra/kernel_socket.c: (rtm_read) ditto
	* zebra/main.c: added prefix list initialization
	* zebra/Makefile.am: added zebra_routemap.c source file
	* zebra/rib.h: added generic address union "g_addr" and use in
	  existing places that had an explicit union.
	  Added "src" to struct nexthop.
	  Added preferred src arg to nexthop_ipv4_add and rib_add_ipv4.
	* zebra/rt_netlink.c: (netlink_routing_table) set preferred source on
	  netlink messages.
	  (netlink_route_change) ditto
	  (netlink_route_multipath) ditto.
	* zebra/rtread_getmsg.c: (handle_route_entry) added (NULL) src to
	  rib_add_ipv4() call.
	* zebra/rtread_proc.c: (proc_route_read) ditto
	* zebra/zebra_rib.c: (nexthop_ipv4_add) add src argument.
	  (nexthop_ipv4_ifindex_add) ditto
	  (rib_add_ipv4) ditto
	  (nexthop_active_check) Add route-map processing.
	* zebra/zebra_routemap.c: new file for zebra route-map commands.
	* zebra/zebra_vty.c: (ip_protocol_cmd) Apply route-map to protocol
	  (vty_show_ip_route_detail) added "src" printing
	  (vty_show_ip_route) ditto
	  (show_ip_protocol_cmd) new command, list routemaps.
	  (config_write_protocol) write out routemap protocl config.
	  (zebra_vty_init) Install the new routemap protocol commands.
	* zebra/zserv.c: (zread_ipv4_add) added (NULL) src arg
	  (zebra_init) init zebra route-maps.
	* zebra/zserv.h: add zebra_route_map_init | 
|  | 2007-04-29 Paul Jakma <paul.jakma@sun.com>
	* if_ioctl_solaris.c: (if_get_index) Fix bogus argument passed
	  to lifreq_set_name(). | 
|  | 2007-04-29 Paul Jakma <paul.jakma@sun.com>
	* ioctl{_solaris,}.c: (if_get_mtu) Fix missing ; in last commit. | 
|  | 2007-04-10 Paul Jakma <paul.jakma@sun.com>
	* ioctl{_solaris,}.c: (if_get_mtu) Ping clients via
          zebra_interface_up_update if MTU is changed. | 
|  | 2007-04-08 Paul Jakma <paul.jakma@sun.com>
	* interface.c: (if_delete_update) Address removal triggered
	  by kernel shouldn't remove configured IPv4 address from connected
	  list. | 
|  | 2007-04-08 Paul Jakma <paul.jakma@sun.com>
	* {ioctl,kernel}_null.c: Install of IP address should
	  reflect back to zebra via kernel_address_add..., makes
	  testzebra more useful. | 
|  | 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-06 Paul Jakma <paul.jakma@sun.com>
	* kernel_socket.c: (ifam_read) Do not update interface metric on
	  receipt of NEW/DEL ADDR messages, bogus as: a) some systems
	  dont include iface metric for address events b) we didn't
	  update clients either. Initial diagnosis by Eugene Grosbein. | 
|  | 2007-02-26 Robert Olsson <Robert.Olsson@data.slu.se>
	* irdp_main.c: (irdp_send_thread) Skip non-AF_INET addresses,
	   i.e. do not try interpret IPv6 addresses as IPv4 addresses
	   to broadcast in IRDP announcements.. | 
|  | 2006-12-13 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* if_ioctl_solaris.c: (if_get_addr) For IPv6, stop assuming
	  that all IFF_POINTOPOINT have prefixlen of IPV6_MAX_BITLEN.
	  Instead, always try the SIOCGLIFSUBNET ioctl; if that fails,
	  then we fall back to IPV6_MAX_BITLEN for PtP interfaces. | 
|  | 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-12-08 Piotr Chytla <pch@packetconsulting.pl>
	* 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. | 
|  | * kernel_socket.c (rtm_type_str): ifdef RTM_OLD{ADD,DEL} to
        compile on systems that no longer define them. | 
|  | 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-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-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 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-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-06-15 Paul Jakma <paul.jakma@sun.com>
	* (general) The key fixes are actually Andrew Schorr's.
	* interface.c: (ip_address_uninstall) Unset the configured flag.
	* connected.c: (connected_same) new helper, check whether
	  two connected are same.
	  (connected_implicit_withdraw) new helper, consolidation of
	  existing code in connected_add_ipv{4,6}.
	  Try filter out unneeded Zserv address delete/adds when
	  address is exact same.
	  Where old address is implicitely removed, be sure to preserve
	  the IFC_CONFIGURED flag if set, fixes bug where configured
	  addresses were being lost on FreeBSD. | 
|  | 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-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-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* connected.c: (connected_add_ipv4,connected_add_ipv6) If the
	  new struct connected matches an already existing one
	  (that will consequently be removed by connected_withdraw),
	  then be sure to preserve the ZEBRA_IFC_CONFIGURED flag. | 
|  | 2006-05-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	* kernel_socket.c: (ifam_read_mesg) Improve debug message
	  to show the IP address. |