)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "13cd3dc1e8281cc6fdc576fb0b62e71a9e170cae",
      "tree": "2268ce870f36a9ce84dcb281917514bbdf920b44",
      "parents": [
        "9d0a3260b2d1b57b7edfd3f72885d861883d4621"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jul 11 01:50:30 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jul 11 01:50:30 2006 +0000"
      },
      "message": "[ospfd] Improve Hello NetworkMask mismatch warning to give more info\n\n2006-07-10 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_hello) Improve NetworkMask mismatch warning\n\t  message to include interface name and conflicting prefix lengths.\n"
    },
    {
      "commit": "9d0a3260b2d1b57b7edfd3f72885d861883d4621",
      "tree": "019901060c5b0b34154b084e9ae551af33319a6d",
      "parents": [
        "74542d730198a37a872b7114643e29e99c551bcf"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jul 11 00:06:49 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jul 11 00:06:49 2006 +0000"
      },
      "message": "[lib] Do not call vty_close in vty_log_out to avoid possible free memory access\n\n2006-07-10 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* vty.c: (vty_log_out) Do not call vty_close, because this could\n\t  result in a parent function\u0027s accessing the freed memory.\n\t  Instead, set status VTY_CLOSE and call shutdown(vty-\u003efd, SHUT_RDWR).\n\t  And add a comment on vty_close.\n"
    },
    {
      "commit": "74542d730198a37a872b7114643e29e99c551bcf",
      "tree": "0b224588a9579f45cda632ac9e33c783405824a3",
      "parents": [
        "1f2c2743ac188b909114a1bf054a9a41a0cd5635"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Jul 10 18:09:42 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Jul 10 18:09:42 2006 +0000"
      },
      "message": "[lib] Fix infinite recursion for errors on vtys with terminal monitor enabled\n\n2006-07-10 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* vty.c: (vty_log_out, vty_read, vty_flush, vtysh_flush, vtysh_read)\n\t  After an I/O error, must set vty-\u003emonitor to 0 before calling\n\t  zlog_warn, otherwise an infinite recursion could occur\n\t  (since zlog_warn triggers a message to be written to the vty,\n\t  and that in turn triggers another error message when it fails, etc.).\n"
    },
    {
      "commit": "1f2c2743ac188b909114a1bf054a9a41a0cd5635",
      "tree": "a55fdbddb1c4f5ea4476fd44ccf2fb988cafd819",
      "parents": [
        "aa2737a08a284953908e131894accd25bf627d53"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jul 10 07:45:13 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jul 10 07:45:13 2006 +0000"
      },
      "message": "[ospfd] cleanup NSM neighbour delete through a new Deleted NSM state\n\n2006-07-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.h: Add a NSM_Deleted neighbour state, to act as dummy\n\t  state indicating the neighbour is to be deleted.\n\t* ospf_nsm.c: (general) Use the NSM_Deleted state to delete\n\t  neighbours, thus allowing code to be slightly more obvious\n\t  in its flow.\n\t  (nsm_timer_set) Add NSM_Deleted. Add another timer the code\n\t  missed.\n\t  (nsm_kill_nbr) No need for special case call to nsm_change_state\n\t  anymore.\n\t  Make the assert and error-handling for same case more readable\n\t  (Andrew Schorr)\n\t  Remove the call to ospf_nbr_delete, nsm_change_state can do\n\t  this generally now via NSM_Deleted.\n\t  (struct ... NSM) Add the dummy NSM_Deleted state, the 3 events\n\t  that can lead to nsm_kill_nbr all now transition the NBR to\n\t  NSM_Deleted and the general change_state function can be left\n\t  to do the work.\n\t  (ospf_nsm_event) Special casing of events and early-return can\n\t  be removed now.\n\t  On transition into Deleted, delete the nbr.\n\t* ospf_dump.c: (ospf_nsm_state_msg) Add Deleted.\n"
    },
    {
      "commit": "aa2737a08a284953908e131894accd25bf627d53",
      "tree": "7fdf971c27d430f30982971233290b12e6be4231",
      "parents": [
        "5c1960687024a4ab16d33b58be8c410a935c583b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 06 11:12:39 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 06 11:12:39 2006 +0000"
      },
      "message": "[ospfd] early-return in nsm_event missed LLDown event, fixes use after free\n\n2006-07-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (ospf_nsm_event) LLDown event also results in nbr\n\t  being deleted, requires early-return too. Likely explains\n\t  some crash reports after interface events.\n"
    },
    {
      "commit": "5c1960687024a4ab16d33b58be8c410a935c583b",
      "tree": "9e4fa9016735f2d4fb95209ab6c3af4b58b78df4",
      "parents": [
        "f7a76abf3078bac6251d4e27f0143a9c0b14dde7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 14:41:08 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 14:41:08 2006 +0000"
      },
      "message": "[doc] remove the auto-generated quagga.info file from CVS\n\n2006-07-04 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* quagga.info: remove auto-generated file. It will still be\n\t  present in dist tarballs, so shouldn\u0027t affect anyone but\n\t  direct users of CVS. Required texinfo version should be\n\t  widely available.\n\t* .cvsignore: ignore quagga.info\n"
    },
    {
      "commit": "f7a76abf3078bac6251d4e27f0143a9c0b14dde7",
      "tree": "7046a50c712642cd8b6bf05f80d41b242007c7b3",
      "parents": [
        "5db95bc2dda90dc462f77dd2610c004db685252e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:57:49 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:57:49 2006 +0000"
      },
      "message": "[ospfd] Apply some simplifications to ospf_nsm, from Andrew\u0027s suggestions\n\n2006-07-04 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (general) Various small cleanups from Andrew\u0027s\n\t  review of last set of patches.\n\t  (nsm_timer_set) Loading, Full and default can share\n\t  same code too.\n\t  (nsm_should_adj) Can just be one big OR.\n\t  (nsm_twoway_received) Collapse into return statement.\n"
    },
    {
      "commit": "5db95bc2dda90dc462f77dd2610c004db685252e",
      "tree": "6d25d5818024859e897790850bdd11905a671654",
      "parents": [
        "d1b1cd8fb9309d89f10b95d59fb5b1420248895d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:52:29 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:52:29 2006 +0000"
      },
      "message": "[ospfd] CID #13, dont try print out fields of LSA we know to be NULL.\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.c: (ospf_translated_nssa_refresh) CID #13.\n"
    },
    {
      "commit": "d1b1cd8fb9309d89f10b95d59fb5b1420248895d",
      "tree": "bd88ec34a464f7d2ea3427982e1516fb45683f57",
      "parents": [
        "e55dd53bca98a032a583950320cc1367a0685bee"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:50:44 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:50:44 2006 +0000"
      },
      "message": "[ospfd] Clear adjacency state for NSM changes down to TwoWay/ExStart\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (nsm_clear_adj) clear adjacency related state for a\n\t  neighbour, needed for some state changes from \u003e ExStart down\n\t  to ExStart or less, which need not go through nsm_reset_nbr.\n\t  (nsm_reset_nbr) move code to former. Should be static.\n\t  (ospf_nsm_event) Remove long dead code.\n\t  Use nsm_clear_adj for state changes that take down\n\t  adjacencies to TwoWay/ExStart.\n\t  (nsm_kill_nbr) Oops, action function shouldn\u0027t try return\n\t  1 for error.\n"
    },
    {
      "commit": "e55dd53bca98a032a583950320cc1367a0685bee",
      "tree": "217f9f8e6d4c9426ba36ae0bcf9af3d3949347a4",
      "parents": [
        "ba0beb4a846056301d6baa7f67002c6705084b40"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:46:14 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:46:14 2006 +0000"
      },
      "message": "[ospfd] trivial cleanup of nsm_timer_set\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (nsm_timer_set) ls_req timer should be OFF in\n\t  early states.\n\t  Compact several identical sections.\n\t  Set inactivity timer to OFF for Down, for documentary purposes.\n"
    },
    {
      "commit": "ba0beb4a846056301d6baa7f67002c6705084b40",
      "tree": "4a481f49e3993b61039f157be879173bc2b98e08",
      "parents": [
        "d7b0fb62ec78cfd31ff8d905490a5c929c44e971"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:44:19 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:44:19 2006 +0000"
      },
      "message": "[ospfd] Ensure NSM state functions can redirect next_state accidently\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (ospf_nsm_event) Don\u0027t allow action functions to\n\t  change next_state if the NSM tables do not indicate\n\t  next_state is conditional, log warning if one tries -\n\t  existing code appears fine though.\n"
    },
    {
      "commit": "d7b0fb62ec78cfd31ff8d905490a5c929c44e971",
      "tree": "887a83d76e59217fd1e84f4feb1aa4ff7312a70e",
      "parents": [
        "08942da588b78f41916ebd6c75fa668b18160ee7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:35:24 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 04 13:35:24 2006 +0000"
      },
      "message": "[ospfd] consolidate adjacency check logic\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_nsm.c: (nsm_should_adj) New function, just consolidate the\n\t  10.4 adjacency check from nsm_twoway_received/nsm_adj_ok.\n\t  (nsm_twoway_received/nsm_adj_ok) Use former.\n"
    },
    {
      "commit": "08942da588b78f41916ebd6c75fa668b18160ee7",
      "tree": "bca0de6933e8146751a88870e3b0798983837b4e",
      "parents": [
        "27b472533bc8bb0fdb37dcda7596c385d3b9f414"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Jul 03 20:58:29 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Jul 03 20:58:29 2006 +0000"
      },
      "message": "[debug] Debug messages to terminal vty sessions should include timestamps\n\n2006-07-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* vty.c: (vty_log_out) Debug messages to terminal vty sessions\n\t  should include timestamps.\n"
    },
    {
      "commit": "27b472533bc8bb0fdb37dcda7596c385d3b9f414",
      "tree": "60e09c43d4d016b32eb47ec0ba4a0263f0b40bbc",
      "parents": [
        "33d5ab9ef197ce281859f12251df4e412c469c65"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Jul 02 16:38:54 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Jul 02 16:38:54 2006 +0000"
      },
      "message": "[zebra] Fix CID #104, check addr for null, and #18, check nexthop type args\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rt_netlink.c: (netlink_interface_addr) Fix CID #104, can not\n\t  proceed if addr is NULL.\n\t* zebra_rib.c: (static_add_ipv6) Fix CID #18, double check\n\t  required arguments are supplied for the given nexthop type.\n"
    },
    {
      "commit": "33d5ab9ef197ce281859f12251df4e412c469c65",
      "tree": "e33b0687ecc11d38b11bc53774e095298cc22c5e",
      "parents": [
        "9a57dc69d2432b6633fc47b05d4ee475a29db361"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Jul 02 11:01:50 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Jul 02 11:01:50 2006 +0000"
      },
      "message": "[bgpd] Fix crash on shutdown of peer\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_fsm.c: (bgp_{stop,start}) Move clear/free of certain\n\t  bits of state from stop to start, as they may be used via\n\t  peer references on clearing queues..\n"
    },
    {
      "commit": "9a57dc69d2432b6633fc47b05d4ee475a29db361",
      "tree": "76f7ce6c0923fbe5892cf6829b42a50d80116f00",
      "parents": [
        "adf6221437073f4d427c9c973e4c95381b13fc73"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Jun 30 16:58:53 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Jun 30 16:58:53 2006 +0000"
      },
      "message": "[ripd] update to use auto-generated redistribute route-type defs\n\n2006-06-29 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rip_zebra: (general) convert redistribute commands to use\n\t  the auto-generated defines.\n"
    },
    {
      "commit": "adf6221437073f4d427c9c973e4c95381b13fc73",
      "tree": "bd51d5f5bc649068c9082e5569421995a3984ab1",
      "parents": [
        "1c066bfe62951fa1e2f90f02b528342d60fcd6f9"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Jun 30 16:55:41 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Jun 30 16:55:41 2006 +0000"
      },
      "message": "[lib] Fix merge error in ChangeLog\n\n- entry was left in wrong order, according to date.\n"
    },
    {
      "commit": "1c066bfe62951fa1e2f90f02b528342d60fcd6f9",
      "tree": "b842a3dcdaab713be90bdf444d120e95610f72ac",
      "parents": [
        "74176d220ba6fb019a18ebea3e3245a46f33dce1"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jun 30 16:53:47 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jun 30 16:53:47 2006 +0000"
      },
      "message": "[ospfd] Fix \"show ip ospf neighbor A.B.C.D\" to show all matches\n\n2006-06-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_vty.c: (show_ip_ospf_neighbor_id) Should show all instances\n\t  of that neighbor (since it may appear on multiple interfaces)\n\t  instead of bailing out after showing the first match.\n"
    },
    {
      "commit": "74176d220ba6fb019a18ebea3e3245a46f33dce1",
      "tree": "3cd34e04c9574900973006eaac13994e3d76386a",
      "parents": [
        "7694787c190e3737d6fc3e15b7e098ce76ed61a2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Jun 30 16:49:02 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Jun 30 16:49:02 2006 +0000"
      },
      "message": "[lib] Fix typo in cpp conditional for malloc.h include\n\n2006-06-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* memory.c: Fix typo in cpp conditional around malloc.h, from\n\t  comment in bug #269.\n"
    },
    {
      "commit": "7694787c190e3737d6fc3e15b7e098ce76ed61a2",
      "tree": "84b1815e7a268b8babd2cac4b37edf6ac98dc221",
      "parents": [
        "d7e60dd7a9f0213aaa82d256a78ab74887946e53"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jun 30 03:21:05 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jun 30 03:21:05 2006 +0000"
      },
      "message": "[ospfd] Avoid getting NSM stuck in ExStart by using local view of DR/BDR\n\n2006-06-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_nsm.c: (nsm_twoway_received) When deciding whether to\n\t  change from state Init to ExStart, the test for whether the\n\t  neighboring router is DR or BDR should be against the\n\t  local router\u0027s notion of DR/BDR, not the neighbor\u0027s view.\n"
    },
    {
      "commit": "d7e60dd7a9f0213aaa82d256a78ab74887946e53",
      "tree": "2e3488591d1ac48d10ddca05fa4cd68e3611f583",
      "parents": [
        "5f41e90e49b8ced6b5adac3933736067d2b24584"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jun 29 20:20:52 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jun 29 20:20:52 2006 +0000"
      },
      "message": "[ospfd] Implement new ospf router subcommand \"log-adjacency-changes [detail]\"\n\n2006-06-28 Erik Muller \u003cerikm@internap.com\u003e\n\n\t* ospfd.h: Define 2 new struct ospf config flags:\n\t  OSPF_LOG_ADJACENCY_CHANGES and OSPF_LOG_ADJACENCY_DETAIL\n\t* ospf_nsm.c (nsm_change_state): Log adjacency changes if\n\t  requested.\n\t* ospf_vty.c (ospf_log_adjacency_changes): New command function\n\t  to implement ospf subcommand \"log-adjacency-changes [detail]\".\n\t  (no_ospf_log_adjacency_changes) Turn off log-adjacency-changes.\n\t  (show_ip_ospf) Show whether adjacency changes are logged.\n\t  (ospf_config_write) Add \"log-adjacency-changes [detail]\" to config.\n\t  (ospf_vty_init) Add ospf_log_adjacency_changes and\n\t  no_ospf_log_adjacency_changes.\n\t* ospfd.texi: Document new ospf router subcommand\n\t  \"log-adjacency-changes [detail]\".\n"
    },
    {
      "commit": "5f41e90e49b8ced6b5adac3933736067d2b24584",
      "tree": "4fab3a3596e75f5ec3959c614f921de5773bdc4a",
      "parents": [
        "95509e64e3d0fc8b01045b497b7077225d9997f0"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jun 27 10:42:18 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jun 27 10:42:18 2006 +0000"
      },
      "message": "[lib] Remove bare routes in route_types: fix mistake in commmit\n\n2006-06-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* route_types.awk: Fix previous commit. Forgot to remove the\n\t  printf of the bare/numeric route-type help string (empty string)\n"
    },
    {
      "commit": "95509e64e3d0fc8b01045b497b7077225d9997f0",
      "tree": "844c81daf0c0ff9d6d3c3169fa84aaaab75cbe93",
      "parents": [
        "d1c65c211ce6259b95ec8922f3f3127dc74e118f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jun 27 08:26:07 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jun 27 08:26:07 2006 +0000"
      },
      "message": "[lib] Remove numeric route-type argument in redistribute arg strings\n\n2006-06-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* route_types.awk: Remove setting the \u0027bare\u0027 numeric route type\n\t  in redist strings.\n"
    },
    {
      "commit": "d1c65c211ce6259b95ec8922f3f3127dc74e118f",
      "tree": "0d7d131736882561d2655a71181b03d755d02d97",
      "parents": [
        "9c42a6ebbc103a0a4be6af782388ad26e6c03556"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jun 27 08:01:43 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jun 27 08:01:43 2006 +0000"
      },
      "message": "[ospfd] Replace redistribution strings with new route_types.h defines.\n\n2006-05-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_vty.c: (general) Replace in-place route redistribution\n\t  command and help strings with the new auto-generated defines\n\t  from lib/route_types.h\n"
    },
    {
      "commit": "9c42a6ebbc103a0a4be6af782388ad26e6c03556",
      "tree": "fcbdec3f26cb36539b9d66e1b8f4e63cfe1c3799",
      "parents": [
        "466c96562c6e39596dc441c30420b335f83f01ea"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jun 27 07:52:03 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jun 27 07:52:03 2006 +0000"
      },
      "message": "[lib] Centralise Zserv route type information, auto-generate redist strings\n\n2006-05-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* route_types.txt: New file, table of ZEBRA_ROUTE definitions.\n\t* route_types.awk: New script, to parse previous and generate\n\t  (for now) redistribute string defines.\n\t* Makefile.am: build route_types.h using previous two, ala\n\t  memtypes.h, include the script and table file in EXTRA_DIST.\n\t* command.h: pull in route_types.h, add a REDIST_STR define.\n"
    },
    {
      "commit": "466c96562c6e39596dc441c30420b335f83f01ea",
      "tree": "80d9e7237ce49a7b87ceb01086269fcb223cc181",
      "parents": [
        "9560fa8ac994966a8da0ba23c46c0299164b7112"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jun 26 12:55:58 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jun 26 12:55:58 2006 +0000"
      },
      "message": "[doc] OSPF MD5 keyid documentation, fix texinfo warnings in bgpd.texi\n\n2006-06-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospfd.texi: Document that MD5 keyid is part of the protocol.\n\t* bgpd.texi: shut texinfo warnings up by replacing brackets in\n\t  variable with angle brackets.\n"
    },
    {
      "commit": "9560fa8ac994966a8da0ba23c46c0299164b7112",
      "tree": "fa1f10194a81da333af1bbe43664c73a5c1b5fc4",
      "parents": [
        "9aecfae2ec82027fe1cf2740e6099397376a3f4f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jun 26 12:50:06 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jun 26 12:50:06 2006 +0000"
      },
      "message": "[ospfd] NSSA translate-enabled ABR should declare itself as ASBR\n\n2006-06-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_abr.c: (general) NSSA translate-candidate ABRs need to\n\t  be ASBRs, or other routers may rightfully refuse to install\n\t  translated type-5s LSAs. reported by dendroot@gmail.com.\n\t  (ospf_abr_nssa_check_status) Detect change in translator\n\t  state when ABR, and inc/dec redistribute count as when we\n\t  leave/enter the disabled state - so that translate-enabled\n\t  ABR properly sets ASBR bit on non-NSSA areas.\n\t  Run the resulting function through indent to clean it up.\n\t* ospf_lsa.c: (router_lsa_flags) For purposes of ASBR bit,\n\t  NSSA area is same as stub area.\n"
    },
    {
      "commit": "9aecfae2ec82027fe1cf2740e6099397376a3f4f",
      "tree": "f09cfa42e421c2a34f0705f20823659d7dd1c91d",
      "parents": [
        "0ffb7094d3bd688560c37f01a05c54e35b3a1fbc"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sat Jun 24 20:05:02 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sat Jun 24 20:05:02 2006 +0000"
      },
      "message": "[ospfd] Improve two info log messages in ospf_snmp.c\n\n2006-06-24 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_snmp.c: (ospfTrapNbrStateChange, ospfTrapIfStateChange) Improve\n\t  info log message to indicate why the trap is being sent.\n"
    },
    {
      "commit": "0ffb7094d3bd688560c37f01a05c54e35b3a1fbc",
      "tree": "00e7d13d3ae36728ce2b4a8d472f428816b1c7a1",
      "parents": [
        "6e72cb6a0940bd3dae2d4f023ef94f84af3b723c"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sat Jun 24 19:40:13 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sat Jun 24 19:40:13 2006 +0000"
      },
      "message": "[ospfd] When writing out config, show \"debug ospf nsm status\" properly\n\n2006-06-24 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_dump.c: (config_write_debug) Fix typo to show debug ospf nsm\n\t  status properly (not ism status).\n"
    },
    {
      "commit": "6e72cb6a0940bd3dae2d4f023ef94f84af3b723c",
      "tree": "aea521920a7ca445193796e472c4a273cd53cead",
      "parents": [
        "2cb87162369af61475b543280860bc7b1c0b7c49"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sun Jun 18 00:45:48 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sun Jun 18 00:45:48 2006 +0000"
      },
      "message": "[ospfd] Fix ospf passive-interface subcommand to create interface if necessary\n\n2006-06-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_vty.c: ({no_,}ospf_passive_interface) Replace if_lookup_by_name\n\t  with a call to if_get_by_name -- if the interface does not exist\n\t  already, it should be created.  And remove the obsolete warning\n\t  message.\n"
    },
    {
      "commit": "2cb87162369af61475b543280860bc7b1c0b7c49",
      "tree": "ef90e854a23a30f82e2fa3765d947bc48266e3bb",
      "parents": [
        "429ac78cc64e0e29bab7cbc00ee991abcdec3f81"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jun 15 22:31:39 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jun 15 22:31:39 2006 +0000"
      },
      "message": "[redhat quagga.spec] Detect fedora release automatically\n\n2006-06-15 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* redhat/quagga.spec.in: Get default distro automatically\n\t  by using rpm to query the fedora-release version.\n\t  And fix a typo (should be default_dist, not dist_default).\n"
    },
    {
      "commit": "429ac78cc64e0e29bab7cbc00ee991abcdec3f81",
      "tree": "829302b483390d1484959e4f5b01da2e89d002ba",
      "parents": [
        "74ecdc9e74eb96829e342a03531ba6647ce6bb3c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:40:49 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:40:49 2006 +0000"
      },
      "message": "[ospfd] Fix multicast membership drop bug\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Reported by Milan Koci\n\t* ospf_interface.h: (struct ospf_if_info) Add reference counts\n\t  for multicast group memberships. Add various macros to help\n\t  manipulate/check membership state.\n\t* ospf_interface.c: (ospf_if_set_multicast) Maintain the\n\t  ospf_if_info reference counts, and only actually drop\n\t  memberships if it hits 0, to avoid losing membership when\n\t  OSPF is disabled on an interface with multiple active OSPF\n\t  interfaces.\n\t* ospf_packet.c: (ospf_{hello,read}) Use the new macros to\n\t  check/set\n\t  multicast membership.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) ditto.\n"
    },
    {
      "commit": "74ecdc9e74eb96829e342a03531ba6647ce6bb3c",
      "tree": "f40b1ba761f9ad9271c1951510bbd63eeaa57961",
      "parents": [
        "630c97ce0f87a719f678a24bd84945d4f145fdc5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:10:47 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:10:47 2006 +0000"
      },
      "message": "[zebra] Fix forgetfulness wrt configured address on FreeBSD\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) The key fixes are actually Andrew Schorr\u0027s.\n\t* interface.c: (ip_address_uninstall) Unset the configured flag.\n\t* connected.c: (connected_same) new helper, check whether\n\t  two connected are same.\n\t  (connected_implicit_withdraw) new helper, consolidation of\n\t  existing code in connected_add_ipv{4,6}.\n\t  Try filter out unneeded Zserv address delete/adds when\n\t  address is exact same.\n\t  Where old address is implicitely removed, be sure to preserve\n\t  the IFC_CONFIGURED flag if set, fixes bug where configured\n\t  addresses were being lost on FreeBSD.\n"
    },
    {
      "commit": "630c97ce0f87a719f678a24bd84945d4f145fdc5",
      "tree": "1b87b2247617af51556f24a45b6735674d7f948d",
      "parents": [
        "c024fd0c76bc305cd6b6bab0989226bd9ec5e763"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:48:17 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:48:17 2006 +0000"
      },
      "message": "[zebra] remove internal if_flag_dump, use libzebras version.\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* lib/if.c: (if_flag_dump) remove the whitespace indentation, callers\n\t  should provide.\n\t* zebra/interface.c: (if_flag_dump_vty) redundant code, remove.\n\t  (if_dump_vty) use libzebra if_flag_dump.\n"
    },
    {
      "commit": "c024fd0c76bc305cd6b6bab0989226bd9ec5e763",
      "tree": "fabd937784fd330d046244a8febb418ca8663b5c",
      "parents": [
        "8ce5cfd13eb7f8474b3129a57c160273889c2573"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:43:09 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:43:09 2006 +0000"
      },
      "message": "[lib] list_delete shouldn\u0027t duplicate list_delete_all_node\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* linklist.c: (list_delete) call list_delete_all_node, don\u0027t\n\t  duplicate it.\n"
    },
    {
      "commit": "8ce5cfd13eb7f8474b3129a57c160273889c2573",
      "tree": "314dba4d94fe3a47fe188a700adbb73fee0ab4d8",
      "parents": [
        "e5cd706c1a4b8138e9b78933e03460f0b032c77e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:41:02 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:41:02 2006 +0000"
      },
      "message": "[lib] Experimental: have XFREE NULL out the freed pointer\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* memory.h: Experimental, have XFREE macro NULL out the freed\n\t  pointer.\n"
    },
    {
      "commit": "e5cd706c1a4b8138e9b78933e03460f0b032c77e",
      "tree": "4233e178ed021ff69f035f0ed1c1a989a4bbf9e9",
      "parents": [
        "ac904dec03ce6b1bbd1bab1718085a366d485bd8"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:25:55 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:25:55 2006 +0000"
      },
      "message": "[lib] Fix vector leak in error path in command.c, CID #38\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* command.c: (cmd_describe_command_real) Fix leak, CID #38.\n"
    },
    {
      "commit": "ac904dec03ce6b1bbd1bab1718085a366d485bd8",
      "tree": "ffc6d51c14446bac13a7d3a945449bf1c2d8561f",
      "parents": [
        "88871b1d1ea8150ddf3d8f66fe77323770ba0f9f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:04:57 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:04:57 2006 +0000"
      },
      "message": "[ospfd] lsdb_delete/discard_from_db should be more robust to bad args\n\n2006-05-31 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsdb.c: (ospf_lsdb_delete) robustify against NULL arguments,\n\t  print warning.\n\t* ospf_lsa.c: (ospf_discard_from_db) ditto.\n\t  (ospf_maxage_lsa_remover) Check lsa-\u003elsdb for validity, possible\n\t  mitigation (but not solution) for bug #269.\n"
    },
    {
      "commit": "88871b1d1ea8150ddf3d8f66fe77323770ba0f9f",
      "tree": "8f25f719d120d12a9f333000064ca356563b4387",
      "parents": [
        "1602a71d7a64395254e175c5c417fa593647b995"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 11:41:19 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 11:41:19 2006 +0000"
      },
      "message": "[ospfd] suppres mostly uninteresting debug message unless debug is set\n\n2006-05-30 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_read) Debug message about packets\n\t  received on unenabled interfaces should be conditional on\n\t  debug being set.\n"
    },
    {
      "commit": "1602a71d7a64395254e175c5c417fa593647b995",
      "tree": "75b7b7bbf9a0c9e83b3e6786ae48cb80dd163c09",
      "parents": [
        "f783c1d7bcf0674920cbae066de954fe926fd3ac"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:32:44 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:32:44 2006 +0000"
      },
      "message": "[tests] Fix stray character in previous commit\n"
    },
    {
      "commit": "f783c1d7bcf0674920cbae066de954fe926fd3ac",
      "tree": "03c87b6ede5786f2e456b7a75c1c8ee86f80e626",
      "parents": [
        "fb66b29c6701129f0222275eaa206f7ac8ab30cc"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:31:17 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:31:17 2006 +0000"
      },
      "message": "[tests] test-sig.c: configure logging\n\n2006-05-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* test-sig.c: (main) configure logging, there\u0027s no terminal\n\t  to write to for one thing, but we do want stdout, and we\n\t  don\u0027t want a test to spam syslog.\n"
    },
    {
      "commit": "fb66b29c6701129f0222275eaa206f7ac8ab30cc",
      "tree": "b9a3d53d867ead2e9f8dbb8c1add9c2eb63b1943",
      "parents": [
        "a4b303038363185f60dfef7023cb02715a9a4315"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:26:15 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:26:15 2006 +0000"
      },
      "message": "[lib] Add support for Sun libc printstack to zlog_backtrace_sigsafe\n\n2006-05-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac:\n\t  Check for Sun libc printstack(), add a general HAVE_STACK_TRACE\n\t  define for lib/log.c, if any supported stack symbol dumping\n\t  function is found (glibc backtrace/sun libc printstack).\n\t* log.c: (general) Add support for Sun libc printstack().\n\t  (hex_append) make the cpp conditional on general HAVE_STACK_TRACE\n\t  define.\n\t  (zlog_backtrace_sigsafe) Ditto. Add printstack() version of the\n\t  the DUMP macro in this function.\n"
    },
    {
      "commit": "a4b303038363185f60dfef7023cb02715a9a4315",
      "tree": "1eea12d93c580da94af435666428a7a02e67da8e",
      "parents": [
        "d09552d0c7d389f83c3833bf82f7a97da37007da"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:18:38 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:18:38 2006 +0000"
      },
      "message": "[lib] vty_log shouldn\u0027t crash if called when vty isn\u0027t initiliased\n\n2006-05-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* vty.c: (vty_log/vty_log_fixed) dont crash if called when vty\n\t  hasn\u0027t been initiliased.\n"
    },
    {
      "commit": "d09552d0c7d389f83c3833bf82f7a97da37007da",
      "tree": "0e6d58e813515d408b5f04099f0b5f7e12e2aedd",
      "parents": [
        "35cfc90cce32b19c71d2f40aab06d36eb6bfdc44"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:15:46 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:15:46 2006 +0000"
      },
      "message": "[lib] malloc.h is deprecated, try not to include it anymore\n\n2006-05-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* memory.c: malloc.h is deprecated in favour of stdlib.h, however\n\t  we still need it on GNU Libc for mallinfo().\n"
    },
    {
      "commit": "35cfc90cce32b19c71d2f40aab06d36eb6bfdc44",
      "tree": "91b9e00379fb444b98f62f04632809996d2a8186",
      "parents": [
        "105b8239f1d98156c82900d636391f94b787e541"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:08:24 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:08:24 2006 +0000"
      },
      "message": "[lib] include inttypes.h rather than stdint.h, provide defines where missing\n\n2006-05-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zebra.h: Include inttypes.h rather than stdint.h, best practice\n\t  according to the autoconf manual.\n\t  Add UINT*_MAX defines for older platforms lacking these (FBSD 4)\n"
    },
    {
      "commit": "105b8239f1d98156c82900d636391f94b787e541",
      "tree": "9427d5f14b648faaf60503413a7a2446f82713bf",
      "parents": [
        "362b4031faf591afb06b3859952ac5b83723a986"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:02:41 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 08:02:41 2006 +0000"
      },
      "message": "[build] Update SOS CFLAGS and add check for GNU Make in configure.ac\n\n2006-05-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: Update SOS CFLAGS, Xt shouldn\u0027t be used and\n\t  enable debug options.\n\t  Add a check for GNU Make and warn the user if it does not appear\n\t  to be the make used.\n"
    },
    {
      "commit": "362b4031faf591afb06b3859952ac5b83723a986",
      "tree": "92a3002497bddd419333a8a21477140e7840a25d",
      "parents": [
        "369688c0c7a325e889e841afc2d59430baf079a2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 07:54:45 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun May 28 07:54:45 2006 +0000"
      },
      "message": "[vtysh] Add \"show memory\" to vtysh\n\n2006-05-24 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* vtysh.c: (general) Add \u0027show memory\u0027 command.\n"
    },
    {
      "commit": "369688c0c7a325e889e841afc2d59430baf079a2",
      "tree": "55c5e916f607609fc0e242ca874ff14758cc5f44",
      "parents": [
        "825cd49ead7a9222f93b37f65030f5ff325cd4ab"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue May 23 22:27:55 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue May 23 22:27:55 2006 +0000"
      },
      "message": "[bgpd] expand vty help for neighbor ... update-source\n\n2006-05-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_vty.c: (neighbor_update_source_cmd) Expand tab completion\n\t  to make it clear it takes both address and ifname.\n"
    },
    {
      "commit": "825cd49ead7a9222f93b37f65030f5ff325cd4ab",
      "tree": "3af7ef993c19a0fb178aefab60a30cf3f88611f9",
      "parents": [
        "4150f33ec17792c4258cb64de6128928ac104bf2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue May 23 22:20:34 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue May 23 22:20:34 2006 +0000"
      },
      "message": "[doc] document neighbor ..... update-source\n\n2006-05-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgpd.texi: Document the update-source command.\n"
    },
    {
      "commit": "4150f33ec17792c4258cb64de6128928ac104bf2",
      "tree": "164242e7896ffbd52205cce989afff56058b4e3e",
      "parents": [
        "dbf7d13d06a9ab01e39afa1545b30808d5653341"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue May 23 22:10:55 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue May 23 22:10:55 2006 +0000"
      },
      "message": "[vtysh] suppress output in \u0027show logging\u0027 for daemons not present\n\n2006-05-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* vtysh.c: (vtysh_show_logging_cmd) Suppress output for daemons\n\t  which are not running (Andrew Schorr).\n"
    },
    {
      "commit": "dbf7d13d06a9ab01e39afa1545b30808d5653341",
      "tree": "818fe7c02db9b0ebfe6ec07b00b8239bd703910e",
      "parents": [
        "9c37851eac4e75cda515761cae7c63309add30ea"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue May 23 22:10:01 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue May 23 22:10:01 2006 +0000"
      },
      "message": "[vtysh] Add \u0027show logging\u0027 command\n\n2006-05-17 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* vtysh.c: (general) Add \u0027show logging\u0027 command.\n"
    },
    {
      "commit": "9c37851eac4e75cda515761cae7c63309add30ea",
      "tree": "3fcf98573c83f117f1e0219fcab8e160af70e56a",
      "parents": [
        "0f38dc4d4729b562551f8f53e7343f5a53b2dbf5"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sun May 21 04:04:49 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sun May 21 04:04:49 2006 +0000"
      },
      "message": "[interface configuration] Try to avoid losing address info after shutdown.\n2006-05-21 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if.h: (struct connected) Document the meaning of the\n\t  ZEBRA_IFC_REAL and ZEBRA_IFC_CONFIGURED flags.\n\t* connected.c: (connected_withdraw) Do not delete the connected\n\t  address if the ZEBRA_IFC_CONFIGURED flag is set.\n\t  (connected_add_ipv4,connected_add_ipv6) Before calling\n\t  connected_withdraw, unset the ZEBRA_IFC_CONFIGURED flag\n\t  on the superseded connected structure.\n"
    },
    {
      "commit": "0f38dc4d4729b562551f8f53e7343f5a53b2dbf5",
      "tree": "e6d4f73e30c3d6e0859f3bc4e4867fb2323284bf",
      "parents": [
        "55196042ac8def6f0057039017eb6a400d7f73fb"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri May 19 13:53:23 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri May 19 13:53:23 2006 +0000"
      },
      "message": "[interface configuration] Preserve flag indicating address was set by quagga.\n2006-05-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* connected.c: (connected_add_ipv4,connected_add_ipv6) If the\n\t  new struct connected matches an already existing one\n\t  (that will consequently be removed by connected_withdraw),\n\t  then be sure to preserve the ZEBRA_IFC_CONFIGURED flag.\n"
    },
    {
      "commit": "55196042ac8def6f0057039017eb6a400d7f73fb",
      "tree": "1953ee9c087c73040591d4e7b5290abdf08fcabf",
      "parents": [
        "6685978081f24f154f058bff48d54396c91271e1"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed May 17 15:04:59 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed May 17 15:04:59 2006 +0000"
      },
      "message": "[debug] Improve zebra kernel socket debug message to include IP addresses.\n2006-05-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* kernel_socket.c: (ifam_read_mesg) Improve debug message\n\t  to show the IP address.\n"
    },
    {
      "commit": "6685978081f24f154f058bff48d54396c91271e1",
      "tree": "7dcb1c84984902c941a72274a6bfb758a96db4de",
      "parents": [
        "d6d672aaf930661f502a623d18d7a4abb4f184f2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 17:00:37 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 17:00:37 2006 +0000"
      },
      "message": "[zebra] Remove private command string table\n\n2006-05-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zserv.c: (general) Remove the private zebra_command_str\n\t  in favour of newly added libzebra zserv_command_string.\n"
    },
    {
      "commit": "d6d672aaf930661f502a623d18d7a4abb4f184f2",
      "tree": "fc85e80d1a268dfc420ab5f4f6a306b8e246fc46",
      "parents": [
        "d16e04335968ea05fda60cec01b48df8c345a8ce"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 16:56:51 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 16:56:51 2006 +0000"
      },
      "message": "[lib] Add string mapping table for Zserv commands\n\n2006-05-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* log.c: (general) Generalise struct zebra_route_desc into\n\t  struct zebra_desc_table and, similar to route_types, add a\n\t  command_types table to describe Zserv protocol commands.\n\t  (route_types[]) use a macro to use designated initialisers\n\t  while avoiding tedious duplication.\n\t  (zserv_command_string) lookup string from zebra_desc_table,\n\t  similar to zebra_route_string\n\t* zebra.h: Add declaration for zserv_command_string, adjust the\n\t  comments to reflect zebra_desc_table.\n"
    },
    {
      "commit": "d16e04335968ea05fda60cec01b48df8c345a8ce",
      "tree": "9ae64651811fa1dfbaba9dc4d114c0a72ace2a55",
      "parents": [
        "0b26f81bf9e81be0f65787c48061709427c70d10"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 10:56:46 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 10:56:46 2006 +0000"
      },
      "message": "[lib] CID #39, Fix the vty completion leak-fix to only free when desired\n\n2006-05-13 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* vty.c: (vty_describe_command) CID #39 fix was too hasty, just\n\t  cause it /can/ leak doesn\u0027t mean it always will have, check\n\t  first.\n"
    },
    {
      "commit": "0b26f81bf9e81be0f65787c48061709427c70d10",
      "tree": "e10561c1d301e78de8561f26123687def19c0a46",
      "parents": [
        "cf1ce250d20003ae94c835e73e95e7442d7a5b53"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 10:47:53 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 10:47:53 2006 +0000"
      },
      "message": "[ospf6d] GNU Zebra 3563: Fix as-external forwarding address\n\n2006-03-01  Yasuhiro Ohara  \u003cyasu@sfc.wide.ad.jp\u003e\n\n\t* ospf6_asbr.c: fix bug of needless forwarding address\n\t* ospf6d.h: version 0.9.7r\n"
    },
    {
      "commit": "cf1ce250d20003ae94c835e73e95e7442d7a5b53",
      "tree": "713c0ed34cf2def64257b6906ebd861766a9882c",
      "parents": [
        "932bf1976ae4c84a43b92b2ba8ca798828896249"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 10:46:07 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 10:46:07 2006 +0000"
      },
      "message": "[ospf6d] GNU Zebra #3562: ABR Crash fix, memory fixes, route table debugs\n\n2006-02-22  Yasuhiro Ohara  \u003cyasu@sfc.wide.ad.jp\u003e\n\n\t* valgrind check and memory fix\n\t* route table identification string added\n\t* ospf6d.h: version 0.9.7q\n"
    },
    {
      "commit": "932bf1976ae4c84a43b92b2ba8ca798828896249",
      "tree": "32e5b84eeb13e555d991d79cc2f32c154b0d920e",
      "parents": [
        "cb4b88452e04a0102fedff4f01a2246f5e70dea9"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 10:42:24 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 10:42:24 2006 +0000"
      },
      "message": "[ospf6d] GNU Zebra 3560: Call ospf6_maxage_remove when out of Exchange/Loading\n\n2005-10-20  Yasuhiro Ohara  \u003cyasu@sfc.wide.ad.jp\u003e\n\n\t* ospf6_neighbor.c: add the calling of ospf6_maxage_remove ()\n\twhen the neighbor went out of Exchange/Loading.\n"
    },
    {
      "commit": "cb4b88452e04a0102fedff4f01a2246f5e70dea9",
      "tree": "02af223018f79db39a091a985b7605539cb180a5",
      "parents": [
        "b2518c1e884cb8b4f4502f8b90b1c368e1a352ec"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 10:39:30 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 10:39:30 2006 +0000"
      },
      "message": "[ospf6d] Import GNU Zebra CVSps#3559: Fix inter-area as-ext bug, cleanup debug\n\n2005-10-06  Yasuhiro Ohara  \u003cyasu@sfc.wide.ad.jp\u003e\n\n\t* ospf6_asbr.c: fix bug of calculating AS-External routes\n\t  in other areas. Add debugging function for border-router\n\t  calculation.\n\t* ospf6d.h: version 0.9.7p\n"
    },
    {
      "commit": "b2518c1e884cb8b4f4502f8b90b1c368e1a352ec",
      "tree": "7099a9dd8bf20d560ed9565b8ecc9eaaf50bd203",
      "parents": [
        "06e110f9372f61bea23c2eaa25e7850b254bbd1a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:48:40 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 12 23:48:40 2006 +0000"
      },
      "message": "[bgpd] CID #4,#5,#9,#10, simplify aspath_print_vty usage\n\n2006-05-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_aspath.{c,h}: (aspath_print_vty) take a format string,\n\t  so as to reduce burden on callers, all in bgp_route.c\n\t* bgp_route.c: (route_vty_out{,tmp}) Update to match\n\t  aspath_print_vty, simplifying checks needed to get spacing\n\t  right. CID #4,#5.\n\t  ({damp,flap}_route_vty_out) Ditto, CID #9, #10\n"
    }
  ],
  "next": "06e110f9372f61bea23c2eaa25e7850b254bbd1a"
}
