summaryrefslogtreecommitdiff
path: root/lib/if.h
AgeCommit message (Collapse)Author
2005-04-022005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>ajs
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.
2005-02-022005-02-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>ajs
* ospf_packet.c: (ospf_read) Fix bug: must check for state ISM_Down, not for event ISM_InterfaceDown. And improve the message by adding the interface flags. * if.h: Declare if_flag_dump. [backport candidate]
2004-12-212004-12-21 Paul Jakma <paul.jakma@sun.com>paul
* if.h: Add more 'non-generic' IFF_ flags. * if.c: IFF_NOXMIT/IFF_VIRTUAL interfaces are 'loopback like'
2004-10-19OK. Here it is - PtP patch from Andrew J. Schorr. No problems with ospfd,hasso
ripd might need some more testing though.
2004-10-112004-10-11 Paul Jakma <paul@dishone.st>paul
* if.h: mtu's should be unsigned. * routemap.{c,h}: const char updates * smux.{c,h}: ditto
2004-10-102004-10-10 Paul Jakma <paul@dishone.st>paul
* version.h.in: (pid_output*) add const qualifier. * command.h: Change DEFUN func to take const char *[] rather than char **, to begin process of fixing compile warnings in lib/. Nearly all other changes in this commit follow from this change. * buffer.{c,h}: (buffer_write) pointer-arithmetic is gccism, take const void * and cast an automatic const char *p to it. (buffer_putstr) add const * command.c: (zencrypt) const qualifier (cmd_execute_command_real) ditto (cmd_execute_command_strict) ditto (config_log_file) ditto. Fix leak of getcwd() returned string. * memory.{c,h}: Add MTYPE_DISTRIBUTE_IFNAME for struct dist ifname. * distribute.{c,h}: Update with const qualifier. (distribute_free) use MTYPE_DISTRIBUTE_IFNAME (distribute_lookup) Cast to char *, note that it's ok. (distribute_hash_alloc) use MTYPE_DISTRIBUTE_IFNAME. (distribute_get) Cast to char *, note that it's ok. * filter.c: Update with const qualifier. * if.{c,h}: ditto. * if_rmap.{c,h}: ditto. (if_rmap_lookup) Cast to char *, note that it's ok. (if_rmap_get) ditto. * log.{c,h}: Update with const qualifier. * plist.{c,h}: ditto. * routemap.{c,h}: ditto. * smux.{c,h}: ditto. Fix some signed/unsigned comparisons. * sockopt.c: (getsockopt_cmsg_data) add return for error case. * vty.c: Update with const qualifier.
2004-09-23Remove usage of evil list and listnode typedefs.hasso
2004-05-082004-05-08 Sowmini Varadhan <sowmini.varadhan@sun.com>paul
* if.h: Add mtu6 field to struct interface, IPv6 MTU may differ from IPv4, and Solaris treats the MTU's differently. Add connected_add_by_prefix, for use by later patch. * if.c: (connected_add_by_prefix) Add prefix to connected list. (if_flag_dump) Solaris: Dump IFF_IPv4/6 flag (if_dump) Dump mtu6 flag, for HAVE_IPV6.
2003-10-272003-10-27 Paul Jakma <paul@dishone.st>paul
* lib/if.{ch}: remove ifc_pointtopoint() - left over from the reverted RFC3021 patch.
2003-08-012003-08-01 Cougar <cougar@random.ee>paul
* 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.
2003-06-062003-06-07 Paul Jakma <paul@dishone.st>paul
* Revert Cougar's sort interface names patch, causes problems with enabling of interfaces for OSPF in ospfd.
2003-06-05Patch from Cougar - sort iflist by name.hasso
2003-05-23From: Hasso Tepper <hasso@estpak.ee>paul
Add the 'no interface' command to all the daemons and vtysh. now it's possible to delete interface from routeing daemons as well only if it doesn't exist in os. http://hasso.linux.ee/zebra/ht-no_interface_fix.patch
2003-05-23Undo Hasso last patch, about to apply a slightly updated patch.paul
2003-05-23From: Hasso Tepper <hasso@estpak.ee>paul
http://hasso.linux.ee/zebra/ht-no_interface-23052003.patch Add the 'no interface' command to all the daemons and vtysh.
2002-12-13zebra link state detection supportpaul
2002-12-13Added RIPv1 patch - bug fixes and improved/more interoperable classfulpaul
subnet handling
2002-12-13Initial revisionpaul