)]}'
{
  "log": [
    {
      "commit": "f018db83a0746f9336d04e50dd06f3bbf6565f1c",
      "tree": "4c2ba0e661abd2651ee6fa1bd7be9157c8859411",
      "parents": [
        "343aa82219c0cab0315e29267eb303127215caea"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:10 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:35:50 2012 +0200"
      },
      "message": "bgpd: optimize bgp_aggregate_[increment|decrement]()\n\n  If there were no aggregates configured this functions were allocating\nand freeing a struct bgp_node for every call, and it\u0027s called for every\nprefix received.\n\n* bgp_route.c: Bail out early if the there are no aggregates configured.\n  Change from bgp_node_get() to bgp_node_lookup() that does not allocate\n  a new struct bgp_node if not found.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "343aa82219c0cab0315e29267eb303127215caea",
      "tree": "17e6b77072657a1a8ae04aeacb715652de1c4ddb",
      "parents": [
        "6a4677b723b6f79997ca15ee202c36d528d3dfcf"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:08 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:35:50 2012 +0200"
      },
      "message": "bgpd: optimize bgp_update_main() in the soft_reconfig case\n\nAvoids 3 checks per call.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6a4677b723b6f79997ca15ee202c36d528d3dfcf",
      "tree": "d1928cd0835791b91870bfb9e4fb9eea3c75b07b",
      "parents": [
        "577ac57b78e0ee3cbc5afdb5f54a660bd0126136"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:07 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:35:47 2012 +0200"
      },
      "message": "bgpd: optimize holdtime timer cancelling\n\n* bgp_packet.c: (bgp_update_receive) for every update received we queue\n  an event just to cancel the holdtime timer, done in bgp_fsm_update().\n  Instead cancel the timer directly an avoid a scheduling pass.\n\n  This incidently fixes another problem found on a slow box, where thousands\nof events threads were queued, and run, but never freed, because they are\nmoved to the unused list that grows without bounds.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "577ac57b78e0ee3cbc5afdb5f54a660bd0126136",
      "tree": "ec891bb869f46e7a4cd30c1163dfbc768587002b",
      "parents": [
        "558d1fec11749d3257e32561d45b5c1ec0622cf4"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:06 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:50 2012 +0200"
      },
      "message": "bgpd: Remove useless initialization\n\nIt\u0027s initialized below\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "558d1fec11749d3257e32561d45b5c1ec0622cf4",
      "tree": "4570b1643db6446dc9f14f9c0bf7fd64a3325117",
      "parents": [
        "489d005a9ad94675f40dc7bceff6176cfad36d45"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:05 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:50 2012 +0200"
      },
      "message": "bgpd: reduce struct attr_extra allocations/freeing\n\nTry to use on stack structs for temporary uses.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "489d005a9ad94675f40dc7bceff6176cfad36d45",
      "tree": "c11edc9588fc1fd4ccef33f168a7367d0a34db65",
      "parents": [
        "6182d65b23fc0362b173e2a9314fa4551523a1c2"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:03 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:49 2012 +0200"
      },
      "message": "bgpd: use on stack struct attr_extra in bgp_update_receive()\n\nReduce memory heap fragmentation and pressure on the memory allocator.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6182d65b23fc0362b173e2a9314fa4551523a1c2",
      "tree": "fb99eb9565f5ea8aa6a8b88eb9c4c05dc7cf364a",
      "parents": [
        "b9f1dca10f9a9bf853a9999a117c8cdeec5b7b69"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:02 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:49 2012 +0200"
      },
      "message": "bgpd: fix struct attr_extra leak in bgp_default_originate()\n\n  The call to bgp_attr_default_set() above creates the attr_extra struct,\nbut the attr.extra \u003d NULL initialization was leaking it.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b9f1dca10f9a9bf853a9999a117c8cdeec5b7b69",
      "tree": "b6382403ba177cb56f0ca6054db1ce32428fd7f2",
      "parents": [
        "1a2fd7078f943e2207ee0f1b0dafdcd2d9c81925"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:01 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:49 2012 +0200"
      },
      "message": "bgpd: use on stack struct attr_extra in bgp_attr_unintern()\n\n  Reduce memory heap fragmentation and pressure on the memory allocator.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1a2fd7078f943e2207ee0f1b0dafdcd2d9c81925",
      "tree": "da0852c5c4019c6c1893dec384e9f20df26cea29",
      "parents": [
        "938ef3a22535292dd36c250e5329f97d977e51df"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:00 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:49 2012 +0200"
      },
      "message": "bgpd: cleanup bgp_attr_unintern()\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "938ef3a22535292dd36c250e5329f97d977e51df",
      "tree": "a854c21dd840e7558a482bf4812b857583da3591",
      "parents": [
        "7fb0cd82c26492004a106bec7ca4afdf4684fabb"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:52:59 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:49 2012 +0200"
      },
      "message": "bgpd: use on stack struct attr_extra on bgp_attr_aggregate_intern()\n\nReduce memory heap fragmentation and pressure on the memory allocator.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7fb0cd82c26492004a106bec7ca4afdf4684fabb",
      "tree": "1f901bbc121337b9c421eb48d7bcc413ad140753",
      "parents": [
        "e16a413313cf985ae2b8d2f1a9e8fd0ab6f5b9fc"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:52:58 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:49 2012 +0200"
      },
      "message": "bgpd: reduce attrhash_make_key() indirections\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e16a413313cf985ae2b8d2f1a9e8fd0ab6f5b9fc",
      "tree": "e6810289e60312da431a8f992903275d952d0e6b",
      "parents": [
        "8ff56318a8bd188cfcc1cdab689c46c326b50d38"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:52:57 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:49 2012 +0200"
      },
      "message": "bgpd: remove some useless initializations\n\n* bgp_attr.c: (bgp_attr_default_intern) bgp_attr_default_set() already\n  initializes the memory. Fixes a struct attr_extra leak.\n* bgp_route.c: Remove useless on stack struct initializations.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8ff56318a8bd188cfcc1cdab689c46c326b50d38",
      "tree": "6b7b718166aa6fe3b7264d3efba9c39750f5917b",
      "parents": [
        "c76275ee960c708408646d8a680b201b27cb9c1a"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:52:56 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:49 2012 +0200"
      },
      "message": "bgpd: optimize bgp_info_cmp()\n\n* bgp_route.c: (bgp_info_cmp) Reduce indirections, precalculate some\n  values that are used several times, reduce conditionals.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c76275ee960c708408646d8a680b201b27cb9c1a",
      "tree": "59daf9a650950d35aa5350270118cd94e4a1fde3",
      "parents": [
        "6d85b15bbb2fd3c263d5d4b402c88ff348af877b"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:52:55 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:44 2012 +0200"
      },
      "message": "bgpd: optimize loops on [e]community_hash_make()\n\n  This change reduces loop count. Less jumps.\n\n* bgp_community.c: One loop per community.\n* bgp_ecommunity.c: One loop per ecommunity.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6d85b15bbb2fd3c263d5d4b402c88ff348af877b",
      "tree": "c8be5e782f4425840ee93e167eb8d7c1ed3f4e4c",
      "parents": [
        "14542f3edaa43113880e8bb69612c553f02bdf22"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:52:54 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:10 2012 +0200"
      },
      "message": "bgpd: remove calls to peer_sort() from fast-path\n\n  peer_sort() it\u0027s called so much as to be annoying. In the assumption\nthat the \u0027sort\u0027 of the peer doesn\u0027t change during an established session,\nI have changed all calls to peer_sort() in the \u0027fast-path\u0027 to only check\nthe \u0027sort\u0027. All the calls from the vty and such still recalculate the sort\nand store it in the peer.\n\n  There\u0027s a lot of other calls to peer_sort() that could be changed but some\nmaube tricky, someone more knowledgeable may try to reduce them.\n\n  This hits peer_sort() from 5th out of the stadium^H^H list on a full\ninternet table loading profiling session.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "14542f3edaa43113880e8bb69612c553f02bdf22",
      "tree": "247dd2b8ef6e1cea2d91d39989a943fddfb481ca",
      "parents": [
        "10f9bf3f2021f874e574e4ebae9413bee982ed2b"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:52:53 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:10 2012 +0200"
      },
      "message": "bgpd: debug buffers cleanup and optimization\n\nJust the first change pushes bgp_update_receive() from 6th to ~14th on a\nfull internet table load profiling session.\n\n* bgp_debug.c: (bgp_update_receive) The attrstr initialization is expensive,\n  moved under the debug conditional where it is used and just initialize the\n  first char to NULL.\n  (bgp_update_default_send) Initialize attrstr needed for bgp_dump_attr().\n  Moved some buffers used for printing IP[4|6] addresses under the debug\n  conditionals that use them and reduced its size.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "10f9bf3f2021f874e574e4ebae9413bee982ed2b",
      "tree": "5102a98c91d7d60380c07c08d0aaa32aa19cdbdf",
      "parents": [
        "f669f7d25f0f491d5e487897227ff434aef20406"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:52:52 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:07 2012 +0200"
      },
      "message": "bgpd: optimize bgp_nexthop_self()\n\n  This function scores 2nd, profiling a full internet table load. It\u0027s called\nfor every prefix received.\n  Instead of looping in the interface lists comparing addresses use a hash\nto mantain them.\n\n* bgpd.c: Init the own address hash.\n* bgp_nexthop.c: Introduce methods to maintain an own address hash.\n  (bgp_connected_add) add addresses to the hash.\n  (bgp_connected_delete) delete addresses from the hash.\n  (bgp_nexthop_self) lookup addresses in the hash. Removed the unused afi_t\n  parameter.\n* bgp_route.c: (bgp_update_main) Micro-optimization, rearranged condition to\n  not lookup the hash for bogus nexthops (0.0.0.0 or a class D/E address)\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f669f7d25f0f491d5e487897227ff434aef20406",
      "tree": "4b040b835be1d47b7eca7240b7d7aa4b9e6f177b",
      "parents": [
        "8692c506520f6b268525b80890702432c95f13c4"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:52:51 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:25:02 2012 +0200"
      },
      "message": "bgpd: optimize aspath string representation and assegments handling\n\n* bgp_aspath.h: Add str_len to struct aspath.\n* bgp_aspath.c: Save the aspath string representation length and use it\n  instead of strlen().\n  (aspath_make_str_count) assign the string buffer directly for\n  consistency with the string length and change the return type to void.\n  (aspath_dup) use str_len and copy the string instead of calling\n  aspath_make_str_count().\n  (assegment_data_new) change from XCALLOC to XMALLOC. All users initialize\n  the memory before use.\n  (assegment_data_free) unused, removed.\n  (aspath_intern) check that there\u0027s always a -\u003estr pointer.\n  (aspath_hash_alloc) reuse assegments and string representation instead of\n  copying them.\n  (aspath_parse) now aspath_hash_alloc does not dupes memory, free the\n  temporary structures only if the aspath it is in the hash.\n  (aspath_cmp_left) remove useless NULL initialization.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8692c506520f6b268525b80890702432c95f13c4",
      "tree": "0446939f0c84705bc0da3f23b45e97fd21886269",
      "parents": [
        "1b79fcb646f66682a62cf34f3cc343b1a9706699"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 15:17:34 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon May 21 15:48:30 2012 +0200"
      },
      "message": "bgpd: fix crash with vpnv4 soft-reconfiguration\n\nbgp_afi_node_get() expects a non-NULL prd for a SAFI_MPLS_VPN prefix.\n\n* bgp_route.c: pass down the struct prefix_rd from bgp_soft_reconfig_in()\n  and bgp_soft_reconfig_rsclient().\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1b79fcb646f66682a62cf34f3cc343b1a9706699",
      "tree": "6b9b215b3bac9b46027266fff10a6c53e2665624",
      "parents": [
        "7c9c6aebe8daabece9e78d47727dcdcb757c0a63"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 15:17:31 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon May 21 15:41:21 2012 +0200"
      },
      "message": "lib: fix thread_cancel_event()\n\n  ospfd was crashing some times on neighbour going down. The cause was that\nospf_nsm_event() was accessing already freed memory in ospf_nbr_delete()\ncall from ospf_nsm_event().\n\n  What happens is that since commit b5043aab (lib: fix incorrect thread\nlist...) now a thread can be on the event and ready lists but\nthread_cancel_event() doesn\u0027t account for that.\n\n* thread.c: (thread_cancel_event) loop on the ready list too to cancel\n  pending events.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7c9c6aebe8daabece9e78d47727dcdcb757c0a63",
      "tree": "cba28a59fdd2012b8cadba54335901b47dd255de",
      "parents": [
        "36735ed988f96810e78d0ace2f7d8e6397db5c50"
      ],
      "author": {
        "name": "Roman Hoog Antink",
        "email": "rha@open.ch",
        "time": "Wed May 09 06:35:34 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon May 21 15:41:14 2012 +0200"
      },
      "message": "lib: drop heuristic IPv6 address recognition\n\n* command.c: (cmd_ipv6_match) Drop IPv6 address recognition\n  heuristics and solely rely on inet_pton, because strings\n  like \"abcd\" were mistaken for IPv6 addresses.\n  This affects e.g. the command \"neighbour WORD peer-group\",\n  which won\u0027t work with words consisting of up to 4 characters\n  between \u0027a\u0027 and \u0027f\u0027 and digits.\n\nFrom: Roman Hoog Antink \u003crha@open.ch\u003e\n[full delete instead of #if 0]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "36735ed988f96810e78d0ace2f7d8e6397db5c50",
      "tree": "3a8f876383d07a33aa7b76d7519a75d8678bbb1f",
      "parents": [
        "42cb6b6655d0cc141374ec373220d244f81fbba0"
      ],
      "author": {
        "name": "Joachim Nilsson",
        "email": "troglobit@gmail.com",
        "time": "Wed May 09 13:38:36 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 09 13:51:54 2012 +0200"
      },
      "message": "zebra: fix up compilation without rtadv/IPv6\n\nlet\u0027s ground the rtadv.h file if route advertisements are disabled. And\nfix up the CLI for it, as well as move the \"show ip mroute\" to its\nproper place.\n\n  * zebra/rtadv.h: #ifdef RTADV\n  * zebra/main.c: #ifdef RTADV\n  * zebra/zebra_vty.c: move \"show ip mroute\" out of #ifdef IPV6\n\nFrom: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\n[moved #ifdef RTADV to rtadv.h]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "42cb6b6655d0cc141374ec373220d244f81fbba0",
      "tree": "e4161a0645594a56713ac939dd450f598aeb0592",
      "parents": [
        "a4c06dec1ebe41dd4444d387478500e6022e2209"
      ],
      "author": {
        "name": "G.Balaji",
        "email": "balajig81@gmail.com",
        "time": "Mon Apr 02 23:31:29 2012 +0530"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:13:49 2012 +0200"
      },
      "message": "zebra: feed Connected routes into MRIB\n\nThe SAFI_MULTICAST RIB needs to contain Connected routes so that the\nnexthop lookup does not fail and so that multicast routing daemons do\nnot need to sidestep and look into SAFI_UNICAST to be aware of connected\nsubnets.\n\n  * zebra/connected.c: add \u0026 delete connected in SAFI_MULTICAST\n\nSigned-off-by: G.Balaji \u003cbalajig81@gmail.com\u003e\n[merged add/delete patches]\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "a4c06dec1ebe41dd4444d387478500e6022e2209",
      "tree": "0270c50d6b4c1a7dec292599890e0aaaae3f99a1",
      "parents": [
        "682ca04c4032bfbf31e51df2472345fda1ff7b2c"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Fri Apr 20 14:28:40 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:34 2012 +0200"
      },
      "message": "zebra: no need to clear memory of the netlink buffers\n\nThe memory is always written before sending. Clearing it before use\nslows netlink_route_multipath() down considerably and it\u0027s pretty\nnoticeable in a full-internet table scenario loading.\n\n  * zebra/rt_netlink.c: subtract bulk buffer size from clear\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n[reworded commit message]\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "682ca04c4032bfbf31e51df2472345fda1ff7b2c",
      "tree": "ec75a530cd72d30b41f90c2ddbd2878791e3f95f",
      "parents": [
        "37beff6feb7c1715a19b59b8a87edcb6b50d5ac2"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Tue Apr 10 16:57:27 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:34 2012 +0200"
      },
      "message": "bgpd: cleanup, use correct buffer sizes for sockunion2str()\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "37beff6feb7c1715a19b59b8a87edcb6b50d5ac2",
      "tree": "c36dd44b545b5ecc093f2dd37ba78c891eb41a22",
      "parents": [
        "128293286a8be01b99ed60db53e19ce6e2669558"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Tue Apr 10 16:57:26 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:34 2012 +0200"
      },
      "message": "lib: remove sockunion related unused definitions\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "128293286a8be01b99ed60db53e19ce6e2669558",
      "tree": "59bf4be72bc1905a404c572d0446390f1587c67b",
      "parents": [
        "c63b83fe8d1addecc949258479b8d54180c4da60"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Tue Apr 10 16:57:25 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:28 2012 +0200"
      },
      "message": "lib, zebra: extend use of sockunion2ip macro\n\n  * lib/sockunion.c,\n  * zebra/zebra_rib.c: replace -\u003esin.sin_addr.s_addr with sockunion2ip\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n[reworded commit message]\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "c63b83fe8d1addecc949258479b8d54180c4da60",
      "tree": "fbc58da3014db1cf74a2f8a91a33fe941968815d",
      "parents": [
        "d227617a972bb20a974be68bea5032e692a0970f"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Tue Apr 10 16:57:24 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:27 2012 +0200"
      },
      "message": "bgpd: Fix memory leak of some \"show ip bgp neighbor\" commands\n\nsockunion_str2su() use is prone to memory leaks. Remove it\u0027s use all over\nthe code.\n\nAt least these commands leaked a sockunion union:\n    - show ip bgp vpnv4 ... routes\n    - show ip bgp ... received prefix-filter\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "d227617a972bb20a974be68bea5032e692a0970f",
      "tree": "550ab426e690a34ffe8955eeccf2c93a616adef2",
      "parents": [
        "0c5ed3ed00f630ae95dc2dfd4b5a938683e2a99e"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Tue Apr 10 16:57:23 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:27 2012 +0200"
      },
      "message": "lib: remove last uses of sockunion_su2str()\n\nUse of this function is prone to memory leaks.\n\nThis fixes a memory accounting bug for vty denied connections.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "0c5ed3ed00f630ae95dc2dfd4b5a938683e2a99e",
      "tree": "9e478062fed566ce245113a166a6c8d1eec9fbe2",
      "parents": [
        "4fe080d7ee4c924a962d14423d94b4b8d8aba110"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Tue Apr 10 16:57:22 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:27 2012 +0200"
      },
      "message": "bgpd: Fix memory leak with \u0027set ip next-hop peer-address\u0027\n\nA route-map with the mentioned statement causes a memory leak for every\nprefix that matches.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "4fe080d7ee4c924a962d14423d94b4b8d8aba110",
      "tree": "d1dab521b8d05a95dccf26628fcf5ed629b738e7",
      "parents": [
        "ddc943dec3c017583f81cce388c7d453293156c7"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Fri Apr 13 13:46:08 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:27 2012 +0200"
      },
      "message": "bgpd: fix for route-maps with \"match peer local\" statements\n\nA route-map with a \u0027match peer local\u0027 statement it\u0027s shown like\n\u0027match peer (null)\u0027 on config output...\n\n... and it\u0027s unparsable on daemon startup.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "ddc943dec3c017583f81cce388c7d453293156c7",
      "tree": "a36d2bca91b1f3a7545a135b3bafccc40d0ca47b",
      "parents": [
        "8794e8d229dc9fe29ea31424883433d4880ef408"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Fri Apr 13 13:46:07 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:21 2012 +0200"
      },
      "message": "bgpd, zebra: Fix format for some metric outputs\n\nMetrics are unsigned values.\n\n  * bgpd/bgp_{debug,route,vty}.c,\n  * zebra/zebra_vty.c: replace %d with %u for metrics \u0026 distances\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n[reworded commit message]\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "8794e8d229dc9fe29ea31424883433d4880ef408",
      "tree": "6ecfaad3044ad522eb1fc1e7aba989552eeec816",
      "parents": [
        "7621f336e2f346edee43227f0b1ef93fe769720b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Feb 13 13:53:07 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed May 02 11:16:11 2012 +0100"
      },
      "message": "bgpd: Fix regression in args consolidation, total should be inited from args\n\n* bgp_attr.c: (bgp_attr_unknown) total should be initialised from the args.\n"
    },
    {
      "commit": "7621f336e2f346edee43227f0b1ef93fe769720b",
      "tree": "2bda36681214336bf55345cd47efb2c25fc460c2",
      "parents": [
        "1dba254e107dd0c4254d58e9304fc6293b46fd4d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue May 01 16:24:35 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed May 02 11:02:11 2012 +0100"
      },
      "message": "bgpd: Make socket init separate, so unit tests work again.\n\n* Separate out BGP socket initialisation from bgp_get, and make it an\n  explicit function. Allows unit tests to work again and probably also\n  benefits dry-run.\n* bgpd.c: (bgp_get) move socket init out...\n  (bgp_socket_init) to here\n* bgp_main.c: and call it after dry-run.\n* bgpd.h: (bgp_socket_init) add prototype\n"
    },
    {
      "commit": "1dba254e107dd0c4254d58e9304fc6293b46fd4d",
      "tree": "963153a04b71da32dd5906b80aaf24a1bb6c93e9",
      "parents": [
        "6ebeebb50610cc86d16e56bc1a33d63340094215"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue May 01 16:20:33 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed May 02 11:02:10 2012 +0100"
      },
      "message": "tests: Fix some compile errors and warnings\n\n* aspath_test.c: match changes in aspath_unintern. Fix printf size_t warning.\n* bgp_capability_test.c: compile warnings.\n* bgp_mp_attr_test.c: update for attr parser context struct\n* ecommunity_test.c: ecommunity_free/ecommunity\n* test-checksum.c: some unused vars and funcs without need of prototypes.\n"
    },
    {
      "commit": "6ebeebb50610cc86d16e56bc1a33d63340094215",
      "tree": "77c1f0d9d199a96c6d7ccba19922e5170682e87c",
      "parents": [
        "828f235df4b6a322aac58e1b7d5089c7f9d6cc0a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed May 02 11:01:01 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed May 02 11:02:10 2012 +0100"
      },
      "message": "Revert \"tests: disable broken tests/bgp_mp_attr_test.c\"\n\nThis reverts commit d78e2b8b562f8496aaf2977f7371415b71e82433. Next 2\ncommits fix it.\n"
    },
    {
      "commit": "828f235df4b6a322aac58e1b7d5089c7f9d6cc0a",
      "tree": "492a0ba45a638fa0c8998206a4de7afbbf91454f",
      "parents": [
        "d78e2b8b562f8496aaf2977f7371415b71e82433"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue May 01 21:43:53 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue May 01 21:43:53 2012 +0200"
      },
      "message": "release: 0.99.21\n"
    },
    {
      "commit": "d78e2b8b562f8496aaf2977f7371415b71e82433",
      "tree": "b2cadec93dcb3871fd1814b036613b7771805698",
      "parents": [
        "4b5a2103b7d03b9209cfa3668d9cebead697bc82"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue May 01 18:08:43 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue May 01 18:53:16 2012 +0200"
      },
      "message": "tests: disable broken tests/bgp_mp_attr_test.c\n\nit doesn\u0027t compile currently; it\u0027ll be fixed after the 0.99.21 release.\n\n  * tests/bgp_mp_attr_test.c: wrap in #if 0 for now\n\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "4b5a2103b7d03b9209cfa3668d9cebead697bc82",
      "tree": "7b7114210e3eedb9987f837c77d8a4121d495973",
      "parents": [
        "a41242bed823db77186ed7d11953cffaa0c3b733"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Sun Apr 29 16:47:08 2012 -0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue May 01 17:51:26 2012 +0200"
      },
      "message": "redhat: add systemd service files\n\n * redhat/*.service: add systemd service file for each routing daemon\n * redhat/quagga.sysconfig: add comment about watchquagga and systemd\n * redhat/Makefile.am: add systemd service files to distribution\n\nSigned-off-by: David Ward \u003cdavid.ward@ll.mit.edu\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "a41242bed823db77186ed7d11953cffaa0c3b733",
      "tree": "a8ed68356623d056fcb42893a53ad29f27d673c7",
      "parents": [
        "0bd268a5232f91c8cf01366b7ae43bcfed1dc8fe"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Sun Apr 29 16:47:07 2012 -0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue May 01 17:51:26 2012 +0200"
      },
      "message": "redhat: update initscripts\n\nTaken from Fedora packaging with additional fixes.\n\n * redhat/*.init: make all initscripts LSB-compliant;\n     store the daemon configuration file location in $CONF_FILE,\n     and perform existence testing before starting the daemon\n * redhat/babeld.init: add initscript for Babel routing engine\n * redhat/quagga.sysconfig: add command-line options for babeld;\n     remove the daemon configuration file locations from $*_OPTS;\n     clarify directions for configuring watchquagga\n * redhat/Makefile.am: add babeld.init to distribution\n\nSigned-off-by: David Ward \u003cdavid.ward@ll.mit.edu\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "0bd268a5232f91c8cf01366b7ae43bcfed1dc8fe",
      "tree": "cf81538bb625b6c900c3d0986c9eaf7c09178265",
      "parents": [
        "7b0df9c5bad83e2a2eb047e84edc00b3bc1d562c"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Sun Apr 29 16:47:06 2012 -0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue May 01 17:51:26 2012 +0200"
      },
      "message": "redhat: add logrotate configuration for babeld and isisd\n\nSigned-off-by: David Ward \u003cdavid.ward@ll.mit.edu\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "7b0df9c5bad83e2a2eb047e84edc00b3bc1d562c",
      "tree": "edfd323bf55d03e48f235730e8e9aa512eecdad1",
      "parents": [
        "f027d331fc24c0b4aed77ab7507a9635db313f3c"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Mon Apr 30 11:36:16 2012 -0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue May 01 17:51:26 2012 +0200"
      },
      "message": "doc: add ospfclient(8) and watchquagga(8) man pages\n\nTaken from Fedora packaging.\n\nSigned-off-by: David Ward \u003cdavid.ward@ll.mit.edu\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "f027d331fc24c0b4aed77ab7507a9635db313f3c",
      "tree": "9225361fe97a2b0f03ff6d1b5e99b2bb861b5c90",
      "parents": [
        "2e14a748061921f1f656b07890c4932f97c2baaa"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Mon Apr 30 11:36:15 2012 -0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue May 01 17:51:26 2012 +0200"
      },
      "message": "doc: only package man pages for daemons that are built\n\nSigned-off-by: David Ward \u003cdavid.ward@ll.mit.edu\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "2e14a748061921f1f656b07890c4932f97c2baaa",
      "tree": "2504229d38766059cb139793348eec4d30c15e58",
      "parents": [
        "fac3c2453a06bce773a3f4ae6834f5f9a317b88c"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Sun Apr 29 16:47:03 2012 -0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 30 16:13:47 2012 +0200"
      },
      "message": "tools: use standard interpreter path in all Perl scripts\n\nSigned-off-by: David Ward \u003cdavid.ward@ll.mit.edu\u003e\n[changed /usr/bin/perl to /usr/bin/env perl]\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "fac3c2453a06bce773a3f4ae6834f5f9a317b88c",
      "tree": "00b1e95d9fc2d148d1731967ccd104af3f7615c6",
      "parents": [
        "27f689793a25a66cf62561ac1d1302e01983a805"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sat Apr 28 22:37:20 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sat Apr 28 22:37:20 2012 +0200"
      },
      "message": "bgpd: fix up multipath merge breakage\n\nthe BGP multipath code was developed against a pre-f6f434b Quagga where\nbgp_attr_unintern and ecommunity_free took single-star pointers.  They\nnow take double-star pointers.\n\n  * bgpd/bgp_mpath.c: fix up bgp_attr_unintern \u0026 ecommunity_free calls.\n\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "27f689793a25a66cf62561ac1d1302e01983a805",
      "tree": "1f529ffcd0147f72d5977bd63dca5e20e8c1b42e",
      "parents": [
        "61a81bea6d21dedc62931d6925d0608ebc45c196"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Mon Mar 12 13:52:42 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sat Apr 28 21:38:44 2012 +0200"
      },
      "message": "babeld: merge kernel_zebra.c into kernel.c.\n\nIn upstream babel, we include different kernel_foo files depending on the\nplatform we compile for.  In Quagga, this is not needed, and it avoids\ntricky autotools issues.  (All autotools issues are tricky.)\n\n[David: without this commit, build breaks.]\n\nFrom: Juliusz Chroboczek \u003cjch@pps.jussieu.fr\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "61a81bea6d21dedc62931d6925d0608ebc45c196",
      "tree": "d5dbec7a4ae28ef82595f5242d4086ec33c09cbb",
      "parents": [
        "8d79efddb9c63f3b45e0ee7cac9508509b3b939c"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Mar 12 13:51:49 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sat Apr 28 21:28:01 2012 +0200"
      },
      "message": "babeld: Include babel_main.h in noinst_HEADERS.\n\nbabeld wouldn\u0027t build in a dist tarball without this.\n\nFrom: Denis Ovsienko \u003cinfrastation@yandex.ru\u003e\nSigned-off-by: Juliusz Chroboczek \u003cjch@pps.jussieu.fr\u003e\n[fixed up git message]\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "8d79efddb9c63f3b45e0ee7cac9508509b3b939c",
      "tree": "c2b652492dffa025fd18a24aba12f30ca04b4e04",
      "parents": [
        "9665856e3718e42068e7d897f5e2468e77fb8c17"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Apr 20 17:26:48 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Apr 20 17:29:44 2012 +0200"
      },
      "message": "lib: bump ZSERV_VERSION to 2\n\ncontinually changing the zserv protocol without bumping up the version\nnumber has made it impossible to talk to zebra without knowing the exact\nversion.  in reality, increasing the version number more often guards\nagainst inadvertedly running incompatible versions of a daemon and zebra\nas well as aids external development.\n\n  * lib/zclient.h: #define ZSERV_VERSION 2\n\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "9665856e3718e42068e7d897f5e2468e77fb8c17",
      "tree": "264cd6e05ee23bcf46d1ce42c38ffa228b5035f1",
      "parents": [
        "fa4094ac49b4cc23589f5c5b7e608c4b4ee6ca04"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Apr 20 17:23:39 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Apr 20 17:29:31 2012 +0200"
      },
      "message": "Revert \"zebra: clean up client routes when client goes away\"\n\nThis reverts commit af56d404cd56d94ad3b2ec3f159650eb72baef0a,\nwhich was accidentally duplicating functionality from commit\n2ea1ab1 \"zebra: ZEBRA_HELLO and mopping up routes (BZ#448)\"\n\nConflicts:\n\n\tzebra/zebra_rib.c\n\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "fa4094ac49b4cc23589f5c5b7e608c4b4ee6ca04",
      "tree": "6ee1470a3db1d3e09e455a34a41b6b5db4296847",
      "parents": [
        "7939e016b3d4ecd2f5b8ad708b69607e05a084a6"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Fri Apr 13 13:46:09 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:37:17 2012 +0200"
      },
      "message": "bgpd: Fix crash when disabling dampening (BZ#687)\n\n    Vladimir Podobaev reported that the following commands crashed the\ndaemon.\n\nrouter bgp 123\n bgp dampening\n no bgp dampening 1 2 3 4\n no bgp dampening\n\n    The problem was that bgp_damp_info_clean() tried to dereference the\nalready freed reuse_list array in the second call to \"no bgp dampening\".\n\n    Fixed by checking in bgp_damp_disable() that the dampening it\u0027s\nenabled before doing the cleanup.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n"
    },
    {
      "commit": "7939e016b3d4ecd2f5b8ad708b69607e05a084a6",
      "tree": "eb33846c71de49df9d1128eec149f2a214bb74f9",
      "parents": [
        "3cadc0cdebb8f8262b1c1fbb8bfcbcdc3baa3733"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon Apr 09 18:03:57 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:37:17 2012 +0200"
      },
      "message": "ospfd: Fixes a crash of the daemon with a snmp walk\n\n    - And allows to walk the LSDB.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n"
    },
    {
      "commit": "3cadc0cdebb8f8262b1c1fbb8bfcbcdc3baa3733",
      "tree": "3cc40be888ef151298db7c14d7ed0c66d54b5744",
      "parents": [
        "d75318cc8de91d94649106f4ea3122d0d21ac9eb"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Sun Apr 01 12:16:31 2012 -0700"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:36:52 2012 +0200"
      },
      "message": "zebra: use larger buffer (4096) for netlink messages\n\nIncrease the maximum number of nexthops per route by using a larger\nbuffer for netlink messages.\n\n  * zebra/rt_netlink.c: Use a buffer of 4096 bytes to parse/build\n    netlink messages. Add a hash define for this number\n    (NL_PKT_BUF_SIZE). Most places in the code were previously using a\n    buffer of 1024 bytes.\n"
    },
    {
      "commit": "d75318cc8de91d94649106f4ea3122d0d21ac9eb",
      "tree": "6d7c674c4026bccd1384e60ee228d8d67750fbf7",
      "parents": [
        "6e493a44836d3b034ed3421e866878de3fbfcc5b",
        "48d8bea8b7c83cf186460f711ab166455b5ed676"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:24:40 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:24:43 2012 +0200"
      },
      "message": "isisd: merge osr/google-is-is\n\nthis is essentially half of a rewrite of isisd. please note that a lot\nof things are still broken and isisd is not ready for production use.\n"
    },
    {
      "commit": "48d8bea8b7c83cf186460f711ab166455b5ed676",
      "tree": "2004b6997ea3411ad9c77965467ca833125b6232",
      "parents": [
        "1627b20fd4fe431558d0f77aff98cbee29ca15d8"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Fri Nov 25 18:51:48 2011 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:22:37 2012 +0200"
      },
      "message": "quagga: option \"-z\" (\"--socket \u003cpath\u003e\") added\n\nAll daemons modified to support custom path to zserv\nsocket.\n\n[reapplied from b511468 after isisd merge]\n"
    },
    {
      "commit": "1627b20fd4fe431558d0f77aff98cbee29ca15d8",
      "tree": "1c5df6d736e904aed3c4ebcdcc9d20c15deaeb8c",
      "parents": [
        "086695cb8eea5b405b21e66b92ef0348355c4821"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Fri Nov 25 17:56:21 2011 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:20:38 2012 +0200"
      },
      "message": "isisd: indent longopts array\n"
    },
    {
      "commit": "086695cb8eea5b405b21e66b92ef0348355c4821",
      "tree": "ee07310a272656210f65e070da55b0b4952aeca8",
      "parents": [
        "aa3b264282677fcd33513352aa878d00163d2dbf"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:14:50 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:14:50 2012 +0200"
      },
      "message": "isisd: reapply removal of CVS cruft\n\nthis re-removes CVS keywords and .cvsignore files. original commits:\n\tb82cdeb delete CVS keywords\n\t05e54ee build: delete .cvsignore files\n"
    },
    {
      "commit": "6e493a44836d3b034ed3421e866878de3fbfcc5b",
      "tree": "4edabbbca2126db9aa29b9901ada950c635c17e2",
      "parents": [
        "9bb5870e26a4089f599b24adf822c4d1a9870a44",
        "3b381c32fc2c325cc4ffb9f9f30a7e96e9bd87c6"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 16:46:13 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 16:46:17 2012 +0200"
      },
      "message": "bgpd: merge osr/quagga-osr-patches (BZ#700)\n\nthis merges a bgp capability negotiation fix where bgpd would fail if no\nmultiprotocol capability was present, but other capabilities were.\n"
    },
    {
      "commit": "9bb5870e26a4089f599b24adf822c4d1a9870a44",
      "tree": "e4309095a512239ab47b5b0851d9d6fc596398cd",
      "parents": [
        "a25a44dba84e9a6ac2b87e24472b6e9f959d845b",
        "3cf6c2b4e43f44a977d218c96c26250654ae333e"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 13:54:37 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 13:54:53 2012 +0200"
      },
      "message": "bgpd: merge osr/google-bgp-multipath\n\nthis patchset allows collapsing multiple received routes in BGP into one\nmultipath route that will, if readvertised, contain an aggregate of all\nreceived attributes.\n"
    },
    {
      "commit": "aa3b264282677fcd33513352aa878d00163d2dbf",
      "tree": "47bafb70bffd6ea3f511ab0d8bd5941102cf47a4",
      "parents": [
        "14d2bbaa3f4aa53152472694c29f336808e47313"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Wed Apr 11 23:56:03 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Wed Apr 11 23:56:03 2012 -0700"
      },
      "message": "isisd: reapply patch to fix zebra protocol\n\nReapply the bits of revision b4e45f6 that pertain to isisd. That is:\n  git log -n 1 -p b4e45f6 -- isisd\n\nThese were dropped in the merge with the Google ISIS code (14d2bbaa).\n\nThe commit message for b4e45f6 is:\n\n    fix zebra protocol after MP-BGP changes\n\n    The previous commits modified both zebra and bgpd for additional\n    SAFI field, but not any other routing daemon, which led to zebra\n    daemon crashing with failed assertion.\n"
    },
    {
      "commit": "14d2bbaa3f4aa53152472694c29f336808e47313",
      "tree": "e39bdddef4ea53207dd8fb61e1fd6b54d8c7721d",
      "parents": [
        "51d4ef832c1e58150325630e25c442866e5a6cf5",
        "e96b312150d8e376c1ef463793d1929eca3618d5"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Wed Apr 11 23:51:08 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Wed Apr 11 23:51:08 2012 -0700"
      },
      "message": "Merge quagga mainline into the google ISIS code.\n\nThe steps were:\n\n  $ git checkout google-is-is\n  $ git merge quagga\n  $ git checkout google-is-is -- isisd\n\n  # Resolve conflicts in the following:\n  lib/md5.h\n  zebra/rt_netlink.c\n  zebra/zebra_rib.c\n  zebra/zserv.c\n\nNote that the content in the isisd directory is left unchanged in the\nmerge. As a result, changes made to isisd as part of the following\ncommits on the quagga mainline are dropped.\n\n  # 8ced4e82 is the merge base, e96b3121 is the current quagga master\n  $ git log --oneline --reverse 8ced4e82..e96b3121 -- isisd\n  5574999 isisd: fix crash on \"no router isis\" (BZ#536)\n  8998075 isisd: raise hello rate for DIS (BZ#539)\n  306ca83 isisd: include hash.h, not hash.c\n  b82cdeb delete CVS keywords\n  2f65867 isisd: indent longopts array\n  b511468 quagga: option \"-z\" (\"--socket \u003cpath\u003e\") added\n  05e54ee build: delete .cvsignore files\n  b4e45f6 fix zebra protocol after MP-BGP changes\n  7fd6cd8 isisd: fix circuit state machine\n  907fd95 isisd: send proper LSP after DIS election\n  d034aa0 isisd: fix wrong next-hops from SPF\n  c25eaff isisd: unexpected kernel routing table (BZ#544)\n  e6b03b7 isisd: implement MD5 circuit authentication\n"
    },
    {
      "commit": "a25a44dba84e9a6ac2b87e24472b6e9f959d845b",
      "tree": "86ce0bc9de906bf9aaf6ea822b157b31b7c45a06",
      "parents": [
        "e96b312150d8e376c1ef463793d1929eca3618d5"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Apr 03 20:33:24 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Apr 11 23:18:29 2012 +0200"
      },
      "message": "ospfd: adjust OSPF_ROUTER_LSA_MIN_SIZE for VL case\n"
    },
    {
      "commit": "3cf6c2b4e43f44a977d218c96c26250654ae333e",
      "tree": "e017cde2015fbf3ef6c250327428d7c6152aa8f7",
      "parents": [
        "01d7ff0a2166a422c56bd26f04fc22832a9e690b",
        "e96b312150d8e376c1ef463793d1929eca3618d5"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Mon Apr 09 00:25:15 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Mon Apr 09 00:25:15 2012 -0700"
      },
      "message": "Merge branch \u0027quagga\u0027 into google-bgp-multipath\n\nConflicts:\n\tbgpd/bgp_route.c\n"
    },
    {
      "commit": "3b381c32fc2c325cc4ffb9f9f30a7e96e9bd87c6",
      "tree": "b4eb46f5fe28b4734723c9ff4227a94a5bd32b4e",
      "parents": [
        "e96b312150d8e376c1ef463793d1929eca3618d5"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sun Feb 19 10:19:52 2012 -0800"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sun Apr 08 13:46:29 2012 -0700"
      },
      "message": "bgpd: fix issue in capability negotiation (BZ#700)\n\nAddress problem where bgpd would reject a session if a peer sent some\ncapabilities in its Open message, but did not include a Multiprotocol\nextensions capability. Note that the session would come up if there\nwere no capabilities at all in the Open message.\n\n  * Add the \u0027mp_capability\u0027 out parameter to\n    bgp_capability_parse(). Set it to \u00271\u0027 if a Multiprotocol\n    extensions capability is encountered.\n\n  * Switch on \u0027mp_capability\u0027 instead of \u0027capability\u0027 in the calling\n    functions to determine if the peer indicated the set of AFI/SAFIs\n    it supports.\n\n    The net result is that when a peer does not send an MP capability,\n    it is assumed to support the AFI/SAFIs configured for it locally.\n"
    },
    {
      "commit": "51d4ef832c1e58150325630e25c442866e5a6cf5",
      "tree": "df155c4193531a37f651d4151866f18224f8ca4b",
      "parents": [
        "2dd04c5dc8b5a09cce1c251361fa58f26398fd9f"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Mar 21 17:13:39 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sun Apr 08 01:19:41 2012 -0700"
      },
      "message": "zebra: include hardware addr in if up/down messages\n\nChange interface up/down notification messages to also include the\nhardware address of the interface. The format of these messages is now\nidentical to the interface add message -- move the serialization code\nto common functions.\n\n  * lib/zclient.c: Modify zebra_interface_if_set_value() to also parse\n    the hardware address. Invoke it from zebra_interface_add_read()\n    and and zebra_interface_state_read().\n\n  * zebra/zserv.c: Add zserv_encode_interface(). Invoke it from\n    zserv_interface_add(), zserv_interface_delete() and\n    zserv_interface_update().\n"
    },
    {
      "commit": "2dd04c5dc8b5a09cce1c251361fa58f26398fd9f",
      "tree": "a738ee1b46f7d346e05285677b6c4df9ba689b6d",
      "parents": [
        "af56d404cd56d94ad3b2ec3f159650eb72baef0a"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Mar 21 10:37:03 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sun Apr 08 01:18:41 2012 -0700"
      },
      "message": "lib: Tweak to if_delete_retain()\n\n  * lib/if.c: Change if_delete_retain() to delete all connected\n    addresses, but to not free the list that holds them. Free the list\n    just before the interface structure itself is freed, in\n    if_delete().\n"
    },
    {
      "commit": "af56d404cd56d94ad3b2ec3f159650eb72baef0a",
      "tree": "2d923b385dd21a5f0ced95d2430b4c998af18f94",
      "parents": [
        "fc328ac9d3d49b871c1139f36deb702a254c0d4f"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Mar 21 18:47:51 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sun Apr 08 00:28:50 2012 -0700"
      },
      "message": "zebra: clean up client routes when client goes away\n\n  * zebra/zebra_rib.c: Add code to clean up routes added by a client\n    (as identfied by \u0027rib type\u0027).\n\n  * zebra/zserv.[ch]: Maintain the type of the routes added by a\n    client on the \u0027zserv\u0027 structure -- assume that a given client uses\n    a single route type for now.\n\n    Clean up routes from a client when the client goes away (in\n    zebra_client_close()).\n\nFrom: Josh Bailey \u003cjoshb@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "fc328ac9d3d49b871c1139f36deb702a254c0d4f",
      "tree": "a7189a1286862a347834792e93a7b00df3c0cfac",
      "parents": [
        "e38e0df01ad305ad48ecf816b52fa99fd3f2a4e1"
      ],
      "author": {
        "name": "Subbaiah Venkata",
        "email": "svenkata@google.com",
        "time": "Tue Mar 27 16:35:22 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 23:52:40 2012 -0700"
      },
      "message": "zebra: add more logs/asserts to rib work queue code\n\n  * zebra/zebra_rib.c: (rib_queue_add, rib_queue_init) Add some more\n    logs and asserts.\n\nFrom: Subbaiah Venkata \u003csvenkata@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "e38e0df01ad305ad48ecf816b52fa99fd3f2a4e1",
      "tree": "ad565c3d656c0d5b74a1a3a80f1774bef938b1b4",
      "parents": [
        "3f045a08812525505e165deea99a79447b44506b"
      ],
      "author": {
        "name": "Subbaiah Venkata",
        "email": "svenkata@google.com",
        "time": "Tue Mar 27 23:48:05 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:54:37 2012 -0700"
      },
      "message": "isisd: couple of bug fixes\n"
    },
    {
      "commit": "3f045a08812525505e165deea99a79447b44506b",
      "tree": "a5c944b0584e0e5a14908a2ac9476637e7c1d7e6",
      "parents": [
        "6902c69aa30a73ecd70ef8941518b541ca02b878"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Sat Mar 24 08:35:20 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:54:37 2012 -0700"
      },
      "message": "isisd: add Google\u0027s changes to IS-IS\n"
    },
    {
      "commit": "6902c69aa30a73ecd70ef8941518b541ca02b878",
      "tree": "b38ad5eeb55cb2657f5372fab62cac3d34580ea1",
      "parents": [
        "26e2ae362baf207d82e4c1ac76bc1c2b2df6ccaa"
      ],
      "author": {
        "name": "Subbaiah Venkata",
        "email": "svenkata@google.com",
        "time": "Tue Mar 27 19:21:29 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:54:24 2012 -0700"
      },
      "message": "zebra: tweak deletion of routes without nexthop addr\n\n  * zebra/zserv.c\n\n    - zread_ipv4_delete(): Pass a null \u0027gate\u0027 parameter to\n      rib_delete_ipv4() if the route being deleted does not specify a\n      next hop IP address. We were previously passing a pointer to a\n      cleared out IP address.\n\n    - zread_ipv4_add(): Fix indentation.\n\nFrom: Subbaiah Venkata \u003csvenkata@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "26e2ae362baf207d82e4c1ac76bc1c2b2df6ccaa",
      "tree": "e0d060875b5eab622244977e58b2445d55d6d240",
      "parents": [
        "d531050b7bf0f93d4d29a7a2f7b745641778b483"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Thu Mar 22 01:09:21 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:54:02 2012 -0700"
      },
      "message": "zebra: read multipath routes and hw addr from netlink\n\n  * zebra/rt_netlink.c:\n\n    - Pick up the hardware address of an interface when we receive a\n      netlink link change message. Extract code for parsing the\n      link-layer hardware address into a new function so we can reuse\n      it.\n\n    - netlink_routing_table(): Update to handle multipath routes.\n\n    - netlink_route_change(): Update to handle multipath routes. Fix\n      problem where the metric was not being read out.\n\n  * zebra/zebra_rib.[ch]: Extern nexthop_ipv4_ifindex_add() -- it is\n    now called from the netlink code.\n\nFrom: Josh Bailey \u003cjoshb@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "d531050b7bf0f93d4d29a7a2f7b745641778b483",
      "tree": "82e45741fa3883f6e25a38f2abef4eea107fd54f",
      "parents": [
        "bed930fd70742af5ae138e0a5ee629dda296ea36"
      ],
      "author": {
        "name": "Subbaiah Venkata",
        "email": "svenkata@google.com",
        "time": "Sat Mar 24 13:10:19 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:53:40 2012 -0700"
      },
      "message": "lib: add stream_set_endp()\n\n  * lib/stream.[ch]:\n\n    - Add stream_set_endp(). This can be used to trim data (for\n      example, padding) at the end of a stream.\n\n    - Fix swapped \u0027getp\u0027 and \u0027endp\u0027 parameters in STREAM_WARN_OFFSETS.\n\nFrom: Subbaiah Venkata \u003csvenkata@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "bed930fd70742af5ae138e0a5ee629dda296ea36",
      "tree": "38d107117db56d60ce8d136507cc1d79ac2e22dc",
      "parents": [
        "54dd61227352dd1dd4db4fe76dbf7d2e92522e74"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Mar 21 10:22:19 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:53:22 2012 -0700"
      },
      "message": "lib: add support for keyed-hashing with MD5\n\n  * lib/md5.[ch] Add implementation of HMAC-MD5 from RFC 2104.\n\nFrom: Josh Bailey \u003cjoshb@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "54dd61227352dd1dd4db4fe76dbf7d2e92522e74",
      "tree": "da320cdec867ca81748f3b85b772422b386bf376",
      "parents": [
        "8ced4e82e6f417b13f4bfc09018fc51fd31058e2"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Mar 21 10:00:07 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:52:23 2012 -0700"
      },
      "message": "lib: Tweaks to linked list macros\n\n  * lib/linklist.h\n\n    - Change the listnextnode, listhead and listtail macros so that\n      they allow the list pointer to be NULL.\n\n    - Modify the ALL_LIST_ELEMENTS* macros such that they clear the\n      data pointer at the beginning and end of the loop.\n\nFrom: Josh Bailey \u003cjoshb@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "e96b312150d8e376c1ef463793d1929eca3618d5",
      "tree": "33bdbba11475be746d7ebf684fd1441b9db4b929",
      "parents": [
        "a3537862f3c00b60fc52a67c1cc447c2a65f97bd"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Apr 04 00:14:36 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Apr 04 00:25:51 2012 +0200"
      },
      "message": "lib: pretty ip_masklen and masklen2ip\n\nnonwithstanding any desire for optimisation, these versions are shorter\nand more concise.  reading the comments, they might even be easier to\nunderstand.\n\nI\u0027ve tested them on i686 and x86_64, and checked that correct assembler\ncode is emitted for ARM, MIPS and PowerPC.\n\nIPv6 is left as an exercise for another day, none of the ideas I had led\nto a \"yes, this is the one to go with\" solution.\n\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "a3537862f3c00b60fc52a67c1cc447c2a65f97bd",
      "tree": "97bcf4e43ff70dcf74de412e37944fd3ac5d6aae",
      "parents": [
        "fa5831e85ae9ba7008fb4b4e2d4c7561ae5cb697"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Mar 23 22:48:05 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Apr 04 00:25:31 2012 +0200"
      },
      "message": "Revert \"lib: optimize ip_masklen()\" (BZ#720)\n\nThis reverts commit d171bf58ef12ace43d48565e6870722dece1e6ed.\n\nThere are multiple reasons for this revert, including bug #720, but also\nquite simply the unreadability of having 2000 lines of an autogenerated\ntable in the middle of a source file.\n\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\nReported-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "fa5831e85ae9ba7008fb4b4e2d4c7561ae5cb697",
      "tree": "5653d8127ad212e6d251fb078afef50fc262353b",
      "parents": [
        "fa61e16ddebe10a71d98bcd2eba0f630071ea4a7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 27 11:54:04 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 27 11:54:04 2012 +0100"
      },
      "message": "bgpd: bgp_attr_flags_diagnose shouldn\u0027t assert\n\n* bgpd/bgp_attr.c: (bgp_attr_flags_diagnose) debug code for error-handling\n  paths probably shouldn\u0027t assert, instead it should just log that there\n  was no problem.\n"
    },
    {
      "commit": "fa61e16ddebe10a71d98bcd2eba0f630071ea4a7",
      "tree": "bc301257fdb4dbac4aedf1e17ffa3e6c00a77612",
      "parents": [
        "683f2b86d89fa356d3d1f7a54b0c269baa38b836"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 21:31:47 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 27 11:48:38 2012 +0100"
      },
      "message": "bgpd: attr_parse call to attr_malformed should deal with PROCEED error case\n\n* bgpd/bgp_attr.c: (bgp_attr_parse) the invalid flag check call to\n  bgp_attr_malformed is pretty useless if it doesn\u0027t actually allow\n  for the PROCEED non-error case.\n"
    },
    {
      "commit": "683f2b86d89fa356d3d1f7a54b0c269baa38b836",
      "tree": "0788f6ea3f9079d3c1d775c49cd4cd881e44d204",
      "parents": [
        "bd471fea4ec965c71d6c2201745995092fbc36f6"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Mar 23 14:58:45 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 27 11:48:35 2012 +0100"
      },
      "message": "bgpd: Fix silly mistake in bgp_attr_flag_invalid\n\n* bgp_attr.c: (bgp_attr_flag_invalid) flags is meant to be masked\n  off with the mask variable...\n"
    },
    {
      "commit": "bd471fea4ec965c71d6c2201745995092fbc36f6",
      "tree": "1d07d21b35101724d98107d47f4cd214800b4489",
      "parents": [
        "81c3e5006e5d29e305cbc0ab482617d7e570e8c0"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Mar 15 11:30:00 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 21:33:51 2012 +0100"
      },
      "message": "bgpd: malformed attribute error that can still proceed should fixup getp\n\n* bgp_attr.c: (bgp_attr_malformed) When a malformed attribute error can be\n  ignored, and BGP message processing may still proceed, the stream getp\n  should be adjusted to the end of the attribute - the caller may not have\n  consumed all the attribute. Problem noted by Martin Winter in bug 678.\n\n  Also, rename the \u0027startp\u0027 local to \u0027notify_datap\u0027, for clarity.\n"
    },
    {
      "commit": "81c3e5006e5d29e305cbc0ab482617d7e570e8c0",
      "tree": "7408dfdeff638ce16273cd7c8c4d9c35a99cfe87",
      "parents": [
        "fe67e668881b8b8d71b1570575c913cd287fafcf",
        "6881f2698279f3c47a55e8969860eeac59e8c3d7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:10:22 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:10:22 2012 +0100"
      },
      "message": "Merge branch \u0027babeld-merge\u0027 into master-copy\n"
    },
    {
      "commit": "6881f2698279f3c47a55e8969860eeac59e8c3d7",
      "tree": "7408dfdeff638ce16273cd7c8c4d9c35a99cfe87",
      "parents": [
        "cbde15513ba47f6e7f6d02fcafcfb12cd5b1df77"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 15:43:34 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: remove \"parasitic\" mode.\n\nThis is the functionality described in Appendix C of RFC 6126.  Its\nmain purpose is to avoid keeping a full source table, which makes it\npossible to implement a subset of Babel in just a few hundred lines of\ncode.  However, in Quagga the code for maintaining the source table is\nalready there, and a parasitic implementation can be simulated using\nfiltering -- so it makes little sense to keep the functionality.\n"
    },
    {
      "commit": "cbde15513ba47f6e7f6d02fcafcfb12cd5b1df77",
      "tree": "97c9fbd49c65207ca878237d7668ba51cb472f9d",
      "parents": [
        "5ca7986d546a1b65a4917aec0f1b594f950f7c27"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 14 15:12:03 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: 3 more timing statements in config text\n\nThis commit makes the following lines visible in running-config text,\nwhen respective intervals are configured to non-default values:\n\n* babel hello-interval\n* babel update-interval\n* babel resend-delay\n"
    },
    {
      "commit": "5ca7986d546a1b65a4917aec0f1b594f950f7c27",
      "tree": "db1870605c572a7a15493a6c5a1fd7d5d2e71ece",
      "parents": [
        "b63b4484c6d2c9d304d4ddd0756a4847c6dc5359"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 11:22:29 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: consolidate zebra interface into fewer functions.\n"
    },
    {
      "commit": "b63b4484c6d2c9d304d4ddd0756a4847c6dc5359",
      "tree": "e81471e9fd7e912ab16d3c2de9b3dbea5aa971e7",
      "parents": [
        "260948cdd6030b332137dfa0580d5a9ba651b145"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 11:17:32 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: fix typo in kernel_route_add_v6.\n"
    },
    {
      "commit": "260948cdd6030b332137dfa0580d5a9ba651b145",
      "tree": "873a640ce0a3befae45dbc4d4625ab97acbdb271",
      "parents": [
        "46b92c043f1a83d8343a4a0345a7b69bac3cdf20"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 09:09:32 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: set interface flags eagerly, not at interface up.\n"
    },
    {
      "commit": "46b92c043f1a83d8343a4a0345a7b69bac3cdf20",
      "tree": "11cfaf25b7654c09c6c0d30f4992b0715bf9ecd7",
      "parents": [
        "4d176dc07ccdcdefcd0e40043233a8c4f136f5c1"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 08:53:51 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: more helpful sample conf file.\n"
    },
    {
      "commit": "4d176dc07ccdcdefcd0e40043233a8c4f136f5c1",
      "tree": "feea17526352c6fca5f61dd398279007ff6a2881",
      "parents": [
        "36329c02c36703cc2158c1c99b86045fed26d4ae"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 08:52:19 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: fix documentation.\n"
    },
    {
      "commit": "36329c02c36703cc2158c1c99b86045fed26d4ae",
      "tree": "64cebc900d5b528f5a85645f681a38b59e5ad669",
      "parents": [
        "cb4b13d945a4b44282e59fa2be9ceda752420a13"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 14 08:49:57 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: remove remains of standalone babeld\u0027s configuration code.\n\nStandalone babeld has a configuration interface that is not used in\nQuagga.  This removes a few bits of this code that survived the\nport to Quagga.\n"
    },
    {
      "commit": "cb4b13d945a4b44282e59fa2be9ceda752420a13",
      "tree": "6ff7d9cdbe147dc57cd651b21e70bce5735b971e",
      "parents": [
        "a14ef5eeccc8c76c41830475bbe3c31c9e14faa5"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Feb 13 22:13:37 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: drive interface_config_write() forward\n"
    },
    {
      "commit": "a14ef5eeccc8c76c41830475bbe3c31c9e14faa5",
      "tree": "7099b5d4614c05491a1a5a1cef512f64c3f2512c",
      "parents": [
        "ce590ecd85b3cf32c5429f09e12d92248cc01ef2"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Feb 11 21:06:16 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: justify \"running-config\" meaning in CLI\n\nThe primary focus of this commit is to make \"show running-config\"\ncommand display more current configuration, including some of the bits\npreviously seen in the output of \"show babel running-config\". Besides\nthat, the following commands were renamed for consistency with the\nsyntax of other components:\n\n\"debug *\" to \"debug babel *\" (and moved to top level)\n\"show babel running-config\" to \"show babel parameters\"\n\n* babel_interface.c\n  * show_babel_running_config(): rename to show_babel_parameters(),\n    update syntax pattern, don\u0027t call show_babeld_configuration()\n  * babel_if_init(): update respectively\n  * babel_enable_if_config_write(): new VTY helper for static\n    babel_enable_if\n* babel_interface.h: add extern declaration\n* babel_main.c: unset all debug options by default\n  * show_babel_main_configuration(): remove debug options decoder\n* babel_zebra.c\n  * babel_debug(): rename to debug_babel(), update syntax pattern\n  * no_babel_debug(): rename to no_debug_babel(), update syntax pattern\n  * babelz_zebra_init(): update respectively\n  * debug_babel_config_write() new VTY helper for static debug_type\n* babel_zebra.h: add extern declaration\n* babeld.c\n  * babel_config_write(): add the code to output \"debug babel *\",\n    \"router babel\", \"redistribute *\" and \"network *\" statements\n  * show_babeld_configuration(): dismiss\n* babeld.h: remove extern declaration\n* babeld.texi: update for renamed commands\n* babeld.conf.sample: idem, add debug statements block\n"
    },
    {
      "commit": "ce590ecd85b3cf32c5429f09e12d92248cc01ef2",
      "tree": "b9815ffc6af493f467d0ec820b4f27a6bf78acdd",
      "parents": [
        "8a46e12f5f0b02d58b1d7bc6c0d140aeec6c80c2"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 17:48:05 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "Remove dead variable reboot_time.\n\nThanks to Denis Ovsienko.\n"
    },
    {
      "commit": "8a46e12f5f0b02d58b1d7bc6c0d140aeec6c80c2",
      "tree": "a0c7538f2b1378d34ee148b534918207160589b6",
      "parents": [
        "68c65a5d3a6a8cb8133b5e9311fc5dc21de88e9c"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sat Feb 11 15:09:33 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "doc: fix typo.\n"
    },
    {
      "commit": "68c65a5d3a6a8cb8133b5e9311fc5dc21de88e9c",
      "tree": "94c9e7ae2896736dc1c1c227189e8930a2f92c22",
      "parents": [
        "173982334c978fdf2e7030d32a2cdc99587fb434"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 14:28:17 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "doc: update babeld documentation.\n"
    },
    {
      "commit": "173982334c978fdf2e7030d32a2cdc99587fb434",
      "tree": "85090c53119c78ddcbaf73368c1779edd0d83996",
      "parents": [
        "9c298c7119c1dba6c589b8f4c358debd8e694b72"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 14:27:16 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "doc: fix Makefile dependencies for babeld.\n"
    },
    {
      "commit": "9c298c7119c1dba6c589b8f4c358debd8e694b72",
      "tree": "d8ae18bd5aec994e02aabed536446a24051cefbc",
      "parents": [
        "c428edba5fb151844d28fbb41fce1df466a74e42"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 14:06:24 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: display update-interval and resend-delay in show commands\"\n"
    },
    {
      "commit": "c428edba5fb151844d28fbb41fce1df466a74e42",
      "tree": "739698e02d1d1e1108015980a6e3fba7a0e64404",
      "parents": [
        "b58871ee4d54989c16a60a839a592c9c4ab19cc3"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 14:02:10 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: vty commands (hello-interval, update-interval, resend-delay).\n"
    },
    {
      "commit": "b58871ee4d54989c16a60a839a592c9c4ab19cc3",
      "tree": "0416cf9ff1b2125463a760aff247c52beac329bc",
      "parents": [
        "52d54422bdc0b70356d84a38a0ce15ba5dea03e0"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 13:34:30 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: remove port and group setting commands.\n\nThey didn\u0027t work anyway, since they\u0027re called too late.\n"
    },
    {
      "commit": "52d54422bdc0b70356d84a38a0ce15ba5dea03e0",
      "tree": "175c986de70da9ccb9e88ec137a2577713653d42",
      "parents": [
        "359be3d0e4db5c931b1ad0dabbac2dea77394de1"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Sat Feb 11 13:08:00 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "Resynchronise with babeld-1.3.1.\n"
    },
    {
      "commit": "359be3d0e4db5c931b1ad0dabbac2dea77394de1",
      "tree": "4df570e46604bb29f178a94656abcbfbd9154edd",
      "parents": [
        "3c442e8802c260a0ce9787b5f432a7a2a093be25"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Feb 11 15:25:01 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: dismiss babel_redistribute_unset()\n\nThe function was effectively duplicating existing\nzclient_redistribute(). This makes no_babel_redistribute_type()\nconsistent with babel_redistribute_type()\n"
    }
  ],
  "next": "3c442e8802c260a0ce9787b5f432a7a2a093be25"
}
