)]}'
{
  "log": [
    {
      "commit": "bb2315f2878da685fae094aece13409667d21f97",
      "tree": "b8625a91196bc54e4f4f253711c611bd9212e638",
      "parents": [
        "1b54f798d3cc359bec036db83c1c9bfab75d1244"
      ],
      "author": {
        "name": "Nick Hilliard",
        "email": "nick@inex.ie",
        "time": "Sat Aug 18 15:10:57 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 25 06:03:46 2012 +0200"
      },
      "message": "ripd: clear sockaddr_in before using\n\nripd_create_socket() failed in bind() on Mac OS X 10.7 since there was garbage\nin unused fields of struct sockaddr_in.\n\n* ripd/ripd.c: zero out struct sockaddr_sin from before filling.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1b54f798d3cc359bec036db83c1c9bfab75d1244",
      "tree": "b9a63cbff8cbea31b3972cc011aca1253a526fc1",
      "parents": [
        "4bed21c402fa1079301d47811a4579985997c881"
      ],
      "author": {
        "name": "Brad Smith",
        "email": "brad@comstyle.com",
        "time": "Thu Aug 09 00:44:28 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 25 05:56:04 2012 +0200"
      },
      "message": "build: fix autoconf multicast check on OpenBSD\n\nFix the \"BSD struct ip_mreq hack\" autoconf test to work with OpenBSD.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4bed21c402fa1079301d47811a4579985997c881",
      "tree": "977e18bc3403395a33de2d5fef1d5d738fa42cf7",
      "parents": [
        "9289c6ff55cd96c943d23e43fc9e5f987aa965ed"
      ],
      "author": {
        "name": "Brad Smith",
        "email": "brad@comstyle.com",
        "time": "Thu Aug 09 00:40:09 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 25 05:56:00 2012 +0200"
      },
      "message": "build: correct libtool parameter used within Makefiles\n\nThis corrects the parameters passed to libtool when linking\nthe shared libraries. The paramter name is -version-info not\n-version.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9289c6ff55cd96c943d23e43fc9e5f987aa965ed",
      "tree": "b971fa4b0ce15e02abd27a62548d53371e4cc0b2",
      "parents": [
        "ba281d3d04053b7c59ecdfdbea91a62c09e9f8a4"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:14 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:45 2012 +0200"
      },
      "message": "ospfd: Do not fall back to intervening router.\n\nThe patch in bug 330 did two things. It add a return value\nwhether ospf_nexthop_calculation() failed or not and also\nmoved the return stmt for 16.1.1 para 5 so now SPF\nwill fallback to the intervening router when no back links are found\nby 16.1.1 para 5. This is wrong and can potentially create black holes\nor routing loops according to Dave Katz and Acee Lindem at ospf@ietf.org\n\nEven if the current code could be proved to be harmless in all cases,\nit adds substantial extra processing and memory allocations.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ba281d3d04053b7c59ecdfdbea91a62c09e9f8a4",
      "tree": "3ada2bf381bef8a571776a3e54879c8d1aa8f149",
      "parents": [
        "c963c20346c0e3cd75735b88beded98389607cd5"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:13 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:45 2012 +0200"
      },
      "message": "ospfd: use ZEBRA_NEXTHOP_IPV4_IFINDEX\n\nOSPF really needs to specify interface in its routes. Otherwise\nospf may change the wrong route.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n[fixed up some whitespace errors, split patch in two]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c963c20346c0e3cd75735b88beded98389607cd5",
      "tree": "24973f9f7859e03fafdbaec0921d5c279597a1f2",
      "parents": [
        "57c639f01ec6be70ac858f412d32b638a9756bed"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:13 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:44 2012 +0200"
      },
      "message": "zebra: Add support for ZEBRA_NEXTHOP_IPV4_IFINDEX\n\nActually implement the IPV4_IFINDEX nexthop type that has been drifting\naround as a definition forever (without any warning about it being a\nplaceholder).\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "57c639f01ec6be70ac858f412d32b638a9756bed",
      "tree": "cd415e8d098b827d69dcfdf3d3b22f5df11cc4c9",
      "parents": [
        "c81ee5c94f5b34375f3ef276fdb9bde9098e7ecb"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:12 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:37 2012 +0200"
      },
      "message": "ospf_spf_process_stubs: use LSA pos to find OSFP interface\n\nThis is better than a prefix lookup as prefixes may not be\nunique, that is, the same prefix can exist on several interfaces.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c81ee5c94f5b34375f3ef276fdb9bde9098e7ecb",
      "tree": "dad1ab0d81b72a7c7a869bc7dc051b703deec9be",
      "parents": [
        "7b92589c225ae46417fc3fa0714a1b6f53f19c51"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:11 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:30 2012 +0200"
      },
      "message": "ospfd: Optimize and improve SPF nexthop calculation\n\nMaintain router LSA positions in OSPF interface.\nFind the OSPF interface in nexthop_calculation using\nthe position in the router LSA. This is possible because\nthe only time nexthop_calculation needs to look up interfaces\nis when dealing with its own Router LSA.\n\nThis has the following advantages:\n - Multiple PtP interfaces with the same IP address between two routers.\n - Use Unnumbered PtP on just one end of the link.\n - Faster OI lookup for the OSPF interface and only\n   done once for PtoP links.\n\n*ospf_interface.h: (struct ospf_interface) Add storage for\n\t\t   storing router LSA position.\n\n*ospf_interface.c: (ospf_if_lookup_by_lsa_pos)\n\t\t   lookup OSPF I/F in an area using LSA position.\n\n*ospf_lsa.c: (router_lsa_link_set) record Router LSA position.\n\n*ospf_spf.c: (ospf_spf_next) Count and pass along lsa position.\n\t     (ospf_nexthop_calculation) Add lsa position argument.\n\t     call ospf_if_lookup_by_lsa_pos() for OSFP interface handle.\n\t     Clean up and remove all calls ospf_if_is_configured() the\n\t     rest. Adjust a few debug logs.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7b92589c225ae46417fc3fa0714a1b6f53f19c51",
      "tree": "38e1add198ee857211684250858a3b946c05c6a9",
      "parents": [
        "aa5cf24b9de96245f2166ef1c4e9612890ced1b3"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jul 23 18:17:57 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:02:31 2012 +0200"
      },
      "message": "ospfd: avoid exhausting memory with OSPF vertices (BZ#476)\n\nThis was found in scale testing at OSR;  ospfd is adding the same link\nover and over again to the SPF tree.  This fix prevents the resulting\nmemory corruption from happening and adds a debug message to track\noccurence of this issue and/or confirm a proper fix.\n\n(This version was improved by Scott Feldman over the earlier RFC.)\n\n* ospfd/ospf_spf.c: (ospf_spf_add_parent) loop over existing vertices\n  and refuse to add duplicates.\n\nTested-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "aa5cf24b9de96245f2166ef1c4e9612890ced1b3",
      "tree": "fc8a8895286c635764e2d409b7ab6567a5b9ee6f",
      "parents": [
        "ee1ac2d52a6656e589ca2fb4feb3ec5fd366ecb7"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jul 19 16:11:50 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jul 19 16:15:50 2012 +0200"
      },
      "message": "lib: make IPv6 prefix parser slightly more strict\n\nThis makes it possible to have both \"show babel route A.B.C.D/M\"\nand \"show babel route X:X::X:X/M\" commands at the same time without\nthe parser complaining about ambiguity.\n\n* lib/command.c: only accept STATE_DOT after : was seen.\n\nReported-by: Juliusz Chroboczek \u003cjch@pps.jussieu.fr\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ee1ac2d52a6656e589ca2fb4feb3ec5fd366ecb7",
      "tree": "164ab37de3c091f9bcb18f07d82c01d41d345238",
      "parents": [
        "7f062c217b262e362a3362c677dea6c5e820adf1"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jul 19 12:58:59 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jul 19 13:00:29 2012 +0200"
      },
      "message": "build: fix isisd topology out of tree build\n\nisisd got the include directory wrong on building with a separate build\ndirectory.\n\n  * configure.ac: adjust ISIS_TOPOLOGY_INCLUDES\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7f062c217b262e362a3362c677dea6c5e820adf1",
      "tree": "a74cb6fa04df4af9f60d770de5e485c37ba2866d",
      "parents": [
        "1080c13f5d3979149c1950a1c46f45e2d4bd0dc8"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Feb 01 16:41:26 2010 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jul 13 18:54:09 2012 +0200"
      },
      "message": "zebra: lingering IP address after deletion (BZ#486)\n\nzebra address bookkeeping is a mess. this is just a workaround to have\nIPv4 address deletion somewhat working on Linux.\n\nthe if_unset_prefix call is synchronous, when it returns success the\naddress deletion completed successfully. this is either signaled by a\nnetlink ACK or by an OK return value from ioctl().\n\nThis version is wrapped by #ifdef HAVE_NETLINK so we don\u0027t touch the\nBSDs for now.\n\n* zebra/interface.c: On Linux, update zebra internal state after\n  deleting an address.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1080c13f5d3979149c1950a1c46f45e2d4bd0dc8",
      "tree": "8f2147dfed3514607041e2167d4facab620c8643",
      "parents": [
        "f710888ddd413730f6025ed5d9a89b124836cde6"
      ],
      "author": {
        "name": "Joachim Nilsson",
        "email": "troglobit@gmail.com",
        "time": "Wed May 30 08:15:48 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jul 13 18:53:53 2012 +0200"
      },
      "message": "configure: Add --with-pkg-extra-version\u003dVER for packagers/distributions.\n\nThis change adds a --with-pkg-extra-version option to ./configure to allow\npackagers and distributions to fine tune the version displayed to the end\nuser to assist in support. It is also very useful when reporting bugs on\nthe official Quagga mailing lists.\n\nThere are two ways of utilsing this functionality:\n\n      a) ./configure --with-pkg-extra-version\u003d-wmo1\n      b) EXTRAVERSION\u003d-wmo1 ./configure\n\nThe latter is a common way for many distributions to add extra version\nstrings to signify their own patch level to a given package.\n\nAlso, minor whitespace fix in configure summary.\n\nSigned-off-by: Joachim Nilsson \u003cjoachim.nilsson@westermo.se\u003e\nSigned-off-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f710888ddd413730f6025ed5d9a89b124836cde6",
      "tree": "be0dd0aaec834c52372b6914f4f87260acb2b219",
      "parents": [
        "18a4e3715f89337ac8b70f6f63cc131c3218c82c",
        "0402ca4e92fa0904d5ee0926482ebca08ffd5c81"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jul 13 14:05:55 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jul 13 14:05:58 2012 +0200"
      },
      "message": "Merge remote branch \u0027vincentbernat/feature/ospfv3-mib\u0027\n"
    },
    {
      "commit": "18a4e3715f89337ac8b70f6f63cc131c3218c82c",
      "tree": "1b38b2eae4e1cee042f96a42217b14647159bf0f",
      "parents": [
        "a47c5838e9f445ab887ad927706b11ccbb181364",
        "8046ba6ec4d6e87bf8da6563c0f3e5e66c4652b3"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jul 13 14:05:36 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Jul 13 14:05:40 2012 +0200"
      },
      "message": "Merge remote branch \u0027vincentbernat/feature/agentx\u0027\n"
    },
    {
      "commit": "0402ca4e92fa0904d5ee0926482ebca08ffd5c81",
      "tree": "be0dd0aaec834c52372b6914f4f87260acb2b219",
      "parents": [
        "bf836661ef8ef880350bc41f0a82566ed5075066"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue Jul 10 09:27:57 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue Jul 10 09:27:57 2012 +0200"
      },
      "message": "ospf6d: fix segfault when requesting inexistant interfaces or areas\n"
    },
    {
      "commit": "bf836661ef8ef880350bc41f0a82566ed5075066",
      "tree": "09fe0cfd070a3984860b1ffc89020caba892eff4",
      "parents": [
        "c349bb86927d1f5fc8aa8ebc6f553786f8e70634"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 04 14:36:12 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:05:17 2012 +0200"
      },
      "message": "ospf6d: add SNMP notifications/traps support\n\nOnly implement ospfv3NbrStateChange and ospfv3IfStateChange.\n"
    },
    {
      "commit": "c349bb86927d1f5fc8aa8ebc6f553786f8e70634",
      "tree": "5560db37b8512a550dd33a7217577b54bf1cad15",
      "parents": [
        "3bc4f84efe147ebc65fccbe898b81d78341c542b"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 04 12:59:20 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:05:17 2012 +0200"
      },
      "message": "ospf6d: add SNMP support for ospfv3*LsdbTable\n\nThis includes:\n - ospfv3AsLsdbTable\n - ospfv3AreaLsdbTable\n - ospfv3LinkLsdbTable\n"
    },
    {
      "commit": "3bc4f84efe147ebc65fccbe898b81d78341c542b",
      "tree": "cfe0f904c134fdb7659f6a47897aff88208d2ddd",
      "parents": [
        "ea86e4042b7459fbf5d96835c509cb743bf013c0"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 04 11:40:04 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:05:17 2012 +0200"
      },
      "message": "ospf6d: add SNMP implementation of ospfv3IfTable\n"
    },
    {
      "commit": "ea86e4042b7459fbf5d96835c509cb743bf013c0",
      "tree": "7cf527b8084fd7ede72503d6aad273eaf73261e6",
      "parents": [
        "2c5f148065c074d51ff10808a2b6ac2b3296a828"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 04 10:29:49 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:05:17 2012 +0200"
      },
      "message": "ospf6d: complete SNMP implementation of ospfv3AreaTable\n"
    },
    {
      "commit": "2c5f148065c074d51ff10808a2b6ac2b3296a828",
      "tree": "ef554e9c520765f8f38bea807753aef77c88f541",
      "parents": [
        "061bc735b4fb3b8768fa5f52295d85838ed55770"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Fri Jun 01 11:38:34 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:05:16 2012 +0200"
      },
      "message": "ospf6d: complete SNMP implementation for scalar objects\n"
    },
    {
      "commit": "061bc735b4fb3b8768fa5f52295d85838ed55770",
      "tree": "80f74a55bfbd93d9111d5b49676bcea11a91285e",
      "parents": [
        "0f0ab5180877559e92b71daacb8a106a815a5ade"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Thu May 31 20:21:15 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:05:16 2012 +0200"
      },
      "message": "ospf6d: add SNMP support for ospfv3NbrTable\n"
    },
    {
      "commit": "0f0ab5180877559e92b71daacb8a106a815a5ade",
      "tree": "2553d47180fceebc1e3180f33645410d21173233",
      "parents": [
        "8046ba6ec4d6e87bf8da6563c0f3e5e66c4652b3"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue May 22 13:34:24 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:05:16 2012 +0200"
      },
      "message": "snmp: fix OSPFV3-MIB implementation\n\nUse the real MIB from RFC 5643. Fix used ASN1 types. Indexes are not\nexported any more (they are \"no access\"). Fix some endian\nissues. Also, ID are just integers, not IPv4 addresses.\n\nNo additional OID are supported in this commit.\n"
    },
    {
      "commit": "8046ba6ec4d6e87bf8da6563c0f3e5e66c4652b3",
      "tree": "1b38b2eae4e1cee042f96a42217b14647159bf0f",
      "parents": [
        "0ff4b9c96793898429052de576d8da368e48997e"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Thu May 31 13:30:28 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "snmp: let handlers accept OID from a lesser prefix\n\nMost table handlers do not expect to be given an OID whose prefix is\noutside what they can handle. This is not a problem with the SMUX\nimplementation since it always correct the OID such that the prefix\nmatches. However, this is not the case for the AgentX\nimplementation. A new function, smux_header_table() is used to do this\nnormalization.\n"
    },
    {
      "commit": "0ff4b9c96793898429052de576d8da368e48997e",
      "tree": "17a95f8a3182bc57cc3f00e92ade41ba49223b72",
      "parents": [
        "b7c0d0651cd64f644d02ef5e4d1b82febe7e57d8"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Fri May 25 12:04:51 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "agentx: add appropriate documentation\n"
    },
    {
      "commit": "b7c0d0651cd64f644d02ef5e4d1b82febe7e57d8",
      "tree": "5480eff7b8581e1168d23657da0f30e23100d7bc",
      "parents": [
        "b8cf46b715b2c21db5dce8118c70b4dd9b5255a3"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Fri May 25 11:17:01 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "agentx: handle SNMP traps\n\nsmux_trap() signature has been changed to provide appropriate level\ninformation to send SNMPv2 notifications. This includes the addition\nof the enterprise OID to use (from which is derived the SNMP trap OID)\nand the MIB registry to locate the appropriate function for variable\nbindings provided by the trap.\n\nThe SMUX implementation has been updated but ignore the provided\nenterprise OID. Instead, it still uses the SMUX peer OID to keep\ncompatibility with previous versions of Quagga. The SMUX\nimplementation also ignores the provided MIB registry since it uses\nsmux_get() function to grab the appropriate values. This is not\npossible with the AgentX implementation since there is no such\nfunction provided by NetSNMP.\n"
    },
    {
      "commit": "b8cf46b715b2c21db5dce8118c70b4dd9b5255a3",
      "tree": "61fea7fd6d75345f5224e36d8ca33badc9d39b17",
      "parents": [
        "4b89e45d928d41bb5d32a00ba7b402d6a3bbdf44"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Fri May 25 08:56:44 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "smux: drop findVar element from trap object struct\n\nThis element was not unused.\n"
    },
    {
      "commit": "4b89e45d928d41bb5d32a00ba7b402d6a3bbdf44",
      "tree": "7471ad396e285ff5b0ca3d85600f3c184f43dd2c",
      "parents": [
        "d6be5fb9bc41ea77547204eeedd12132b26ad662"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Thu May 24 21:22:01 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "smux: remove `tick` argument from smux_trap()\n\nsmux_trap() contains an argument whose use appears to be to set\nsysUpTime.0/timestamp field in SNMP trap. However, this value is not\nused in smux_trap(). Moreover, it is expected that this field is the\nvalue of sysUpTime.0 when the trap was sent and not any other time\nrelated to the trap. To avoid any confusion, we remove this field from\nthe signature of the function.\n"
    },
    {
      "commit": "d6be5fb9bc41ea77547204eeedd12132b26ad662",
      "tree": "dfe0f2a92faf6bd7d5b5b5f7b8006014a03e5469",
      "parents": [
        "3a4c96885ec878ae4631b0fb7bb7839578725976"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Thu May 24 09:44:43 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "agentx: add AgentX support to Quagga.\n\n--enable-snmp will enable AgentX support in Quagga. SMUX is still here\nand can be enabled with --enable-snmp\u003dsmux. AgentX support can be\nenabled with \"agentx\" in configuration file. As for SMUX, this command\nis not understood by vtysh. It can be disabled with \"no agentx\",\nthough there is no real use of this since this command cannot be used\nwith vtysh.\n\nIf \"agentx\" and \"no agentx\" command were added to vtysh, it would not\nbe possible to disable agentx support after enabling it because\nNetSNMP does not expose the appropriate methods for this.\n\nThe internals of AgentX are hidden by NetSNMP. Therefore, we don\u0027t\nhave a file descriptor to add to the threading system. We do not have\nthe timers to set either. Therefore, the event loop is modified to\nmake use of snmp_select_info() from NetSNMP.\n\nTraps are not supported yet.\n"
    },
    {
      "commit": "3a4c96885ec878ae4631b0fb7bb7839578725976",
      "tree": "0b0334f9b6b7fce2bc2ebe2fac0c51350c1838de",
      "parents": [
        "08d7f6533ecc0f935a76918c462982004534864d"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Wed May 23 00:52:46 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "smux: isolate SMUX implementation from SNMP implementation\n\nlib/snmp.c gets OID related helper functions that can be used with\nanother SNMP interface. smux.h is cleaned of SMUX specific bits to\nonly expose functions that may be used by an alternative\nimplementation. We also do not redefine functions already present in\nNetSNMP. Just use the appropriate headers.\n"
    },
    {
      "commit": "08d7f6533ecc0f935a76918c462982004534864d",
      "tree": "0e67590a8a2aba551439c46bfa8b33d7fba4feb7",
      "parents": [
        "6b1e37f8537fa2a4560de32e83ca5089763e2d39"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue May 22 22:29:17 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "build: use net-snmp-config to configure NetSNMP\n\nThe correct method to link to NetSNMP is to use net-snmp-config (which\nis like pkg-config). Explicit link to libcrypto is also dropped\n(NetSNMP libs are linked to libcrypto, no need to link Quagga to\nit). Moreover, @SNMP_INCLUDES@ is dropped because useless. Due to a\nbug in configure.ac, it was properly populated.\n"
    },
    {
      "commit": "6b1e37f8537fa2a4560de32e83ca5089763e2d39",
      "tree": "941dfbfbe62981ec214ac1e5a3f607368f4bf1d4",
      "parents": [
        "9e7a548ce421660b0d22bfeb90c2b2b53742aac7"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue May 22 22:15:20 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "build: only define HAVE_SNMP\n\nNetSNMP is the only SNMP implementation for Quagga. We don\u0027t need two\ndifferent symbols.\n"
    },
    {
      "commit": "9e7a548ce421660b0d22bfeb90c2b2b53742aac7",
      "tree": "4c962403808f98806781fb4ad15594152bc1effa",
      "parents": [
        "a47c5838e9f445ab887ad927706b11ccbb181364"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue May 22 14:32:22 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "build: allow configure and build in a separate directory\n\nSome .h files in lib/ are autogenerated. The search path should\ninclude the build directory and the source directory. They usually\nmatch but sometimes, they may be different. For example:\n\n $ mkdir build\n $ cd build\n $ ../configure\n $ make\n"
    },
    {
      "commit": "a47c5838e9f445ab887ad927706b11ccbb181364",
      "tree": "a11b4e361978c0c342806c0bb59fbcc6ae325227",
      "parents": [
        "bb782fb50efcd972d4357f9a7164de2c317d2eef"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jun 21 09:55:38 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jun 21 09:57:54 2012 +0200"
      },
      "message": "isisd: fix typo in topology generator (BZ#731)\n\nThere was a \"lsp-\u003e\" missing before \"level\" in line 2416.\n(introduced by git commit e38e0df)\n\nReported-by: Seblu \u003cseblu@seblu.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "bb782fb50efcd972d4357f9a7164de2c317d2eef",
      "tree": "4f17b1f789945f6d47894be1ba93ca283be2f314",
      "parents": [
        "e2c38e6c9767e30d5683022653b1cf91b186f9d4"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Wed Jun 20 16:34:01 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jun 21 09:49:15 2012 +0200"
      },
      "message": "bgpd: Partially revert f018db8, fixes BZ#730\n\n  The change from bgp_node_get() to bgp_node_lookup() broke aggregation.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nTested-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e2c38e6c9767e30d5683022653b1cf91b186f9d4",
      "tree": "692f274468ac2075d70a7da87888935ab545a44b",
      "parents": [
        "c9e4f8623642fc005c97830256000bef5680aa26"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Wed Jun 20 17:45:50 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jun 21 09:48:56 2012 +0200"
      },
      "message": "bgpd: Fix for commit 6a4677b7, fixes BZ#729\n\n  The timers are rearmed after events processing. After 6a4677b7 we\ndo not generate events that can rearm the holdtime timer.\n\n  Fix it\u0027s to call bgp_timer_set() directly as it\u0027s done from bgp_event().\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nTested-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c9e4f8623642fc005c97830256000bef5680aa26",
      "tree": "00a40a75d31cf30727c6dabf8066054e72092647",
      "parents": [
        "cccbc0151883cfb4f43d6fa0a4a3caedc27e6cf5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 14 10:42:39 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jun 19 13:40:22 2012 +0100"
      },
      "message": "tests: BGP unit tests to set BGP_OPT_NO_LISTEN so they can run\n\nBGP tests had been broken by auto-creation of listen socket. This allows\nthem to run at least, though at least 1 test seems to have other breakage,\naspath_test.\n"
    },
    {
      "commit": "cccbc0151883cfb4f43d6fa0a4a3caedc27e6cf5",
      "tree": "0c0296eb09551c556717e93250e5492fc1c7c85f",
      "parents": [
        "2fb2a455263c569119ca32be59b0337a3d8cd9b3"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 14 10:40:26 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 14 17:30:14 2012 +0100"
      },
      "message": "bgpd: Add \"no listen\" socket option for the BGP master configuration\n\n* bgpd.h: add a BGP_OPT_NO_LISTEN option for the master BGP configuration,\n  to prevent any listen socket being created automatically. Allows code\n  to be used outside of BGP daemon settings.\n* bgpd.c: (bgp_get) honour above the flag, suppress auto-creation of listen\n  socket on first BGP instance if set.\n  (bgp_option_set) whitelist BGP_OPT_NO_LISTEN\n"
    },
    {
      "commit": "2fb2a455263c569119ca32be59b0337a3d8cd9b3",
      "tree": "79f895f78cd4adb43dde3ba3996e8a04a8deac42",
      "parents": [
        "ad12dde6f9596997337ebc210dd2d4593438556b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 14 10:37:40 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 14 10:37:40 2012 +0100"
      },
      "message": "lib: Add back sockunion_str2su\n\n* sockunion.h: Add back sockunion_str2su, its removal breaks things needlessly\n  (e.g. our own unit tests).\n* sockunion.c: (sockunion_str2su) implement on top of str2sockunion.\n"
    },
    {
      "commit": "ad12dde6f9596997337ebc210dd2d4593438556b",
      "tree": "661e013c488b2f7003b8b817d680fa9d03f4eb30",
      "parents": [
        "22714f99c4ffeb4d1bade7ad6374adeba0e06e4c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jun 13 22:50:07 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jun 13 22:50:07 2012 +0100"
      },
      "message": "Revert \"bgpd: Make socket init separate, so unit tests work again.\"\n\nThis reverts commit 7621f336e2f346edee43227f0b1ef93fe769720b. See bug #727\n"
    },
    {
      "commit": "22714f99c4ffeb4d1bade7ad6374adeba0e06e4c",
      "tree": "43b6e720bc05ad1bc5748d8d8a08c725a7fe6a90",
      "parents": [
        "64018324d5e5071eea3b3f72f939d91dc7aef029"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:14 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:50:14 2012 +0200"
      },
      "message": "lib: do not allocate/free thread funcnames\n\n  This avoids memory heap fragmentation and imposses less load on the\nsystem memory allocator.\n\n* thread.h: FUNCNAME_LEN defined to 64 (ISO C99 says max 63)\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n[changed FUNCNAME_LEN to a less arbitrary value]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "64018324d5e5071eea3b3f72f939d91dc7aef029",
      "tree": "faa7378fe45c6a11cf5198ba182f9bf54f3022f5",
      "parents": [
        "41af338ecd56b9891d996f0fc850e02318b0c01a"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:13 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:35:51 2012 +0200"
      },
      "message": "lib: micro-op for thread_get()\n\nthread_trim_head() already checks that the list is not empty.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "41af338ecd56b9891d996f0fc850e02318b0c01a",
      "tree": "8543da475e3e82e6a63a8e2c8d8f0175bc447c2d",
      "parents": [
        "47d3b6078a6c885e03d28bae3397b71a827473f5"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:12 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:35:51 2012 +0200"
      },
      "message": "lib: remove RUSAGE_T from struct thread\n\n* thread.c: It\u0027s only temporarily used in thread_call() to calculate the\n  diffs. Saves 80 bytes per copy.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "47d3b6078a6c885e03d28bae3397b71a827473f5",
      "tree": "b3a6a1de537c9be50c839cf088be89ee91c6b38e",
      "parents": [
        "f018db83a0746f9336d04e50dd06f3bbf6565f1c"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon May 07 16:53:11 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 22 20:35:51 2012 +0200"
      },
      "message": "micro-op bgp_node_[get|lookup]() and route_node_[get|lookup]()\n\n  Reduce indirection for values that doesn\u0027t change in the loop.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n[adjusted after dropping previous patch]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "6e493a44836d3b034ed3421e866878de3fbfcc5b"
}
