)]}'
{
  "log": [
    {
      "commit": "a1fdf9479637642ae3de0ee6ef5c0958d6e687d8",
      "tree": "28dfc85b9bfcbbf5064703484fc60a01c904e5e9",
      "parents": [
        "f5e004f74fecaf84b50f8c1823432077ad7e15b7"
      ],
      "author": {
        "name": "Vincent Jardin",
        "email": "vincent.jardin@6wind.com",
        "time": "Wed Apr 11 15:12:05 2007 +0000"
      },
      "committer": {
        "name": "Vincent Jardin",
        "email": "vincent.jardin@6wind.com",
        "time": "Wed Apr 11 15:12:05 2007 +0000"
      },
      "message": "Fix the display of route timeout in \"show ip rip\". (Use thread_timer_remain_second)\n"
    },
    {
      "commit": "f5e004f74fecaf84b50f8c1823432077ad7e15b7",
      "tree": "bffb42983f6b993c861ac67192646ed82db9fc1f",
      "parents": [
        "6e4ab12f1504caa95edc7702a82f118d0de15a0a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:43:43 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:43:43 2007 +0000"
      },
      "message": "[zebra] MTU change should propogate to zserv client on BSD/Solaris\n\n2007-04-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ioctl{_solaris,}.c: (if_get_mtu) Ping clients via\n          zebra_interface_up_update if MTU is changed.\n"
    },
    {
      "commit": "6e4ab12f1504caa95edc7702a82f118d0de15a0a",
      "tree": "50b6784229f92d404e5d6509848c135395743f2f",
      "parents": [
        "16d2e2410d6e8cf53fac05b956f3e7ee53bc7234"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:36:48 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:36:48 2007 +0000"
      },
      "message": "[bgpd] Bug #354: Take care to keep reads of MP_(UN)REACH_NLRI in bounds\n\n2007-04-08 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_attr.c: (general) Bug #354: parsing of MP_REACH_NLRI and\n\t  MP_UNREACH_NLRI does not take sufficient care to ensure reads\n\t  from stream buffer stay in-bounds. Hence bgpd may attempt to read\n\t  beyond end of stream, if given a crafted packet. As it uses the\n\t  stream access methods to do so, this will typically result in\n\t  assert() being hit in stream.c. Where code is compiled without\n\t  assert() enabled, result is unknown.\n\t  (struct message attr_str) should be static.\n\t  (bgp_mp_reach_parse) Carefully check length remaining in stream\n\t  against amount desired to read from stream, prior to each read,\n\t  particularly where lengths are conditional on data obtained from\n\t  stream - using STREAM_READABLE.\n\t  Remove code to parse SNPA-number, it\u0027s a defunct field and changed\n\t  to a fixed size in latest BGP MP update RFC - log warning if\n\t  SNPA-number is not 0.\n\t  (bgp_mp_unreach_parse) Check withdraw_length carefully against\n\t  STREAM_READABLE.\n\t  (bgp_attr_parse) If attribute-parser function returns error, log\n\t  warning.\n\t  Log attribute type on mismatch.\n"
    },
    {
      "commit": "16d2e2410d6e8cf53fac05b956f3e7ee53bc7234",
      "tree": "4679c5ed9d1ec64d41da13a44c1fcad76e4da9be",
      "parents": [
        "d9a18f1113b915dd0d2a4883a9149f06dd61352e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:32:10 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:32:10 2007 +0000"
      },
      "message": "[bgpd] V. quick route flap gets mistaken for duplicate, route is then ignored\n\n2007-04-08 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_route.c: (general) Same bug as fixed on 2006-11-28 by ajs for\n\t  bgp static routes, but for main BGP RIB: Quick \u0027flap\u0027 of routes\n\t  can cause bgpd to mistake a new route for a duplicate route,\n\t  due to presence of removed, but not yet processed BGP RIB entry.\n\t  (bgp_update_rsclient) Ignore REMOVED bgp_info for duplicate,\n\t  restore route instead.\n\t  (bgp_update_main) Ditto.\n"
    },
    {
      "commit": "d9a18f1113b915dd0d2a4883a9149f06dd61352e",
      "tree": "0d81d8b3d83b9023ccf396bb1e80085c1dbcdf55",
      "parents": [
        "d9d00a689ea636af58f89cb62291245bb2a1bc7d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:30:20 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:30:20 2007 +0000"
      },
      "message": "[zebra] Retain configured IPv4 address upon removal by kernel\n\n2007-04-08 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* interface.c: (if_delete_update) Address removal triggered\n\t  by kernel shouldn\u0027t remove configured IPv4 address from connected\n\t  list.\n"
    },
    {
      "commit": "d9d00a689ea636af58f89cb62291245bb2a1bc7d",
      "tree": "dd380561afde4c956d0c3de1051fd76057269918",
      "parents": [
        "6dc686a29ecdfa8f8011eee17e4e6276ab175a0d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:28:04 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:28:04 2007 +0000"
      },
      "message": "[testzebra] stubs should call kernel_address_add on IP address install\n\n2007-04-08 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* {ioctl,kernel}_null.c: Install of IP address should\n\t  reflect back to zebra via kernel_address_add..., makes\n\t  testzebra more useful.\n"
    },
    {
      "commit": "6dc686a29ecdfa8f8011eee17e4e6276ab175a0d",
      "tree": "bd4a1f7b1c32318584bec6b4f420089aadc81b07",
      "parents": [
        "37a217a59bfd32381034a0ce0adbac1c34cbec37"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:24:45 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:24:45 2007 +0000"
      },
      "message": "[zebra] Bug #351: Don\u0027t redistribute routes to ipv4 link-local prefixes\n\n2007-04-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* lib/prefix.h: Add define to match IPv4 Link-Local addresses\n\t* zebra/redistribute.c: (zebra_check_addr) Don\u0027t redistribute routes\n\t  to IPv4 link-local prefixes, fixes bug #351.\n\t* zebra/redistribute.h: Export zebra_check_addr.\n\t* zebra/router-id.c: (router_id_bad_address) re-use zebra_check_addr\n\t  rather than implementing similar logic.\n"
    },
    {
      "commit": "37a217a59bfd32381034a0ce0adbac1c34cbec37",
      "tree": "2f3d7a298c0b625163cd63bfa9bf32e1aa72012f",
      "parents": [
        "85ef784e8a41a6dd11da42e10368f80c8bdb99d8"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:20:29 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:20:29 2007 +0000"
      },
      "message": "[bgpd] bug #352: IPv6/Multicast address-family config not written out\n\n2007-04-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgpd.c: (general) Fix bug #352\n\t  (bgp_config_write_family_header) write ipv6/multicast\n\t  address family header.\n\t  (bgp_config_write) write out ipv6 multicast AF config.\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": "54afb658829d4bfe5de52685f77af8c8273e78c0",
      "tree": "ad3c8ea9193d85267afe3a84e2fa03a71309870d",
      "parents": [
        "a4c648281dfdc45687580ea2d20884b5d7dbdc8d"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Mar 21 21:03:44 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Mar 21 21:03:44 2007 +0000"
      },
      "message": "[doc] Makefile VPATH patch\n\n2007-03-21 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* Makefile.am: Patch rule for draft-zebra-00.txt to work\n\t  in VPATH build environments.\n"
    },
    {
      "commit": "a4c648281dfdc45687580ea2d20884b5d7dbdc8d",
      "tree": "beca0c3e413f1b9eee1266906a3035b256c8c147",
      "parents": [
        "afb88a669167358ea2be64aa0d10c8c42fa7509c"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Mar 21 18:57:38 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Mar 21 18:57:38 2007 +0000"
      },
      "message": "[ripd] Fix \"show ip rip status\" display of time until next update\n\n2007-03-21 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ripd.c: (show_ip_rip_status) Use new thread_timer_remain_second\n\t  function instead of rip_next_thread_timer to display the time until\n\t  next update properly.\n\t  (rip_next_thread_timer) Remove obsolete function.\n"
    },
    {
      "commit": "afb88a669167358ea2be64aa0d10c8c42fa7509c",
      "tree": "2439441fa56db6ecbae310473af7f1e1808916f2",
      "parents": [
        "ad81f8cc2e77275cdeef1267d1ff4173eb89e093"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Mar 20 20:48:27 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Mar 20 20:48:27 2007 +0000"
      },
      "message": "[lib] Make message lookup function more robust.\n\n2007-03-20 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.c: (mes_lookup) Make the function more robust: check for\n\t  cases where the index does not match the key value at that position.\n\t  If so, give a warning and fall back to a linear search.\n\t  And improve the error message in cases where even that fails.\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": "c136d24406b62510a8c7a3c89e7716d0819e8fc2",
      "tree": "65dc30951f154c2af9adc005a6041ca8994522ca",
      "parents": [
        "6502208c3217e52e693146e6b72e76fd76982a51"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 08 17:50:01 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 08 17:50:01 2007 +0000"
      },
      "message": "[ospf6d] Bug 322: ospf6d show ipv6 neighbour showing wrong times\n\n2007-03-08 David Siebörger d.sieborger@ru.ac.za\n\n\t* ospf6_neighbor.c: (ospf6_neighbor_show) Fix bug #322, ospf6d\n\t  wasn\u0027t updated to match thread times changing to relative\n\t  time.\n"
    },
    {
      "commit": "6502208c3217e52e693146e6b72e76fd76982a51",
      "tree": "36a14ca536e7ce4b2d89267ab223fe9ed570ec82",
      "parents": [
        "c32d28b765e936acb8695f73a119d73cacff2610"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Mar 06 13:43:05 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Mar 06 13:43:05 2007 +0000"
      },
      "message": "[zebra] Fix interface metric bug on BSD\n\n2007-03-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* kernel_socket.c: (ifam_read) Do not update interface metric on\n\t  receipt of NEW/DEL ADDR messages, bogus as: a) some systems\n\t  dont include iface metric for address events b) we didn\u0027t\n\t  update clients either. Initial diagnosis by Eugene Grosbein.\n"
    },
    {
      "commit": "c32d28b765e936acb8695f73a119d73cacff2610",
      "tree": "9fe15aab5dce014eb71fc97b1659a3a958ad927d",
      "parents": [
        "4056a544eb0b7ea513bca0d70808e671c3f2c25b"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Feb 27 15:24:36 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Feb 27 15:24:36 2007 +0000"
      },
      "message": "[ospf6d] Fix string comparison bug in ospf6_lsa_handler_name.\n\n2007-02-27  Pavol Rusnak \u003cprusnak@suse.cz\u003e\n\n\t* ospf6_lsa.c: (ospf6_lsa_handler_name) Fix bug: must use strcmp\n\t  to compare strings.\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": "ff1dd550b01fd6bb4aa137cfee282e6175f89c50",
      "tree": "05900140de1813f62a124ee98ce4c3329546d6e7",
      "parents": [
        "def09df7d1df2f4583c68b5b7f02375f5a2e9dc7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Feb 26 17:11:45 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Feb 26 17:11:45 2007 +0000"
      },
      "message": "[zebra] IRDP should ignore non-IPv4 addresses\n\n2007-02-26 Robert Olsson \u003cRobert.Olsson@data.slu.se\u003e\n\n\t* irdp_main.c: (irdp_send_thread) Skip non-AF_INET addresses,\n\t   i.e. do not try interpret IPv6 addresses as IPv4 addresses\n\t   to broadcast in IRDP announcements..\n"
    },
    {
      "commit": "def09df7d1df2f4583c68b5b7f02375f5a2e9dc7",
      "tree": "2ff6e32007ddc30ef2f98b59d7fedfd4fc1a9a85",
      "parents": [
        "f2c31acb6f97688af0f368211536829324145919"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Feb 22 17:55:20 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Feb 22 17:55:20 2007 +0000"
      },
      "message": "[solaris] Add licence boilerplate to files for clarity\n\n2007-02-22 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* quagga.{xml,init}.in: Add licence boilerplate to ensure\n\t  licence terms are clear.\n"
    },
    {
      "commit": "f2c31acb6f97688af0f368211536829324145919",
      "tree": "6f9887992eeb0890fdf673f9c0794e7d1384edbb",
      "parents": [
        "553bdfe376c49886cbdc2d306fea7b003bead31f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Feb 22 17:48:42 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Feb 22 17:48:42 2007 +0000"
      },
      "message": "[bgpd] Peer delete can race with reconfig leading to crash\n\n2007-02-22 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_fsm.c: (bgp_fsm_change_status) Handle state change into\n\t  clearing or greater here. Simpler.\n\t  (bgp_event) Clearing state change work moved to previous\n\t* bgp_route.c: (bgp_clear_route_node) Clearing adj-in here\n\t  is too late, as it leaves a race between a peer being deleted\n\t  and an identical peer being configured before clearing\n\t  completes, leading to a crash.\n\t  Simplest fix is to clean peers Adj-in up-front, rather than\n\t  queueing such work.\n\t  (bgp_clear_route_table) Clear peer\u0027s Adj-In and Adj-Out\n\t  up-front here, rather than queueing such work.\n\t  Extensive comment added on the various bits of indexed data\n\t  that exist and how they need to be dealt with.\n\t  (bgp_clear_route) Update comment.\n"
    },
    {
      "commit": "553bdfe376c49886cbdc2d306fea7b003bead31f",
      "tree": "b0bc7c6d381340e7436597c37ff52aa6c1b22cb9",
      "parents": [
        "9f0a19f525f3bbc7cb317b86468418b471ee1b34"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Tue Feb 06 20:10:35 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Tue Feb 06 20:10:35 2007 +0000"
      },
      "message": "use generic sed test so this works on autoconf 2.59\n"
    },
    {
      "commit": "9f0a19f525f3bbc7cb317b86468418b471ee1b34",
      "tree": "946f897f26fcbe3d08d1362052395c7f2c8bc2a1",
      "parents": [
        "1bbaa8cfbd764b16d1ba892266ff641a60f67707"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Tue Feb 06 19:56:31 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Tue Feb 06 19:56:31 2007 +0000"
      },
      "message": "de-support NetBSD 1.6, and note that FreeBSD 4 is on thin ice.\n\nUpdate notes on required tool versions Note that autoconf 2.59 is the\nstandard (even though it\u0027s old, 2.60 and 2.61 are pretty recent).  For\nothers, pick releases that are at least 1.5 years old.\n\nNote that GNU awk is required.\n\nReplace update-autotools reference with bootstrap.sh.\n\n(no changelog, doc change only, per GNU coding standards)\n"
    },
    {
      "commit": "1bbaa8cfbd764b16d1ba892266ff641a60f67707",
      "tree": "3e6b2caa0783bd598d05a0a9a51df0acc85ca20e",
      "parents": [
        "2d70743df14f6e58343e29706acc8a9bc9351c2a"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Tue Feb 06 19:36:47 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Tue Feb 06 19:36:47 2007 +0000"
      },
      "message": "Better comment explaining that GNU awk is really required.\n"
    },
    {
      "commit": "2d70743df14f6e58343e29706acc8a9bc9351c2a",
      "tree": "6b5b295aa94ddf22eefd1d682868d550c9520ea4",
      "parents": [
        "0750e810164093ccbf7171883075dd5bbef062e1"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Tue Feb 06 19:28:28 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Tue Feb 06 19:28:28 2007 +0000"
      },
      "message": "autoreconf -i\n"
    },
    {
      "commit": "0750e810164093ccbf7171883075dd5bbef062e1",
      "tree": "ee3239ea61cb79472f23b0dca9d72d19c7108e21",
      "parents": [
        "003ca18f0433c0e0460b68aeb362cf7ba6ed5a4c"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Sat Feb 03 22:30:02 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Sat Feb 03 22:30:02 2007 +0000"
      },
      "message": "add AC_PROC_SED\n"
    },
    {
      "commit": "003ca18f0433c0e0460b68aeb362cf7ba6ed5a4c",
      "tree": "5371da781872b19909a418adefca2eac4f9be64a",
      "parents": [
        "409d8e4f5650a26307067b61a4e9df80f8c03dc3"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Sat Feb 03 01:07:01 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Sat Feb 03 01:07:01 2007 +0000"
      },
      "message": "remove crufty m4 files from 2004.  With the files, autoheader (2.61)\nbombs on NetBSD.  (Without, all is ok.  We may need workarounds, but\nfirst we should identify minimum tool versions and figure out what\u0027s\nstill wrong.)\n\nok\u0027d by paul.\n"
    },
    {
      "commit": "409d8e4f5650a26307067b61a4e9df80f8c03dc3",
      "tree": "d1eedd2bddc7a989c3479eea51844c6a7392bd10",
      "parents": [
        "d1a8316149fb2d9f6e79c80d87b483bd744046e4"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Fri Feb 02 17:03:03 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Fri Feb 02 17:03:03 2007 +0000"
      },
      "message": "use bootstrap.sh\n"
    },
    {
      "commit": "d1a8316149fb2d9f6e79c80d87b483bd744046e4",
      "tree": "3f9e53433dbb4c594c16d7f6e435b4e28de8927c",
      "parents": [
        "75a9140be69c464f3b73175209f726bfeabb0c09"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Fri Feb 02 17:01:58 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Fri Feb 02 17:01:58 2007 +0000"
      },
      "message": "Provide \u0027standard interface\u0027, even if it just invokes autoreconf.\n"
    },
    {
      "commit": "75a9140be69c464f3b73175209f726bfeabb0c09",
      "tree": "2b5832ef4f4384cd249e62cca588a2b5b4c4e577",
      "parents": [
        "cf4a2bbeeaacbe97e88f737bcd904fbc9cf5e237"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Fri Feb 02 16:54:23 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Fri Feb 02 16:54:23 2007 +0000"
      },
      "message": "ospf6d.h: remove declaration of errno (should be via header)\n\n(from pkgsrc)\n"
    },
    {
      "commit": "cf4a2bbeeaacbe97e88f737bcd904fbc9cf5e237",
      "tree": "fb2e87c21c1335f89a24248530a09d89cf45caf7",
      "parents": [
        "bc20c1a4638db3b92a2e2f7f4b820e60f30a6146"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Fri Feb 02 16:52:38 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Fri Feb 02 16:52:38 2007 +0000"
      },
      "message": "* README.NetBSD:  use update-autotools instead of autoreconf\n* update-autotools: print out tool name before invoking to aid debugging\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": "fb6724a6b987cb6fab00cc9326674bd14a0d09fa",
      "tree": "55a8ad856112d2bb9904375a236542046f950b7a",
      "parents": [
        "e4529636b77124285cca96a62799d0ff6a7addeb"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Dec 13 15:44:15 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Dec 13 15:44:15 2006 +0000"
      },
      "message": "[zebra] For solaris IPv6 PtP interfaces, try to support prefixlen !\u003d 128\n\n2006-12-13 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if_ioctl_solaris.c: (if_get_addr) For IPv6, stop assuming\n\t  that all IFF_POINTOPOINT have prefixlen of IPV6_MAX_BITLEN.\n\t  Instead, always try the SIOCGLIFSUBNET ioctl; if that fails,\n\t  then we fall back to IPV6_MAX_BITLEN for PtP interfaces.\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": "43cd33a44e010f818633b7f144b5a0be352b41e7",
      "tree": "9647433a008e87af61ec70e6d5f35aeb8ba49d03",
      "parents": [
        "41b36e9013111a6da812ca000e3b978282bd27a9"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 21:27:08 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 21:27:08 2006 +0000"
      },
      "message": "[0.99] Bump version to 0.99.6\n\n2006-12-08 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: Bump to 0.99.6\n"
    },
    {
      "commit": "41b36e9013111a6da812ca000e3b978282bd27a9",
      "tree": "11805d66de677613be7fe5e31626cfbbbbec78a6",
      "parents": [
        "3c0755dc9772deccff2ba6e9dc0511a9af2b9d1b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 01:09:50 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 01:09:50 2006 +0000"
      },
      "message": "[isisd] Fix compiler warnings and allow v4-only compilation\n\n2006-12-08 Hannes Gredler \u003channes@gredler.at\u003e\n\n\t* isis_adjacency.c: (isis_new_adj) Allow NULL snpa argument.\n\t* isis_pdu.c: (various) Update calls to isis_new_adj() to pass\n\t  NULL and use default.\n\t* (general) Add forward declarations where required.\n\t  Fix up const char *\u0027s.\n\t  Allow V4-only compilation.\n"
    },
    {
      "commit": "3c0755dc9772deccff2ba6e9dc0511a9af2b9d1b",
      "tree": "320e64867af564f2f943742f2a895132606f2e16",
      "parents": [
        "95fdcd8a793d6c271996da221c4030d8ee277891"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 00:53:14 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 00:53:14 2006 +0000"
      },
      "message": "[zebra] Changes of nexthops of static routes didnt take effect\n\n2006-12-08 Piotr Chytla \u003cpch@packetconsulting.pl\u003e\n\n\t* zebra_rib.c: (static_install_ipv{4,6}) Case where existing\n\t  RIB is updated must explicitely rib_addqueue the route_node,\n\t  to ensure the update actually takes effect.\n"
    },
    {
      "commit": "95fdcd8a793d6c271996da221c4030d8ee277891",
      "tree": "ca4c4a63b9b283e6c2f51eafda80f7014b1719db",
      "parents": [
        "ed589c157781f92bcff0e0b1664c75b2dc6d6965"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 00:31:22 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 00:31:22 2006 +0000"
      },
      "message": "[bgpd] Bug #302, bgpd can get stuck in state Clearing\n\n2006-12-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_fsm.c: Bug #302 fix, diagnosis, suggestions and testing\n\t  by Juergen Kammer \u003cj.kammer@eurodata.de\u003e. Fix follows from\n\t  his suggested fix, just made in a slightly different way.\n\t  (bgp_event) Transitions into Clearing always must call\n\t  bgp_clear_route_all().\n\t  (bgp_stop) No need to clear routes here, BGP FSM should do\n\t  it.\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": "a39275d76d33e2b17b8f90441863ca030412a664",
      "tree": "31e257dd3863edf5ad432c466ccbc139e204c2dc",
      "parents": [
        "7f643ebf2bca2ef446cdf4f4a3e7b16958c18069"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Nov 30 16:36:57 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Nov 30 16:36:57 2006 +0000"
      },
      "message": "[bgpd] Implement \u0027debug bgp zebra\u0027 to log all messages to and from zebra.\n\n2006-11-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* bgp_debug.h: Declare new bgp_debug_zebra conf and term flags,\n\t  and define BGP_DEBUG_ZEBRA.\n\t* bgp_debug.c: Declare conf_bgp_debug_zebra and term_bgp_debug_zebra.\n\t  (debug_bgp_zebra, no_debug_bgp_zebra, undebug_bgp_zebra) New\n\t  functions to enable/disable bgp zebra debugging.\n\t  (no_debug_bgp_all) Turn off zebra debugging.\n\t  (show_debugging_bgp) Show whether zebra debugging is on.\n\t  (bgp_config_write_debug) Add \u0027debug bgp zebra\u0027 if configured.\n\t  (bgp_debug_init) Add new zebra debugging commands.\n\t* bgp_zebra.c: (bgp_router_id_update, bgp_interface_add,\n\t  bgp_interface_delete, bgp_interface_up, bgp_interface_down,\n\t  bgp_interface_address_add, bgp_interface_address_delete,\n\t  zebra_read_ipv4, zebra_read_ipv6, bgp_zebra_announce,\n\t  bgp_zebra_withdraw, bgp_redistribute_set, bgp_redistribute_unset)\n\t  If zebra debugging is enabled, log an appropriate debug message.\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": "8d45210e7c9e221b519d975825cb83aea5ebe47e",
      "tree": "62629c7693b24c3b4a8e37eed7abe51e5695417d",
      "parents": [
        "435408866187f3bc3c49b26f11bc83c374e55dd5"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Nov 28 19:50:46 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Nov 28 19:50:46 2006 +0000"
      },
      "message": "[bgpd] Fix bug where a deleted route that was quickly re-added was being lost\n\n2006-11-28 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* bgp_route.c: (bgp_info_restore) New function that undoes\n\t  the effects of a previous call to bgp_info_delete.  This is\n\t  used when a route is deleted and quickly re-added before the\n\t  deletion has been processed.\n\t  (bgp_static_update_rsclient, bgp_static_update_main,\n\t  bgp_redistribute_add) Check whether a pre-existing route\n\t  has the BGP_INFO_REMOVED set, and, if so, we need to call\n\t  bgp_info_restore to resurrect it.\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": "56395af70588c8fda89bf5ef327df64b5efbeb67",
      "tree": "d3289e371b8296bc8e09d5e3464e331a040c31c6",
      "parents": [
        "8fb8a504e2c7c216b34c58e5658d84cb7dbe79b0"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Oct 27 16:58:20 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Oct 27 16:58:20 2006 +0000"
      },
      "message": "[bgpd] trivial: non C99 u_int.._t should be uint.._t\n\n2006-10-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_route.c: (bgp_table_stats) oops, u_intXX_t should be\n\t  uintXX_t\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": "6f58544db526b4dfb09d45f8507926b0ae5fe12b",
      "tree": "f73d22b4ff92eaef337a6d9af8a1923d730e9a21",
      "parents": [
        "ed3ebfa36b45fe487015e1918e848f0ff4500bff"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 22 19:13:07 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 22 19:13:07 2006 +0000"
      },
      "message": "[bgpd] struct peer must have bgp field valid (redistribute crash)\n\n2006-10-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgpd.c: (peer_new) bgp element of peer absolutely must be\n\t  filled in, make peer_new() require it as argument and update\n\t  all callers. Fixes a crash reported by Jan \u0027yanek\u0027 Bortl and\n\t  Andrew Schorr where bgpd would crash in bgp_pcount_adjust\n\t  trying to dereference the bgp member of bgp-\u003epeer_self,\n\t  triggered through redistribution.\n\t* bgp_route.c: (bgp_pcount_adjust) assert sanity of arguments.\n"
    },
    {
      "commit": "ed3ebfa36b45fe487015e1918e848f0ff4500bff",
      "tree": "06e26892b62cc4f109e0d63718f3d7fa1c3bf54a",
      "parents": [
        "53d9f67a18dc59fd688fce999cb35653010a54fb"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:50:16 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:50:16 2006 +0000"
      },
      "message": "[bgpd] Coverity CID #64: Needless NULL check, CID #64: Deref of potentially NULL pointer.\n\n2006-10-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_packet.c: (bgp_update_packet) adv-\u003ern can not be NULL,\n\t  check is bogus - changed to assert(), CID#64.\n\t  binfo is checked for NULL, but then dereferenced\n\t  unconditionally, fix, CID #63.\n\t  (bgp_withdraw_packet) Assert adv-\u003ern is valid, as with\n\t  bgp_update_packet().\n"
    },
    {
      "commit": "53d9f67a18dc59fd688fce999cb35653010a54fb",
      "tree": "8412f230b56f658361b99f773395157703bcad7d",
      "parents": [
        "dcdf399fbc7420d3edc230c9646f720825fcecda"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:41:16 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:41:16 2006 +0000"
      },
      "message": "[bgpd] CID#73, potential crash in bgp statistics if called for AFI/SAFI with emtpy table\n\n2006-10-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_route.c: (bgp_table_stats_walker) NULL deref if table is\n\t  empty, bgp_table_top may return NULL, Coverity CID#73.\n"
    },
    {
      "commit": "dcdf399fbc7420d3edc230c9646f720825fcecda",
      "tree": "d4712072c844fff67e49e44fc9503d0b11f8062f",
      "parents": [
        "876b8be0ab24721e8f94d47dde022563f76db992"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:39:59 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:39:59 2006 +0000"
      },
      "message": "[bgpd] Bug #302 fixes. ClearingCompleted event gets flushed, leaving peers stuck in Clearing.\n\n2006-10-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_fsm.h: Remove BGP_EVENT_FLUSH_ADD, dangerous and not\n\t  needed.\n\t* bgp_fsm.c: (bgp_stop) Move BGP_EVENT_FLUSH to the top of the\n\t  of the function, otherwise it could flush a ClearingCompleted\n          event, bug #302.\n\t* bgp_packet.c: Replace all BGP_EVENT_FLUSH_ADD with\n\t  BGP_EVENT_ADD, fixing bug #302.\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": "98954844ae56d142e96341d5dff959ec5518111e",
      "tree": "8f411f4fec908605fb4e5ea423874c6a08d82b54",
      "parents": [
        "965b83f9cc287ca36f5a4152c2ac39007c5bc6d8"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:33:50 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:33:50 2006 +0000"
      },
      "message": "[lib] Handle upgrade from SUNWzebra to Quagga for \u0027interface fooX:Y\u0027 commands\n\n2006-10-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* if.c: (general) Handle upgrades from SUNWzebra, which tried\n\t  to track each logical interface as a seperate struct\n\t  interface, to Quagga, which assigns only one struct interface\n\t  per ifindex.\n\t  (if_sunwzebra_get) Try decompose a logical interface name\n          (fooX:Y) to the \u0027primary\u0027 name (fooX), for Solaris.\n          (interface_cmd) Use if_sunwzebra_get on Solaris.\n"
    },
    {
      "commit": "965b83f9cc287ca36f5a4152c2ac39007c5bc6d8",
      "tree": "1cfc447235d86ce273d37078d44da82ead4fd39d",
      "parents": [
        "08c8367197cb847eb88942e5d7273cf3352d967f"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Sep 26 15:30:43 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Sep 26 15:30:43 2006 +0000"
      },
      "message": "[snmp] Fix asn_build calls to pass correct variable sizes (fixes 64-bit issues)\n\n2006-09-26 Pierre-Yves Ritschard \u003cpierre-yves@spootnik.org\u003e\n\n\t* smux.c: (smux_open,smux_trap,smux_register) Fix various\n\t  asn_build_* calls to pass the proper length in the final\n\t  argument: use sizeof(\u003cvariable\u003e) instead of sizeof(\u003ctype\u003e),\n\t  since there were several inconsistencies between the actual\n\t  variable type and the size that was passed.  This should\n\t  fix some problems on 64-bit architectures where sizeof(int)\n\t  !\u003d sizeof(long).\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": "301e4fb0cfab692c9ec9cbd5fdcb50058547d7cf",
      "tree": "de1255b71c4e6b4797e843ccc96f8175a83eae95",
      "parents": [
        "0cd1c32dc36ad650d6e21d44c3b289982d1f62a0"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Wed Sep 20 14:46:07 2006 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Wed Sep 20 14:46:07 2006 +0000"
      },
      "message": "Add recent NetBSD/FreeBSD versions to list of what ought to work.\nAdd Dragonfly.\n\nClarify that the C99 requirement includes libraries and headers, not\njust compiler.\n"
    },
    {
      "commit": "0cd1c32dc36ad650d6e21d44c3b289982d1f62a0",
      "tree": "c474767b3fe407ac63b47ea4cced9c9ac7ee04ba",
      "parents": [
        "09dd561eb444ab009103b2dde62db212eae7064a"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Sep 19 18:51:53 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Sep 19 18:51:53 2006 +0000"
      },
      "message": "[bgpd] Trivial fix of printf format/arg mismatch\n\n2006-09-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* bgpd.c: (peer_uptime) Fix printf format/arg mismatch in\n\t  zlog_warn message (%ld/size_t -\u003e %lu/u_long).\n"
    },
    {
      "commit": "09dd561eb444ab009103b2dde62db212eae7064a",
      "tree": "e7763c690dec621ca81370721f6c7b6cd38a5b10",
      "parents": [
        "8383a9bd2721dbd8fb1b657269a2cdc40b4226e1"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 03:38:16 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 03:38:16 2006 +0000"
      },
      "message": "[bgpd] reduce the process queue hold time to something more sensible\n\n2006-09-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_route.c: (bgp_process_queue_init) process queue hold time\n\t  too high, adds extra memory load. Change to be much lower,\n\t  until such time as it\u0027s made configurable.\n"
    },
    {
      "commit": "8383a9bd2721dbd8fb1b657269a2cdc40b4226e1",
      "tree": "573d50347b4b45eabebbcc30263c4bb45a61bb2f",
      "parents": [
        "9fde6624fc480995449d8243fe85602d89927eb6"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 03:06:54 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 03:06:54 2006 +0000"
      },
      "message": "[bgpd] RIB statistics address space size shouldnt double count space\n\n2006-09-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_route.c: (bgp_table_stats_walker) Address space announced\n\t  should only count top-level unaggregateable prefixes, to\n\t  avoid falling afoul of anti-dodgy-accounting regulations\n\t  in various jurisdictions.. ;)\n"
    },
    {
      "commit": "9fde6624fc480995449d8243fe85602d89927eb6",
      "tree": "6591e476329ec88bd9ba5fcc008c626d32b3fdb5",
      "parents": [
        "ca058a30b1ea57f83871ab4cf1c9a91ea4064d52"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 03:02:02 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 03:02:02 2006 +0000"
      },
      "message": "[bgpd] simplify peer refcounts, squash slow peer leak\n\n2006-09-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) fix the peer refcount issue exposed by previous, by\n\t  just removing refcounting of peer threads, which is mostly\n\t  senseless as they\u0027re references leading from struct peer,\n\t  which peer_free cancels anyway. No need to muck around..\n\t* bgp_fsm.h: Just remove the refcounting from the various\n\t  TIMER/READ/WRITE/EVENT ON/OFF/ADD macros.\n\t* bgp_fsm.c: (bgp_stop) use BGP_EVENT_FLUSH, no refcounts attached\n\t  to events anymore.\n\t  (bgp_event) remove peer_unlock, events not refcounted.\n\t* bgpd.c: (peer_free) flush events before free.\n"
    },
    {
      "commit": "ca058a30b1ea57f83871ab4cf1c9a91ea4064d52",
      "tree": "ab38ab59bad607c9b41a093cb8b35bec766f30b3",
      "parents": [
        "2815e61ffbbf9c362896f3912d925cf78e125ee1"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 02:58:49 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 02:58:49 2006 +0000"
      },
      "message": "[bgpd] Fix 0.99 shutdown regression, introduce Clearing and Deleted states\n\n2006-09-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Fix some niggly issues around \u0027shutdown\u0027 and clearing\n\t  by adding a Clearing FSM wait-state and a hidden \u0027Deleted\u0027\n\t  FSM state, to allow deleted peers to \u0027cool off\u0027 and hit 0\n\t  references. This introduces a slow memory leak of struct peer,\n\t  however that\u0027s more a testament to the fragility of the\n\t  reference counting than a bug in this patch, cleanup of\n\t  reference counting to fix this is to follow.\n\t* bgpd.h: Add Clearing, Deleted states and Clearing_Completed\n\t  and event.\n\t* bgp_debug.c: (bgp_status_msg[]) Add strings for Clearing and\n\t  Deleted.\n\t* bgp_fsm.h: Don\u0027t allow timer/event threads to set anything\n\t  for Deleted peers.\n\t* bgp_fsm.c: (bgp_timer_set) Add Clearing and Deleted. Deleted\n\t  needs to stop everything.\n\t  (bgp_stop) Remove explicit fsm_change_status call, the\n\t  general framework handles the transition.\n\t  (bgp_start) Log a warning if a start is attempted on a peer\n\t  that should stay down, trying to start a peer.\n\t  (struct .. FSM) Add Clearing_Completed\n\t  events, has little influence except when in state\n\t  Clearing to signal wait-state can end.\n\t  Add Clearing and Deleted states, former is a wait-state,\n\t  latter is a placeholder state to allow peers to disappear\n\t  quietly once refcounts settle.\n\t  (bgp_event) Try reduce verbosity of FSM state-change debug,\n\t  changes to same state are not interesting (Established-\u003eEstablished)\n\t  Allow NULL action functions in FSM.\n\t* bgp_packet.c: (bgp_write) Use FSM events, rather than trying\n\t  to twiddle directly with FSM state behind the back of FSM.\n\t  (bgp_write_notify) ditto.\n\t  (bgp_read) Remove the vague ACCEPT_PEER peer_unlock, or else\n\t  this patch crashes, now it leaks instead.\n\t* bgp_route.c: (bgp_clear_node_complete) Clearing_Completed\n\t  event, to end clearing.\n\t  (bgp_clear_route) See extensive comments.\n\t* bgpd.c: (peer_free) should only be called while in Deleted,\n\t  peer refcounting controls when peer_free is called.\n\t  bgp_sync_delete should be here, not in peer_delete.\n\t  (peer_delete) Initiate delete.\n\t  Transition to Deleted state manually.\n\t  When removing peer from indices that provide visibility of it,\n\t  take great care to be idempotent wrt the reference counting\n\t  of struct peer through those indices.\n\t  Use bgp_timer_set, rather than replicating.\n\t  Call to bgp_sync_delete isn\u0027t appropriate here, sync can be\n\t  referenced while shutting down and finishing deletion.\n\t  (peer_group_bind) Take care to be idempotent wrt list references\n\t  indexing peers.\n"
    },
    {
      "commit": "2815e61ffbbf9c362896f3912d925cf78e125ee1",
      "tree": "8cc9c2cc857f12e3c22813f756fb8fd674757e1b",
      "parents": [
        "9458b8191563eb5569f341172484a234ef2f743e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 02:56:07 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 14 02:56:07 2006 +0000"
      },
      "message": "[bgpd] Add RIB reporting commands, show bgp ... statistics\n\n2006-09-13 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_aspath.c: (aspath_highest) new, return highest ASN in an\n\t  aspath.\n\t* bgp_route.c: (bgp_peer_count_walker) new, do the walk done\n\t  in bgp_peer_counts as a thread.\n\t  (bgp_peer_counts) move walk to previous and call it via\n\t  thread_execute so this RIB walk shows up in thread stats.\n\t  (bgp_table_stats) New, gather some statistics for a given\n\t  RIB.\n\t  (bgp_table_stats_walker) New, RIB walker thread for former.\n\t  (bgp_table_stats_vty) Parsing front-end for \u0027show bgp ...\u0027,\n\t  useful model for future rationalisation of \u0027show ... bgp\u0027.\n\t  (bgp_route_init) Add new RIB stats commands.\n"
    },
    {
      "commit": "9458b8191563eb5569f341172484a234ef2f743e",
      "tree": "3ff0f70665cef0504f09269dbb2edc92eb6b33e7",
      "parents": [
        "b25ea4d085c858137ec28b1be9d6ab6c30a97303"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Wed Sep 13 12:13:08 2006 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Wed Sep 13 12:13:08 2006 +0000"
      },
      "message": "2006-09-13 Tom Everett \u003ctom@khubla.com\u003e\n\n        * kernel_socket.c (rtm_type_str): ifdef RTM_OLD{ADD,DEL} to\n        compile on systems that no longer define them.\n"
    },
    {
      "commit": "b25ea4d085c858137ec28b1be9d6ab6c30a97303",
      "tree": "476bf1799357a70ea42cdfccee9340e8b32172d6",
      "parents": [
        "3e557ae1ea7693d91b6df42c2529952d6a349911"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Sep 11 02:14:16 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Sep 11 02:14:16 2006 +0000"
      },
      "message": "[ripd] bug #293: routemap set metric doesn\u0027t check for underflow correctly\n\n2006-09-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rip_routemap.c: (route_set_metric) underflow check needs to\n\t  use signed, problem identified and diagnosed by Pavel\n\t  Nikiforov in bug #293.\n"
    },
    {
      "commit": "3e557ae1ea7693d91b6df42c2529952d6a349911",
      "tree": "16edc7c42b662c852158ed802fda2f9200be3308",
      "parents": [
        "1a392d46db1917dfca2ddd06d7f0021396f8ecfa"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Sep 11 02:10:40 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Sep 11 02:10:40 2006 +0000"
      },
      "message": "[ripd] bug #278: remove gratuitous use of mid-function declaration\n\n2006-09-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ripd.c: (rip_read) remove gratuitous use of mid-function\n\t  declaration of vrecv, bug #278.\n"
    },
    {
      "commit": "1a392d46db1917dfca2ddd06d7f0021396f8ecfa",
      "tree": "8dec4a2e583c9a1890fd62d647dcd5a27d14bde1",
      "parents": [
        "ff7924f6c0437e2f3cc3710570414ae87a828724"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 07 00:24:49 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 07 00:24:49 2006 +0000"
      },
      "message": "[bgpd] Handle pcount as flags are changed, fixing pcount issues\n\n2006-09-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Squash any and all prefix-count issues by\n\t  abstracting route flag changes, and maintaining count as and\n\t  when flags are modified (rather than relying on explicit\n\t  modifications of count being sprinkled in just the right\n\t  places throughout the code).\n\t* bgp_route.c: (bgp_pcount_{dec,inc}rement) removed.\n\t  (bgp_pcount_adjust) new, update prefix count as\n\t  needed for a given route.\n\t  (bgp_info_{uns,s}et_flag) set/unset a BGP_INFO route status\n\t  flag, calling previous function when appropriate.\n\t  (general) Update all set/unsets of flags to use previous.\n\t  Remove pcount_{dec,inc}rement calls.\n\t  No need to unset BGP_INFO_VALID in places where\n\t  bgp_info_delete is called, it does that anyway.\n\t* bgp_{damp,nexthop}.c: Update to use bgp_info_{un,}set_flag.\n\t* bgp_route.h: Export bgp_info_{un,}set_flag.\n\t  Add a \u0027meta\u0027 BGP_INFO flag, BGP_INFO_UNUSEABLE.\n\t  Move BGP_INFO_HOLDDOWN macro to here from bgpd.h\n"
    },
    {
      "commit": "ff7924f6c0437e2f3cc3710570414ae87a828724",
      "tree": "e7e7e1910839845b37b4fa3f7ebc3d935ff9de99",
      "parents": [
        "b5aeb4410ae3722a5f331850acbc84c39e3fcd9f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Sep 04 01:10:36 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Sep 04 01:10:36 2006 +0000"
      },
      "message": "[bgpd] Add \u0027show ... neighbor .... prefix-counts\u0027 command\n\n2006-09-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_route.c: Add \u0027show ... bgp ... \u003cneighbour\u003e prefix-count\u0027\n\t  commands, to provide detailed counts of prefixes for a peer.\n\t  Informative, and should help pin down to pfxcnt drift\n\t  problems.\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": "c15deb1b7428a2baedfb615b1a41fe28d48c598c",
      "tree": "b4b1564e6ad7bba03ddd1a3ce35c52df00721846",
      "parents": [
        "29b5a044e5ca25944c408cf41a6414e071b11a26"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 22:06:12 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 22:06:12 2006 +0000"
      },
      "message": "[0.99] version bump to 0.99.5\n\n2006-08-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: Bump to 0.99.5\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": "9f906c7c562bd62043c77a79d84967deea9fe45e",
      "tree": "84fc5f54c9effcb75ec8ea139228b5f0384075f1",
      "parents": [
        "3414bf250a385496fa6c11dbaa9a5f79100d7a48"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:57:47 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:57:47 2006 +0000"
      },
      "message": "[bgpd] fix mtype in XFREE and NULL out freed pointer\n\n2006-08-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_advertise.c: (bgp_sync_delete) fix mtype in XFREE.\n\t  NULL out peer-\u003ehash after free, to be sure.\n"
    },
    {
      "commit": "3414bf250a385496fa6c11dbaa9a5f79100d7a48",
      "tree": "d020e1f392ea753060be9ddc2a0da525d4a00ddf",
      "parents": [
        "2518efd15b75687d4791a5eb4b0d7febc36cffbc"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:53:24 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:53:24 2006 +0000"
      },
      "message": "[tests] update heavywq for workqueue api changes\n\n2006-08-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* heavy-wq.c: (slow_func_del,slow_func) update to match workqueue\n\t  changes\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": "db9c0df934e62835bc09604a7ae7932693b4254a",
      "tree": "7e382d6012701e345492756f7716d4f62030e9f8",
      "parents": [
        "f0894cf8c323a25053e1f5e82be3ea5d88c2aacb"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:44:02 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:44:02 2006 +0000"
      },
      "message": "[lib] Bug #134: threads should be more robust against backward time jumps\n\n2006-08-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* thread.c: (general) Add support for monotonic clock, it may still\n\t  jump forward by huge amounts, but should be immune to going\n\t  backwards. Fixes bug #134.\n\t  (quagga_gettimeofday_relative_adjust) helper, does what name\n\t  says - adjusts gettimeofday based relative timer.\n\t  (quagga_gettimeofday) helper to keep recent_time up to date.\n\t  (quagga_get_relative) helper, update and getch the relative\n\t  timer using gettimeofday(). POSIX CLOCK_MONOTONIC is also\n\t  supported, but the code is not enabled yet nor tested.\n\t  (quagga_real_stabilised) helper, retrieve absolute time but\n\t  stabilised so as to never decrease.\n\t  (quagga_gettime) Exported interface, analogous to POSIX\n\t  clock_gettime() in interface, supporting several clocks.\n\t  (quagga_time) Exported interface, analogous to traditional\n\t  time(), will never decrease.\n\t  (recent_relative_time) Convenience function to retrieve\n\t  relative_time timeval, similar to existing recent_time absolute\n\t  timeval, for when an approximately recent value will do.\n\t  (remainder) Update to use above helpers.\n\t  (thread_getrusage) Previously was a macro, but needs to be\n\t  a function to twiddle with thread.c private stuff.\n\t* thread.c: Point the GETRUSAGE macro at previous function.\n\t  Export quagga_gettime, quagga_time and recent_relative_time for\n\t  general use.\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": "66c454f2a57a1a0053ea308edfc8c8024b3b7a48",
      "tree": "dcd45a319a30b54437acdd3ab2ab3044a7b27cf2",
      "parents": [
        "f28b0e57bd5173215132fed02aa4b284d7cbe26a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 16:02:43 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 16:02:43 2006 +0000"
      },
      "message": "[zebra] trivial: rtadv.h depends on interface.h\n\n2006-08-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rtadv.h: depends on interface.h, so should include it.\n"
    },
    {
      "commit": "f28b0e57bd5173215132fed02aa4b284d7cbe26a",
      "tree": "4e4d2f65d82afa18af4e47fe13bd6c3e83b4ba4a",
      "parents": [
        "1f742f21a98f756cea03856849fa2f82f467baf7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 15:57:59 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 15:57:59 2006 +0000"
      },
      "message": "[zebra] fix inconsistencies in ifstat_update_* declarations and definitions\n\n2006-08-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* interface.h: (ifstat_update_proc) declaration should match\n\t  ifstat_update_sysctl really, which is to not return status, as\n\t  such status is not used anywhere.\n\t* if_{proc,sysctl}.c: Make ifstat_update_* definitions and return values\n\t  consistent with each other and their declarations, ie:\n\t  (void) (*) (void).\n"
    },
    {
      "commit": "1f742f21a98f756cea03856849fa2f82f467baf7",
      "tree": "fe295616ed2036e691cf85f7fd73083ad4ddc2fd",
      "parents": [
        "36943749147bef10df8ffc0e2ad79f4dd06cd9ac"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 15:52:11 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 15:52:11 2006 +0000"
      },
      "message": "[bgpd] aspath_loop_check was broken, fix it and the aspath unit test code.\n\n2006-08-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_aspath.c: (aspath_loop_check) Fix the typo-bug which\n\t  essentially had disabled this check. Problem reported by\n\t  Bartek Kania \u003cmrbk@gnarf.org\u003e in [quagga-users 7388].\n\t* aspath_test.c: (validate) Fix the sense of the aspath_loop_check,\n\t  which was the wrong way around and had actually been testing for\n\t  aspath_loop_check to be buggy.\n"
    },
    {
      "commit": "36943749147bef10df8ffc0e2ad79f4dd06cd9ac",
      "tree": "17f031ea7faf31f94e7e7adfaace741ca4d17e39",
      "parents": [
        "7e4bcdc1d6d0e0338fe5cac6103dd485332e7b51"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 04 06:18:04 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 04 06:18:04 2006 +0000"
      },
      "message": "[zebra] IRDP: Move stream_free to where its created, probably fixing a leak\n\n2006-08-01 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* irdp_main.c: (irdp_advertisement) free the stream here, when done,\n\t  right under where it was allocated so it\u0027s blindingly obvious\n\t  it\u0027s correct. This possibly fixes a very slow leak of streams in\n\t  zebra.\n\t* irdp_packet.c: (send_packet) don\u0027t free the stream here as\n\t  it\u0027s hard to tell if right, plus an error case seemed to\n\t  returning before free anyway.\n"
    },
    {
      "commit": "7e4bcdc1d6d0e0338fe5cac6103dd485332e7b51",
      "tree": "14e0a08849b424d73a41020ee15207d8e6591c8d",
      "parents": [
        "a6974fef057a6673be3bb11042a92c9490ece894"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 04 06:14:13 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 04 06:14:13 2006 +0000"
      },
      "message": "[zebra] add more stuff to misc_null to avoid compile breakages\n\n2006-08-04 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* misc_null.c: Add ifstat_update_sysctl, add another required\n\t  header.\n"
    },
    {
      "commit": "a6974fef057a6673be3bb11042a92c9490ece894",
      "tree": "d1e127eb06400f4be1166a6a3ce763dc2041ca5b",
      "parents": [
        "c3eab60e7753ed34d30c978f9d4034562bf1df55"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Aug 02 16:47:03 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Aug 02 16:47:03 2006 +0000"
      },
      "message": "[testzebra] Patch to misc_null.c to get older gcc to recognize #pragma tricks\n\n2006-08-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* misc_null.c: Must include header files to get older versions of gcc\n\t  to process the #pragma statements properly.\n"
    },
    {
      "commit": "c3eab60e7753ed34d30c978f9d4034562bf1df55",
      "tree": "7a0cb71f1853a742b1d4eb8855a3095c7e5d1ab8",
      "parents": [
        "f912cb4fb0cbf92bf97ea6830c74306551963b2b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Jul 28 04:42:39 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Jul 28 04:42:39 2006 +0000"
      },
      "message": "[doc] Expand/cross-ref MD5 commands, tweak anchors to avoid added spacing\n\n2006-07-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* main.texi: link-detect works on Solaris too.\n\t* ospfd.texi: Twiddle around with anchors a bit more.\n\t  Clarify how setting MD5 auth by area and by interface interact,\n\t  and add cross-references, as well as to the required\n\t  command for setting key material.\n"
    },
    {
      "commit": "f912cb4fb0cbf92bf97ea6830c74306551963b2b",
      "tree": "9c62ff16d3f40aff93f98eecb87ecaefcfc30274",
      "parents": [
        "fbcba805143038af0ae0318b7ec4905708fb0949"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 23:30:16 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 23:30:16 2006 +0000"
      },
      "message": "[doc] minor tweaks, refine ospf redist,passive-inter, and abr-type help\n\n2006-07-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* quagga.texi: Remove unused index definitions\n\t  Add an Index node - for the concept index.\n\t* routeserver.texi: Set exampleindex to 0, so the example configs\n\t  with long IPv6 addresses stand better chance of fitting.\n\t* overview.texi: \u0027Supported RFC\u0027 -\u003e \u0027Supported RFCs\u0027\n\t  Remove paragraph indentation - texinfo does that.\n\t  Revise the supported OS list slightly.\n\t  Remove the IPv6 stack list, seems very dated and irrelevant.\n\t  Revise the \u0027How to get Quagga\u0027 section.\n\t* ospfd.texi: minor tweaks: add some anchors, fix some minor\n\t  format issues.\n\t  Revise the help for \u0027abr-type\u0027.\n\t  Note that text authentication is unwise, recc\u0027d MD5.\n\t  Add some extra text for redistribute and passive-interface,\n\t  about how latter can substitute for redist connected.\n"
    },
    {
      "commit": "fbcba805143038af0ae0318b7ec4905708fb0949",
      "tree": "bc3cf8a5c69c17d2eb8ea35edca3598856092a33",
      "parents": [
        "1670008b5401eca13456f914bba7331c3b7b2893"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 22:52:17 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 22:52:17 2006 +0000"
      },
      "message": "[lib] remove autogenerated file, update .cvsignore\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": "6d691129594f87958ecaf4169b2e1f62f90d3616",
      "tree": "4c1fb7ec763de18938af31f1f261f47db8da3391",
      "parents": [
        "b0498dc6ff0510efe9467fbaed41945f3f056af4"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 21:49:00 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 21:49:00 2006 +0000"
      },
      "message": "[zebra] Bug #268, Fix race between add/delete of routes, sanitise rib queueing\n\n2006-07-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rib.h: (struct rib) Add a route_node rn_status flag field,\n\t  this has to be copied every time head RIB of a route_node\n\t  changes.\n\t  Remove the rib lock field, not needed - see below.\n\t  Add a status field for RIB-private flags.\n\t* zebra_rib.c: Add a global for the workqueue hold time, useful\n\t  for testing.\n\t  (general) Fix for bug #268. Problem originally\n\t  detailed by Simon Bryden in [quagga-dev 4001].\n\t  Essentially, add/delete of a RIB must happen /before/ the\n\t  queue. Best-path selection (ie rib_process) and reaping of\n\t  freed RIBs can then be done after queueing. Only the route_node\n\t  is queued - no important RIB state (i.e. whether a RIB is to be\n\t  deleted) is queued.\n\t  (struct zebra_queue_node_t) Disappears, no longer need to\n\t  track multiple things on the queue, only the route_node.\n\t  (rib_{lock,unlock}) removed, RIBs no longer need to be\n\t  refcounted, no longer queued.\n\t  (rib_queue_qnode_del) Removed, deleted RIBs no longer deleted\n\t  via the queue.\n\t  (rib_queue_add_qnode) deleted\n\t  (rib_queue_add) Only the route_node is queued for best-path\n\t  selection, we can check whether it is already queued or\n\t  not and avoid queueing same node twice - struct rib * argument\n\t  is not needed.\n\t  (rib_link/unlink) (un)link RIB from route_node.\n\t  (rib_{add,del}node) Front-end to updates of a RIB.\n\t  (rib_process) Reap any deleted RIBs via rib_unlink.\n\t  Unset the route_node \u0027QUEUED\u0027 flag.\n\t  (General) Remove calls to rib_queue_add where add/del node was\n\t  called - not needed, update calls where not.\n\t  Ignore RIB_ENTRY_REMOVEd ribs in loops through route_nodes\n"
    },
    {
      "commit": "b0498dc6ff0510efe9467fbaed41945f3f056af4",
      "tree": "6595c1298dd560195c126e31f2977024d651d999",
      "parents": [
        "457eb9af72e6e7aa85c26b65ba4d053f9ecbffac"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 21:35:33 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 21:35:33 2006 +0000"
      },
      "message": "[zebra] Add \u0027debug zebra rib\u0027 commands\n\n2006-07-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* debug.{c,h}: Add \u0027debug zebra rib\u0027 and \u0027debug zebra rib queue\u0027.\n"
    },
    {
      "commit": "457eb9af72e6e7aa85c26b65ba4d053f9ecbffac",
      "tree": "ca93002285032e0c845749cfd770a446a9fc702b",
      "parents": [
        "1893740016d35d75de567a5f6b74db2314ffdc52"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 19:59:58 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 19:59:58 2006 +0000"
      },
      "message": "[zebra] Add test rig code, for testing the zebra RIB\n\n2006-07-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* {ioctl,kernel}_null.c: Dummy/Null kernel method implementations,\n\t  useful for testing zebra code that calls such methods.\n\t* {redistribute,misc}_null.c: Dummy/Null methods, as above. But\n\t  for zclient, and for various misc functions.\n\t* test_main.c: Test harness for zebra, currently just to test the\n\t  RIB.\n\t* Makefile.am: Build testzebra using above.\n\t* zebra_rib.c: Add a global for the workqueue hold time, useful\n\t  for testing.\n"
    },
    {
      "commit": "1893740016d35d75de567a5f6b74db2314ffdc52",
      "tree": "95175d82fa7affe687afe8f9db893aee5746686c",
      "parents": [
        "f366ad31ae6bf7e2fb7271cf8eab6dee4af3baf9"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 19:05:12 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 19:05:12 2006 +0000"
      },
      "message": "[bgpd] Potential bug#287 fix, peer_delete should NULL out freed buffers\n\n2006-07-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgpd.c: (peer_delete) Ensure freed buffers can not be\n\t  accidently reused. A potential fix for bug #287.\n"
    },
    {
      "commit": "f366ad31ae6bf7e2fb7271cf8eab6dee4af3baf9",
      "tree": "452f3071f7e1dc71d056bd476481bb008f6f435e",
      "parents": [
        "171eee31edbddbd8906447dc8725e0513227d013"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jul 27 18:01:41 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jul 27 18:01:41 2006 +0000"
      },
      "message": "[vtysh] Never skip authentication, and add support for multiple -c commands\n\n2006-07-27 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* vtysh.1: Document new options -d and -E, and note that now multiple\n\t  -c options may be supplied, with embedded linefeed now supported.\n\t  In BUGS section, remove warning about vtysh causing a daemon\n\t  to freeze, since this has been fixed.\n\t* vtysh_main.c: (usage) Add new -d and -E options.  And note that\n\t  -c can be used multiple times, possibly with embedded linefeeds.\n\t  (longopts) Add new -d and -E options.\n\t  (main) Add new -d and -E options, and create a linked list to\n\t  support multiple -c options.  Do not call vtysh_connect_all until\n\t  after vtysh_read_config(config_default) and vtysh_auth have\n\t  succeeded.  This prevents the vtysh.conf file from configuring\n\t  any daemons, and it ensures that authentication has been passed\n\t  before we send any commands to any daemons.  Call vtysh_connect_all\n\t  with any daemon name supplied with -d.  If it is unable to connect\n\t  to any daemons, issue an error message and exit immediately.\n\t  When used in -c mode, call vtysh_execute(\"enable\") before\n\t  executing the commands in order to match interactive behavior.\n\t  And detect embedded linefeed chars in -c commands and break them up\n\t  appropriately.\n\t* vtysh.h: (vtysh_connect_all) Fix proto to reflect new\n\t  daemon_name argument, and that it now returns an integer -- the\n\t  number of daemons to which we were able to connect.\n\t* vtysh.c: (vtysh_connect_all) Add a new daemon_name argument.\n\t  If supplied, connect only to that daemon.  And return\n\t  the number of daemons to which we were able to connect.\n\t  (vtysh_prompt): Performance enhancement -- make struct utsname\n\t  static so we call uname to get the hostname only once.\n"
    },
    {
      "commit": "171eee31edbddbd8906447dc8725e0513227d013",
      "tree": "edf6f16fe912232d92dac1eeb6d9adadb93082c6",
      "parents": [
        "1fe6ed38cd0136c514aabae01389653beab27fb9"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 16:11:02 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 16:11:02 2006 +0000"
      },
      "message": "[zebra] Connected routes must always be added to main table\n\n2006-07-27 Rumen Svobodnikov \u003crumen@telecoms.bg\u003e\n\n\t* connected.c: (connected_up_ipv4) interface connected routes always\n\t  go to table main (or otherwise they cannot be used by linux as\n          nexthops)\n\t* zserv.c: (zread_ipv4_add) send route to the correct routing table\n\t* zebra_rib.c (static_install_ipv4) set routing table\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": "cc8b13a00bfe7083ae68755e547a39cd762f2963",
      "tree": "9729858115e6862a6bc65a5454f41ce01e059306",
      "parents": [
        "90c33177f53ae36a8765f5f27bf34a90663806d3"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 25 20:40:40 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 25 20:40:40 2006 +0000"
      },
      "message": "[lib] Optimise thread_call by caching pointer to thread history in the thread\n\n2006-07-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* thread.h: (struct thread) Add a cache pointer to the struct\n\t  cpu_thread_history, if it is known - saving hash lookup on\n\t  each thread_call.\n\t* thread.c: (thread_call) Cache the pointer to the\n          cpu_thread_history, so that future thread_calls of same\n          thread can avoid the hash_lookup.\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"
    }
  ],
  "next": "13cd3dc1e8281cc6fdc576fb0b62e71a9e170cae"
}
