summaryrefslogtreecommitdiff
path: root/zebra/ChangeLog
AgeCommit message (Collapse)Author
2007-10-04+ rib_process() speedup for multi-nexthop route nodesDenis Ovsienko
2007-10-03+ Minor bugfix: IPv6 prefixes were logged incorrectly in RIB debugging ↵Denis Ovsienko
calls. Fixed.
2007-09-14+ sayonara old_pid!Denis Ovsienko
2007-09-14+ fixed bug #402: now the second zebra process doesn't destroy routesDenis Ovsienko
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.
2007-09-14Switch from LOOKUP() to lookup() for rtm_type (see bug #401 for details).Denis Ovsienko
2007-09-12* rt_socket.c: (kernel_rtm_ipv4) prefix_buf could be passedDenis Ovsienko
to zlog_err() uninitialized with debug disabled. Fixed.
2007-09-06+ fixed bug #400: adjusted rtread_sysctl.c:route_read()Denis Ovsienko
2007-08-21Looks like bug #320 is finally fixed now.Denis Ovsienko
2007-08-21Fixed ioctl_solaris.c:if_get_mtu() for IPv6'less operationDenis Ovsienko
2007-08-17Fixed bug #394 "RTF_DONE is ignored in rtm_read()"Denis Ovsienko
2007-08-14Merged own patch for bug #390 (rewrite ↵Denis Ovsienko
zebra/zebra_rib.c:nexthop_active_update())
2007-08-13Merged own patch for the bug #391 (debugging and comments mostly).Denis Ovsienko
2007-08-10Use the proper field length for the peer's address (netlink_interface_addr)vize
2007-08-06[zebra] Add extra debug logging for RIB and RIB queueingPaul Jakma
2007-08-06 Denis Ovsienko * zebra_rib.c: (general) Add extra debug logging for RIB and RIB queue.
2007-08-02Bugzilla #384.Greg Troxel
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-27[zebra] rib loop check for RIB_ENTRY_REMOVED checks wrong varPaul Jakma
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[zebra] Trivial patches so we can compile when IPv6 is not enabledAndrew J. Schorr
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[PtP] Fix BSD problems with PtP interfaces: must treat RTA_BRD as peer addressAndrew J. Schorr
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-02[zebra] Routemap support on received routes, with 'set src' command (linux)Paul Jakma
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[zebra/solaris] fix if_get_index passing wrong arg to lifreq_set_namePaul Jakma
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[zebra] Fix merge error in previous solaris changesetPaul Jakma
2007-04-29 Paul Jakma <paul.jakma@sun.com> * ioctl{_solaris,}.c: (if_get_mtu) Fix missing ; in last commit.
2007-04-10[zebra] MTU change should propogate to zserv client on BSD/SolarisPaul Jakma
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-10[zebra] Retain configured IPv4 address upon removal by kernelPaul Jakma
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-10[testzebra] stubs should call kernel_address_add on IP address installPaul Jakma
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-10[zebra] Bug #351: Don't redistribute routes to ipv4 link-local prefixesPaul Jakma
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[zebra] Fix interface metric bug on BSDPaul Jakma
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[zebra] IRDP should ignore non-IPv4 addressesPaul Jakma
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[zebra] For solaris IPv6 PtP interfaces, try to support prefixlen != 128Andrew J. Schorr
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[PtP over ethernet] New peer flag allows much more addressing flexibilityAndrew J. Schorr
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[zebra] Changes of nexthops of static routes didnt take effectPaul Jakma
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.
2006-09-132006-09-13 Tom Everett <tom@khubla.com>Greg Troxel
* kernel_socket.c (rtm_type_str): ifdef RTM_OLD{ADD,DEL} to compile on systems that no longer define them.
2006-08-06[zebra] trivial: rtadv.h depends on interface.hPaul Jakma
2006-08-06 Paul Jakma <paul.jakma@sun.com> * rtadv.h: depends on interface.h, so should include it.
2006-08-06[zebra] fix inconsistencies in ifstat_update_* declarations and definitionsPaul Jakma
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-04[zebra] IRDP: Move stream_free to where its created, probably fixing a leakPaul Jakma
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[zebra] add more stuff to misc_null to avoid compile breakagesPaul Jakma
2006-08-04 Paul Jakma <paul.jakma@sun.com> * misc_null.c: Add ifstat_update_sysctl, add another required header.
2006-08-02[testzebra] Patch to misc_null.c to get older gcc to recognize #pragma tricksAndrew J. Schorr
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[zebra] Bug #268, Fix race between add/delete of routes, sanitise rib queueingPaul Jakma
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[zebra] Add 'debug zebra rib' commandsPaul Jakma
2006-07-27 Paul Jakma <paul.jakma@sun.com> * debug.{c,h}: Add 'debug zebra rib' and 'debug zebra rib queue'.
2006-07-27[zebra] Add test rig code, for testing the zebra RIBPaul Jakma
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[zebra] Connected routes must always be added to main tablePaul Jakma
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[zebra] Fix CID #104, check addr for null, and #18, check nexthop type argsPaul Jakma
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[zebra] Fix forgetfulness wrt configured address on FreeBSDPaul Jakma
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[zebra] remove internal if_flag_dump, use libzebras version.Paul Jakma
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[interface configuration] Try to avoid losing address info after shutdown.Andrew J. Schorr
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[interface configuration] Preserve flag indicating address was set by quagga.Andrew J. Schorr
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[debug] Improve zebra kernel socket debug message to include IP addresses.Andrew J. Schorr
2006-05-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * kernel_socket.c: (ifam_read_mesg) Improve debug message to show the IP address.
2006-05-15[zebra] Remove private command string tablePaul Jakma
2006-05-15 Paul Jakma <paul.jakma@sun.com> * zserv.c: (general) Remove the private zebra_command_str in favour of newly added libzebra zserv_command_string.
2006-05-11[zebra] CID #31, guard against potential NULL return of route_node_lookupPaul Jakma
2006-05-11 Paul Jakma <paul.jakma@sun.com> * interface.c: (if_delete_update) route_node_lookup may return NULL, should fix Coverity CID #31.
2006-03-30[zebra] arrange structs in padding-efficient manner and remove unused fieldPaul Jakma
2006-02-09 Paul Jakma <paul.jakma@sun.com> * rib.h: (struct {rib,nexthop}) Rearrange fields to avoid needless padding. (struct rib) Remove the indirect pointer, not used anywhere!
2006-02-02[zebra] Display flags on their line in 'show interface'.paul
2006-02-02 Paul Jakma <paul.jakma@sun.com> * interface.c: (if_dump_vty) move flags to their line, neater.