)]}'
{
  "log": [
    {
      "commit": "e26873fd8f0c4306eff65de94a45b4114fc81b98",
      "tree": "9775a683303e801df8555d5a74dbd714182857f6",
      "parents": [
        "cfe117498c8348bfcd8f5f95169a6621e437458a"
      ],
      "author": {
        "name": "Roman Hoog Antink",
        "email": "rha@open.ch",
        "time": "Wed May 05 16:00:50 2010 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed May 05 12:03:33 2010 -0400"
      },
      "message": "zebra: fix infinite loop when deleting an interface\n\nWhen deleting a VLAN interface after flushing its\naddresses, zebra uses 100% CPU time and freezes.\n\n * interface.c: The while loop in line 407 that\n   should clean up connected routes never hits one\n   of the 2 lines \"last \u003d node;\" and thus loops\n   forever.\n\nSigned-off-by: Roman Hoog Antink \u003crha@open.ch\u003e\n"
    },
    {
      "commit": "ffac19c58ee636274cd3972b584e37cd9a3331de",
      "tree": "ab21740846d246fd817dae578f5e4d83731e4cd6",
      "parents": [
        "38cc00cd823fe945c7748de18c3e8932d98dd8f8"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Dec 08 12:27:02 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 08 12:27:02 2009 +0300"
      },
      "message": "zebra: remove unused function to fix warning\n\n* zebra/interface.c\n  * if_supported_family(): sayonara\n"
    },
    {
      "commit": "b60668d092f1778395b6c10b406059b8cbf235b8",
      "tree": "7869d81a4a8d440f8cb41ddb0e66c8279e2b9636",
      "parents": [
        "5bc52c76c2816a3be9a033c3e5bf4fea1908e3cd"
      ],
      "author": {
        "name": "Chris Caputo",
        "email": "ccaputo@alt.net",
        "time": "Sun May 03 04:40:57 2009 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jun 23 14:15:57 2009 +0100"
      },
      "message": "RFC 4191 Default Router Preference support for router advertisements\n\nAdds \"ipv6 nd router-preference (high|medium|low)\" and\n\"no ipv6 nd router-preference\" interface commands.\n\nFiles modified:\n\n   doc/ipv6.texi\n   zebra/interface.c\n   zebra/interface.h\n   zebra/rtadv.c\n   zebra/rtadv.h\n\nSigned-off-by: Chris Caputo \u003cccaputo@alt.net\u003e\n"
    },
    {
      "commit": "81cce0185e23b6ecd2ab98ab34182901226bcf9e",
      "tree": "24a8fa282d80b9dab623bb26fbbec731c0c8b34a",
      "parents": [
        "82f5ee1ead0aa83f83f918abfc3f5071741a56e5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Tue Apr 28 14:28:00 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:27 2009 +0100"
      },
      "message": "[cleanup] Use correct buffer size for inet_ntop()\n\nDon\u0027t need big buffer 1024 to hold IPV4 (INET_ADDRSTRLEN)\nor IPv6 (INET6_ADDRSTRLEN) message.\n"
    },
    {
      "commit": "393deb9bd663361e6b110d579a8b1d4c22667068",
      "tree": "e93ebf2f57bf92ff7a9cd045764b3cdbb99a07e5",
      "parents": [
        "3453a7122c1d585ad789ed0f63deb90cc5e89fae"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Aug 18 14:13:29 2008 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:07:49 2009 +0100"
      },
      "message": "[cleanup] Convert XMALLOC/memset to XCALLOC\n\nSimple conversion of XMALLOC/memset to XCALLOC\n"
    },
    {
      "commit": "6f0e3f6e17687eb25b7b77c4fdc8324837d4700f",
      "tree": "8a94d9212060f0f2ee7cbd0079c2687eed7348dc",
      "parents": [
        "08d3d5b398ae81de7659509f159e814d1bbd4375"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 10 02:38:51 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 10 02:38:51 2007 +0000"
      },
      "message": "[autoconf] bugs 162,303,178: Fix \u0027present but can not be compiled\u0027 warnings\n\n2007-05-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: sys/conf.h depends on sys/param.h, at least on\n\t  FBSD 6.2.\n\t  (bug #363) Should check for in_pktinfo for IRDP\n\n2006-05-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: General cleanup of header and type checks, introducing\n\t  an internal define, QUAGGA_INCLUDES, to build up a list of\n\t  stuff to include so as to avoid \u0027present but cant be compiled\u0027\n\t  warnings.\n\t  Misc additional checks of things missing according to autoscan.\n\t  Add LIBM, for bgpd\u0027s use of libm, so as to avoid burdening\n\t  LIBS, and all the binaries, with libm linkage.\n\t  Remove the bad practice of using m4 changequote(), just\n\t  quote the []\u0027s in the case statements properly.\n\t  This should fix bugs 162, 303 and 178.\n\t* */*.{c,h}: Update all HAVE_* to the standard autoconf namespaced\n\t  HAVE_* defines. I.e. HAVE_SA_LEN -\u003e HAVE_STRUCT_SOCKADDR_SA_LEN,\n\t* bgpd/Makefile.am: Add LIBM to bgpd\u0027s LDADD, for pow().\n"
    },
    {
      "commit": "d9a18f1113b915dd0d2a4883a9149f06dd61352e",
      "tree": "0d81d8b3d83b9023ccf396bb1e80085c1dbcdf55",
      "parents": [
        "d9d00a689ea636af58f89cb62291245bb2a1bc7d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:30:20 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:30:20 2007 +0000"
      },
      "message": "[zebra] Retain configured IPv4 address upon removal by kernel\n\n2007-04-08 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* interface.c: (if_delete_update) Address removal triggered\n\t  by kernel shouldn\u0027t remove configured IPv4 address from connected\n\t  list.\n"
    },
    {
      "commit": "e4529636b77124285cca96a62799d0ff6a7addeb",
      "tree": "a8a50de7413833d5277ed7309248e03719e9efd3",
      "parents": [
        "43cd33a44e010f818633b7f144b5a0be352b41e7"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Dec 12 19:18:21 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Dec 12 19:18:21 2006 +0000"
      },
      "message": "[PtP over ethernet] New peer flag allows much more addressing flexibility\n\n2006-12-12 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if.h: (struct connected) Add new ZEBRA_IFA_PEER flag indicating\n\t  whether a peer address has been configured.  Comment now shows\n\t  the new interpretation of the destination addr: if ZEBRA_IFA_PEER\n\t  is set, then it must contain the destination address, otherwise\n\t  it may contain the broadcast address or be NULL.\n\t  (CONNECTED_DEST_HOST,CONNECTED_POINTOPOINT_HOST) Remove obsolete\n\t  macros that were specific to IPv4 and not fully general.\n\t  (CONNECTED_PEER) New macro to check ZEBRA_IFA_PEER flag.\n\t  (CONNECTED_PREFIX) New macro giving the prefix to insert into\n\t  the RIB: if CONNECTED_PEER, then use the destination (peer) address,\n\t  else use the address field.\n\t  (CONNECTED_ID) New macro to come up with an identifying address\n\t  for the struct connected.\n\t* if.c: (if_lookup_address, connected_lookup_address) Streamline\n\t  logic with new CONNECTED_PREFIX macro.\n\t* prefix.h: (PREFIX_COPY_IPV4, PREFIX_COPY_IPV6) New macros\n\t  for better performance than the general prefix_copy function.\n\t* zclient.c: (zebra_interface_address_read) For non-null destination\n\t  addresses, set prefixlen to equal the address prefixlen.  This\n\t  is needed to get the new CONNECTED_PREFIX macro to work properly.\n\t* connected.c: (connected_up_ipv4, connected_down_ipv4,\n\t  connected_up_ipv6, connected_down_ipv6) Simplify logic using the\n\t  new CONNECTED_PREFIX macro.\n\t  (connected_add_ipv4) Set prefixlen in destination addresses (required\n\t  by the CONNECTED_PREFIX macro).  Use CONNECTED_PEER macro instead\n\t  of testing for IFF_POINTOPOINT.  Delete invalid warning message.\n\t  Warn about cases where the ZEBRA_IFA_PEER is set but no\n\t  destination address has been supplied (and turn off the flag).\n\t  (connected_add_ipv6) Add new flags argument so callers may set\n\t  the ZEBRA_IFA_PEER flag.  If peer/broadcast address satisfies\n\t  IN6_IS_ADDR_UNSPECIFIED, then reject it with a warning.\n\t  Set prefixlen in destination address so CONNECTED_PREFIX will work.\n\t* connected.h: (connected_add_ipv6) Add new flags argument so\n\t  callers may set the ZEBRA_IFA_PEER flag.\n\t* interface.c: (connected_dump_vty) Use CONNECTED_PEER macro\n\t  to decide whether the destination address is a peer or broadcast\n\t  address (instead of checking IFF_BROADCAST and IFF_POINTOPOINT).\n\t* if_ioctl.c: (if_getaddrs) Instead of setting a peer address\n\t  only when the IFF_POINTOPOINT is set, we now accept a peer\n\t  address whenever it is available and not the same as the local\n\t  address.  Otherwise (no peer address assigned), we check\n\t  for a broadcast address (regardless of the IFF_BROADCAST flag).\n\t  And must now pass a flags value of ZEBRA_IFA_PEER to\n\t  connected_add_ipv4 when a peer address is assigned.\n\t  The same new logic is used with the IPv6 code as well (and we\n\t  pass the new flags argument to connected_add_ipv6).\n\t  (if_get_addr) Do not bother to check IFF_POINTOPOINT: just\n\t  issue the SIOCGIFDSTADDR ioctl and see if we get back\n\t  a peer address not matching the local address (and set\n\t  the ZEBRA_IFA_PEER in that case).  If there\u0027s no peer address,\n\t  try to grab SIOCGIFBRDADDR regardless of whether IFF_BROADCAST is set.\n\t* if_ioctl_solaris.c: (if_get_addr) Just try the SIOCGLIFDSTADDR ioctl\n\t  without bothering to check the IFF_POINTOPOINT flag.  And if\n\t  no peer address was found, just try the SIOCGLIFBRDADDR ioctl\n\t  without checking the IFF_BROADCAST flag.  Call connected_add_ipv4\n\t  and connected_add_ipv6 with appropriate flags.\n\t* if_proc.c: (ifaddr_proc_ipv6) Must pass new flags argument to\n\t  connected_add_ipv6.\n\t* kernel_socket.c: (ifam_read) Must pass new flags argument to\n\t  connected_add_ipv6.\n\t* rt_netlink.c: (netlink_interface_addr) Copy logic from iproute2\n\t  to determine local and possible peer address (so there\u0027s no longer\n\t  a test for IFF_POINTOPOINT).  Set ZEBRA_IFA_PEER flag appropriately.\n\t  Pass new flags argument to connected_add_ipv6.\n\t  (netlink_address) Test !CONNECTED_PEER instead of if_is_broadcast\n\t  to determine whether the connected destination address is a\n\t  broadcast address.\n\t* bgp_nexthop.c: (bgp_connected_add, bgp_connected_delete)\n\t  Simplify logic by using new CONNECTED_PREFIX macro.\n\t* ospf_interface.c: (ospf_if_is_configured, ospf_if_lookup_by_prefix,\n\t  ospf_if_lookup_recv_if) Simplify logic using new CONNECTED_PREFIX\n\t  macro.\n\t* ospf_lsa.c: (lsa_link_ptop_set) Using the new CONNECTED_PREFIX\n\t  macro, both options collapse into the same code.\n\t* ospf_snmp.c: (ospf_snmp_if_update) Simplify logic using new\n\t  CONNECTED_ID macro.\n\t  (ospf_snmp_is_if_have_addr) Simplify logic using new CONNECTED_PREFIX\n\t  macro.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) Use new CONNECTED_PEER macro\n\t  instead of testing the IFF_POINTOPOINT flag.\n\t* ospfd.c: (ospf_network_match_iface) Use new CONNECTED_PEER macro\n\t  instead of testing with if_is_pointopoint.  And add commented-out\n\t  code to implement alternative (in my opinion) more elegant behavior\n\t  that has no special-case treatment for PtP addresses.\n\t  (ospf_network_run) Use new CONNECTED_ID macro to simplify logic.\n\t* rip_interface.c: (rip_interface_multicast_set) Use new CONNECTED_ID\n\t  macro to simplify logic.\n\t  (rip_request_interface_send) Fix minor bug: ipv4_broadcast_addr does\n\t  not give a useful result if prefixlen is 32 (we require a peer\n\t  address in such cases).\n\t* ripd.c: (rip_update_interface) Fix same bug as above.\n"
    },
    {
      "commit": "74ecdc9e74eb96829e342a03531ba6647ce6bb3c",
      "tree": "f40b1ba761f9ad9271c1951510bbd63eeaa57961",
      "parents": [
        "630c97ce0f87a719f678a24bd84945d4f145fdc5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:10:47 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:10:47 2006 +0000"
      },
      "message": "[zebra] Fix forgetfulness wrt configured address on FreeBSD\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) The key fixes are actually Andrew Schorr\u0027s.\n\t* interface.c: (ip_address_uninstall) Unset the configured flag.\n\t* connected.c: (connected_same) new helper, check whether\n\t  two connected are same.\n\t  (connected_implicit_withdraw) new helper, consolidation of\n\t  existing code in connected_add_ipv{4,6}.\n\t  Try filter out unneeded Zserv address delete/adds when\n\t  address is exact same.\n\t  Where old address is implicitely removed, be sure to preserve\n\t  the IFC_CONFIGURED flag if set, fixes bug where configured\n\t  addresses were being lost on FreeBSD.\n"
    },
    {
      "commit": "630c97ce0f87a719f678a24bd84945d4f145fdc5",
      "tree": "1b87b2247617af51556f24a45b6735674d7f948d",
      "parents": [
        "c024fd0c76bc305cd6b6bab0989226bd9ec5e763"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:48:17 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:48:17 2006 +0000"
      },
      "message": "[zebra] remove internal if_flag_dump, use libzebras version.\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* lib/if.c: (if_flag_dump) remove the whitespace indentation, callers\n\t  should provide.\n\t* zebra/interface.c: (if_flag_dump_vty) redundant code, remove.\n\t  (if_dump_vty) use libzebra if_flag_dump.\n"
    },
    {
      "commit": "beb5633607919d10ba8852ad51fe0b1dc7ecc812",
      "tree": "cf63d68186ec7e2b594e6fa6f95ad6f8aa7b7338",
      "parents": [
        "995b96515b7075fec77ab51dfe8be7788abd838d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 11 13:28:05 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 11 13:28:05 2006 +0000"
      },
      "message": "[zebra] CID #31, guard against potential NULL return of route_node_lookup\n\n2006-05-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* interface.c: (if_delete_update) route_node_lookup may return\n\t  NULL, should fix Coverity CID #31.\n"
    },
    {
      "commit": "3a570c8b7b56b5a3042fbc035a01c753440b927c",
      "tree": "89ee2d6845bf23c83e659f5aac43a6496e77ddf1",
      "parents": [
        "b1fc9acbbea5ed5846d46aa60f9cf49b6105763a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Feb 02 17:27:13 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Feb 02 17:27:13 2006 +0000"
      },
      "message": "[zebra] Display flags on their line in \u0027show interface\u0027.\n\n2006-02-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* interface.c: (if_dump_vty) move flags to their line, neater.\n"
    },
    {
      "commit": "5c78b3d006e6926f938796cffa08e8e14fb8e7af",
      "tree": "19f8f80511cba84e0d70ac22667321a4a7df0d60",
      "parents": [
        "590188b67db4021b9d1552238ef49482dd5f0123"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 25 04:31:40 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 25 04:31:40 2006 +0000"
      },
      "message": "[zebra/solaris] Interface state fixups for Solaris.\n\n2006-01-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) More solaris PF_ROUTE hacks. The IFF_UP mangling\n\t  for solaris was incomplete on the PF_ROUTE side. fix it.\n\t  This changeset generally uglifies things. For some future\n\t  work I\u0027d like to see the state changes seperated out from\n\t  the details of the code. Differences between systems might\n\t  then be slightly easier to implement without convoluted\n\t  hacks.\n\t  Changes should be specific to Solaris mostly, however\n\t  also tested on FreeBSD 6.\n\t* if_ioctl_solaris.c: (interface_list_ioctl) ignore ~IFF_UP\n\t  interfaces, we\u0027ll hear about them when/if interface goes up\n\t  through NEWADDR.\n\t  Update flags explicitely at end of it to kick mangling.\n\t* ioctl_solaris.c: (if_mangle_up) removed to interface.c, in\n\t  kind.\n\t  (lifreq_set_name) more convenient to take the string, than\n\t  the ifp.\n\t  (if_get_flags_direct) new convenience function, returns\n\t  the actual flags. Used during bootstrap in if_ioctl_solaris.c\n\t  to peek at flags of logical interfaces to see whether or\n\t  not to ignore them.\n\t  (if_get_flags) ENXIO means it\u0027s gone, poke out IFF_UP and\n\t  kick flags update.\n\t  (if_{un,}set_flags) flags argument should be 64bit.\n\t* ioctl.{c,h}: flags argument should be 64bit.\n\t* interface.h: Add a \u0027primary_state\u0027 flag to struct zebra_if on\n\t  SUNOS_5.\n\t  Export if_flags_update.\n\t* interface.c: (if_flags_mangle) moved over in kind from\n\t  ioctl_solaris.c. Nasty kludge to try get IFF_UP right, as\n\t  much as is possible. Also keep track of the actual IFF_UP\n\t  value for the primary interface, so we can know when the ifp\n\t  must be deleted.\n\t  (if_flags_update) Take a new interface flags value, apply it\n\t  to the interface, and take whatever actions are required due\n\t  to flag transitions.\n\t  (if_refresh) flag state change logic is moved out to\n\t  previous. Just call if_get_flags, which will end up using\n\t  previous to effect the update of flags.\n\t  (if_flag_dump_vty) IFF_IPV{4,6} aren\u0027t interesting, VIRTUAL\n\t  and NOXMIT are though.\n\t* kernel_socket.c: (ifm_read) Down-\u003eDown transitions shouldn\u0027t\n\t  create ifp, for non-IFANNOUNCE systems.\n\t  Use if_flags_update to update flags.\n\t  flag transition logic is now handled automatically through\n\t  if_flags_update.\n\t  (ifam_read) Better to call if_refresh *after* adding\n \t  connected addresses, as connected count affects IFF_UP on\n \t  IFF_UP-mangled systems.\n \t  On Solaris, Up-\u003eDown due to DELADDR means we need to delete\n\t  the ifp - the IFINFO might already have been and gone.\n\t* rt.h: include other dependent headers.\n"
    },
    {
      "commit": "0752ef0b2e9bbf6c7ab20ed0fe87840b3bd1b7f4",
      "tree": "d580aa8f809edf9a75968f7416e8415ffa72784c",
      "parents": [
        "6d45276f0c8aeec1ce53f77039ec02ec0f940ca1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:35:21 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:35:21 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* connected.{c,h}: Include memory.h\n\t  (connected_add_ipv4) Use MTYPE for ifc label.\n\t  (connected_add_ipv6) Also should accept label. Store it in ifp.\n\t  (connected_del_ipv4) Taking label as argument is pointless.\n\t* rt_netlink.c: (netlink_interface_addr) update label usage\n\t  for connected_{add,delete} functions.\n\t* if_ioctl.c: (if_getaddrs) NULL label for connected_add_ipv6.\n\t* if_ioctl_solaris.c: (interface_list_ioctl) Pass LIFC_NOXMIT\n\t  so we also find out about NOXMIT interfaces like VNI.\n\t  Bit of hackery to turn interface names into the primary\n\t  interface name, later with routing socket messages we only\n\t  will about primary interfaces anyway, so we must normalise\n\t  the name.\n\t  (if_get_addr) take label as argument, so it can\n\t  be passed to connected_add.\n\t  If label is provided, then it is interface name to issue the\n\t  ioctl for address information on, not the ifp name.\n\t  (interface_list) List AF_UNSPEC too, just in case.\n\t* if_proc.c: (ifaddr_proc_ipv6) label for connected_add_ipv6.\n\t* interface.c: (if_addr_wakeup) Some very bogus code - sets\n\t  IFF_RUNNING - add comment.\n\t  (if_refresh)\n\t  (ip_address_install) Use MTYPE for ifc label.\n\t* ioctl_solaris.c: (if_mangle_up) New function. Hackery to make\n\t  IFF_UP reflect whether any addresses are left on the\n\t  interface, as we get signalled for IFF_UP flags change on the\n\t  primary interface only. Logical interfaces dont generate\n\t  IFINFO, but we do get an RTM_DELADDR.\n\t  (if_get_flags) Call if_mangle_up before return.\n\t* kernel_socket.c: (ifam_read) Fixup calls to\n\t  connected_{add,delete} to match above changes. Rename gate\n\t  variable to brd, less confusing.\n\t  Pass the interface name as a label, if it is not same name\n\t  as ifp-\u003ename.\n"
    },
    {
      "commit": "ca16218df74a43491e34a577db5023c89a7e79c8",
      "tree": "5aaee14da68863f7d7eb80fad46c83bebfc4fb8c",
      "parents": [
        "1f377b0202dfc4653f7717de964b628a369a9526"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 12 16:58:52 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 12 16:58:52 2005 +0000"
      },
      "message": "2005-09-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) RTM_CHANGE and implicit withdraw on RTM_NEWADDR\n\t  support.\n\t* connected.c: (connected_withdraw) new function. withdraw a\n\t  connected subnet address set from zebra, and pass information\n\t  along to clients.\n\t  (connected_announce) similar, but to announce a new connected\n\t  subnet address set.\n\t  (connected_check_ipv4) renamed to connected_check, as its\n\t  AFI independent.\n\t  (connected_add_ipv{4,6}) Remove the connected address announce\n\t  stuff, use connected_announce instead.\n\t  If connected_check indicates address is already present,\n\t  treat it as an implicit withdraw of the existing address, ie\n\t  remove the old address details and replace with the new\n\t  details.\n\t  (connected_delete_ipv{4,6}) Use connected_withdraw.\n\t  (connected_check_ipv6) deleted in favour of connected_check.\n\t* connected.h: Rename connected_check_ipv4 to connected_check.\n\t  delete connected_check_ipv6.\n\t* interface.c: Use connected_check rather than the AFI specific\n\t  symbols.\n\t* kernel_socket.c: (rtm_read) RTM_CHANGE support. Create a\n\t  rib delete event for the existing route, before adding route\n\t  again.\n\t  (kernel_read) we can handle RTM_CHANGE now.\n"
    },
    {
      "commit": "6eb8827d669b06d7b38357860d23fa33e0c0078e",
      "tree": "bab69ac40c857fd6a6e7b447166df7e9ae08989d",
      "parents": [
        "7907c6c9d34a4f19dd7d4d8d81c3c8ae5000ee07"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jul 29 14:36:00 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jul 29 14:36:00 2005 +0000"
      },
      "message": "2005-07-29 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* interface.c: (if_delete_update) should always be available, not\n\t  just on RTM_IFANNOUNCE/NETLINK systems.\n\t* kernel_socket.c: (ifan_read) only call if_delete_update when\n\t  interface departs, dont if_delete, because we wish to retain\n\t  interface configuration state even when interfaces are removed.\n\t  (ifm_read) If we dont have RTM_IFANNOUNCE, then transitioning\n\t  to down state is only chance we have to clean up interface in case\n\t  it is deleted (eg Solaris down -\u003e unplumb -\u003e plumb up).\n\t* redistribute.c: (zebra_interface_delete_update) should always be\n\t  available, we /will/ call it now on all systems, via\n\t  if_delete_update.\n\t* zserv.c: (zsend_interface_delete) ditto\n\t  (zsend_interface_address) Update the call-flow diagramme, to\n\t  reflect that if_delete_update /is/ now called on all systems,\n\t  potentially.\n\t* zserv.h: (zsend_interface_delete) unconditionally exported, as\n\t  above.\n"
    },
    {
      "commit": "a1ac18c4d5b4f8f4f279efb2ae12b46258f22282",
      "tree": "e37732ef4b00ae98d1be693e721b01cc2566ba39",
      "parents": [
        "94f2b3923e9663d0355a829f22e4e31cf68ee7b8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 17:17:12 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 17:17:12 2005 +0000"
      },
      "message": "2005-06-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) Extern and static\u0027ification, with related fixups\n\t  of declarations, ensuring files include their own headers, etc.\n\t  if_ioctl.c: (interface_info_ioctl) fix obvious arg mis-order in\n\t  list loop\n"
    },
    {
      "commit": "1eb8ef2584833f18fb674e127d59cb5a7f771482",
      "tree": "f5b09d4781de9a9b08839fefb6530e64d2d2ec31",
      "parents": [
        "5920990fecba7e2430af3cfaa8bcbaed40d0ba1a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "message": "2005-04-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global): Fix up list loops to match changes in lib/linklist,\n\t  and some basic auditing of usage.\n\t* configure.ac: define QUAGGA_NO_DEPRECATED_INTERFACES\n\t* HACKING: Add notes about deprecating interfaces and commands.\n\t* lib/linklist.h: Add usage comments.\n\t  Rename getdata macro to listgetdata.\n\t  Rename nextnode to listnextnode and fix its odd behaviour to be\n\t  less dangerous.\n\t  Make listgetdata macro assert node is not null, NULL list entries\n          should be bug condition.\n          ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use\n          with for loop, Suggested by Jim Carlson of Sun.\n          Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the\n          \"safety\" of previous macro.\n\t  LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to\n\t  distinguish from the similarly named functions, and reflect their\n\t  effect better.\n\t  Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section\n\t  with the old defines which were modified above,\n\t  for backwards compatibility - guarded to prevent Quagga using it..\n\t* lib/linklist.c: fix up for linklist.h changes.\n\t* ospf6d/ospf6_abr.c: (ospf6_abr_examin_brouter) change to a single\n\t  scan of the area list, rather than scanning all areas first for\n\t  INTER_ROUTER and then again for INTER_NETWORK. According to\n\t  16.2, the scan should be area specific anyway, and further\n\t  ospf6d does not seem to implement 16.3 anyway.\n"
    },
    {
      "commit": "d2fc88962a9a494ecb34167871bb9e7273a25d33",
      "tree": "304a1c1a744972bc10b1f677a134907c404b361d",
      "parents": [
        "386e61502d391adb985ac1487825349ec85e6a8c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:38:43 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:38:43 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\tFix problems when netlink interfaces are renamed (same ifindex used\n\tfor a new interface).  Start cleaning up some problems with the way\n\tinterface names are handled.\n\t* interface.c: (if_new_intern_ifindex) Remove obsolete function.\n\t  (if_delete_update) After distributing the interface deletion message,\n\t  set ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t  (if_dump_vty) Detect pseudo interface by checking if ifp-\u003eifindex is\n\t  IFINDEX_INTERNAL.\n\t  (zebra_interface) Check return code from interface_cmd.func.\n\t  Do not set internal ifindex values to if_new_intern_ifindex(),\n\t  since we now use IFINDEX_INTERNAL for all pseudo interfaces.\n\t* kernel_socket.c: (ifm_read) Fix code and comments to reflect that\n\t  all internal interfaces now have ifp-\u003eifindex set to IFINDEX_INTERNAL.\n        * rt_netlink.c: (set_ifindex) New function used to update ifp-\u003eifindex.\n\t  Detects interface rename events by checking if that ifindex is already\n\t  being used.  If it is, delete the old interface before assigning\n\t  the ifindex to the new interface.\n\t  (netlink_interface, netlink_link_change) Call set_ifindex to update\n\t  the ifindex.\n\t* if.h: Remove define for IFINDEX_INTERNBASE and add define\n\t  IFINDEX_INTERNAL 0, since all internal (i.e. non-kernel) pseudo-\n\t  interfaces should have ifindex set to 0.\n\t  (if_new) Remove function.\n\t  (if_delete_retain) New function to delete an interface without\n\t  removing from iflist and freeing the structure.\n\t  (ifname2ifindex) New function.\n\t* if.c: (if_new) Remove function (absorb into if_create).\n\t  (if_create) Replace function if_new with call to calloc.\n\t  Set ifp-\u003eifindex to IFINDEX_INTERNAL.  Fix off-by-one error\n\t  in assert to check length of interface name.  Add error message\n\t  if interface with this name already exists.\n\t  (if_delete_retain) New function to delete an interface without\n\t  removing from iflist and freeing the structure.\n\t  (if_delete) Implement with help of if_delete_retain.\n\t  (ifindex2ifname) Reimplement using if_lookup_by_index.\n\t  (ifname2ifindex) New function to complement ifindex2ifname.\n\t  (interface) The interface command should check the name length\n\t  and fail with a warning message if it is too long.\n\t  (no_interface) Fix spelling in warning message.\n\t  (if_nametoindex) Reimplement using if_lookup_by_name.\n\t  (if_indextoname, ifaddr_ipv4_lookup) Reimplement using\n\t  if_lookup_by_index.\n\t* bgp_zebra.c: (bgp_interface_delete) After deleting, set ifp-\u003eifindex\n\t  to IFINDEX_INTERNAL.\n\t* isis_zebra.c: (isis_zebra_if_del) Call if_delete_retain instead\n\t  of if_delete, since it is generally not safe to remove interface\n\t  structures.  After deleting, set ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t  (zebra_interface_if_lookup) Tighten up code.\n\t* ospf6_zebra.c: (ospf6_zebra_if_del) Previously, this whole function\n\t  was commented out.  But this is not safe: we should at least update\n\t  the ifindex when the interface is deleted.  So the new version\n\t  updates the interface status and sets ifp-\u003eifindex to\n\t  IFINDEX_INTERNAL.\n\t  (ospf6_zebra_route_update) Use if_indextoname properly.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) Show ifindex and interface\n\t  flags to help with debugging.\n\t* ospf_zebra.c: (ospf_interface_delete) After deleting, set ifp-\u003eifindex\n\t  to IFINDEX_INTERNAL.\n\t  (zebra_interface_if_lookup) Make function static.  Tighten up code.\n\t* rip_interface.c: (rip_interface_delete) After deleting, set\n\t  ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t* ripng_interface.c: (ripng_interface_delete) After deleting, set\n\t  ifp-\u003eifindex to IFINDEX_INTERNAL.\n"
    },
    {
      "commit": "7cee1bb15089e4e994958651bd45a6f81c4215aa",
      "tree": "2f7d9b8a24411d06c80dbeb023069c1e3a2f4c2e",
      "parents": [
        "29c4c9bd11aaf36a0b3ed2414c816cdb8d4178bd"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Fri Mar 25 13:08:53 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Fri Mar 25 13:08:53 2005 +0000"
      },
      "message": "2005-03-25 Jean-Mickael Guerin \u003cjean-mickael.guerin@6wind.com\u003e\n\t* interface.c, interface.h, rtadv.c, rtadv.h: extensions to Neighbor\n\t  discovery for Mobile IPv6.\n"
    },
    {
      "commit": "ed9bb6d524301cb7d1902ed94753ffa3c6dabf1e",
      "tree": "8ef411ef124f5bd6ae9689a5461474066821836a",
      "parents": [
        "afd8a129fe140efdb6f743df0ca43d8c150c25bb"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 13 19:17:21 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 13 19:17:21 2005 +0000"
      },
      "message": "\t* zebra/interaface.c: \"show interface description\" command\n\t  implemented.\n"
    },
    {
      "commit": "3452d4752490516c3228da3700c93e2089e30083",
      "tree": "46ba333a050deaef1cf933afab28b7eca9310fad",
      "parents": [
        "c1ba9e8a8ac0447e6f33d50b4b9e7a1e68307bf1"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 06 13:42:05 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 06 13:42:05 2005 +0000"
      },
      "message": "\t* interface.c: Fix CRC and frame errors statistics in Linux.\n"
    },
    {
      "commit": "6f2c27af2189794187e4c30ee70fcb9cc6cb1a3b",
      "tree": "43e2830ca4d832b3d68bb9f5ddaa6cf9328c0a14",
      "parents": [
        "239c26fdeae4dbccb43da359f9ea034041440831"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Jan 18 13:44:35 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Jan 18 13:44:35 2005 +0000"
      },
      "message": "\t* interface.c: Better statistics output in \"show interface\" command in\n\t  case of /proc being used. I don\u0027t have others to test with at the\n\t  moment.\n"
    },
    {
      "commit": "b6178002270192fe3ab2403dafac12e5babe11e6",
      "tree": "6b9c352d814185e16a353d17752059eb995019e0",
      "parents": [
        "8ddca7040da413cd283a4beba4634744f4e61ac8"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 21:12:56 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 21:12:56 2004 +0000"
      },
      "message": "2004-12-07 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* *.c: Change level of debug messages to LOG_DEBUG.\n"
    },
    {
      "commit": "6099b3b56956322567323c11fd698b2328c6826b",
      "tree": "fa537bd0eaa9f7d824f39445eabc928db59050ca",
      "parents": [
        "ae5e24d8678f1e3a60dde58d3382c5ba73d6bb27"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Nov 20 02:06:59 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Nov 20 02:06:59 2004 +0000"
      },
      "message": "2004-11-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* global: Replace strerror with safe_strerror.  And vtysh/vtysh.c\n\t  needs to include \"log.h\" to pick up the declaration.\n"
    },
    {
      "commit": "6bd7c6aec24957ccf9583d17320205786b5dcc7b",
      "tree": "07b42ba33a414ab076f91292e9f2f01884cbb0fa",
      "parents": [
        "8dceb820def41f3bfa2754932d46157e86c5a362"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Oct 28 17:32:27 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Oct 28 17:32:27 2004 +0000"
      },
      "message": "Remove dead \"ip tunnel\" command.\n"
    },
    {
      "commit": "3fb9cd6ef456959b6eff939d5c316f6785c2dda4",
      "tree": "e350cb3ef7b20b8bbccfb1aa9309152311e845bd",
      "parents": [
        "5ae35f45f1292dce3a01f241accafeb2e59b10cc"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 19 19:44:43 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 19 19:44:43 2004 +0000"
      },
      "message": "OK. Here it is - PtP patch from Andrew J. Schorr. No problems with ospfd,\nripd might need some more testing though.\n"
    },
    {
      "commit": "39db97e4e02eae08a1e18528367b6e9b07eb6a93",
      "tree": "2fb3a0269f4f2fe235ef722e3ad9cc8e6005bb6c",
      "parents": [
        "39ff11dc92d004b59d1ec786fd54b27111fee0b5"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 12 20:50:58 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 12 20:50:58 2004 +0000"
      },
      "message": "Some compiler warnings fixes and fix for bugzilla #119.\n"
    },
    {
      "commit": "eef1fe11b89c5ec3c035ff6e4a9acfbc5780b539",
      "tree": "82f80b9b898ede1b5293fc52adb2bee9b138e46c",
      "parents": [
        "18a6dce6f83dd20caf1f36c8e840868ff0bf6dbd"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Oct 03 18:46:08 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Oct 03 18:46:08 2004 +0000"
      },
      "message": "New way to handle secondary addresses from Gilad Arnold.\n"
    },
    {
      "commit": "52dc7ee65f8d887b0730abc0a5d44d27fc6ecafd",
      "tree": "a557339540c56dd3953c29a50ca0e48c1911efc8",
      "parents": [
        "44983cf8a9c587dfbcad294b9dfe4dccbb68ba98"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "message": "Remove usage of evil list and listnode typedefs.\n"
    },
    {
      "commit": "5b73a671aac22a75cc90657aa4a924d199f2284b",
      "tree": "8716d34430c239cb994ba286db18efb24eb09319",
      "parents": [
        "1470bafb7aa179dad7dc4bdc998d68c14752f824"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jul 23 15:26:14 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jul 23 15:26:14 2004 +0000"
      },
      "message": "2004-07-23 Sowmini Varadhan \u003cSowmini.Varadhan@Sun.COM\u003e\n\n        * if_ioctl_solaris.c: HAVE_IPV6 ifdef fixups\n        * zserv.c: ditto\n        * ioctl_solaris.c: ditto.\n        * interface.c: cast for LLADDR\n        * interface.h: Add guards, include redistribute.h and remove\n          extraneous definitions of zebra_interface_{up,down}_update\n        * ioctl.h: Add AF_IOCTL define for non SOLARIS_IPV6\n        * redistribute.h: include dependent header, zserv.h\n        * zserv.h: include dependent header, rib.h\n"
    },
    {
      "commit": "ca7769881ffb700c86b606ead5f4177df3c0b2a1",
      "tree": "b3a199ce94246b34b10d8d20030d27d2f4c5197f",
      "parents": [
        "02ff83c52592427623db0d8367ca9b3395fa321f"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Jun 12 14:33:05 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Jun 12 14:33:05 2004 +0000"
      },
      "message": "OK, here it is - irdp support. But don\u0027t expect me to fix any bugs in it.\n"
    },
    {
      "commit": "44145db3ae79d54da58c967d96cf059421dbf9eb",
      "tree": "ac57bd081e8f93317676875aa73eaf2e7a45aa49",
      "parents": [
        "b9df2d25fc8d06ca63fa792d162d97656361338b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 09 11:00:23 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 09 11:00:23 2004 +0000"
      },
      "message": "2004-05-09 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ioctl.c: (if_get_mtu) set mtu6 to mtu\n\t* mtu_kvm.c: (if_kvm_get_mtu) set mtu6 to mtu\n\t* rt_netlink.c: (netlink_interface) set mtu6 to mtu\n\t  (netlink_link_change) ditto\n\n2004-05-09 Sowmini Varadhan \u003csowmini.varadhan@sun.com\u003e\n\n\t* interface.c: (if_delete_update) only used with HAVE_NETLINK\n\t  and RTM_IFANNOUNCE.\n\t  (if_flag_dump_vty) Solaris IFF_IPV4 and IFF_IPV6 if flags\n\t  (if_dump_vty) print mtu6 if not same as mtu\n"
    },
    {
      "commit": "f1d92e17ab5f1475018e353ce72e94ebe7a81a44",
      "tree": "1e5f7e1f785fc6f3277c765d42e605921ed31b77",
      "parents": [
        "da9c9a24d09071c77843ce39f0470ba487c300bf"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Mar 18 15:40:33 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Mar 18 15:40:33 2004 +0000"
      },
      "message": "Temorary secondary-label fix. Real fix from Gilad will follow after release.\n"
    },
    {
      "commit": "e23949c0e79d0e5f9ae662b4c661e838f35681ef",
      "tree": "3463d525c83e1defe4815c0e0688294877ebd0d9",
      "parents": [
        "00b0bbcd5ca015a25142cc33ac035e9d75f2417e"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Mar 11 15:54:02 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Mar 11 15:54:02 2004 +0000"
      },
      "message": "Fix help. \"ipv6 ...\" commands are for IPv6.\n"
    },
    {
      "commit": "bfc135325e9b0768c78b51c9495eb0fbabc59db6",
      "tree": "c754c2132248a7436ca8012d383a73f89fcc66ef",
      "parents": [
        "fd2dfce21bb21cc2f3d6de723812875ec7abc1f5"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat May 24 06:40:04 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat May 24 06:40:04 2003 +0000"
      },
      "message": "From: Hasso Tepper \u003chasso@estpak.ee\u003e\n\nensure only interfaces that are inactive or do not exist can be deleted\n"
    },
    {
      "commit": "32d2463ca26529ad4700af6d5748f927e1305694",
      "tree": "9f8dc5d94e1fb11a86585864e45401f552ecf2dd",
      "parents": [
        "7515cffe5e11fdfbc437c02b7af8b0f7b4d36fce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 09:25:20 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 09:25:20 2003 +0000"
      },
      "message": "From: Hasso Tepper \u003chasso@estpak.ee\u003e\n\nAdd the \u0027no interface\u0027 command to all the daemons and vtysh. now it\u0027s\npossible to delete interface from routeing daemons as well only if it\ndoesn\u0027t exist in os.\n\nhttp://hasso.linux.ee/zebra/ht-no_interface_fix.patch\n"
    },
    {
      "commit": "7515cffe5e11fdfbc437c02b7af8b0f7b4d36fce",
      "tree": "9acbaf0a01080920f25cf1107465a7f79ee7e2f8",
      "parents": [
        "1921e6f8965701040fe1b4f27619b2d7f3fec254"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 09:21:46 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 09:21:46 2003 +0000"
      },
      "message": "Undo Hasso last patch, about to apply a slightly updated patch.\n"
    },
    {
      "commit": "68f43848fa0f8ac16c768bafb8891495dcf232ae",
      "tree": "8121fe0ee7c19001dd3c37c798e8368681a59493",
      "parents": [
        "8d6b00e4f34dfb6f627b49713bf80b0745b50abc"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 06:58:44 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 23 06:58:44 2003 +0000"
      },
      "message": "From: Hasso Tepper \u003chasso@estpak.ee\u003e\n\nhttp://hasso.linux.ee/zebra/ht-no_interface-23052003.patch\n\nAdd the \u0027no interface\u0027 command to all the daemons and vtysh.\n"
    },
    {
      "commit": "b571e7fc5f95aae3c790e7edba46358635b59f10",
      "tree": "42d80e5799839dc487b6fb038d9cb140de163ab7",
      "parents": [
        "960182aaf05c2f11415789b2edcdc53ac3858f01"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 09 07:16:59 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Apr 09 07:16:59 2003 +0000"
      },
      "message": "Amir - rev 198\nLog:\nRemoved unused variable in interface.c\n"
    },
    {
      "commit": "2e3b2e474ed5ba04744b167132a84f9954485af4",
      "tree": "cc07fb34a1bf21ead5cc3ad69e4a9dfde2b43b0e",
      "parents": [
        "7afa08da2d3690baee1739da400775f8543f5863"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 21:03:13 2002 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 21:03:13 2002 +0000"
      },
      "message": "zebra link state detection support\n"
    },
    {
      "commit": "48b33aaf706367aa9d647e2893f974a7f5740a6b",
      "tree": "3c992dd22b17159d6f3abf657c58470b13820db9",
      "parents": [
        "727d104b15d6293d7223e7830f2e37ae98022cac"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:52:52 2002 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:52:52 2002 +0000"
      },
      "message": "patch from Frank van Maarseveen \u003cF.vanMaarseveen@inter.NL.net\u003e\n[zebra 14599] PATCH: permit [no]multicast command for (yet) inactive interfaces\n"
    },
    {
      "commit": "718e3744195351130f4ce7dbe0613f4b3e23df93",
      "tree": "bac2ad39971cd43f31241ef123bd4e470f695ac9",
      "parents": [],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "message": "Initial revision\n"
    }
  ]
}
