| Age | Commit message (Collapse) | Author | 
|---|
|  | * if_ioctl.c: (interface_list_ioctl) Use if_get_by_name_len.
	* if_proc.c: (ifaddr_proc_ipv6) Increase size of ifname buffer to
	  avoid overflow.
	* kernel_socket.c: (ifan_read) Use if_get_by_name_len.
	* if.h: Fix comments to reflect that if_lookup_by_name and
	  if_get_by_name now require the argument strings to be NUL-terminated.
	* if.c: (if_lookup_by_name) Compare using strcmp.
	  (if_get_by_name) Pass strlen(ifname) as 2nd arg to if_create. | 
|  | * if.h: (if_lookup_by_name_len, if_get_by_name_len) New functions.
	* if.c: (if_lookup_by_name_len, if_get_by_name_len) New functions.
	  (if_get_by_name) Tighten up code.
	  (interface) Use new function if_get_by_name_len.
	* zclient.c: (zebra_interface_add_read) Use new if_get_by_name_len
	  function.
	  (zebra_interface_state_read) Use new if_lookup_by_name_len function.
	* kernel_socket.c: (ifm_read) Use new if_lookup_by_name_len function
	  to save a memcpy.
	* if_ioctl_solaris.c: (interface_list_ioctl) Fix subtle bug with new
	  if_get_by_name_len function.
	* ospf_interface.c: (ospf_vl_new) Use strnlen to fix call to if_create. | 
|  | 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. | 
|  | * zserv.c: (zebra_accept) Comment out setting of socket to NONBLOCK
          for now, as we dont actually deal with with resending.... See
          bugzilla #122, fix from wawa@yandex-team.ru (Vladimir Ivanov).
	* kernel_socket.c: (routing_socket) ditto. | 
|  | Note two warnings in comments.  The serious one is that struct
interface->ifindex probably needs to be signed, ssince we store and
compare to -1. | 
|  | * *.c: Change level of debug messages to LOG_DEBUG. | 
|  | * global: Replace strerror with safe_strerror.  And vtysh/vtysh.c
	  needs to include "log.h" to pick up the declaration. | 
|  | * kernel_socket.c (rtm_flag_dump): terminate buffer with '\0', not '0'.
This is arguably not a security problem, since strlcat is used to copy
to the buffer -gdt. | 
|  | * ioctl.h: Add if_ioctl_ipv6 prototype and AF_IOCTL for SOLARIS_IPV6
        * kernel_socket.c: Fix SAROUNDUP, compiler doesnt like do..while
          RHS in assignments :)
        * redistribute.c: (zebra_interface_delete_update) only used
          if RTM_IFANNOUNCE and NETLINK is available. | 
|  | * kernel_socket.c (kernel_read): Use sockaddr_storage in buffer
        for reading kernel messages to ensure enough space (necessary on
        Solaris due to sockaddr_dl being large).  Thanks to Sowmini
        Varadhan for help with this change. | 
|  | * kernel_socket.c (ifm_read): Major cleanup.  Use Sowmini's code
        to find the sockaddr_dl in all cases, narrowing the Solaris ifdef
        to just the accomodation of broken kernels.  Check sockaddr_dl
        carefully up front, and later assume any non-NULL sdl pointer is
        valid.  Clean up types and variable declarations, and rename
        WRAPUP to SAROUNDUP to make the name fit the behavior. | 
|  |  | 
|  | catching this. | 
|  | * kernel_socket.c (kernel_read): Look up interfaces by index
        first, so that state changes which do not include a sockaddr_dl
        now work.  Add many sanity checks.  In
        particular, do not assume that a sockaddr_dl follows a message
        without checking the ifm_addrs flags, and do not trust the length
        in a sockaddr_dl.  Add/clarify many comments. | 
|  | * zebra/kernel_socket.c: HAVE_IPV6 conditional for WRAPUP when
          HAVE_SA_LEN is not defined. bcopy -> memcpy, bcopy is not
          portable. | 
|  | * zebra/kernel_socket.c: Fix up WRAPUP macro to deal with multiple
          address families in the absence of sa_len element in struct
          sockaddr.
          (ifm_read): Handle solaris 9 if_msghdr_t.
          Deal with interfaces which are incomplete, lookup on name rather
          than the placeholder interface index of -1. | 
|  | * lib/if.c: (if_cmp_func) new function, compare interface names in
	alphabetical order.
	(if_create) Take name as argument and add interface in sorted order.
	(if_get_by_name),(interface_cmd) fixup calls to if_create - see
	above.
	(if_init) register list comparison function.
	* lib/if.h: Add comparison function, modify if_create prototype.
	* lib/zclient.c: Modify call to if_create.
	* ospfd/ospf_interface.c: (ospf_vl_new) modify call to if_create.
	change sprintf to snprintf.
	* zebra/kernel_socket.c: (ifm_read) modify call to if_create. | 
|  | * zebra/kernel_socket.c: Update for new zebrad global struct
	* zebra/ipforward_solaris.c: Add missing privs.h include. Uncomment
          /dev/ip define.
	* lib/zebra.h: Add typedefs for SunOS. | 
|  | * Revert Cougar's sort interface names patch, causes problems with
	enabling of interfaces for OSPF in ospfd. | 
|  |  | 
|  | * Merge of zebra privileges | 
|  |  | 
|  |  | 
|  |  |