)]}'
{
  "log": [
    {
      "commit": "965f54f5ef0bd601cf129bd4b964863251313ec9",
      "tree": "106d6dbc1cf30d5a28066cbb268bf65cdcdc53bf",
      "parents": [
        "fd21325b2eb252644bc70918ace4f9c6c00c45ef"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Wed Jun 03 16:44:21 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:26 2009 +0100"
      },
      "message": "[ospfd] Fix OSPF route refcount leak\n\nThis may fix vyatta BUG 3096. The reference count for OSPF route table was\nnever completely freed on deleting all neighbors.\n"
    },
    {
      "commit": "7fc626de5f618133ad2a478d13defa3a110b89ea",
      "tree": "432ff0e4672eabc2ec6b0dcffc22dcc0aee532c8",
      "parents": [
        "66e5cd87194ae6fdd51061a91b4698bc0a652f6b"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Dec 01 11:10:34 2008 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:10:29 2009 +0100"
      },
      "message": "[cleanup] Make command nodes static\n\nThe cmd_nodes used to configure vty, can mostly be static so\n(basic data hiding 101).\n"
    },
    {
      "commit": "66e5cd87194ae6fdd51061a91b4698bc0a652f6b",
      "tree": "659d31f9a7dfb8d9ad9a51f37ff0853054a45399",
      "parents": [
        "cedd7f2fa6823bca9ddcfb062f97ed83b11a80dd"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Feb 09 10:14:16 2009 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:09:03 2009 +0100"
      },
      "message": "[cleanup] functions taking no args should be declared with void args\n\nUse Ansi-C prototypes rather than old K\u0026R method of declaring\nfunction without arguments\n"
    },
    {
      "commit": "393deb9bd663361e6b110d579a8b1d4c22667068",
      "tree": "e93ebf2f57bf92ff7a9cd045764b3cdbb99a07e5",
      "parents": [
        "3453a7122c1d585ad789ed0f63deb90cc5e89fae"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Aug 18 14:13:29 2008 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:07:49 2009 +0100"
      },
      "message": "[cleanup] Convert XMALLOC/memset to XCALLOC\n\nSimple conversion of XMALLOC/memset to XCALLOC\n"
    },
    {
      "commit": "0be8dfb2a95f41f100982085595b7c7505127018",
      "tree": "add7218b0c518ac0cd276c74fe700b5ed1f26762",
      "parents": [
        "42176e6b01c9ca2b2725952684b2d7792468e861"
      ],
      "author": {
        "name": "Chris Caputo",
        "email": "ccaputo@alt.net",
        "time": "Tue Jun 02 18:40:07 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jun 02 18:45:10 2009 +0100"
      },
      "message": "[snmp] Compiler warning fixes for when \"--enable-snmp\" is configured.\n\nCompiled on 32-bit and 64-bit linux gcc 4.1.2 platforms.\nNo run-time testing on 32-bit and limited run-time testing on 64-bit.\n"
    },
    {
      "commit": "04d23314ddf950fefb3ff18306c7564bf4573a12",
      "tree": "4f95bfb51970b2baf84f67bb12a390b1b6097025",
      "parents": [
        "c5a89ff4e68c49b8841baf3c76290dd78ba383ec"
      ],
      "author": {
        "name": "Francesco Dolcini",
        "email": "fdolcini@sysnetsistemi.it",
        "time": "Tue Jun 02 18:20:09 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jun 02 18:20:09 2009 +0100"
      },
      "message": "[ospfd] fix vty ospfd no ospf abr-type standard\n\n\"no ospf abr-type standard\" was broken\n"
    },
    {
      "commit": "9eff36b3784acbf72c962770e20ddd3f58f50332",
      "tree": "05ad51204eb352298d8308ba72c0558c5a8450ea",
      "parents": [
        "b8192765a320f389e09bf7261e8902958ad21584"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Fri Apr 10 18:51:24 2009 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Fri Apr 10 18:51:24 2009 +0400"
      },
      "message": "Justified OSPF cost function names and added support for:\n ospf cost \u003c1-65535\u003e A.B.C.D\n no ospf cost \u003c1-65535\u003e\n"
    },
    {
      "commit": "6e687d74f74f36bc9d503e29377e7d42f3427221",
      "tree": "099899b58728fa5fbcfb8282a906d782076bf1ad",
      "parents": [
        "491eddc20ec072b05607d5a90513e3fffc0d85c2"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Sep 24 17:15:48 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Sep 24 17:15:48 2008 +0100"
      },
      "message": "[ospfd] Fix SEGV during startup introduced in recent commit\n\n* ospfd/ospfd.c: (opsf_if_update) Check if ospf_lookup() returns NULL.\n  Fixes bug introduced with recent ospf_network_run changes in\n  a49eb30a, where SEGV will happen if not the \"router ospf\" command has\n  been executed before the first interfaces are reported by zebra.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "491eddc20ec072b05607d5a90513e3fffc0d85c2",
      "tree": "f97e0f8bc9a1416b74485214eb75058c06c961c4",
      "parents": [
        "0e9de56d5e5ee44768102f7955e046f4046ef0b7"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Sep 24 17:03:59 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Sep 24 17:03:59 2008 +0100"
      },
      "message": "[ospfd] Move passive interface check\n\n* ospf_packet.c: Apply passive check and drop for all packages\n  and not just Hellos.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "b3bc68e5a4eecd85138463ae5742c2ccaa1db4bb",
      "tree": "57f3167f01485aee55ca6fb47dd9b87e0b01bd41",
      "parents": [
        "742c64ff34a79ad22982c433edd8d7cf32fd9cdf"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 04 13:52:07 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 04 13:52:07 2008 +0100"
      },
      "message": "[ospfd] Minor enhancements to recent self-host-routes suppression patch\n\n\t* ospf_spf.c: (ospf_spf_process_stubs) Track whether\n\t  parent router vertex is the root, so that the host-route\n\t  suppression logic need only be activated for such vertices.\n\t  Move the actual logic to ospf_intra_add_stub.\n\t* ospf_route.c: (ospf_intra_add_stub) Main test of link moved\n\t  here, notionally more appropriate.\n"
    },
    {
      "commit": "742c64ff34a79ad22982c433edd8d7cf32fd9cdf",
      "tree": "cd8e57bebdc1a930223ed71966c56c787b004820",
      "parents": [
        "06fb2828f183a7099ecbfd12235e1203f8f0459a",
        "910e2704bee6bf78aee858db65f5393be618e683"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Sep 03 09:00:44 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Sep 03 09:00:44 2008 +0100"
      },
      "message": "Merge commit \u0027remotes/jocke/delete_ghost_route\u0027\n"
    },
    {
      "commit": "06fb2828f183a7099ecbfd12235e1203f8f0459a",
      "tree": "b896fa5a5245220a4941c311158e0a93dca2d088",
      "parents": [
        "a49eb30a178547189147c8a35bf9e35f429abb66",
        "53d0deceeb855493aa03c59477f8af7f6bb75140"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Sep 02 21:50:50 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Sep 02 21:50:50 2008 +0100"
      },
      "message": "Merge commit \u002753d0deceeb855493aa03c59477f8af7f6bb75140\u0027\n"
    },
    {
      "commit": "a49eb30a178547189147c8a35bf9e35f429abb66",
      "tree": "5d660dead08f4a98498240fefb86202000210932",
      "parents": [
        "5d7bdd0ed9595f515bdfaa8af76fcfd41be7a6a6"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Tue Sep 02 19:06:31 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Sep 02 21:38:00 2008 +0100"
      },
      "message": "[ospfd] Restructure opsf_if_update() and ospf_network_run()\n\n    Add an struct interface paramenter and adjust the affected\n    code accordingly.\n\n    The old code was a mess looping over all interfaces several times\n    when one interface was added/changed.\n\n    * ospfd/ospfd.h: Add struct interface parameter to ospf_if_update()\n    * ospfd/ospf_zebra.c: Add ifp arg to ospf_if_update() calls.\n      (ospf_interface_address_delete) delete ospf_if_update() call,\n      redundant as function calls ospf_if_free() itself.\n    * ospfd/ospfd.c: (ospf_network_unset) handle deconfiguration here,\n      rather than ospf_if_update.\n      (ospf_network_run_interface) ospf_network_run, for\n      any given interface.\n      (ospf_network_run) move guts to previous, and use it.\n      (ospf_if_update) Adjust to take struct interface as argument, as\n      all callers have a specific ifp in mind.\n      Iterate over ifp\u0027s connected list and call ospf_network_run_interface\n      instead of ospf_network_run, turning this path into O(nm) rather\n      than O(n^2).\n      Adjust all code dealing with opsf_if_update and ospf_network_run to\n      pass the new struct interface * arg.\n\n     (some minor modifications and bug-additions by Paul Jakma).\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "5d7bdd0ed9595f515bdfaa8af76fcfd41be7a6a6",
      "tree": "c54c1c217a1742549ea1f1067419574aa1366d35",
      "parents": [
        "d6bb5aa52793979616f0bfc5f38a0eb2e5f1c7e4",
        "35f891404a6d2f0d034ca0fb724904db72baf552",
        "fb62a3cef5960885119f9e87c833520ddf2a9b49"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Sep 01 20:19:14 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Sep 01 20:19:14 2008 +0100"
      },
      "message": "Merge commit \u0027remotes/jocke/ospf_neighbour\u0027; commit \u0027remotes/jocke/snmp_crosscompile\u0027\n"
    },
    {
      "commit": "53d0deceeb855493aa03c59477f8af7f6bb75140",
      "tree": "d90d9bffb35916108d9ce155c5c991edfea18395",
      "parents": [
        "b38309a4ee831a440ef78f8a27db584f2f8e8276"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Fri May 30 16:04:39 2008 +0200"
      },
      "committer": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Aug 25 09:52:06 2008 +0200"
      },
      "message": "Set destination for PtP links to OSPF_ALLSPFROUTERS.\n\nUpdate ospf_db_desc_send(), ospf_ls_upd_queue_send() and ospf_ls_req_send()\nto always use OSPF_ALLSPFROUTERS for PtP links.\n\nSee RFC 2328, chap 8.1 for details:\n\n    \"The IP destination address for the packet is selected as\n     follows.  On physical point-to-point networks, the IP\n     destination is always set to the address AllSPFRouters.\"\n\nWithout this, it won\u0027t be possible to establish adjacencies on\nmultiple unnumbered links to the same router.\nChangeLog:\n2008-07-25 Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n\n\t* ospfd/ospf_packet.c: Set destination for PtP links to\n\t  OSPF_ALLSPFROUTERS.\n"
    },
    {
      "commit": "910e2704bee6bf78aee858db65f5393be618e683",
      "tree": "881c792fa2424d34c485e23b368a57c9c6a6daaa",
      "parents": [
        "b38309a4ee831a440ef78f8a27db584f2f8e8276"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Aug 20 14:24:39 2008 +0200"
      },
      "committer": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Aug 25 09:50:17 2008 +0200"
      },
      "message": "Ignore host routes to self.\n\nPtP links with /32 masks adds host routes to the remote host,\nsee RFC 2328, 12.4.1.1, Option 1.\nMake sure that such routes are ignored\n"
    },
    {
      "commit": "fb62a3cef5960885119f9e87c833520ddf2a9b49",
      "tree": "cf6c5cde38c91ad555021f44793b92fd34de8198",
      "parents": [
        "b38309a4ee831a440ef78f8a27db584f2f8e8276"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Tue May 13 20:03:32 2008 +0200"
      },
      "committer": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Aug 25 09:48:30 2008 +0200"
      },
      "message": "Make --enable-snmp cross compile and make libcrypto optional with --without-crypto\n\nAutoconfig work by me, the rest was done by\n\"Kirill K. Smirnov\" \u003clich@math.spbu.ru\u003e\n"
    },
    {
      "commit": "35f891404a6d2f0d034ca0fb724904db72baf552",
      "tree": "c88b3a0ed05fa5664e0a731792619b6134230231",
      "parents": [
        "b38309a4ee831a440ef78f8a27db584f2f8e8276"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Tue Jul 01 16:54:07 2008 +0200"
      },
      "committer": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Aug 25 09:44:18 2008 +0200"
      },
      "message": "Fix SEGV in ip ospf neighbor all\n\nDont use vty-\u003eindex in show_ip_ospf_neighbor_all_cmd(),\nIt is invalid, use ospf_lookup() instead.\n"
    },
    {
      "commit": "d68cbf9261869e532dfdd14dbb4122b3f3feb0d4",
      "tree": "5cc873e6a38a3db9ad5fb4dfe579624ff7693c13",
      "parents": [
        "3998bfd76620a676fbd77f19c5c6ea80a4cc88d2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sat Oct 21 18:35:27 2006 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 20:00:46 2008 +0100"
      },
      "message": "[administrivia] Git should ignore backup files and .loT files\n"
    },
    {
      "commit": "3998bfd76620a676fbd77f19c5c6ea80a4cc88d2",
      "tree": "66bf93340e55bb06b25544ef04afec3749269391",
      "parents": [
        "e5248434c0d287668be956a2bd52399d67b16c39"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Aug 19 14:13:43 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:57:22 2008 +0100"
      },
      "message": "[trivia] Remove ChangeLog files, as this data is now maintained in SCM\n"
    },
    {
      "commit": "30a2231a4881f53deca61ef7a62b225a43dab4c5",
      "tree": "f26dff922a4f85d302fa67bbd9a120108db41c44",
      "parents": [
        "f5612dd382d9c0f4089b08ec164c25a8082d9f89"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 15 14:05:22 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:59 2008 +0100"
      },
      "message": "[warnings] Fix various SOS warnings\n\n2008-08-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* */*: Fix various problems flagged by Sun Studio compiler.\n\t  - \u0027\u003cqualifier\u003e \u003cstorage\u003e\u0027 obsolescent in declarations\n\t  - empty statements (\u0027;\u0027 after ALIAS definitions)\n\t  - implicit declarations (e.g printstack in lib/log.c)\n\t  - \"\\%\" in printf string instead of \"%%\"\n\t  - loops that return on the first iteration (legitimately, but\n \t    compiler can\u0027t really know), e.g. bgp_routemap.c\n \t  - internal declarations which mask prototypes.\n"
    },
    {
      "commit": "1423c809cc4ddc2e013ba6264c49a11e5719c6f2",
      "tree": "db0389e7de020bbcb9fd78d45417b0842a6adb0b",
      "parents": [
        "89d9fa301e146193093ff876f96b3612dc390bbb"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Thu Aug 14 17:59:25 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:58 2008 +0100"
      },
      "message": "[lib] mes_lookup string lookup table argument should be marked const\n\n2008-08-14 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* lib/log.{c,h}: struct message argument should point to const\n\t* */*.c: adjust to suit,\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "9fd4958a4eef88c536e4a5aeefce302e10ee8ee6",
      "tree": "b014b5fe3a94a6eab059632fea56929b335cbe28",
      "parents": [
        "69954565621127a62c11ec315b175b930230c217"
      ],
      "author": {
        "name": "Daniel Ng",
        "email": "daniel_ng11@lycos.com",
        "time": "Wed Aug 13 20:37:52 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:57 2008 +0100"
      },
      "message": "[ospfd] Default route needs to be refreshed after neighbour state change\n\n2008-08-13 Daniel Ng \u003cdaniel_ng11@lycos.com\u003e\n\n\t* ospf_nsm.c: (nsm_change_state) Refresh default route on\n\t  state change - a hack, but it works.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "6a270cd93d02a88709e7292684db47552b630abf",
      "tree": "8783ae29bef1f8e48e6278dcbe4360247316b029",
      "parents": [
        "3e40282fd93553da276b48830db3df819b73c884"
      ],
      "author": {
        "name": "Jingjing Duan",
        "email": "Jingjing.Duan@sun.com",
        "time": "Wed Aug 13 19:09:10 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:57 2008 +0100"
      },
      "message": "[ospfd/isisd] Switch to lib/ Fletcher checksum, fixing bug in isisd\n\n2008-08-13 Jingjing Duan \u003cJingjing.Duan@sun.com\u003e\n\n\t* ospfd/: Remove the old checksum implementation and\n\t  use the consolidated version.\n\t* isisd/: ditto, thus fixing isisd checksuming on big-endian.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "3c5a0a4f8fe3811affff6d5e123379eedb083571",
      "tree": "79e285e0bd04c6ef0dfcde9cf0ce8fda8abecbe1",
      "parents": [
        "750e814693050bc97391eec618aad9db798ee5e8"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Feb 19 17:30:10 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:49:33 2008 +0100"
      },
      "message": "[administrivia] Add .gitignore files, based on .cvsignores.\n"
    },
    {
      "commit": "0d6b2ee249e9efba30da3236c413bf03c7b27ed9",
      "tree": "4d9320f2c34f0c127b58b92f59e2c2afd2d5818f",
      "parents": [
        "768a27ea7ba25257c79689af83ab37945dc1cc3c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 29 18:29:16 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 29 18:29:16 2008 +0000"
      },
      "message": "[daemons] Sanity check port number arguments before use\n\n2008-05-29 Martin Nagy \u003cmnagy@redhat.com\u003e\n\n\t* */*main.c: Sanity check port numbers before using.\n"
    },
    {
      "commit": "dea04441fb51f74dc25f6ab4bd756b4159d961b6",
      "tree": "95a4578d95f20dd0dc168d07a90ea9cf71d6047f",
      "parents": [
        "d38e8d63fdfc0aefb78d0a51ffdf06d8b47993fd"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Feb 26 09:16:09 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Feb 26 09:16:09 2008 +0000"
      },
      "message": "[c++] remove/rename some names in headers that clash with C++ reserved words\n\n2008-01-30 Peter Szilagyi \u003csp615@hszk.bme.hu\u003e\n\n\t* lib/stream.h: Remove named \u0027new\u0027 parameter in prototype\n\t  for c++ header compatibility.\n\t* ospfd/ospf_opaque.h: ditto\n\t* ospfd/ospfd.h: Renamed struct export to _export for c++\n\t  header compatibility.\n\t* ospf6d/ospf6_area.h: ditto\n"
    },
    {
      "commit": "fb31c0fea38c863ddcda56f46c36f065340b9e32",
      "tree": "5ccad0644a6b04eb127c36dc651155dbcf9eb2ac",
      "parents": [
        "f102e75f613af740241dfa7253a2362c7935b9a8"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Sep 18 09:03:13 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Sep 18 09:03:13 2007 +0000"
      },
      "message": "+ fix missing arg to zlog_warn()\n"
    },
    {
      "commit": "f102e75f613af740241dfa7253a2362c7935b9a8",
      "tree": "800da79542d21e3734c4370b33cbb1f474714b55",
      "parents": [
        "96934e6ac6ec9ff6e67131cc8324741b771d5e0d"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Sep 18 09:01:13 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Sep 18 09:01:13 2007 +0000"
      },
      "message": "+ fix minor regression in OSPF sending buffer adjustment logic\n"
    },
    {
      "commit": "b7fe4141123c6fc26fffec68d0db62ecf474c074",
      "tree": "78f2cde951e92198b00dea6ed048d41a499f71fb",
      "parents": [
        "1ba27564f3852083839bfa1f91889cb46c780f2f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 21 16:32:56 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 21 16:32:56 2007 +0000"
      },
      "message": "Bug #362 is fixed now.\n"
    },
    {
      "commit": "e95537f0495401c0dd86669d096387e5cdddf8e0",
      "tree": "48d749b6728bc5b3a60bc0b4f617b7f5ac0be90b",
      "parents": [
        "93bdadae74a9b391152f5511dbced6f08fad6d94"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Aug 07 16:22:05 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Aug 07 16:22:05 2007 +0000"
      },
      "message": "[ospfd] Finish explanatory comment started in previous commit..\n\n2007-08-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_spf.c: (ospf_spf_next) Finish off the explanatory\n\t  comment made in previous commit\n"
    },
    {
      "commit": "7591d8b862439dfae8b4b16d148ce567b6ff8cb7",
      "tree": "b9d24293663be04e4c80bcd78f8d1f5e86c2c3f1",
      "parents": [
        "fc787e873dff0091069742b34fb3631ac529c92a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Aug 06 18:52:45 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Aug 06 18:52:45 2007 +0000"
      },
      "message": "[ospfd] Fix bad SPF calculation on some topologies - incorrect sorting\n\n2007-08-07 Atis Elsts \u003catis@mikrotik.com\u003e\n\n\t* ospf_spf.c: (ospf_spf_next) Sort heap in correct direction\n\t  after vertex cost is changed, thus fixing incorrect SPF\n\t  calculation on certain topologies.\n\t* lib/pqueue.{c,h}: Export trickle_up\n"
    },
    {
      "commit": "fc787e873dff0091069742b34fb3631ac529c92a",
      "tree": "0e3476ff66b483396f67c2e104ca27ade35be2e3",
      "parents": [
        "5b02255a671a5eee7c1736f6f9d0bab19a65cb2a"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Mon Aug 06 15:50:20 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Mon Aug 06 15:50:20 2007 +0000"
      },
      "message": "Fix last commit - add back in closing paren which was apparently\nuninentionally deleted along with a test.\n"
    },
    {
      "commit": "5b02255a671a5eee7c1736f6f9d0bab19a65cb2a",
      "tree": "dc38fa3d38a073249aef79962f0b69e1055a7e32",
      "parents": [
        "41367172d812354c05b11818346f0d49c2245aef"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Aug 06 15:27:12 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Aug 06 15:27:12 2007 +0000"
      },
      "message": "[ospfd] Bug #331, NSSA ASBR regression - failure to set E-bit in NSSA areas\n\n2007-08-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.c: (router_lsa_flags) Bug #331, NSSA regression caused\n\t  caused ASBRs to not advertise E-bit into NSSA areas.\n"
    },
    {
      "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"
    }
  ],
  "next": "075c2011bbec618934637ead3fd6dec65cd30a45"
}
