)]}'
{
  "log": [
    {
      "commit": "5dcf71df9649cf9c7afd26e0fd3772486ab262f6",
      "tree": "7d229786e167830813ce5ec5ee7c632cdafa1cfd",
      "parents": [
        "6f0e3f6e17687eb25b7b77c4fdc8324837d4700f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 10 03:00:09 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 10 03:00:09 2007 +0000"
      },
      "message": "[ospfd] Fix address qualified \u0027ip ospf auth\u0027 commands\n\n2007-05-09 Milan Kocian \u003cmilon@wq.cz\u003e\n\n\t* ospf_vty.c: Fix commands: \u0027ip ospf authentication A.B.C.D\u0027,\n\t  \u0027no ip ospf authentication A.B.C.D\u0027, \u0027no ip ospf\n\t  authentication-key A.B.C.D\u0027. Simply fix argv\u0027s indexes and\n          argc check in DEFUN functions.\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": "08d3d5b398ae81de7659509f159e814d1bbd4375",
      "tree": "adba8d8c3499a5156d24e9b0a3b077f357553158",
      "parents": [
        "fb982c25aa771b7c7425a3c3cce0a2cda0a715de"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 07 16:38:35 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 07 16:38:35 2007 +0000"
      },
      "message": "[ospfd] Bug #330 regression: Fix ospf_spf_add_parent assert\n\n2007-05-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_spf.c: (ospf_vertex_new) Dont init vertices to infinity,\n\t  just let 0 be a special case.\n\t  (ospf_spf_add_parent) 0 distance candidate vertex is special,\n\t  cost still to be initialised - asserting that new distance\n\t  is \u003c\u003d existing only makes sense where w already has a cost.\n\t  (ospf_spf_next) Infinite cost links should not be followed,\n\t  bar those of the root.\n"
    },
    {
      "commit": "f0ec832a78549a85cf4e47d884036c1178f749d3",
      "tree": "6c3384cccf81993d69208f13145c33741abd7afc",
      "parents": [
        "a857eb6be5b7f639e76fe3ef7711a3700abe20bc"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Apr 30 16:52:05 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Apr 30 16:52:05 2007 +0000"
      },
      "message": "[ospfd] network command now behaves more logically when a peer prefix is defined\n\n2007-04-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospfd/ospfd.c: (ospf_network_match_iface) Comment out\n\t  COMPATIBILITY_MODE.  Going forward, the ospf \"network\" command\n\t  will use a simple test: does the network command prefix\n\t  contain the connected (destination) prefix of the interface?\n\t* doc/ospfd.texi: Add a paragraph to the description of the OSPFv2\n\t  network command to explain how we handle interfaces with\n\t  peer addresses.\n"
    },
    {
      "commit": "e8a56f02ee52a0a4f06440f4dfef86a21e6ce5c1",
      "tree": "3c7ba00f3e9c7185f242f2a90afeb1e0c3abb4e1",
      "parents": [
        "1d720daa61692f9754d500ff530614798b8b3bf2"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sat Apr 21 20:46:31 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sat Apr 21 20:46:31 2007 +0000"
      },
      "message": "[ospfd] Fix bug in \u0027passive-interface default\u0027 behavior\n\n2007-04-21 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.c: (ospf_if_set_multicast) Fix bug: was testing\n\t  interface passive status improperly in light of the recent\n\t  \u0027passive-interface default\u0027 patch.  Now need to test\n\t  OSPF_IF_PASSIVE_STATUS(oi) instead of\n\t  OSPF_IF_PARAM(oi, passive_interface).\n"
    },
    {
      "commit": "85ef784e8a41a6dd11da42e10368f80c8bdb99d8",
      "tree": "b2089c197ee4eaefc18a15d1cb30118f2c66daab",
      "parents": [
        "b75ae99e1d95685869fb38049e1936129fe17fc9"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Mar 23 11:19:08 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Mar 23 11:19:08 2007 +0000"
      },
      "message": "[ospfd] Bug #330 regression: failure to calculate routes through networks\n\n2007-03-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_spf.c: (ospf_nexthop_calculation) Fix silly regression\n\t  causing ospfd to fail to calculate paths past networks not\n\t  attached to root vertex, introduced with bug #330 fixes.\n"
    },
    {
      "commit": "b75ae99e1d95685869fb38049e1936129fe17fc9",
      "tree": "d7e732cb77ba01c0605594f81ea3e16c42c74b1c",
      "parents": [
        "54afb658829d4bfe5de52685f77af8c8273e78c0"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Mar 23 11:17:28 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Mar 23 11:17:28 2007 +0000"
      },
      "message": "[ospfd] Instrument ospf_spf with more debug log messages\n\n2007-03-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_spf.c: (various) Add more debug statements.\n"
    },
    {
      "commit": "ad81f8cc2e77275cdeef1267d1ff4173eb89e093",
      "tree": "05b192314db804a18e2c8ca329b4f7bf3475033d",
      "parents": [
        "56b3ea09bb613b066824c03290a58f8f2dfae9fd"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Mar 14 22:05:18 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Mar 14 22:05:18 2007 +0000"
      },
      "message": "[ospfd] Return SNMP standard neighbor state values, not quagga internal ones\n\n2007-03-14 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_snmp.c: (ospf_snmp_neighbor_state) New function to\n\t  map internal quagga neighbor states to SNMP standard values.\n\t  (ospfNbrEntry) Call new ospf_snmp_neighbor_state function.\n"
    },
    {
      "commit": "56b3ea09bb613b066824c03290a58f8f2dfae9fd",
      "tree": "26e0c5c3bbadfc48cba91584c21e06c971e68d31",
      "parents": [
        "c136d24406b62510a8c7a3c89e7716d0819e8fc2"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Mar 14 20:21:43 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Mar 14 20:21:43 2007 +0000"
      },
      "message": "[ospfd] Fix two debug messages that used inet_ntoa more than once\n\n2007-03-14 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_zebra.c: (ospf_zebra_add, ospf_zebra_delete) Fix bug\n\t  where inet_ntoa was used twice in the same debug message,\n\t  which doesn\u0027t work because there\u0027s a single shared buffer\n\t  for the returned string.  The fix is to use inet_ntop.\n"
    },
    {
      "commit": "4056a544eb0b7ea513bca0d70808e671c3f2c25b",
      "tree": "d5e3ecf637a6ac20215a33e100b63c41eb6c53df",
      "parents": [
        "bd34fb346db5bb1f0bc8eeeef1868e296d889053"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Feb 27 13:55:46 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Feb 27 13:55:46 2007 +0000"
      },
      "message": "[ospfd] Fix bug: should exit immediately on SIGTERM if OSPF not actually running\n\n2007-02-27 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospfd.c: (ospf_terminate) Exit immediately if ospf is not\n\t  actually running (e.g. the config file was empty).  Fixes\n\t  bug where SIGTERM would not kill ospfd.\n"
    },
    {
      "commit": "bd34fb346db5bb1f0bc8eeeef1868e296d889053",
      "tree": "d29904361a06e21d77fc5cbb163c39dd327962fe",
      "parents": [
        "ff1dd550b01fd6bb4aa137cfee282e6175f89c50"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Feb 26 17:14:48 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Feb 26 17:14:48 2007 +0000"
      },
      "message": "[ospfd] Fix regression in SPF introduced by bug#330 fixes\n\n2007-02-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_spf.c: Fix regression introduced with bug #330 fix: The\n\t  cost update added to ospf_spf_add_parent only handled PtP\n\t  case, differing from same functionality in higher-level\n\t  ospf_spf_next. Regression diagnosed by Anders Pedersen,\n\t  mailnews+router-quagga-dev@news.cohaesio.com.\n\t  (ospf_vertex_new) Initialise vertices to max-cost.\n\t  (ospf_spf_init) Root vertex always creates with 0 cost.\n\t  (ospf_spf_add_parent) Remove the buggy V-\u003eW cost calculating\n\t  code, instead take the new distance as a parameter.\n\t  (ospf_nexthop_calculation) Take distance as parameter, so it\n\t  can be passed down to add_parent.\n\t  (ospf_spf_next) Dont initialise candiate vertex distance,\n\t  vertex_new does so already. Pass distance down to\n\t  nexthop_calculation (see above).\n"
    },
    {
      "commit": "bc20c1a4638db3b92a2e2f7f4b820e60f30a6146",
      "tree": "12d8b124a27309f70d1e8b070641659a517f392a",
      "parents": [
        "fb6724a6b987cb6fab00cc9326674bd14a0d09fa"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Jan 24 14:51:51 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Jan 24 14:51:51 2007 +0000"
      },
      "message": "[ospfd] Bug #330: SPF must consider that nexthop-calc may fail\n\n2007-01-24 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_spf.c: Bug #330: Nexthop calculation sometimes may fail,\n\t  and it needs to indicate this result to SPF.\n\t  (ospf_spf_add_parent) Flush of parent list needs to be done here,\n\t  for simplicity.\n\t  (ospf_nexthop_calculation) Caller needs to know whether\n\t  nexthop calculation succeeded. Every return statement must\n\t  correctly indicate such.\n\t  (ospf_spf_next) Queueing/prioritisation of vertices in SPF\n\t  must take into account whether nexthop_calculation succeeded,\n\t  or SPF may fail to find best paths.\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": "ed589c157781f92bcff0e0b1664c75b2dc6d6965",
      "tree": "6908c528e8480225931a10c020c7a0602539143b",
      "parents": [
        "a39275d76d33e2b17b8f90441863ca030412a664"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Dec 04 18:26:37 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Dec 04 18:26:37 2006 +0000"
      },
      "message": "[ospfd] Consider all connected addresses when creating ospf interfaces\n\n2006-12-04 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospfd.c: (ospf_network_run) Remove an offending \u0027break\u0027 statement.\n\t  Previously, after creating a single ospf_interface on a given\n\t  network interface, the code would skip to the next interface\n\t  without considering other connected addresses on the interface.\n\t  After removing the \u0027break\u0027, we now consider all connected addresses.\n"
    },
    {
      "commit": "7f643ebf2bca2ef446cdf4f4a3e7b16958c18069",
      "tree": "4d577a6574443cc4d6f270410bebd715e5c1e65d",
      "parents": [
        "8d45210e7c9e221b519d975825cb83aea5ebe47e"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Nov 30 16:17:02 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Nov 30 16:17:02 2006 +0000"
      },
      "message": "[ospfd] Add debug messages for a few zebra messages that had been overlooked\n\n2006-11-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_zebra.c: (ospf_router_id_update_zebra,\n\t  ospf_interface_address_add, ospf_interface_address_delete)\n\t  If (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE)) is enabled, then\n\t  add a debug message about what Zebra is telling us.\n\t  (ospf_zebra_add_discard) Add a debug message matching the one\n\t  already in ospf_zebra_delete_discard.\n"
    },
    {
      "commit": "435408866187f3bc3c49b26f11bc83c374e55dd5",
      "tree": "a23e2ab3c46a62cc156ec2c00a120b86480bf44d",
      "parents": [
        "56395af70588c8fda89bf5ef327df64b5efbeb67"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Nov 28 16:36:39 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Nov 28 16:36:39 2006 +0000"
      },
      "message": "[ospfd] Fix bug in passive-interface default commands.\n\n2006-11-28 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_vty.c: (ospf_passive_interface_default) Take additional\n\t  \u0027newval\u0027 arg so we can update ospf-\u003epassive_interface_default inside\n\t  this function.  More importantly, we now call ospf_if_set_multicast\n\t  on all ospf_interfaces.\n\t  (ospf_passive_interface, no_ospf_passive_interface) Fix bug:\n\t  for \u0027default\u0027 case, argv[0] is undefined, so we must test for\n\t  (argc \u003d\u003d 0) before using argv[0].  And since\n\t  ospf_passive_interface_default now calls ospf_if_set_multicast as\n\t  needed, we can just return after calling\n\t  ospf_passive_interface_default.\n"
    },
    {
      "commit": "8fb8a504e2c7c216b34c58e5658d84cb7dbe79b0",
      "tree": "d473cac1c94a79bf4c35bf5e7ae146641230f43f",
      "parents": [
        "7ffa8fa2322fb759cf1f93730cde2cee3d4ad8ee"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Oct 24 19:04:26 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Oct 24 19:04:26 2006 +0000"
      },
      "message": "[ospfd] Stop losing subsequent default-information originate \u0027always\u0027 info\n\n2006-10-24 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_zebra.c: (ospf_redistribute_default_set) Fix bug where\n\t  a new value for ospf-\u003edefault_originate was being ignored\n\t  if a previous \u0027default-information originate\u0027 command\n\t  had already been processed.\n"
    },
    {
      "commit": "7ffa8fa2322fb759cf1f93730cde2cee3d4ad8ee",
      "tree": "2e27d51d171609415026cbc8ce7f2ef7ea4df5e5",
      "parents": [
        "6f58544db526b4dfb09d45f8507926b0ae5fe12b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 22 20:07:53 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 22 20:07:53 2006 +0000"
      },
      "message": "[ospfd] Add passive-interface default support\n\n2006-10-22 Yar Tikhiy \u003cyar@comp.chem.msu.su\u003e\n\n\t* (general) Add support for passive-interface default (with\n\t  minor edits by Paul Jakma).\n\t* ospf_interface.h: Add OSPF_IF_PASSIVE_STATUS macro, looking\n\t  at configured value, or the global \u0027default\u0027 value, as\n\t  required.\n\t* ospf_interface.c: (ospf_if_new_hook) Leave passive\n\t  unconfigured per default, allowing global \u0027default\u0027 to\n\t  take effect for unconfigured interfaces.\n\t* ospf_packet.c: (various) use OSPF_IF_PASSIVE_STATUS\n\t* ospf_vty.c: (ospf_passive_interface_default) new function,\n\t  unset passive from all interfaces if default is enabled, as\n\t  the per-iface settings become redundant.\n\t  (ospf_passive_interface_update) new func, update passive\n\t  setting taking global default into account.\n\t  ({no,}ospf_passive_interface_addr_cmd) Add support for\n\t  \u0027default\u0027 variant of command.\n\t  (show_ip_ospf_interface_sub) Update to take global\n\t  default into account when printing passive status.\n\t  (ospf_config_write) ditto.\n\t* ospfd.c: (ospf_new) set global passive-interface default.\n\t* ospfd.h: (struct ospf) Add field for global\n          passive-interface.\n"
    },
    {
      "commit": "876b8be0ab24721e8f94d47dde022563f76db992",
      "tree": "60afcf14974d39a081b64c71191038701e73a3f5",
      "parents": [
        "98954844ae56d142e96341d5dff959ec5518111e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:35:57 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:35:57 2006 +0000"
      },
      "message": "[daemon startup] Add --dry-run/-C argument to daemons, to check config file syntax\n\n2006-10-04 Oliver Hookins \u003cohookins@gmail.com\u003e\n\n\t* bgpd/bgp_main.c: Add configuration check option, with\n\t\u0027-C\u0027 rather than \u0027-c\u0027 for consistency between daemons.\n\t* isisd/isis_main.c: ditto\n\t* ospf6d/ospf6_main.c: ditto\n\t* ospfd/ospf_main.c: ditto\n\t* ripngd/ripng_main.c: ditto\n\t* vtysh/vtysh_main.c: ditto\n\t* ripd/rip_main.c: Change the config check option to\n\t\u0027-C\u0027 and tidy up the code.\n\t* zebra/main.c: ditto\n\n2006-10-04 Stergiakis Alexandros \u003castergiakis@antcor.com\u003e\n\n\t* ripd/rip_main.c: This trivial patch introduces a new\n\t  command-line option \u0027-c\u0027, which instructs zebra/ripd\n\t  to check its configuration file for validity,\tprint\n\t  any error message, and then exit. This is useful when\n\t  the configuration file is edited by hand or otherwise,\n\t  and you simply want to validate it without any other\n\t  effect.\n\t* zebra/main.c: ditto\n"
    },
    {
      "commit": "08c8367197cb847eb88942e5d7273cf3352d967f",
      "tree": "ccc761ebe1baea6acaf290688a44edf5133586bb",
      "parents": [
        "301e4fb0cfab692c9ec9cbd5fdcb50058547d7cf"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Sep 25 13:26:14 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Sep 25 13:26:14 2006 +0000"
      },
      "message": "[ospfd] Improve some warning messages.\n\n2006-09-25 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_packet_dup, ospf_make_md5_digest)\n\t  Fix zlog_warn messages to eliminate compiler warnings.\n\t  (ospf_hello) Improve warning messages to show why we\n\t  are complaining.\n"
    },
    {
      "commit": "b5aeb4410ae3722a5f331850acbc84c39e3fcd9f",
      "tree": "7af84f1ffe17a5b1444f57f0cb5f0f34197f8837",
      "parents": [
        "c15deb1b7428a2baedfb615b1a41fe28d48c598c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Aug 30 18:47:37 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Aug 30 18:47:37 2006 +0000"
      },
      "message": "[ospfd] Fix assertion in DB-exchange fix, hit by ogier-db-ex-opt commit\n\n2006-08-28 Andy Gay \u003candy@andynet.net\u003e\n\n\t* ospf_packet.c: (ospf_make_db_desc) Assert added with More-bit\n\t  fixes does not hold up with addition of Ogier DB-Exchange\n\t  optimisation, which can empty the db-summary list in between\n\t  sent DD packets. Remove assert, update More-bit always when\n\t  in Exchange.\n"
    },
    {
      "commit": "29b5a044e5ca25944c408cf41a6414e071b11a26",
      "tree": "c21d040542a2b61bbd211c3195e9da9dc78cc9b1",
      "parents": [
        "9f906c7c562bd62043c77a79d84967deea9fe45e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 08:01:20 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 08:01:20 2006 +0000"
      },
      "message": "[ospfd] redistribute default no longer works after complete reconfig, fix\n\n2006-08-27 J.J. Krabbendam \u003cjkrabbendam@aimsys.nl\u003e\n\n\t* ospfd.c: (ospf_finish_final) default redistribute should be\n\t  unset too, fixes bug where reconfiguring ospfd completely\n\t  can no longer enable default redistribution.\n"
    },
    {
      "commit": "2518efd15b75687d4791a5eb4b0d7febc36cffbc",
      "tree": "075b833f292ba3e64117a9ffb440578c70be5a2a",
      "parents": [
        "db9c0df934e62835bc09604a7ae7932693b4254a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:49:29 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:49:29 2006 +0000"
      },
      "message": "[ospfd] Bug #134, ospfd should be more robust to backward time change\n\n2006-08-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Bug #134. Be more robust to backward time changes,\n\t  use the newly added libzebra time functions.\n\t  In most cases: recent_time -\u003e recent_relative_time()\n\t  gettimeofday -\u003e quagga_gettime (QUAGGA_CLK_MONOTONIC, ..)\n\t  time -\u003e quagga_time.\n\t  (ospf_make_md5_digest) time() call deliberately not changed.\n\t  (ospf_external_lsa_refresh) remove useless gettimeofday, LSA\n\t  tv_orig time was already set in ospf_lsa_new, called via\n\t  ospf_external_lsa_new.\n"
    },
    {
      "commit": "f0894cf8c323a25053e1f5e82be3ea5d88c2aacb",
      "tree": "377f9a4910111973309533ea040680e0c32d4a5f",
      "parents": [
        "8dd24ee6d7302ccd9515123d4364122ade277e02"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:40:04 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:40:04 2006 +0000"
      },
      "message": "[ospfd] draft-ogier-ospf-dbex-opt DB-exchange optimisation\n\n2006-08-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_make_db_desc) Implement\n\t  draft-ogier-ospf-dbex-opt DB-exchange optimisation.\n"
    },
    {
      "commit": "8dd24ee6d7302ccd9515123d4364122ade277e02",
      "tree": "9945784ca770b2853a802895ac403a52f2505c4d",
      "parents": [
        "ba122e779ddd1ef09e61ac2003ca20cf7ee8c611"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:29:30 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:29:30 2006 +0000"
      },
      "message": "[ospfd] Raise ExchangeDone earlier, avoid often needless round of DD packets\n\n2006-08-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_make_db_desc) Unset the DD More bit\n\t  after constructing the packet, if appropriate.\n\t  (ospf_db_desc_proc) Speed up Exchange, slave should raise\n\t  ExchangeDone earlier, as RFC mandates, by forming its reply\n\t  before deciding whether both sides are done, avoids a\n\t  needless round of empty DD packet exchanges at the end of\n\t  Exchange, hence speeding up ExchangeDone.\n\t  (ospf_db_desc) use UNSET_FLAG macro.\n"
    },
    {
      "commit": "ba122e779ddd1ef09e61ac2003ca20cf7ee8c611",
      "tree": "ecc8363ac3b757c987827853c9125fdbfa15d64a",
      "parents": [
        "66c454f2a57a1a0053ea308edfc8c8024b3b7a48"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:24:34 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:24:34 2006 +0000"
      },
      "message": "[ospfd] trivial: consolidate LSDB delete code into single function\n\n2006-08-04 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsdb.c: (ospf_lsdb_delete_entry) new function, consolidate\n\t  exact same functionality replicated in other functions.\n\t  (ospf_lsdb_add) Strip out code by using ospf_lsdb_delete_entry.\n\t  (ospf_lsdb_delete) ditto.\n\t  (ospf_lsdb_delete_all) ditto.\n"
    },
    {
      "commit": "1670008b5401eca13456f914bba7331c3b7b2893",
      "tree": "a0a57a0bf58b904602a10b9812f27745e8861927",
      "parents": [
        "6d691129594f87958ecaf4169b2e1f62f90d3616"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jul 27 22:29:06 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jul 27 22:29:06 2006 +0000"
      },
      "message": "[ospfd] Bug #288: do not change router ID unless forced by manual configuration\n\n2006-07-27 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospfd.c: (ospf_router_id_update) Fix and document the algorithm for\n\t  selecting the router ID: if there is not a statically configured ID,\n\t  then stick to the most recent value to avoid disruptive changes.\n\t  This should fix bug #288.\n"
    },
    {
      "commit": "1fe6ed38cd0136c514aabae01389653beab27fb9",
      "tree": "21f10bc3f9c5afffe9f28e5dbf4e6198cfafba5b",
      "parents": [
        "3fed4160cd23f1767d8980e8cba10bc3933947d5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Jul 26 09:37:26 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Jul 26 09:37:26 2006 +0000"
      },
      "message": "[ospfd] Allow ospf_lsa_unlock to NULL out callers\u0027 LSA pointers upon free\n\n2006-07-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.{c,h}: (ospf_lsa_unlock) Change to take a double pointer\n\t  to the LSA to be \u0027unlocked\u0027, so that, if the LSA is freed, the\n\t  callers pointer to the LSA can be NULLed out, allowing any further\n\t  use of that pointer to provoke a crash sooner rather than later.\n\t* ospf_*.c: (general) Adjust callers of ospf_lsa_unlock to match\n\t  previous. Try annotate \u0027locking\u0027 somewhat to show which \u0027locks\u0027\n\t  are protecting what LSA reference, if not obvious.\n\t* ospf_opaque.c: (ospf_opaque_lsa_install) Trivial: remove useless\n\t  goto, replace with return.\n\t* ospf_packet.c: (ospf_make_ls_ack) Trivial: merge two list loops,\n\t  the dual-loop predated the delete-safe list-loop macro.\n"
    },
    {
      "commit": "3fed4160cd23f1767d8980e8cba10bc3933947d5",
      "tree": "34a08d8c76296aaeea1200be35fe08411ca45c2c",
      "parents": [
        "cc8b13a00bfe7083ae68755e547a39cd762f2963"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 25 20:44:12 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 25 20:44:12 2006 +0000"
      },
      "message": "[ospfd] Additional NSM neighbour state change stats/information\n\n2006-07-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_neigbor.h: (struct ospf_neighbor) Add some additional\n\t  neighbour state statistics fields, timestamps for progressive\n\t  and regressive state changes, and pointer to event string\n\t  for the latter state change.\n\t* ospf_nsm.c: (nsm_notice_state_change) Update new state changs\n\t  history as required.\n\t* ospf_vty.c: (show_ip_ospf_neighbor_detail_sub) Print out above\n\t  new per-neighbour state change stats.\n"
    },
    {
      "commit": "90c33177f53ae36a8765f5f27bf34a90663806d3",
      "tree": "1439091ac03207b7cbe204c4fc57ea821144fba2",
      "parents": [
        "3d63f38064f646129ddc67410cfdbbee8538f5cc"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 11 17:57:25 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 11 17:57:25 2006 +0000"
      },
      "message": "[ospfd] record timestamp and event of last NSM state change for neighbour\n\n2006-07-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (ospf_nsm_event) Record state change timestamp\n\t  and event in nbr struct.\n\t* ospf_neighbor.h: (struct ospf_neighbor) Add fields to record\n\t  timestamp of last NSM change and event.\n\t* ospf_vty.c: (show_ip_ospf_neighbor_detail_sub) Print\n\t  last state change timestamp and event, if available.\n"
    },
    {
      "commit": "3d63f38064f646129ddc67410cfdbbee8538f5cc",
      "tree": "70d7eae92e0398a40e2858a7d9b3eaf8a71a6522",
      "parents": [
        "539e1523c7adfbe603535a64709e03650156c0b5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 11 17:52:53 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 11 17:52:53 2006 +0000"
      },
      "message": "[ospfd] trivial: NSM AdjChange should print event, declutter core functions\n\n2006-07-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (nsm_notice_state_changes) Move state change\n\t  logging code to new func to declutter nsm_change_state and\n\t  ospf_nsm_event.\n\t  Log event with AdjChange, it\u0027s useful to know.\n\t  (nsm_change_state) move adjchange and snmp logging to previous.\n\t  (ospf_nsm_event) call nsm_notice_state_changes from here.\n\t  Move the debug message to entry of function, so it gets out\n\t  even if something goes wrong.\n"
    },
    {
      "commit": "539e1523c7adfbe603535a64709e03650156c0b5",
      "tree": "53c0ab9e846ecfa600b73f9ea768e0006c3b7668",
      "parents": [
        "13cd3dc1e8281cc6fdc576fb0b62e71a9e170cae"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 11 17:49:22 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 11 17:49:22 2006 +0000"
      },
      "message": "[ospfd] Remove nsm_reset_nbr and a bunch of useless NSM event/action functions\n\n2006-07-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (nsm_change_state) call nsm_clear_adj for all\n\t  adjacency losses, hence removing need for nsm_reset_nbr.\n\t  (nsm_reset_nbr) kill it, clear_adj in previous does fine.\n\t  (nsm_kill_nbr,nsm_start) remove nsm_reset_nbr call.\n\t  (ospf_nsm_event) Allow NSM function to be NULL, this along with\n\t  removal of nsm_reset_nbr, allows a bunch of now useless functiosn\n\t  to be removed.\n\t  Remove some useless variables.\n\t  (nsm_ignore) now useless, remove.\n\t  (nsm_bad_ls_req) ditto\n\t  (nsm_seq_number_mismatch)   \"\n\t  (nsm_oneway_received)       \"\n\t  (nsm_inactivity_timer)      \"\n\t  (nsm_ll_down)               \"\n\t  (NSM) replace removed action functions with NULL.\n"
    },
    {
      "commit": "13cd3dc1e8281cc6fdc576fb0b62e71a9e170cae",
      "tree": "2268ce870f36a9ce84dcb281917514bbdf920b44",
      "parents": [
        "9d0a3260b2d1b57b7edfd3f72885d861883d4621"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jul 11 01:50:30 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jul 11 01:50:30 2006 +0000"
      },
      "message": "[ospfd] Improve Hello NetworkMask mismatch warning to give more info\n\n2006-07-10 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_hello) Improve NetworkMask mismatch warning\n\t  message to include interface name and conflicting prefix lengths.\n"
    },
    {
      "commit": "1f2c2743ac188b909114a1bf054a9a41a0cd5635",
      "tree": "a55fdbddb1c4f5ea4476fd44ccf2fb988cafd819",
      "parents": [
        "aa2737a08a284953908e131894accd25bf627d53"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jul 10 07:45:13 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jul 10 07:45:13 2006 +0000"
      },
      "message": "[ospfd] cleanup NSM neighbour delete through a new Deleted NSM state\n\n2006-07-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.h: Add a NSM_Deleted neighbour state, to act as dummy\n\t  state indicating the neighbour is to be deleted.\n\t* ospf_nsm.c: (general) Use the NSM_Deleted state to delete\n\t  neighbours, thus allowing code to be slightly more obvious\n\t  in its flow.\n\t  (nsm_timer_set) Add NSM_Deleted. Add another timer the code\n\t  missed.\n\t  (nsm_kill_nbr) No need for special case call to nsm_change_state\n\t  anymore.\n\t  Make the assert and error-handling for same case more readable\n\t  (Andrew Schorr)\n\t  Remove the call to ospf_nbr_delete, nsm_change_state can do\n\t  this generally now via NSM_Deleted.\n\t  (struct ... NSM) Add the dummy NSM_Deleted state, the 3 events\n\t  that can lead to nsm_kill_nbr all now transition the NBR to\n\t  NSM_Deleted and the general change_state function can be left\n\t  to do the work.\n\t  (ospf_nsm_event) Special casing of events and early-return can\n\t  be removed now.\n\t  On transition into Deleted, delete the nbr.\n\t* ospf_dump.c: (ospf_nsm_state_msg) Add Deleted.\n"
    },
    {
      "commit": "aa2737a08a284953908e131894accd25bf627d53",
      "tree": "7fdf971c27d430f30982971233290b12e6be4231",
      "parents": [
        "5c1960687024a4ab16d33b58be8c410a935c583b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 06 11:12:39 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 06 11:12:39 2006 +0000"
      },
      "message": "[ospfd] early-return in nsm_event missed LLDown event, fixes use after free\n\n2006-07-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (ospf_nsm_event) LLDown event also results in nbr\n\t  being deleted, requires early-return too. Likely explains\n\t  some crash reports after interface events.\n"
    },
    {
      "commit": "f7a76abf3078bac6251d4e27f0143a9c0b14dde7",
      "tree": "7046a50c712642cd8b6bf05f80d41b242007c7b3",
      "parents": [
        "5db95bc2dda90dc462f77dd2610c004db685252e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:57:49 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:57:49 2006 +0000"
      },
      "message": "[ospfd] Apply some simplifications to ospf_nsm, from Andrew\u0027s suggestions\n\n2006-07-04 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (general) Various small cleanups from Andrew\u0027s\n\t  review of last set of patches.\n\t  (nsm_timer_set) Loading, Full and default can share\n\t  same code too.\n\t  (nsm_should_adj) Can just be one big OR.\n\t  (nsm_twoway_received) Collapse into return statement.\n"
    },
    {
      "commit": "5db95bc2dda90dc462f77dd2610c004db685252e",
      "tree": "6d25d5818024859e897790850bdd11905a671654",
      "parents": [
        "d1b1cd8fb9309d89f10b95d59fb5b1420248895d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:52:29 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:52:29 2006 +0000"
      },
      "message": "[ospfd] CID #13, dont try print out fields of LSA we know to be NULL.\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.c: (ospf_translated_nssa_refresh) CID #13.\n"
    },
    {
      "commit": "d1b1cd8fb9309d89f10b95d59fb5b1420248895d",
      "tree": "bd88ec34a464f7d2ea3427982e1516fb45683f57",
      "parents": [
        "e55dd53bca98a032a583950320cc1367a0685bee"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:50:44 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:50:44 2006 +0000"
      },
      "message": "[ospfd] Clear adjacency state for NSM changes down to TwoWay/ExStart\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (nsm_clear_adj) clear adjacency related state for a\n\t  neighbour, needed for some state changes from \u003e ExStart down\n\t  to ExStart or less, which need not go through nsm_reset_nbr.\n\t  (nsm_reset_nbr) move code to former. Should be static.\n\t  (ospf_nsm_event) Remove long dead code.\n\t  Use nsm_clear_adj for state changes that take down\n\t  adjacencies to TwoWay/ExStart.\n\t  (nsm_kill_nbr) Oops, action function shouldn\u0027t try return\n\t  1 for error.\n"
    },
    {
      "commit": "e55dd53bca98a032a583950320cc1367a0685bee",
      "tree": "217f9f8e6d4c9426ba36ae0bcf9af3d3949347a4",
      "parents": [
        "ba0beb4a846056301d6baa7f67002c6705084b40"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:46:14 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:46:14 2006 +0000"
      },
      "message": "[ospfd] trivial cleanup of nsm_timer_set\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (nsm_timer_set) ls_req timer should be OFF in\n\t  early states.\n\t  Compact several identical sections.\n\t  Set inactivity timer to OFF for Down, for documentary purposes.\n"
    },
    {
      "commit": "ba0beb4a846056301d6baa7f67002c6705084b40",
      "tree": "4a481f49e3993b61039f157be879173bc2b98e08",
      "parents": [
        "d7b0fb62ec78cfd31ff8d905490a5c929c44e971"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:44:19 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:44:19 2006 +0000"
      },
      "message": "[ospfd] Ensure NSM state functions can redirect next_state accidently\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (ospf_nsm_event) Don\u0027t allow action functions to\n\t  change next_state if the NSM tables do not indicate\n\t  next_state is conditional, log warning if one tries -\n\t  existing code appears fine though.\n"
    },
    {
      "commit": "d7b0fb62ec78cfd31ff8d905490a5c929c44e971",
      "tree": "887a83d76e59217fd1e84f4feb1aa4ff7312a70e",
      "parents": [
        "08942da588b78f41916ebd6c75fa668b18160ee7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:35:24 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:35:24 2006 +0000"
      },
      "message": "[ospfd] consolidate adjacency check logic\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (nsm_should_adj) New function, just consolidate the\n\t  10.4 adjacency check from nsm_twoway_received/nsm_adj_ok.\n\t  (nsm_twoway_received/nsm_adj_ok) Use former.\n"
    },
    {
      "commit": "1c066bfe62951fa1e2f90f02b528342d60fcd6f9",
      "tree": "b842a3dcdaab713be90bdf444d120e95610f72ac",
      "parents": [
        "74176d220ba6fb019a18ebea3e3245a46f33dce1"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jun 30 16:53:47 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jun 30 16:53:47 2006 +0000"
      },
      "message": "[ospfd] Fix \"show ip ospf neighbor A.B.C.D\" to show all matches\n\n2006-06-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_vty.c: (show_ip_ospf_neighbor_id) Should show all instances\n\t  of that neighbor (since it may appear on multiple interfaces)\n\t  instead of bailing out after showing the first match.\n"
    },
    {
      "commit": "7694787c190e3737d6fc3e15b7e098ce76ed61a2",
      "tree": "84b1815e7a268b8babd2cac4b37edf6ac98dc221",
      "parents": [
        "d7e60dd7a9f0213aaa82d256a78ab74887946e53"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jun 30 03:21:05 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jun 30 03:21:05 2006 +0000"
      },
      "message": "[ospfd] Avoid getting NSM stuck in ExStart by using local view of DR/BDR\n\n2006-06-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_nsm.c: (nsm_twoway_received) When deciding whether to\n\t  change from state Init to ExStart, the test for whether the\n\t  neighboring router is DR or BDR should be against the\n\t  local router\u0027s notion of DR/BDR, not the neighbor\u0027s view.\n"
    },
    {
      "commit": "d7e60dd7a9f0213aaa82d256a78ab74887946e53",
      "tree": "2e3488591d1ac48d10ddca05fa4cd68e3611f583",
      "parents": [
        "5f41e90e49b8ced6b5adac3933736067d2b24584"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jun 29 20:20:52 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jun 29 20:20:52 2006 +0000"
      },
      "message": "[ospfd] Implement new ospf router subcommand \"log-adjacency-changes [detail]\"\n\n2006-06-28 Erik Muller \u003cerikm@internap.com\u003e\n\n\t* ospfd.h: Define 2 new struct ospf config flags:\n\t  OSPF_LOG_ADJACENCY_CHANGES and OSPF_LOG_ADJACENCY_DETAIL\n\t* ospf_nsm.c (nsm_change_state): Log adjacency changes if\n\t  requested.\n\t* ospf_vty.c (ospf_log_adjacency_changes): New command function\n\t  to implement ospf subcommand \"log-adjacency-changes [detail]\".\n\t  (no_ospf_log_adjacency_changes) Turn off log-adjacency-changes.\n\t  (show_ip_ospf) Show whether adjacency changes are logged.\n\t  (ospf_config_write) Add \"log-adjacency-changes [detail]\" to config.\n\t  (ospf_vty_init) Add ospf_log_adjacency_changes and\n\t  no_ospf_log_adjacency_changes.\n\t* ospfd.texi: Document new ospf router subcommand\n\t  \"log-adjacency-changes [detail]\".\n"
    },
    {
      "commit": "d1c65c211ce6259b95ec8922f3f3127dc74e118f",
      "tree": "0d7d131736882561d2655a71181b03d755d02d97",
      "parents": [
        "9c42a6ebbc103a0a4be6af782388ad26e6c03556"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jun 27 08:01:43 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jun 27 08:01:43 2006 +0000"
      },
      "message": "[ospfd] Replace redistribution strings with new route_types.h defines.\n\n2006-05-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_vty.c: (general) Replace in-place route redistribution\n\t  command and help strings with the new auto-generated defines\n\t  from lib/route_types.h\n"
    },
    {
      "commit": "9560fa8ac994966a8da0ba23c46c0299164b7112",
      "tree": "fa1f10194a81da333af1bbe43664c73a5c1b5fc4",
      "parents": [
        "9aecfae2ec82027fe1cf2740e6099397376a3f4f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jun 26 12:50:06 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jun 26 12:50:06 2006 +0000"
      },
      "message": "[ospfd] NSSA translate-enabled ABR should declare itself as ASBR\n\n2006-06-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_abr.c: (general) NSSA translate-candidate ABRs need to\n\t  be ASBRs, or other routers may rightfully refuse to install\n\t  translated type-5s LSAs. reported by dendroot@gmail.com.\n\t  (ospf_abr_nssa_check_status) Detect change in translator\n\t  state when ABR, and inc/dec redistribute count as when we\n\t  leave/enter the disabled state - so that translate-enabled\n\t  ABR properly sets ASBR bit on non-NSSA areas.\n\t  Run the resulting function through indent to clean it up.\n\t* ospf_lsa.c: (router_lsa_flags) For purposes of ASBR bit,\n\t  NSSA area is same as stub area.\n"
    },
    {
      "commit": "9aecfae2ec82027fe1cf2740e6099397376a3f4f",
      "tree": "f09cfa42e421c2a34f0705f20823659d7dd1c91d",
      "parents": [
        "0ffb7094d3bd688560c37f01a05c54e35b3a1fbc"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sat Jun 24 20:05:02 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sat Jun 24 20:05:02 2006 +0000"
      },
      "message": "[ospfd] Improve two info log messages in ospf_snmp.c\n\n2006-06-24 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_snmp.c: (ospfTrapNbrStateChange, ospfTrapIfStateChange) Improve\n\t  info log message to indicate why the trap is being sent.\n"
    },
    {
      "commit": "0ffb7094d3bd688560c37f01a05c54e35b3a1fbc",
      "tree": "00e7d13d3ae36728ce2b4a8d472f428816b1c7a1",
      "parents": [
        "6e72cb6a0940bd3dae2d4f023ef94f84af3b723c"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sat Jun 24 19:40:13 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sat Jun 24 19:40:13 2006 +0000"
      },
      "message": "[ospfd] When writing out config, show \"debug ospf nsm status\" properly\n\n2006-06-24 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_dump.c: (config_write_debug) Fix typo to show debug ospf nsm\n\t  status properly (not ism status).\n"
    },
    {
      "commit": "6e72cb6a0940bd3dae2d4f023ef94f84af3b723c",
      "tree": "aea521920a7ca445193796e472c4a273cd53cead",
      "parents": [
        "2cb87162369af61475b543280860bc7b1c0b7c49"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sun Jun 18 00:45:48 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sun Jun 18 00:45:48 2006 +0000"
      },
      "message": "[ospfd] Fix ospf passive-interface subcommand to create interface if necessary\n\n2006-06-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_vty.c: ({no_,}ospf_passive_interface) Replace if_lookup_by_name\n\t  with a call to if_get_by_name -- if the interface does not exist\n\t  already, it should be created.  And remove the obsolete warning\n\t  message.\n"
    },
    {
      "commit": "429ac78cc64e0e29bab7cbc00ee991abcdec3f81",
      "tree": "829302b483390d1484959e4f5b01da2e89d002ba",
      "parents": [
        "74ecdc9e74eb96829e342a03531ba6647ce6bb3c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:40:49 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:40:49 2006 +0000"
      },
      "message": "[ospfd] Fix multicast membership drop bug\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Reported by Milan Koci\n\t* ospf_interface.h: (struct ospf_if_info) Add reference counts\n\t  for multicast group memberships. Add various macros to help\n\t  manipulate/check membership state.\n\t* ospf_interface.c: (ospf_if_set_multicast) Maintain the\n\t  ospf_if_info reference counts, and only actually drop\n\t  memberships if it hits 0, to avoid losing membership when\n\t  OSPF is disabled on an interface with multiple active OSPF\n\t  interfaces.\n\t* ospf_packet.c: (ospf_{hello,read}) Use the new macros to\n\t  check/set\n\t  multicast membership.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) ditto.\n"
    },
    {
      "commit": "ac904dec03ce6b1bbd1bab1718085a366d485bd8",
      "tree": "ffc6d51c14446bac13a7d3a945449bf1c2d8561f",
      "parents": [
        "88871b1d1ea8150ddf3d8f66fe77323770ba0f9f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:04:57 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:04:57 2006 +0000"
      },
      "message": "[ospfd] lsdb_delete/discard_from_db should be more robust to bad args\n\n2006-05-31 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsdb.c: (ospf_lsdb_delete) robustify against NULL arguments,\n\t  print warning.\n\t* ospf_lsa.c: (ospf_discard_from_db) ditto.\n\t  (ospf_maxage_lsa_remover) Check lsa-\u003elsdb for validity, possible\n\t  mitigation (but not solution) for bug #269.\n"
    },
    {
      "commit": "88871b1d1ea8150ddf3d8f66fe77323770ba0f9f",
      "tree": "8f25f719d120d12a9f333000064ca356563b4387",
      "parents": [
        "1602a71d7a64395254e175c5c417fa593647b995"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 11:41:19 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 11:41:19 2006 +0000"
      },
      "message": "[ospfd] suppres mostly uninteresting debug message unless debug is set\n\n2006-05-30 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_read) Debug message about packets\n\t  received on unenabled interfaces should be conditional on\n\t  debug being set.\n"
    },
    {
      "commit": "ae128056e9bb1b52e3b6c3263f5f7fd83efa5c3a",
      "tree": "1825628cbfa71ec05ebb8a8162e20a08092922c8",
      "parents": [
        "e54e6e57205df19efe3023526b7eb53a9d06fa93"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:15:30 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:15:30 2006 +0000"
      },
      "message": "[ospfd] Fix small error in CID #13 commit\n\n2006-05-13 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.c: (ospf_translated_nssa_refresh) fix the sanity\n\t  check to match the assert, small error in CID #13 fix.\n"
    },
    {
      "commit": "e54e6e57205df19efe3023526b7eb53a9d06fa93",
      "tree": "dbe366409aef4f115a1c84998e52d97e9943223c",
      "parents": [
        "deb1561c1824d0a5215c8fcd0084393090a6567e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:11:14 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:11:14 2006 +0000"
      },
      "message": "[ospfd] CID #13, debug for NULL type7 LSA should not print out data from it\n\n2006-05-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.c: (ospf_translated_nssa_refresh) Add non-assert\n\t  sanity check, in case DEBUG isn\u0027t defined.  Debug message\n\t  when no type7 exists should print the ID from the type5, not\n\t  the type7, fixes CID #13.\n"
    },
    {
      "commit": "deb1561c1824d0a5215c8fcd0084393090a6567e",
      "tree": "5c5cd51abefa9c9bd648d041ace9c6836a2f2980",
      "parents": [
        "bfd7c7dc067f5a181a992fa0b8af31cfe5cdc9eb"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:07:27 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:07:27 2006 +0000"
      },
      "message": "[ospfd] CID #15, remove redundant NULL check in ism_change_state\n\n2006-05-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_ism.c: (ism_change_state) NULL check on oi-\u003earea is\n\t  useless, it\u0027s always valid. Only possibility where it\n \t  couldn\u0027t be is if there is a race between abr_task and\n\t  cleaning up oi\u0027s, in which case a NULL check here isn\u0027t going\n\t  to do anything. Fixes CID #15.\n"
    },
    {
      "commit": "bfd7c7dc067f5a181a992fa0b8af31cfe5cdc9eb",
      "tree": "82e34cbd32436bf38dca01d5d41825669f914760",
      "parents": [
        "6db3a6f75c7206050b096dcbd4fde439b4bcb6e6"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:04:45 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:04:45 2006 +0000"
      },
      "message": "[ospfd] CID #14, NULL check ospf-\u003ebackbone before use, ospf_update_router_route\n\n2006-05-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_ia.c: (ospf_update_router_route) ospf-\u003ebackbone could be\n\t  NULL when passed to ospf_find_asbr_route_through_area,\n\t  check for NULL first, CID #14.\n"
    },
    {
      "commit": "6db3a6f75c7206050b096dcbd4fde439b4bcb6e6",
      "tree": "8c4bb9a65e3b59f886d65046c3c8e3d29a2c63b4",
      "parents": [
        "e43be0edb7b5d87a3afe3a26aa071251018b10f1"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:02:46 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:02:46 2006 +0000"
      },
      "message": "[ospfd] CID #28, remove another ospf_lookup call - ospf_redistribute_withdraw\n\n2006-05-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_asbr.c: (ospf_redistribute_withdraw) remove ospf_lookup\n\t  call by taking the struct ospf * as argument, which the\n\t  caller has, fixing CID #28.\n\t* ospf_asbr.h: (ospf_redistribute_withdraw) update declaration\n\t* ospf_zebra.c: (ospf_redistribute_unset) update call to\n\t  ospf_redistribute_withdraw to match.\n"
    },
    {
      "commit": "e43be0edb7b5d87a3afe3a26aa071251018b10f1",
      "tree": "698303cfe81fec852728eb9c8aaa6ab377124bd9",
      "parents": [
        "70461d793444002cc2ce99e4e62df3c367d9dd50"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:00:06 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:00:06 2006 +0000"
      },
      "message": "[ospfd] CID #27, fix missing NULL return check\n\n2006-05-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_interface.c: (ospf_if_exists) Fix missing NULL return\n\t  check on ospf_lookup, CID #27.\n"
    },
    {
      "commit": "70461d793444002cc2ce99e4e62df3c367d9dd50",
      "tree": "aa248149e799cc39d5f2d4ea9193522e64cb6ce4",
      "parents": [
        "4021b60aad57f71f5d3d5c105127f93bd77bf800"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 22:57:57 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 22:57:57 2006 +0000"
      },
      "message": "[ospfd] CID #29, fix missing NULL check by removing unused code.\n\n2006-05-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.c: (ospf_lsa_action) Get rid of the ospf_lookup\n\t  call, which is not checked for NULL return, by stripping out\n\t  functionality which is never used, hence fixing Coverity CID\n\t  #29.\n\t  (struct lsa_action) remove unused member.\n"
    },
    {
      "commit": "4021b60aad57f71f5d3d5c105127f93bd77bf800",
      "tree": "810783e34d8cb8e573fd4773ab6d7b955c84a4f2",
      "parents": [
        "214a4454376e8c96990e4c2ee6edea891c1f3166"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 22:55:41 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 22:55:41 2006 +0000"
      },
      "message": "[ospfd] Squash another ospf_lookup call\n\n2006-05-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.c: (ospf_default_originate_timer) Let the thread\n\t  take (struct ospf *) as thread argument, rather than (struct\n\t  ospf *)-\u003edefault_originate, thus avoiding having to call\n\t  ospf_lookup.\n\t* ospf_zebra.c: (ospf_redistribute_default_set) change setup\n\t  of ospf_default_originate_timer thread to match.\n\t* ospfd.c: (ospf_router_id_update) ditto.\n"
    },
    {
      "commit": "214a4454376e8c96990e4c2ee6edea891c1f3166",
      "tree": "b3dad9e4643c4959247ef8106929fb1ede2ea6e3",
      "parents": [
        "894f8b6602f786db42da58c48b1338df5fa98732"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 22:51:49 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 22:51:49 2006 +0000"
      },
      "message": "[ospfd] Fix leak in area-range-cost command, CID #46.\n\n2006-05-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_abr.c: (ospf_area_range_cost_set) Shouldn\u0027t create a new\n\t  range, should just lookup to see if one exists, the new range\n\t  is just leaked. Fixes CID #46.\n"
    },
    {
      "commit": "894f8b6602f786db42da58c48b1338df5fa98732",
      "tree": "27d1cdb69d21e33a641c108a0ce39fd480e748f7",
      "parents": [
        "1a8ec2b9a3557e4f6ad3c8780b72b35be6d86a3e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 22:50:40 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 22:50:40 2006 +0000"
      },
      "message": "[ospfd] CID #49, fix dereference before NULL check\n\n2006-05-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_route.c: (ospf_route_delete_same_ext) Fix deref before\n\t  NULL check by moving into check-protected block, fix CID #49.\n"
    },
    {
      "commit": "1a8ec2b9a3557e4f6ad3c8780b72b35be6d86a3e",
      "tree": "3f4ecd416c15b72ac1bbd598fc0006b8744030a7",
      "parents": [
        "cac3b5c435613b51eddf7db4518aa6b730afb031"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 11 13:34:08 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 11 13:34:08 2006 +0000"
      },
      "message": "[ospfd] Check NULL result from ospf_area_lookup_by_area_id, CID #69\n\n2006-05-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_vty.c: (no_ospf_area_filter_list) Check NULL result from\n\t  ospf_area_lookup_by_area_id, fixes Coverity CID #69\n"
    },
    {
      "commit": "cac3b5c435613b51eddf7db4518aa6b730afb031",
      "tree": "d78aff33e739316ac478bebb1ebed2c6a9ff1032",
      "parents": [
        "beb5633607919d10ba8852ad51fe0b1dc7ecc812"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 11 13:31:11 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 11 13:31:11 2006 +0000"
      },
      "message": "[ospfd] Fix missing check for ospf_lookup NULL return, CID #70\n\n2006-05-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_vty.c: (general) Audit ospf_lookup calls in commands,\n\t  ensure check for NULL result, make vty messages consistent.\n\t  (show_ip_ospf_interface) Missing NULL check on ospf_lookup\n\t  result, fixes Coverity CID #70.\n"
    },
    {
      "commit": "9c27ef9b9c26db0af507869c2866c4a8463f4ae7",
      "tree": "72279949d2ac9f10f6e62a5a18e332a8b4e02dd5",
      "parents": [
        "b9d92881f5d45601c4268d99baec8835068b73c2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 04 07:32:57 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 04 07:32:57 2006 +0000"
      },
      "message": "[ospfd] Fix SPF of virtual-links\n\n2006-04-24 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) More Virtual-link fixes, again with much help in\n\t  testing / debug from Juergen Kammer. Primarily in SPF.\n\t* ospf_spf.h: Add guard. ospf_interface.h will include this\n\t  header.\n\t* ospf_interface.h: Modify ospf_vl_lookup definition to take\n\t  struct ospf as argument, so as to allow for NULL area\n\t  argument.\n\t  (struct ospf_vl_data) Remove out_oi, instead add a struct\n\t  vertex_nexthop, to use as initial nexthop for backbone paths\n\t  through a vlink.\n\t* ospf_interface.c: (ospf_vl_lookup) Modified to allow\n\t  NULL area to be passed to indicate \"any\" (first) area.\n\t  Add extra debug.\n\t  (ospf_vl_set_params) vl_oi -\u003e nexthop. Add extra debug.\n\t  (ospf_vl_up_check) Fix debug, inet_ntoa returns a static\n\t  buffer..\n\t* ospf_route.c: (ospf_intra_add_router) Vlinks dont go through\n\t  backbone, don\u0027t bother checking.\n\t* ospf_spf.c: (static struct list vertex_list) Record vertices\n\t  that will need to be freed.\n\t  (cmp) Order network before router vertices, as required,\n\t  wasn\u0027t implemented.\n\t  (vertex_nexthop_free) Mild additional robustness check.\n\t  (vertex_parent_free) Take void argument, as this function\n\t  is passed as list deconstructor for vertex parent list.\n\t  (ospf_vertex_new) More debug. Set deconstructor for parent\n\t  list. Track allocated vertices on the vertex_list.\n\t  (ospf_vertex_free) Get rid of the tricky recursive cleanup of\n\t  vertices. Now frees only the given vertex.\n\t  (ospf_vertex_add_parent) Fix assert.\n\t  (ospf_nexthop_calculation) Fix calculation of nexthop for\n\t  VLink vertices, lookup the vl_data and use its previously\n\t  recorded nexthop information.\n\t  (ospf_spf_calculate) Vertices are freed simply by deleting\n\t  vertex_list nodes and letting ospf_vertex_free as deconstructor\n\t  work per-node.\n\t  (ospf_spf_calculate_timer) Trivial optimisation, leave\n\t  backbone SPF calculation till last to reduce SPF churn on\n\t  VLink updates.\n\t* ospf_vty.c: (ospf_find_vl_data) update call to ospf_vl_lookup\n\t  (no_ospf_area_vlink_cmd) ditto.\n\t  (show_ip_ospf_interface_sub) For Vlinks, the peer address is\n\t  more interesting than the output interface.\n"
    },
    {
      "commit": "478aab9812fe06d77fd2f4e0b773a6e1ede18a3a",
      "tree": "d441d5c41fdb02752c2c24a08a4babbfe63f02e3",
      "parents": [
        "ab2416a0f3583545f683310adfc7ebce11d79622"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Apr 03 21:25:32 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Apr 03 21:25:32 2006 +0000"
      },
      "message": "[ospfd] Fix virtual-link handling in nbrs route-table, exposed by bug#234 fix\n\n2006-04-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Fix issues with handling of Vlinks and entries\n\t  in the nbrs route-table which were highlighted by the\n\t  nsm/nbr_self fixes from bug #234. Many thanks to Juergen\n\t  Kammer for his help and efforts in testing out debug patches to\n\t  pinpoint the issue.\n\t* ospf_interface.c: (ospf_vl_new) Add nbr_self for Vlink.\n\t* ospf_neighbor.c: (ospf_nbr_key) new static function, helper\n\t  to create key in nbrs table for a given nbr.\n\t  (ospf_nbr_delete) Use ospf_nbr_key. Add an assert() to\n\t  document an expected state.\n\t  (ospf_nbr_add_self) Ditto.\n\t  (ospf_nbr_lookup_by_addr) Add an assert.\n\t* ospf_nsm.c: (nsm_kill_nbr) Can never kill the nbr_self\n\t  psuedo-neighbour.\n"
    },
    {
      "commit": "075c2011bbec618934637ead3fd6dec65cd30a45",
      "tree": "47e252e3f2d524a520d9be081af0bbaa2963e5c7",
      "parents": [
        "d4ce4f681e04bdd11f5bc7ab30bc6e9048fdf6d2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:34:31 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:34:31 2006 +0000"
      },
      "message": "[ospfd] Fix failure of Fletcher checksum with certain compilers\n\n2006-03-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.c: (ospf_lsa_checksum) Add an explicit cast to avoid\n\t  the ambiguities of ANSI and C99 C with respect to type\n\t  conversion. Detailed problem report and test case with\n\t  example data supplied by Dmitry Ivanov \u003cdimss@telecentrs.lv\u003e.\n"
    },
    {
      "commit": "1a8ee0ec18ac280fda9362259d362805ce62be7d",
      "tree": "2d29cc46074d35940ebc613a0eeecb6ab8ffb4a3",
      "parents": [
        "c2b478d7a4fae2eb2f7f895b80d36af9c8e73ab0"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:20:00 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:20:00 2006 +0000"
      },
      "message": "[ospfd] ignore loopbacks for received interface validation\n\n2006-03-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_interface.c: (ospf_if_lookup_recv_if) Ignore loopbacks,\n\t  we can never ever receive packets on those. Should fix\n\t  case where CARP is run with address in same subnet as real\n\t  interface. Problem report and diagnosis thanks to:\n\t  Landon Fuller \u003clandonf@opendarwin.org\u003e.\n\t  However, ospf_read() still can\u0027t deal deterministically with\n\t  multiple interfaces in same subnet.\n"
    },
    {
      "commit": "c2b478d7a4fae2eb2f7f895b80d36af9c8e73ab0",
      "tree": "4eb613cd2aa57614b8215e6a671b247c9a6fea30",
      "parents": [
        "a625ca3cd2df6016aef97096eb927b783eb26d7f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:16:11 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:16:11 2006 +0000"
      },
      "message": "[ospfd] Fix incorrect byte-order conversion of OSPF_MAX_SEQUENCE_NUMBER\n\n2006-03-23 Steve Lawson \u003csteve.lawson@aheadcomusa.com\u003e\n\n\t* ospf_lsa.c: (ospf_lsa_install) Fix incorrect byte-order\n\t  conversion of OSPF_MAX_SEQUENCE_NUMBER\n"
    },
    {
      "commit": "e8e1946edf6ba87ef53832cdceccc39d7f0c3f26",
      "tree": "fcdaf92bf4129a8a58825bd21ae841a6b3b2bda8",
      "parents": [
        "779adb0147cfff1a831b08853976342ad2110fcd"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jan 19 20:16:55 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jan 19 20:16:55 2006 +0000"
      },
      "message": "[compiler] miscellaneous trivial compiler warning fixes\n\n2006-01-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * (general) various miscellaneous compiler warning fixes.\n          Remove redundant break statements from switch clauses\n          which return.\n          return from main, not exit, cause it annoys SOS.\n          Remove stray semi-colons which cause empty-statement\n          warnings.\n\t* zebra/main.c: (sighup) remove private declaration of external\n\t  function.\n"
    },
    {
      "commit": "779adb0147cfff1a831b08853976342ad2110fcd",
      "tree": "76ec1993a7a429d24bda595254348dbd7dc4bebc",
      "parents": [
        "af887b5111ada0e8cd961e9479aa9d39796a80c8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 18 15:07:38 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 18 15:07:38 2006 +0000"
      },
      "message": "[ospfd] Add support for oversized LSAs.\n\n2006-01-18 Juergen Kammer \u003cj.kammer@eurodata.de\u003e\n\n\t* ospf_lsa.c: (ospf_router_lsa_new) dont take reference to the\n\t  stream data until it is constructed, data reference is\n\t  volatile due to the potential resize in link_info_set\n\n2006-01-18 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.c: (link_info_set) Resize the stream if required and\n\t  possible. Return number of links added.\n\t  (lsa_link_*_set) use return value from previous.\n\t* ospf_lsa.h: Add OSPF_ROUTER_LSA_LINK_SIZE define.\n"
    },
    {
      "commit": "c6371718f39dedd2a03010a9dc26a18d96abbe7f",
      "tree": "d2b17403d11b3d162275bfa28711f5ee3daa6a94",
      "parents": [
        "d211086aefd45e0b7c113a43ed5eb620626b8681"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 17 17:49:53 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 17 17:49:53 2006 +0000"
      },
      "message": "[ospfd/zserv] adjust to new format\n\n2006-01-17 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_verify_header) print out the types\n\t  involved if there\u0027s a mismatch.\n\t* ospf_zebra.c: (ospf_zebra_add) Adjust to new zserv format.\n"
    },
    {
      "commit": "1a643f88b238147dc2cfbe137d9feae7e3f3546e",
      "tree": "8855528746546e29dd645d80a6df22eb84bb351a",
      "parents": [
        "818e56cf2723843377d2881a6b81b8adc0fe9160"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 11 01:08:19 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 11 01:08:19 2006 +0000"
      },
      "message": "[ospfd] Bug #234. Fix nbr_self reinitialisation after down/up.\n\n2006-01-10 Len Sorensen \u003clennartsorensen@ruggedcom.com\u003e\n\n\t* (general) Bug #234, see also [quagga-dev 3902].\n\t  Fix problem with nbr_self not being properly reinitialised\n\t  when an interface comes up, after having been down.\n\t  Some re-arrangement done by Paul Jakma, any bugs introduced\n\t  on top of Len\u0027s suggested changes are his.\n\t* ospf_neighbor.c: (ospf_nbr_add_self) centralise\n\t  initialisation of nbr_self parameters here.\n\t* ospf_interface.c: (ospf_if_new) deleting initialisation of\n\t  parameters of nbr_self, just rely on call to\n\t  ospf_nbr_add_self.\n\t  (ospf_if_cleanup) ditto.\n\t* ospfd.c: (ospf_network_run) ditto.\n"
    },
    {
      "commit": "818e56cf2723843377d2881a6b81b8adc0fe9160",
      "tree": "7abd2058a41c3e2b24f739dfd05ec3edfe5c265a",
      "parents": [
        "37c38304e481037ed075f79f78a3d6f78038f907"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 23:27:05 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 23:27:05 2006 +0000"
      },
      "message": "[ospfd] fix undefined effect expression\n\n2006-01-10 Juris Kalnins \u003cjuris@mt.lv\u003e\n\n\t* ospf_packet.c: (ospf_make_md5_digest) fix odd, if not\n\t  undefined effect, assignment of an increment expression.\n"
    },
    {
      "commit": "98429f6d07b0bac006eb14aea13c1d989fc835ed",
      "tree": "efe6d2709a93147939544e63bba81b2ba24823d5",
      "parents": [
        "c42c177de3ee3aa50c25b5e957c9ba284f19bf6b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 22:11:54 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 22:11:54 2006 +0000"
      },
      "message": "[ospfd] fix rare leak of struct connected, in an error path.\n\n2006-01-10 Juris Kalnins \u003cjuris@mt.lv\u003e\n\n\t* ospf_zebra.c: (ospf_interface_address_delete) fix rare leak of\n\t  struct connected in an error case.\n"
    },
    {
      "commit": "c42c177de3ee3aa50c25b5e957c9ba284f19bf6b",
      "tree": "32414691a47de0aa8980c51a7216dfe2e1f1d878",
      "parents": [
        "867528434d32102b02e2538dcaa7c86aaf47f695"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 20:36:49 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 20:36:49 2006 +0000"
      },
      "message": "[ospfd] trim redundant strings\n\n2006-01-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_vty.c: (config_write_ospf_distribute) trim down\n\t  redundant strings.\n"
    },
    {
      "commit": "867528434d32102b02e2538dcaa7c86aaf47f695",
      "tree": "45c996e73efe19e105a26f441f5617948c98f6ba",
      "parents": [
        "067fca86323b189fabf4c64c0b9ccb98a458b981"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 20:34:46 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 20:34:46 2006 +0000"
      },
      "message": "[ospfd] fix automatic router-id and network enable bug.\n\n2006-01-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospfd.c: (ospf_network_run) checking to see if router-id\n\t  is set should be on ospf-\u003erouter_id, not router_id_static.\n\t  This was causing ospfd to not start if router-id had not\n\t  been configured statically.\n\t  (ospf_if_update) ditto.\n"
    },
    {
      "commit": "c9c93d50cc9cae2f7878434431eafab8f7ee8d89",
      "tree": "f027b74dc63f5716169bdfcdaedf7980abb58d2a",
      "parents": [
        "00c290e02edd6c906b669de9f31a45d14ed8bec0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 13:31:11 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 13:31:11 2005 +0000"
      },
      "message": "[ospfd] rename graceful to deferred, fix a tiny compile warning.\n\n2005-11-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) s/graceful/deferred/ in all files, the former term\n\t   is confusing wrt OSPF Graceful-Restart.\n\t* ospfd.c: (ospf_deferred_shutdown_check) dont return\n\t  a function which returns void. SOS complains about this.\n\t  (ospf_finish)\n"
    },
    {
      "commit": "00c290e02edd6c906b669de9f31a45d14ed8bec0",
      "tree": "5d81084291d38b18144e6f53847026d24587b400",
      "parents": [
        "89368d9f8b70fef5c196db9055bd6a7e7aaa4f36"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 09:21:43 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 09:21:43 2005 +0000"
      },
      "message": "[c99] change gcc zero-length array to C99 flexible array declaration\n\n2005-11-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* buffer.c: (struct buffer_data) change gcc zero array\n\t  declaration to C99 incomplete array.\n\t* stream.h: (struct stream) same\n\t* ospf_api.c: (struct opaque_lsa) same\n"
    },
    {
      "commit": "c24d602e82d31a2fcbccb4cc3b66f8d0a79d5f22",
      "tree": "55abf96bbb7899029d542b0714e666159484dbb2",
      "parents": [
        "b29800a676b7c3cf00d8a4086b7783ccb7e2f29f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 14:54:12 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 14:54:12 2005 +0000"
      },
      "message": "2005-11-20 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * ospf_abr.c: (ospf_abr_announce_network_to_area) check\n          returned LSA of ospf_summary_lsa_refresh and print warning if\n          it failed.\n          (ospf_abr_announce_network_to_area) similar\n          (ospf_abr_announce_rtr_to_area) similar\n        * ospf_lsa.c: (ospf_router_lsa_new) check LSA returned is valid.\n          (ospf_router_lsa_originate) similar\n          (ospf_router_lsa_refresh, ospf_network_lsa_new) similar\n          (ospf_summary_lsa_new) Check ID is valid.\n          (ospf_summary_lsa_originate) ditto, and check returned LSA from\n           previous function is !NULL.\n          (ospf_summary_lsa_refresh) check ospf_summary_lsa_new return\n           is !NULL.\n          (ospf_summary_asbr_lsa_new) ID valid check.\n          (ospf_summary_asbr_lsa_originate) similar.\n"
    },
    {
      "commit": "b29800a676b7c3cf00d8a4086b7783ccb7e2f29f",
      "tree": "98afc20c5aae1909e34b1b86f1d6d18f36391c89",
      "parents": [
        "77b1cffe3b71c886152534b8507f00c7fcbd12c9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 14:50:45 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 14:50:45 2005 +0000"
      },
      "message": "2005-11-20 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * ospfd.h: remove the OSPF_ROUTER_ID_UPDATE_DELAY define\n          (struct ospf) remove the router_id timer thread.\n          remove export of ospf_router_id_update_timer.\n        * ospfd.c: (ospf_router_id_update) call ospf_if_update to\n          poke interfaces into action after ID has been configured.\n          (ospf_router_id_update_timer) removed.\n          (ospf_finish_final) t_router_id_update timer is gone.\n          (ospf_network_run) router-id update timer gone.\n          call ospf_router_id_update directly if ID not configured.\n          In the per-iface loop, don\u0027t ospf_if_up interfaces if\n          ID is still not configured. The update function will call\n          ospf_if_update anyway.\n          (ospf_if_update) ID update timer is gone. Just return if no\n          ID is set.\n        * ospf_vty.c: (ospf_router_id) call ospf_router_id_update, no\n          timer needed.\n        * ospf_zebra.c: (ospf_router_id_update_zebra) call\n          ospf_router_id_update directly, not via timer.\n"
    },
    {
      "commit": "649654aba22704a792949374990bc2a29c357de8",
      "tree": "dea4976f37c2719ccf2d6f01f14f32f2afac792b",
      "parents": [
        "70cd34749f3c57d6f67ab31a9552c46afe437553"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Nov 16 20:17:52 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Nov 16 20:17:52 2005 +0000"
      },
      "message": "[ospfd] Standardize buffer sizes used for displaying timers.\n2005-11-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_dump.h: Define OSPF_TIME_DUMP_SIZE as appropriate buffer size\n\t  for use with ospf_timer_dump and ospf_timeval_dump.\n\t* ospf_vty.c: Change all buffer sizes used with ospf_timer_dump and\n\t  ospf_timeval_dump to have size OSPF_TIME_DUMP_SIZE.\n\t  (show_ip_ospf_interface_sub) Fix possible buffer overflow in\n\t  call to ospf_timer_dump.\n"
    },
    {
      "commit": "70cd34749f3c57d6f67ab31a9552c46afe437553",
      "tree": "cbb09a4e97d559ae0806134a94313e7352821741",
      "parents": [
        "889e9311e5c900ce24eecf00fcb5b8b9d51bb020"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Nov 16 19:33:22 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Nov 16 19:33:22 2005 +0000"
      },
      "message": "[ospfd] Make OSPF_ISM_TIMER_OFF macro safer.\n2005-11-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_ism.h: (OSPF_ISM_TIMER_OFF) Improve macro syntax by enclosing\n\t  in \u0027do {...} while(0)\u0027.\n"
    },
    {
      "commit": "31a5976bb99f1875ebcfc29a6359f3a7ae81a795",
      "tree": "2c15efa99bd7d150ed505ada900d66258b48bb8a",
      "parents": [
        "6fe70d1b35c189cb1e488b2c26551ba7baac6148"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 11:11:11 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 11:11:11 2005 +0000"
      },
      "message": "[ospfd] misc small fixes. Fix default stub router setting. no opaque compile.\n\n2005-11-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospfd.c: (ospf_new) stub-shutdown should just default to\n\t  unconfigured, too strange otherwise.\n\t  (ospf_finish_final) t_opaque_lsa_self TIMER_OFF should be\n\t  preprocessor conditional on HAVE_OPAQUE_LSA.\n\t* ospfd.h: (struct ospf) remove the SHUTDOWN_DEFAULT define.\n\t  no longer used, plus it wasn\u0027t in range that the command\n\t  accepted.\n\t* ospf_zebra.h: Depends on vty.h, include it.\n"
    },
    {
      "commit": "58e1befe5fbd6eade52a1536acb49ea4b4fc5837",
      "tree": "3851ffdb632c5e8d6ea6e8ed77cee7fb6c21b013",
      "parents": [
        "cb3d31db278a522641f2ec5408034b819091bab6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 12:10:03 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 12:10:03 2005 +0000"
      },
      "message": "[ospfd] SPF ospf_canonical_nexthops_free bugfix.\n"
    },
    {
      "commit": "c8c1521a7d39d165ef856c1a3a6dcd54f0532e8d",
      "tree": "ac069b1dd77be09ea5419169544cbf2107cf89d1",
      "parents": [
        "8570676c4ffb407284d51a80c045d6989b7af6d7"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 12:31:39 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 12:31:39 2005 +0000"
      },
      "message": "2005-11-04 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_{dump,spf,vty}.c: Oops, use the internal tv_sub\n\t  function rather than unportable timersub.\n"
    },
    {
      "commit": "6d45276f0c8aeec1ce53f77039ec02ec0f940ca1",
      "tree": "3b21783cff3ac3278a8fd39093dcdd05f443b891",
      "parents": [
        "9c4f1c6f10d4770933c0558528a0e59557b96230"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 11:15:44 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 11:15:44 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: Change level of some warnings to\n\t  informational.\n"
    },
    {
      "commit": "484315fd274b3782f72abc95c9796c604e53bcc9",
      "tree": "2b1753169c541429e0d360439a55c4905d71f70d",
      "parents": [
        "34204aac424f8c29317d863d64f1c3bb4d241a50"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 09:08:29 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 09:08:29 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_apiserver.c: (apiserver_sync_callback) stray semi-colon\n\t* ospf_packet.c: include checksum.h, remove the in_cksum extern\n\t* prototypes.\n\t* ospf_te.h: Add braces, quell warning.\n"
    },
    {
      "commit": "88d6cf37f66c3b7d1abdaa20875418192d5219b8",
      "tree": "4843e77f622d3bf9e5df5c75de381e06e3126d6b",
      "parents": [
        "92779fe51dd061ab1502a9acdc0cf5241748e0c7"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Oct 29 12:50:09 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Oct 29 12:50:09 2005 +0000"
      },
      "message": "2005-10-29 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) RFC3137 stub-router support\n\t* ospfd.h: Add OSPF_OUTPUT_COST_INFINITE define.\n\t  (struct ospf_master) Add a OSPF_MASTER_SHUTDOWN flag for\n\t  options, to allow shutdown to distinguish between complete\n\t  shutdown and shutdown of a subset of ospf instances.\n\t  (struct ospf)\n\t  Add stub_router_{startup,shutdown_}time, configuration of startup\n\t  and shutdown time for stub-router.\n\t  Add t_graceful_shutdown struct thread, timer for graceful\n\t  shutdown, if needed.\n\t  (struct ospf_area) Add stub_router_state - run time state of\n\t  stub-router for an area. Add flags for ADMIN, IS and WAS\n\t  states.\n\t  Add t_stub_router, timer thread to resend router-lsa for an\n\t  area.\n\t* ospf_lsa.c: (ospf_link_cost) new simple function to spit out\n\t  either the given lnks cost or infinite cost if stub-router is\n\t  in effect.\n\t  (lsa_link_{ptop,broadcast,virtuallink,ptomp}_set) use\n\t  previous function for transit-links.\n\t  (ospf_stub_router_timer) timer thread for end of startup stub\n\t  router. Change state as required for the area and setup\n\t  re-origination of router-lsa.\n\t  (ospf_stub_router_check) Check/do whether stub-router should be\n\t  enabled, and whether it requires timer to be setup.\n\t  (ospf_router_lsa_new) call previous function at top.\n\t  (ospf_router_lsa_originate) no external callers, made static.\n\t* ospf_lsa.h: (ospf_router_lsa_originate) removed.\n\t* ospf_main.c: (sigint) make static.\n\t  remove call to exit, as ospf_terminate now deals with\n\t  exiting.\n\t* ospf_route.c: (ospf_terminate) removed, now in ospfd.c.\n\t* ospf_vty.c: (show_ip_ospf_area) print out state of\n\t  stub-router, if active.\n\t  (show_ip_ospf) print out configuration of stub-router\n\t  support, and details of graceful-shutdown if the timer is\n\t  active.\n\t  ((no)?ospf_max_metric_router_lsa_{admin,startup,shutdown}) new\n\t  commands to (de-)?configure stub-router support.\n\t  (config_write_stub_router) write out config of stub-router.\n\t  (ospf_config_write) call previous.\n\t  (ospf_vty_init) install the new stub-router commands.\n\t* ospfd.c: various functions made static.\n\t  (ospf_new) Set defaults for stub-router. Graceful shutdown\n\t  is made to default on, just to be adventerous.\n\t  (ospf_graceful_shutdown_finish) new function, final part of\n\t  shutdown.\n\t  (ospf_graceful_shutdown_timer) timer thread wrapper for\n\t  graceful-shutdown.\n\t  (ospf_graceful_shutdown_check) check whether to setup timer\n\t  for shutdown or proceed directly to final shutdown.\n\t  (ospf_terminate) moved here from ospf_route.c, call\n\t  ospf_finish for each instance.\n\t  (ospf_finish) renamed to ospf_finish_final and made static.\n\t  (ospf_finish) new function, exported wrapper around\n\t  ospf_graceful_shutdown_check.\n\t  (ospf_finish_final) complete shutdown of an instance.\n\t  Add missing TIMER_OFF\u0027s of two timer threads.\n\t  (ospf_area_free) opaque self lsa timer should be turned off.\n"
    },
    {
      "commit": "e029d448587551be7543e64e278dbb566f57509a",
      "tree": "7ce8c2a0a69634c377c2e0180fecc6ad2cfa6eca",
      "parents": [
        "b8ad39d47a0fea7a336305cfd04f059c8e797aad"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:26:24 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:26:24 2005 +0000"
      },
      "message": "2005-10-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_apiserver.c: (ospf_apiserver_term) This function should\n\t  not have side-effects (eg segv) if no apiserver instances are\n\t  active, ie be robust.\n"
    },
    {
      "commit": "b8ad39d47a0fea7a336305cfd04f059c8e797aad",
      "tree": "8387ae1ff1f397c79c035b3b303e8ea74b53a451",
      "parents": [
        "ea4ffc9009ac4596fe865fd5f7e8363cdacbbd66"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:23:05 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:23:05 2005 +0000"
      },
      "message": "2005-10-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_vty.c: (show_ip_ospf) fix display of SPF timer if it\n\t  has not yet been run.\n"
    },
    {
      "commit": "ea4ffc9009ac4596fe865fd5f7e8363cdacbbd66",
      "tree": "e7281a93367a634b7d08fa45c24951dbb0bd444c",
      "parents": [
        "d24f6e2a34ca829bd2ff6adb98b49d4d2d9cb737"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 20:04:41 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 20:04:41 2005 +0000"
      },
      "message": "2005-10-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_dump.c: (ospf_timeval_dump) fix ms adjustment, thanks to\n\t  Andrew Schorr.\n\t* ospf_vty.c: (ospf_config_write) fix write out of spf timers\n\t  configuration.\n"
    },
    {
      "commit": "d24f6e2a34ca829bd2ff6adb98b49d4d2d9cb737",
      "tree": "1d2a79a2ec4004f16b1ba3f2f2923ed8796cde83",
      "parents": [
        "c188c37caaf589a17b22e9889e63ec96f2f57106"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 09:23:12 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 09:23:12 2005 +0000"
      },
      "message": "2005-10-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) SPF millisecond resolution timer with adaptive,\n\t  linear back-off holdtime. Prettification of ospf_timer_dump.\n\t* ospf_dump.c: (ospf_timeval_dump) new function. The guts of\n\t  ospf_timer_dump, but made to be more dynamic in printing out\n\t  the relative timeval, sliding the precision printed out\n\t  according to the value.\n\t  (ospf_timer_dump) guts moved to ospf_timeval_dump.\n\t* ospf_dump.h: export ospf_timeval_dump.\n\t* ospf_flood.c: (ospf_flood) remove gettimeofday, use\n\t  the libzebra exported recent_time instead, as it\u0027s not\n\t  terribly critical to have time exactly right - the dropped\n\t  LSA will be retransmited to us if we don\u0027t ACK it.\n\t* ospf_packet.c: (ospf_ls_upd_timer) Ditto, but here we\u0027re\n\t  not transmitting, just putting LSA back on update transmit list.\n\t* ospfd.h: delay and holdtimes should be unsigned.\n\t  Add spf_max_holdtime and spf_hold_multiplier.\n\t  Update default defines for delay and hold time to be in msec.\n\t  (struct ospf) change the SPF timestamp to a struct timeval.\n\t  Remove ospf_timers_spf_(un)?set.\n\t* ospfd.c: (ospf_timers_spf_{set,unset}) removed.\n\t  (ospf_new) initialise spf_max_holdtime and spf_hold_multiplier\n\t* ospf_spf.c: (ospf_spf_calculate) SPF timestamp is a timeval\n\t  now, update with gettimeofday.\n\t  (ospf_spf_calculate_schedule) Change SPF timers to millisecond\n\t  resolution.\n\t  Make the holdtime be adaptive, with a linear increase in\n\t  holdtime ever consecutive SPF run which occurs within holdtime\n\t  of previous SPF, bounded by spf_max_holdtime.\n\t* ospf_vty.c: Update spf timers commands.\n\t  (ospf_timers_spf_set) trivial helper.\n\t  (ospf_timers_throttle_spf_cmd) new command to set SPF delay,\n\t  initial hold and max hold times with millisecond resolution.\n\t  (ospf_timers_spf_cmd) Deprecated. Accept the old values,\n\t  convert to msec, truncate to new limits.\n\t  (no_ospf_timers_throttle_spf_cmd) set timers to defaults.\n\t  (no_ospf_timers_spf_cmd) deprecated form, same as previous.\n\t  (show_ip_ospf_cmd) Display SPF parameters and times.\n\t  (show_ip_ospf_neighbour_header) Centralise the \u0027sh ip os ne\u0027\n\t  header.\n\t  (show_ip_ospf_neighbor_sub) Fix the field widths. Get rid of\n\t  the multiple spaces which were making the lines even longer.\n\t  (show_ip_ospf_neighbor_cmd) Use show_ip_ospf_neighbour_header\n\t  (show_ip_ospf_neighbor_all_cmd) ditto and fix the field\n\t  widths for NBMA neighbours.\n\t  (show_ip_ospf_neighbor_int) Use header function.\n\t  (show_ip_ospf_nbr_nbma_detail_sub) use sizeof for timebuf,\n\t  local array - safer.\n\t  (show_ip_ospf_neighbor_detail_sub) ditto\n\t  (ospf_vty_init) install the new SPF throttle timer commands.\n"
    },
    {
      "commit": "f9ad937f537df92bf3119686eee97db7b7176674",
      "tree": "8c203f4bffabbb2fd27ffeafd2e87e5fd704a0e2",
      "parents": [
        "24065a3d4a61a136a17996a48df02b0b180bc6f0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 00:45:17 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 00:45:17 2005 +0000"
      },
      "message": "2005-10-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) OSPF fast, sub-second hello and 1s dead-interval\n\t  support. A warning fix. Millisec support for ospf_timer_dump.\n\t  Change auto-cost ref-bandwidth to add a comment to write out\n\t  of config, rather than printing annoying messages to vty on\n\t  startup.\n\t* ospf_dump.c: (ospf_timer_dump) Print out milliseconds too.\n\t  Callers typically specify a length of 9, so most see\n\t  millisecs unless they specify the additional length.\n\t* ospf_interface.h: (struct ospf_interface) new interface param,\n\t  fast_hello.\n\t* ospf_interface.c: (ospf_if_table_lookup) add brackets,\n\t  gcc warning fix.\n\t  (ospf_new_if_params) Initialise fast_hello param.\n\t  (ospf_free_if_params) Check whether fast_hello is configured.\n\t  (ospf_if_new_hook) set fast_hello to default.\n\t* ospf_ism.h: Wrap OSPF_ISM_TIMER_ON inside do {} while (0) to\n\t  prevent funny side-effects from its if statement when this\n\t  macro is used conditionally by other macros.\n\t  (OSPF_ISM_TIMER_MSEC_ON) new macro, set in milliseconds.\n\t  (OSPF_HELLO_TIMER_ON) new macro to set hello timer according\n\t  to whether fast_hello is set.\n\t* ospf_ism.c: Update all setting of the hello timer to use\n\t  either OSPF_ISM_TIMER_MSEC_ON or OSPF_HELLO_TIMER_ON. The\n\t  former is used when hello is to be sent immediately.\n\t* ospf_nsm.c: ditto\n\t* ospf_packet.c: (ospf_hello) hello-interval is not checked\n\t  for mismatch if fast_hello is set.\n\t  (ospf_read) Annoying nit, fix \"no ospf_interface\" to be debug\n\t  rather than a warning, as it can be perfectly normal to\n\t  receive packets when logical subnets are used.\n\t  (ospf_make_hello) Set hello-interval to 0 if fast-hellos are\n\t  configured.\n\t* ospf_vty.c: (ospf_auto_cost_reference_bandwidth) annoying\n\t  nit, don\u0027t vty_out if this command is given, it gets tired\n\t  quick.\n\t  (show_ip_ospf_interface_sub) Print the hello-interval\n\t  according to whether fast-hello is set or not.\n\t  Print the extra 5 millisec characters from (ospf_timer_dump)\n\t  if fast-hello is configured.\n\t  (ospf_vty_dead_interval_set) new function, common to all\n\t  forms of dead-interval command, to set dead-interval and\n\t  fast-hello correctly. If a dead-interval is given, unset\n\t  fast-hello, else if a hello-multiplier is set, set\n          dead-interval to 1 and fast-hello to given multiplier.\n\t  (ip_ospf_dead_interval_addr_cmd) use\n\t  ospf_vty_dead_interval_set().\n\t  (ip_ospf_dead_interval_minimal_addr_cmd) ditto.\n\t  (no_ip_ospf_dead_interval) Unset fast-hello.\n\t  (no_ip_ospf_hello_interval) Bug-fix, unset of hello-interval\n\t  should set it to OSPF_HELLO_INTERVAL_DEFAULT, not\n\t  OSPF_ROUTER_DEAD_INTERVAL_DEFAULT.\n\t  (config_write_interface) Write out fast-hello.\n\t  (ospf_config_write) Write a comment about\n\t  \"auto-cost reference-bandwidth\" having to be equal on all\n\t  routers. Hopefully just as noticeable as old practice of\n\t  writing to vty, but less annoying.\n\t  (ospf_vty_if_init) install the two new dead-interval\n\t  commands.\n\t* ospfd.h: Add defines for OSPF_ROUTER_DEAD_INTERVAL_MINIMAL\n\t  and OSPF_FAST_HELLO_DEFAULT.\n"
    },
    {
      "commit": "eb3da6dfa92be8083bbe1b4436818754be158b93",
      "tree": "72067c3eb6ec2f5fd1678d555062424f163c6599",
      "parents": [
        "3623814abc4df8435d2fc50697c6d7fc66f21088"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 18 04:20:33 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 18 04:20:33 2005 +0000"
      },
      "message": "2005-10-18 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) SPF memory management cleanup and fix for rare\n\t  double-free bug.\n\t* ospf_spf.h: (struct vertex_parent) New struct to hold parent\n\t  specific data, eg the backlink and the parent vertex pointer,\n\t  and point to the appropriate general struct vertex_nexthop.\n\t  (struct vertex_nexthop) remove parent vertex pointer, so\n\t  this struct can be shared across vertices.\n\t  (struct vertex) rename list child to list children. Remove\n\t  list of nexthops, replace with list of vertex_parents.\n\t* ospf_spf.c: (update_stat) trivial, remove cast from void *.\n\t  (vertex_nexthop_new) remove init of parent - field is gone\n          from struct vertex_nexthop.\n          (ospf_canonical_nexthops_free) Remove the canonical\n          vertex_nexthop memory objects. These are the vertex_nexthops\n          attached to the first level of router vertices from the root.\n          (vertex_parent_new) new function, create a vertex_parent.\n          (vertex_parent_free) ditto, but free it.\n          (ospf_vertex_new) Update to match changes to struct vertex.\n          (ospf_vertex_free) Recursively free a struct vertex and its\n          children. The parent list is used as a reference count.\n          vertex_nexthops must be free seperately, if required.\n          (ospf_vertex_dump) update to match struct vertex changes.\n          Print out backlink of parents too.\n          (ospf_vertex_add_parent) ditto.\n          (ospf_lsa_has_link) update comment.\n          (ospf_nexthop_add_unique) removed, not needed anymore.\n          (ospf_nexthop_merge) ditto.\n          (ospf_spf_consider_nexthop) renamed to ospf_spf_add_parent.\n          Simplified to just create vertex_parent and add it.\n          (ospf_spf_flush_parents) new function, flush out the parent\n\t  list.\n\t  (ospf_nexthop_calculation) Take the relevant route_lsa_link\n\t  as an argument, which simplifies things and removes the need\n\t  for the hack in ospf_nexthop_add_unique - ospf_spf_next\n\t  already knew exactly which link the cost calculated was for.\n\t  Update to match struct vertex changes too.\n\t  (ospf_spf_next) Don\u0027t create a vertex for W unnecessarily, if\n          it\u0027s there\u0027s a vertex already created for W, use it, and\n          hence there\u0027s no need to free it either.\n          Update some manipulation/comparisons of distance to match.\n          Flush the parent list if a lower cost path is found.\n          (ospf_spf_route_free) unused, removed.\n          (ospf_spf_dump) match the struct vertex changes, and dump the\n          ifname if possible.\n          (ospf_spf_calculate) At end of SPF, free the canonical nexthops\n          and call ospf_vertex_free on the root vertex to free the\n\t  entire tree.\n\t* ospf_interface.c: (ospf_vl_set_params) match struct vertex\n          changes.\n        * ospf_route.c: (ospf_intra_route_add) ditto\n          (ospf_route_copy_nexthops_from_vertex) ditto\n\t* memtypes.c: (memory_list_ospf) Add MTYPE_OSPF_VERTEX_PARENT.\n"
    },
    {
      "commit": "3623814abc4df8435d2fc50697c6d7fc66f21088",
      "tree": "520bef46117e4c81956d4c1aeb23afcc339db832",
      "parents": [
        "d751f00299e0cd9be8f0e702288efe48ac1ddbca"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 04:12:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 04:12:54 2005 +0000"
      },
      "message": "2005-10-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_api.c: sign warnings.\n\t* ospf_apiserver.c: sign warning and convert all the struct\n\t  in_addr initialisations so as not to make assumptions about\n\t  how this struct is organised, initialise the s_addr member\n\t  explicitely.\n\t* ospf_packet.c: Add const qualifier to auth_key.\n"
    },
    {
      "commit": "77df1f78597af79209777d264ec9986f33a2fd17",
      "tree": "dd1aaf403511242b0cd3277cb0be14eed348a678",
      "parents": [
        "fac3e8410ade65e269aa2d896bcd3a0b68f10d70"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Oct 06 07:46:22 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Oct 06 07:46:22 2005 +0000"
      },
      "message": "2005-10-06 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n        * ospf_snmp.c: Avoid mixing interface and ospf_interface objects\n          which now allows snmpwalk to work with ospfIfTable and\n          also with ospfIfMetricTable\n"
    },
    {
      "commit": "f52d13cb2e8e7197934d5f241f88647f9b9d78b8",
      "tree": "b0aa01befc07f57ed47e83ac7dfb383284c49d26",
      "parents": [
        "c05612b9a702d0f49c379c92deb6daab55372aea"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 17:38:06 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 17:38:06 2005 +0000"
      },
      "message": "2005-10-01 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra.h: Declare new functions zebra_route_string() and\n\t  zebra_route_char().\n\t* log.c: (zroute_lookup,zebra_route_string,zebra_route_char) New\n\t  functions to map zebra route numbers to strings.\n\t* zebra_vty.c: (route_type_str) Remove obsolete function: use new\n\t  library function zebra_route_string() instead.  Note that there\n\t  are a few differences: for IPv6 routes, we now get \"ripng\" and\n\t  \"ospf6\" instead of the old behavior (\"rip\" and \"ospf\").\n\t  (route_type_char) Remove obsolete function: ues new library function\n\t  zebra_route_char() instead.  Note that there is one difference:\n\t  the old function returned \u0027S\u0027 for a ZEBRA_ROUTE_SYSTEM route,\n\t  whereas the new one returns \u0027X\u0027.\n\t  (vty_show_ip_route_detail,vty_show_ipv6_route_detail) Replace\n\t  route_type_str() with zebra_route_string().\n\t  (vty_show_ip_route,vty_show_ipv6_route) Replace route_type_char()\n\t  with zebra_route_char().\n\t* bgp_vty.c: (bgp_config_write_redistribute) Use new library function\n\t  zebra_route_string instead of a local hard-coded table.\n\t* ospf6_asbr.c: Remove local hard-coded tables zroute_name and\n\t  zroute_abname. Change the ZROUTE_NAME macro to use new library\n\t  function zebra_route_string().  Remove the ZROUTE_ABNAME macro.\n\t  (ospf6_asbr_external_route_show): Replace ZROUTE_ABNAME() with\n\t  a call to zebra_route_char(), and be sure to fix the format string,\n\t  since we now have a char instead of a char *.\n\t* ospf6_zebra.c: Remove local hard-coded tables zebra_route_name and\n\t  zebra_route_abname.  Note that the zebra_route_name[] table\n\t  contained mixed-case strings, whereas the zebra_route_string()\n\t  function returns lower-case strings.\n\t  (ospf6_zebra_read_ipv6): Change debug message to use new library\n\t  function zebra_route_string() instead of zebra_route_name[].\n\t  (show_zebra): Use new library function zebra_route_string() instead\n\t  of zebra_route_name[].\n\t* ospf_dump.c: Remove local hard-coded table ospf_redistributed_proto.\n\t  (ospf_redist_string) New function implemented using new library\n\t  function zebra_route_string().  Note that there are a few differences\n\t  in the output that will result: the new function returns strings\n\t  that are lower-case, whereas the old table was mixed case.  Also,\n\t  the old table mapped ZEBRA_ROUTE_OSPF6 to \"OSPFv3\", whereas the\n\t  new function returns \"ospf6\".\n\t* ospfd.h: Remove extern struct message ospf_redistributed_proto[],\n\t  and add extern const char *ospf_redist_string(u_int route_type)\n\t  instead.\n\t* ospf_asbr.c: (ospf_external_info_add) In two messages, use\n\t  ospf_redist_string instead of LOOKUP(ospf_redistributed_proto).\n\t* ospf_vty.c: Remove local hard-coded table distribute_str.\n\t  (config_write_ospf_redistribute,config_write_ospf_distribute): Use\n\t  new library function zebra_route_string() instead of distribute_str[].\n\t* ospf_zebra.c: (ospf_redistribute_set,ospf_redistribute_unset,\n\t  ospf_redistribute_default_set,ospf_redistribute_check)\n\t  In debug messages, use ospf_redist_string() instead of\n\t  LOOKUP(ospf_redistributed_proto).\n\t* rip_zebra.c: (config_write_rip_redistribute): Remove local hard-coded\n\t  table str[]. Replace str[] with calls to new library function\n\t  zebra_route_string().\n\t* ripd.c: Remove local hard-coded table route_info[].\n\t  (show_ip_rip) Replace uses of str[] with calls to new library\n\t  functions zebra_route_char and zebra_route_string.\n\t* ripng_zebra.c: (ripng_redistribute_write) Remove local hard-coded\n\t  table str[].  Replace str[i] with new library function\n\t  zebra_route_string(i).\n\t* ripngd.c: Remove local hard-coded table route_info[].\n\t  (show_ipv6_ripng) Use new library function zebra_route_char() instead\n\t  of table route_info[].\n"
    },
    {
      "commit": "6638c1ab3d4c0043a49a3a67768cccf4a23648dc",
      "tree": "8fd2f7cdf8f787b495109c36ecf87d411ddee860",
      "parents": [
        "2d74db55c463231e3542207bc3d940e2563e6b5b"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:08:54 2005 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:08:54 2005 +0000"
      },
      "message": "2005-09-30 Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n\n\t* ospf_dump.c, ospf_ia.c, ospf_spf.c, ospf_ase.c:\n\t  remove unused DEBUG\n"
    },
    {
      "commit": "5e4914c31ead7b99eeed73067451367336b21422",
      "tree": "f2c49d5c8182d4ee1b8ad8ca5005fe1223da18c8",
      "parents": [
        "ceacedba227e77156f92f7676b274c48a2817e8f"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 16:34:30 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 16:34:30 2005 +0000"
      },
      "message": "2005-09-29 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n    * lib/smux.[ch]: allow to retreive global OID (identified by \u003c0\n      namelen).\n    * ospf_ism.c: generate SNMP traps on Interface state change\n    * ospf_nsm.c: generate SNMP traps on Neighbour state change\n    * ospf_snmp.[ch]: support for SNMP traps for interface and neighbours.\n"
    }
  ],
  "next": "ceacedba227e77156f92f7676b274c48a2817e8f"
}
