)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "3c442e8802c260a0ce9787b5f432a7a2a093be25",
      "tree": "4fdbf9843386175a380a46e2b75dc0f23aeceb4d",
      "parents": [
        "9c58fbd7d7658055c2b3074489c6d338448d88e9"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Feb 08 23:30:46 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: fix wire{d,less} commands name.\n"
    },
    {
      "commit": "9c58fbd7d7658055c2b3074489c6d338448d88e9",
      "tree": "a085d8bc6ca9e5f5bc4ed9c186f89a207c59e3f8",
      "parents": [
        "93079db65cbb678d7fb67f7dd871e24c12b86f09"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Feb 09 21:51:17 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "ripd: add babel for redistribution.\n"
    },
    {
      "commit": "93079db65cbb678d7fb67f7dd871e24c12b86f09",
      "tree": "e781a6d0f4c8b60b0df9d78f9b36125f5f027805",
      "parents": [
        "d70ab9dcd8f054ebd5f60a29dbbd9b39f9fe7566"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Feb 09 20:58:07 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "ripngd: Replace redistribution strings with route_types.h defines.\n"
    },
    {
      "commit": "d70ab9dcd8f054ebd5f60a29dbbd9b39f9fe7566",
      "tree": "2901221e2a01c5079f2dba182f09570e8d7c0f6c",
      "parents": [
        "31e2a19fd2b4aca34b1d2f5e2eb8c9a44b9ea6c9"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Thu Feb 09 17:23:09 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:54 2012 +0100"
      },
      "message": "babeld: Add support for blackhole routes.\n\nBabel makes use of blackhole routes to prevent routing loops between\noverlapping prefixes shortly after a route is retracted (see RFC 6126\nsections 2.8 and 3.5.5).  This patch adds support for installing such\nblackhole routes.\n"
    },
    {
      "commit": "31e2a19fd2b4aca34b1d2f5e2eb8c9a44b9ea6c9",
      "tree": "a45b53df9a0a9d9acda77462d0993ca836df3936",
      "parents": [
        "578ce371d12422ce444f31ae4e51b21675c74b55"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Thu Feb 09 14:06:11 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: refactor filtering stubs.\n\nFactorise the common parts of the in/out filtering functions.  This also\nfixes a bug with filtered out routes, which in babeld are signalled by\na filter returing INFINITY, not -1.\n"
    },
    {
      "commit": "578ce371d12422ce444f31ae4e51b21675c74b55",
      "tree": "fc3412d8da413c531257fbc9517b5eb93bea1b96",
      "parents": [
        "82509bfde09b15ac8856a374aac6d5d62b91f54a"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Thu Feb 09 13:42:28 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "zebra: Display uptime of Babel routes in show ip[v6] route.\n"
    },
    {
      "commit": "82509bfde09b15ac8856a374aac6d5d62b91f54a",
      "tree": "c9e45fb9cba3fd9b64357537e8fe342bb9fe38ad",
      "parents": [
        "b6475ecb14abab936919894050f9ca47415d0f48"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Thu Feb 09 13:35:27 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Use quagga_gettime.\n"
    },
    {
      "commit": "b6475ecb14abab936919894050f9ca47415d0f48",
      "tree": "2db873dd6edb2e68ef2c0e37d44acf0ea9068521",
      "parents": [
        "53b21956f650df86a76b7a7047cfa85114c99dcc"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Thu Feb 09 12:29:10 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Don\u0027t use an ifindex when installing IPv4 routes.\n\nStand-alone babeld installs routes using both a next-hop gateway\nand an interface index.  Unfortunately, this doesn\u0027t work for IPv4\nunder Quagga.\n\nWe now ignore the ifindex when installing IPv4 routes, which makes\nBabel work for IPv4 in prefix-based networks.  Of course this breaks\nIPv4 mesh networks, unless you play some tricks with your interfaces\u0027\nnetmasks.\n"
    },
    {
      "commit": "53b21956f650df86a76b7a7047cfa85114c99dcc",
      "tree": "7a07aba2dcd54b609443974c09ec6f6f5698756a",
      "parents": [
        "73c74d4ee8bd0bc3fae899679e852df9c61f0ed3"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Tue Jan 31 17:09:55 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: remove some unused functions\u0027 arguments.\n"
    },
    {
      "commit": "73c74d4ee8bd0bc3fae899679e852df9c61f0ed3",
      "tree": "98d49f532b6ca046400be60d67eb80972bd5469d",
      "parents": [
        "f92a55ff0ef8e1186ad52369ace299bc91fdb791"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Feb 08 00:32:59 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "doc: fix typo in babeld.\n"
    },
    {
      "commit": "f92a55ff0ef8e1186ad52369ace299bc91fdb791",
      "tree": "36b5068221797590a1c0e65e83a946fdccf9a885",
      "parents": [
        "ec0c848047954158b4316d45586079cbb774a7fe"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 16:33:17 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "doc: Document babeld.\n"
    },
    {
      "commit": "ec0c848047954158b4316d45586079cbb774a7fe",
      "tree": "cd95fef71d389c06513575ec39592851aebda984",
      "parents": [
        "38846de1fd7fa9005933564de28360fb9bdf02bb"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 05:44:41 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Indentation fix.\n"
    },
    {
      "commit": "38846de1fd7fa9005933564de28360fb9bdf02bb",
      "tree": "ec52e9591640b5edbb3b868d487191ec9e324199",
      "parents": [
        "e19ed8c4516621be74b9a28c887185fc66b67430"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 05:43:36 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Error handling and tweaks for babeld commands.\n"
    },
    {
      "commit": "e19ed8c4516621be74b9a28c887185fc66b67430",
      "tree": "2af3257496f6dc568649ee1596d3a265cc8cfd26",
      "parents": [
        "feb6c53eacf630bf18d29e1994f65e567dbdd985"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 05:36:06 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Fix typo in hello interval command.\n"
    },
    {
      "commit": "feb6c53eacf630bf18d29e1994f65e567dbdd985",
      "tree": "4401c28048c69cdbced6be4ab1cd3bbd496b50af",
      "parents": [
        "831aeb9a87d9071829758caf11130aee5578f9c2"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 04:58:49 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "vtysh: Vtysh support for babeld.\n"
    },
    {
      "commit": "831aeb9a87d9071829758caf11130aee5578f9c2",
      "tree": "1d0f7da3a51a47d25e5430c69dbd086ea9c22248",
      "parents": [
        "8c4e57a57562c9329b1de4c29ee921ab98182c6b"
      ],
      "author": {
        "name": "Juliusz Chroboczek",
        "email": "jch@pps.jussieu.fr",
        "time": "Tue Feb 07 04:56:47 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Replace the babeld.conf.sample file by one that actually works.\n"
    },
    {
      "commit": "8c4e57a57562c9329b1de4c29ee921ab98182c6b",
      "tree": "54253839ace41b14e363b6c5ede863c34e91e2e6",
      "parents": [
        "69394543597a0fd8c161c5c8a0d25c8b1cfa8a93"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sat Jan 28 00:29:51 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: fix interface bug, simplify code.\n\nPerhaps could it be able to free already free memory (so free(NULL)),\nin function interface_reset().  On other hand, it initiated untracked\ninterfaces, raising (at least) inappropriate messages. Finally, I\nremove the BABEL_IF_IS_ENABLE flag, witch was not really usefull.\nNote the test if_up isn\u0027t weaker, because (...IS_UP \u003d\u003e ...IS_ENABLE).\n"
    },
    {
      "commit": "69394543597a0fd8c161c5c8a0d25c8b1cfa8a93",
      "tree": "9e13b75ac01d607d4006db15fd14db811b9310e0",
      "parents": [
        "210f6f66287c40f247c1a4ff983aae85b9e42e2c"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sat Jan 28 10:35:12 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: state-file was loaded too early. Initial seqno too.\n"
    },
    {
      "commit": "210f6f66287c40f247c1a4ff983aae85b9e42e2c",
      "tree": "37b63e1cffca96ba3f069f777b89f5f18284a523",
      "parents": [
        "a0edef1b74bc9785b2aa1ed292a2777b6a75d40e"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sat Jan 28 00:07:14 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: fix eui64 features.\n\nWe are interested by eui64 with at least 6 octets.\n"
    },
    {
      "commit": "a0edef1b74bc9785b2aa1ed292a2777b6a75d40e",
      "tree": "e8be8ce19865379388f57d7131c463de2d960dab",
      "parents": [
        "05c943ac43087750ebc81b916b7dccfe4ae074ff"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Fri Jan 27 22:54:11 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: \"return CMD_SUCCESS\" was missing for command \u0027no debug\u0027.\n"
    },
    {
      "commit": "05c943ac43087750ebc81b916b7dccfe4ae074ff",
      "tree": "479fdbb7567e4c01656f9cbf5d19d712e73d2ae4",
      "parents": [
        "c35fafdf887aa32c5be6ad738d3a3b0140cea6e8"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Jan 26 22:15:34 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: Replace redistribution strings with route_types.h defines.\n"
    },
    {
      "commit": "c35fafdf887aa32c5be6ad738d3a3b0140cea6e8",
      "tree": "4aa21a41dcd82247e467e5b955a6f7813bfd7ba7",
      "parents": [
        "16e51b246be6b18641327685f44bd4f5f6649367"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Mon Jan 23 23:46:32 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: babelz merge.\n\nBabelz is the last version of the stand-alone babel daemon. In\nparticular, it use multiple channels to diminuate\ninterferences. Please refer to this one for more details.\n"
    },
    {
      "commit": "16e51b246be6b18641327685f44bd4f5f6649367",
      "tree": "2ad92205d59a36e1d5c822a369fe92381dd43e5c",
      "parents": [
        "0b42c70840e16b048f62a38652123eb2cb900b65"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Mon Jan 23 00:22:14 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: remove unused variable.\n"
    },
    {
      "commit": "0b42c70840e16b048f62a38652123eb2cb900b65",
      "tree": "d0aec2e81624a7b0c43a0319515d257439f57e59",
      "parents": [
        "a19a3bf94740aebff6fdfc76f3d4b17c0013fae4"
      ],
      "author": {
        "name": "Ang Way Chuang",
        "email": "wcang79@gmail.com",
        "time": "Fri Jan 27 20:52:27 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "vtysh: fix regexp for install_element() in babeld\n"
    },
    {
      "commit": "a19a3bf94740aebff6fdfc76f3d4b17c0013fae4",
      "tree": "057e963785a71025500fe3b1e052c348c86c5d67",
      "parents": [
        "ec8d8d5ba648302cf9405f1346e3760d9b9d061c"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Jan 21 23:16:00 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: add MP-specific zclient API fix\n\nAdd proper initialization of SAFI field, which is present in the\nrevisions of zapi_ipv4 and zapi_ipv6 structures specific to\nMP-BGP patchset. Without this change no Babel routes could make\ninto zebra RIB.\n"
    },
    {
      "commit": "ec8d8d5ba648302cf9405f1346e3760d9b9d061c",
      "tree": "ec5a3e3677000458e17e941deccf9c0308ae759a",
      "parents": [
        "6dfeb3f6cfaf89ce0e11421b48feb2965a43ffd6"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Fri Jan 20 15:32:16 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: change the modify route system.\n\nZebra doesn\u0027t set errno to EEXIST if we add a route who was already in\nthe kernel, so we always returned after just doing \"add; delete\". This\npatch fix the problem by doing \"delete; add\" always.\n"
    },
    {
      "commit": "6dfeb3f6cfaf89ce0e11421b48feb2965a43ffd6",
      "tree": "73b35ad02beef3db3e1b69a15c1c82e72c1bd287",
      "parents": [
        "f1305cbfbed050ed4f389fa282bef49917ffd638"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Fri Jan 20 17:53:57 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:53 2012 +0100"
      },
      "message": "babeld: fix bug due to v4mapped addresses.\n"
    },
    {
      "commit": "f1305cbfbed050ed4f389fa282bef49917ffd638",
      "tree": "5b2b264b5d4be7619b90f28225d157ed28232d27",
      "parents": [
        "b5d43c939476b49106b1ab80b61609aba43c915d"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Fri Jan 20 00:19:35 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: add command (config) to set debug flags.\n"
    },
    {
      "commit": "b5d43c939476b49106b1ab80b61609aba43c915d",
      "tree": "6f5cf39088c98a114b0ccadc3a65f3dd848a222c",
      "parents": [
        "2236df03898f82e627f865e11157a5e08dd2e4ba"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Jan 19 22:38:56 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: remove useless variable, make local another.\n"
    },
    {
      "commit": "2236df03898f82e627f865e11157a5e08dd2e4ba",
      "tree": "f27b4f7ce340761e4ce8181ac33cc85ccc5bc9c4",
      "parents": [
        "3f031ed536cf96d44015cf49d1f734d15d194f0a"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Jan 19 22:37:38 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "memory: install babel memory informations.\n"
    },
    {
      "commit": "3f031ed536cf96d44015cf49d1f734d15d194f0a",
      "tree": "b119fce3d2a11f580e355cec08eab50d6b30c181",
      "parents": [
        "72db20bf8f6af1fd70ae42f287360cad835f042b"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 23:03:00 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: fix commands informations messages.\n"
    },
    {
      "commit": "72db20bf8f6af1fd70ae42f287360cad835f042b",
      "tree": "6bc7d807f5ef0bbba7f89059504a7f71cada1f46",
      "parents": [
        "3cb4134bcfb2b9f7aa885a39cc0efc3b18125490"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 22:06:10 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: place the babel-state file in the quagga vars directory.\n"
    },
    {
      "commit": "3cb4134bcfb2b9f7aa885a39cc0efc3b18125490",
      "tree": "c6a6e0177bafc14ad6b240f725a07bb64653a830",
      "parents": [
        "d3351d1ebf99591cf436035bb148e4ae0b351ffc"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 20:20:59 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: use zlog_debug instead of do_debugf, for debugf.\n"
    },
    {
      "commit": "d3351d1ebf99591cf436035bb148e4ae0b351ffc",
      "tree": "f0e5286ec77fe2bab401343df6ce32e79a7b963b",
      "parents": [
        "1f39f466e439f217dcbae741ddc23a5340a05ec9"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Thu Jan 19 22:36:56 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: add command: \"show_babel_running_config\".\n"
    },
    {
      "commit": "1f39f466e439f217dcbae741ddc23a5340a05ec9",
      "tree": "bfe2fe898eacf5b4363d63bde9387efb3bb11125",
      "parents": [
        "297a55ba1ce58b281b825400abeca6c32b99db52"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 20:01:31 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: add command: \"show_babel_database\".\n"
    },
    {
      "commit": "297a55ba1ce58b281b825400abeca6c32b99db52",
      "tree": "cdeeb45d82ed83f6db0bf3920ea7be14f55f94fa",
      "parents": [
        "0ee8a1f1d61ce55642d9164625ab36700fe2c3a9"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 16:39:29 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: add command: \"show_babel_neighbour\".\n"
    },
    {
      "commit": "0ee8a1f1d61ce55642d9164625ab36700fe2c3a9",
      "tree": "1bb2592f6386b38bb6254cd7d6267a2cde056275",
      "parents": [
        "4eedea551290906fc76f3a0c908ae759e78bb68a"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Wed Jan 18 00:52:06 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: avoid segfault (bug 706).\n"
    },
    {
      "commit": "4eedea551290906fc76f3a0c908ae759e78bb68a",
      "tree": "dcc0782b8ffe445f3a75839b99eabc50194442ef",
      "parents": [
        "d4e46e681434e768b870679b998eb1ac7635fdfc"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Tue Jan 17 22:46:21 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: change fprintf(stderr) in term of zlog_err.\n"
    },
    {
      "commit": "d4e46e681434e768b870679b998eb1ac7635fdfc",
      "tree": "9c37d25a9f90c1546e325811678b861b25a14c8e",
      "parents": [
        "8f3607f84eb5d21d4732a51b39775b7edf8796c2"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 17 19:25:03 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: implement \"show babel interface\" command\n\n* babel_interface.c\n  * show_babel_interface_sub(): new function to process one ifp\n  * show_babel_interface(): new function, VTY wrapper\n  * babel_if_init(): update respectively\n"
    },
    {
      "commit": "8f3607f84eb5d21d4732a51b39775b7edf8796c2",
      "tree": "3acdc79efb673d2797ac12abf28308815213f9fe",
      "parents": [
        "446d73b7ae544df3af68b4e85ddcd06c2d3589bf"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 17 17:04:00 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: add handling of \"-z\" cmdline arg\n"
    },
    {
      "commit": "446d73b7ae544df3af68b4e85ddcd06c2d3589bf",
      "tree": "9e09fbc19f68c90e7ab6c3ee43e1efbf7cf3214f",
      "parents": [
        "f8a246d6df0556fb897e1785d1c2ea81caf8956d"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 17 17:00:20 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: bring babel_usage() into focus\n"
    },
    {
      "commit": "f8a246d6df0556fb897e1785d1c2ea81caf8956d",
      "tree": "e78438d35439685d7427dd5bfbc404f5c32f4b5c",
      "parents": [
        "87c271c69330cfcea7955503eba3ed15a15cb634"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Jan 11 18:18:56 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "lib: update proto_redistnum() for Babel\n"
    },
    {
      "commit": "87c271c69330cfcea7955503eba3ed15a15cb634",
      "tree": "b336a3004fcdc45dea7ff336889984ca8f94e320",
      "parents": [
        "528eab1fd04434e0befe9a98191b11602e3cb2ff"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 10 15:58:04 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: address remaining -Wcast-qual warnings\n\n* net.c\n  * babel_send(): arguments are not treated as \"const\", justify\n    declaration\n* babel_main.c: declare constant pointers as such\n"
    },
    {
      "commit": "528eab1fd04434e0befe9a98191b11602e3cb2ff",
      "tree": "2d7db816953bda15297d9d500c3c878185f22ca3",
      "parents": [
        "c7c53fa88ccdbc2d48cf7327c9e4f33cdc517a8a"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sun Jan 08 17:07:10 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: fix bug concerning pidfile.\n"
    },
    {
      "commit": "c7c53fa88ccdbc2d48cf7327c9e4f33cdc517a8a",
      "tree": "9bd7e691165412840555be6d10a7a37b69b00bc0",
      "parents": [
        "3dbda0ceebe369a1071600fe7d8d8ecf45f1027c"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Sun Jan 08 16:43:08 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: address some other compilation warnings.\n"
    },
    {
      "commit": "3dbda0ceebe369a1071600fe7d8d8ecf45f1027c",
      "tree": "1df830052d1a516bc4ec6b213b36b16d28c9868d",
      "parents": [
        "ef4de4d36c2dc10a68d41e518057d04b262ec867"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jan 08 16:52:36 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: address some compilation warnings\n\nIncluding system headers is not necessary with zebra.h included and\nsometimes results in \"__ASSERT_FUNCTION redefined\" compilation warning.\n\n* babeld.c\n  * babel_distribute_update_interface(): make static\n* babel_interface.c\n  * interface_config_write(): unused \u0027babel_ifp\u0027\n  * don\u0027t include system headers\n* message.c\n  * send_request(): unused \u0027babel_ifp\u0027\n  * send_multihop_request(): idem\n  * don\u0027t include system headers\n* route.c: don\u0027t include system headers\n* xroute.c: idem\n* source.h: newline at EOF\n* message.h: idem\n"
    },
    {
      "commit": "ef4de4d36c2dc10a68d41e518057d04b262ec867",
      "tree": "fb194c240926977a85d3f313f65b3ab038fb8d1a",
      "parents": [
        "089082b5d51c41a4498edb6a3f495ade0d517e73"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jan 08 15:29:19 2012 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: address FreeBSD \"struct route\" issue\n\nFreeBSD system headers have their own \"struct route\", which made it\nimpossible to compile babeld. Switching babeld to \"struct babel_route\".\n"
    },
    {
      "commit": "089082b5d51c41a4498edb6a3f495ade0d517e73",
      "tree": "af876f1c7fcbd3077ffcce8c76e031c226b654cf",
      "parents": [
        "5734509c0545ebd95a5b8e3f22a911c1a39ffa1b"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.jussieu.fr",
        "time": "Fri Jan 06 23:09:23 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:52 2012 +0100"
      },
      "message": "babeld: clean kernel_zebra (old functions, fields...).\n"
    },
    {
      "commit": "5734509c0545ebd95a5b8e3f22a911c1a39ffa1b",
      "tree": "2f35ad50d793080db1f858c2de2228cfd2946dfd",
      "parents": [
        "fe67e668881b8b8d71b1570575c913cd287fafcf"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Dec 25 17:52:09 2011 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:51 2012 +0100"
      },
      "message": "babeld: Initial import, for Babel routing protocol.\n\n* Initial import of the Babel routing protocol, ported to Quagga.\n* LICENCE: Update the original LICENCE file to include all known potentially\n  applicable copyright claims.  Ask that any future contributors to babeld/\n  grant MIT/X11 licence to their work.\n* *.{c,h}: Add GPL headers, in according with the SFLC guidance on\n  dealing with potentially mixed GPL/other licensed work, at:\n\n  https://www.softwarefreedom.org/resources/2007/gpl-non-gpl-collaboration.html\n"
    },
    {
      "commit": "fe67e668881b8b8d71b1570575c913cd287fafcf",
      "tree": "ce48b0028e879d4e6f938bb9dd583ed9f679fa96",
      "parents": [
        "aee567450eaf32877d00f47c4cc5d05c5fb85a51"
      ],
      "author": {
        "name": "Renato Westphal",
        "email": "renatowestphal@gmail.com",
        "time": "Fri Mar 23 16:27:40 2012 -0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Mar 23 20:51:28 2012 +0100"
      },
      "message": "lib: fix endianness bug in prefix.c\n\nWhile defining two \"maskbytes\" arrays for the respective endiannesses,\nthe code was unconditionally using one that only worked on little endian\nsystems.\n\nUse preprocessor macros to avoid the somewhat expensive\nhtonl/ntohl macros.\n\nFrom: Renato Westphal \u003crenatowestphal@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "aee567450eaf32877d00f47c4cc5d05c5fb85a51",
      "tree": "9fb0df5ce6fedc3e403f8b2b4d59ed0e556a1453",
      "parents": [
        "bd5651f0ec7aa94627a2a6868dd458f016750a35"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 28 15:15:29 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:45 2012 +0100"
      },
      "message": "ospfd: reduce ospf_verify_header()\n\nProtocol version checks fits ospf_packet_examin() better (like it is\nimplemented in ospf6d), and packet type check is already there.\n"
    },
    {
      "commit": "bd5651f0ec7aa94627a2a6868dd458f016750a35",
      "tree": "9f5dcd01bd90d1ea78cd841f00fea4bbdc3a6dee",
      "parents": [
        "ef1b78cbcd8ade0c5444f3ff9dd00a40e760ec92"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Feb 26 17:59:43 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:38 2012 +0100"
      },
      "message": "ospfd: bring ospf_check_auth() into focus\n\nThe old ospf_check_auth() function did two different jobs depending on\nAuType. For Null and Simple cases it actually authenticated the packet,\nbut for Cryptographic case it only checked declared packet size (not\ntaking the actual number of bytes on wire into account). The calling\nfunction, ospf_verify_header(), had its own set of MD5/checksum checks\ndispatched depending on AuType.\n\nThis commit makes the packet size check work against the real number of\nbytes and moves it to ospf_packet_examine(). All MD5/checksum\nverification is now performed in ospf_check_auth() function.\n\n* ospf_packet.c\n  * ospf_packet_examin(): check length with MD5 bytes in mind\n  * ospf_verify_header(): remove all AuType-specific code\n  * ospf_check_auth(): completely rewrite\n"
    },
    {
      "commit": "ef1b78cbcd8ade0c5444f3ff9dd00a40e760ec92",
      "tree": "ad1f4d0ac76be5cff0cea5c44ba23b76967746c2",
      "parents": [
        "b29adf9c3e69f298f748564a20abdf7274bbc549"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Feb 26 17:00:57 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:34 2012 +0100"
      },
      "message": "ospfd: introduce ospf_auth_type_str[]\n"
    },
    {
      "commit": "b29adf9c3e69f298f748564a20abdf7274bbc549",
      "tree": "1b1d18c542fa6cae9f4d7f7a6e559a23b0bdafc3",
      "parents": [
        "4e31de792ec5e48a97360b5b86196b4fa02996a3"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Feb 20 23:08:10 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:30 2012 +0100"
      },
      "message": "ospfd: fix packet length check for auth/LLS cases\n\nAn OSPFv2 packet with trailing data blocks (authentication and/or\nlink-local signaling) failed the recently implemented packet length\ncheck, because trailing data length isn\u0027t counted in the packet header\n\"length\" field. This commit fixes respective check conditions.\n\n* ospf_packet.c\n  * ospf_packet_examin(): use \"bytesdeclared\" instead of \"bytesonwire\"\n"
    },
    {
      "commit": "4e31de792ec5e48a97360b5b86196b4fa02996a3",
      "tree": "6312c43f628d69392676c85129f107e4ee53b802",
      "parents": [
        "2d8223c5472129eba89d630dc4f2688ebeae1dd8"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Feb 17 16:20:50 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:28 2012 +0100"
      },
      "message": "ospfd: introduce ospf_lsa_minlen[] (BZ#705)\n\nThis commit ports more packet checks to OSPFv2, in particular, LSA size\nverification and Router-LSA link blocks verification.\n\n* ospf_lsa.h: add LSA size macros\n* ospf_packet.h: add struct ospf_ls_update\n* ospf_packet.c\n  * ospf_lsa_minlen[]: a direct equivalent of ospf6_lsa_minlen[]\n  * ospf_router_lsa_links_examin(): new function, verifies trailing\n    part of a Router-LSA\n  * ospf_lsa_examin(): new function like ospf6_lsa_examin()\n  * ospf_lsaseq_examin(): new function like ospf6_lsaseq_examin()\n  * ospf_packet_examin(): add type-specific deeper level checks\n"
    },
    {
      "commit": "2d8223c5472129eba89d630dc4f2688ebeae1dd8",
      "tree": "482c71c9a6f149ab78938de2df7f3e534a9756a3",
      "parents": [
        "e52591481ed64e4cf9f26a76ad682ed7e6b451e7"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 30 20:32:39 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:22 2012 +0100"
      },
      "message": "ospfd: review ospf_check_md5_digest()\n\nRewrite some pointer arithmetics without the additional variables and\nmove byte order conversion inside the function.\n"
    },
    {
      "commit": "e52591481ed64e4cf9f26a76ad682ed7e6b451e7",
      "tree": "738a2ba31eb42b6d5d61fd61bad772a73c5cd82e",
      "parents": [
        "75c8eabbb5d3dc8aa21b61e8700ab939ce272f5c"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 30 16:07:18 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:19 2012 +0100"
      },
      "message": "ospfd: review ospf_check_auth()\n\n1. The only purpose of \"ibuf\" argument was to get stream size, which\nwas always equal to OSPF_MAX_PACKET_SIZE + 1, exactly as initialized\nin ospf_new().\n\n2. Fix the packet size check condition, which was incorrect for very\nlarge packets, at least in theory.\n"
    },
    {
      "commit": "75c8eabbb5d3dc8aa21b61e8700ab939ce272f5c",
      "tree": "9ecfa0b4bedf00abb544fea8b9242e59af31a5b6",
      "parents": [
        "7e0e2cb14ca16ce9eaca3b0300c1ffa92a6a104b"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 30 15:41:39 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:14 2012 +0100"
      },
      "message": "ospfd: introduce ospf_packet_minlen[] (BZ#705)\n\nThis commit ports some of the OSPFv3 packet reception checks\nto OSPFv2.\n\n* ospf_packet.c\n  * ospf_packet_minlen[]: a direct equivalent of ospf6_packet_minlen[]\n  * ospf_packet_examin(): new function designed after the first part\n    of ospf6_packet_examin()\n  * ospf_read(): verify received packet with ospf_packet_examin()\n* ospf_packet.h: add convenience macros\n"
    },
    {
      "commit": "7e0e2cb14ca16ce9eaca3b0300c1ffa92a6a104b",
      "tree": "1327873f183d26d4a329f1a135fb414e9163975d",
      "parents": [
        "272ca1e33016b1cbf9c72038d5e631b0adb04dc9"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Jan 20 22:32:10 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:11 2012 +0100"
      },
      "message": "ospfd: fix ospf_packet_add_top() to use LOOKUP()\n"
    },
    {
      "commit": "272ca1e33016b1cbf9c72038d5e631b0adb04dc9",
      "tree": "6728fe6847947d0ddf600bd22f4bf7f040da8274",
      "parents": [
        "a20a4060c8b90e3d88ce97d439eee1a38260d7c5"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jan 15 19:12:19 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:04:54 2012 +0100"
      },
      "message": "ospfd: use LOOKUP() for ospf_packet_type_str\n\n* ospf_packet.h: add proper str/max extern declarations\n* ospf_packet.c\n  * ospf_packet_type_str: rewrite in \"struct message\", add max value\n  * ospf_packet_add(): use LOOKUP()\n  * ospf_write(): ditto\n  * ospf_hello(): ditto\n  * ospf_read(): ditto\n* ospf_dump.h: the declaration does not belong here\n* ospf_dump.c\n  * ospf_header_dump(): use LOOKUP()\n  * show_debugging_ospf(): ditto\n"
    },
    {
      "commit": "a20a4060c8b90e3d88ce97d439eee1a38260d7c5",
      "tree": "bf164684241b37dfd5717bfe5b56d4acf69fce3a",
      "parents": [
        "fa482834ea1a30eff056dbf0f36a6f3262460a08"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Mar 08 16:42:31 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Mar 08 16:42:31 2012 +0000"
      },
      "message": "doc: Fix an apparently no longer legal @itemize @asis\n\n* basic.texi: @asis isn\u0027t legal with @itemize apparently, should be @w\n  according to docs, but @w{} seems to be needed. Fixes doc build error.\n"
    },
    {
      "commit": "fa482834ea1a30eff056dbf0f36a6f3262460a08",
      "tree": "cdabf37152e29e05724d54e4ed6bb783b0d9472e",
      "parents": [
        "096259d0623ad1a30c5da139af180909b322c91f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Mar 08 13:51:21 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Mar 08 16:14:13 2012 +0000"
      },
      "message": "HACKING.tex: Change to a LaTeX version of HACKING\n\n* configure.ac: Check for latexmk and pdflatex\n* Makefile.am: Add a conditional target to build HACKING.pdf, as a convenience\n* HACKING.tex: A slightly more structured HACKING, is readable on its own.\n* HACKING: removed\n"
    },
    {
      "commit": "096259d0623ad1a30c5da139af180909b322c91f",
      "tree": "74cc746a93956c5073ac82cf5270913a41ce6b4a",
      "parents": [
        "724b3aef4e59a48e9404ee17f09a504b20af0d37"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Mar 07 11:42:03 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Mar 07 11:42:03 2012 +0000"
      },
      "message": "HACKING: Typo fix\n"
    },
    {
      "commit": "724b3aef4e59a48e9404ee17f09a504b20af0d37",
      "tree": "a760f5b747b3378b6b8c27408a4cadb1e91bf79a",
      "parents": [
        "9fc75742397cf942ca9d684815ce63058b2576ff"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Mar 07 11:02:05 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Mar 07 11:02:05 2012 +0000"
      },
      "message": "HACKING: Updates that have some initial consensus, for further iteration.\n"
    },
    {
      "commit": "9fc75742397cf942ca9d684815ce63058b2576ff",
      "tree": "3655b28f06ac2bdf9639b86e2df7c3abc525cd73",
      "parents": [
        "543fb49c316df9af2d25f08ba7e0da0305c36b5e",
        "5861739f8c38bc36ea9955e5cb2be2bf2f482d70"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Mar 05 11:55:53 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Mar 05 11:55:53 2012 +0000"
      },
      "message": "Merge remote-tracking branch \u0027quagga-gnu.org/master\u0027\n"
    },
    {
      "commit": "5861739f8c38bc36ea9955e5cb2be2bf2f482d70",
      "tree": "9675845a0b3be97362f3426430c6c2e499e8525c",
      "parents": [
        "50e7a3885da44f8f6c5c639e111109deb055cdf3"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 09 20:59:26 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 04 23:55:02 2012 +0000"
      },
      "message": "bgpd: Open option parse errors don\u0027t NOTIFY, resulting in abort \u0026 DoS\n\n* bgp_packet.c: (bgp_open_receive) Errors from bgp_open_option_parse are\n  detected, and the code will stop processing the OPEN and return.  However\n  it does so without calling bgp_notify_send to send a NOTIFY - which means\n  the peer FSM doesn\u0027t get stopped, and bgp_read will be called again later.\n  Because it returns, it doesn\u0027t go through the code near the end of the\n  function that removes the current message from the peer input streaam.\n  Thus the next call to bgp_read will try to parse a half-parsed stream as\n  if it were a new BGP message, leading to an assert later in the code when\n  it tries to read stuff that isn\u0027t there. Add the required call to\n  bgp_notify_send before returning.\n* bgp_open.c: (bgp_capability_as4) Be a bit stricter, check the length field\n  corresponds to the only value it can be, which is the amount we\u0027re going to\n  read off the stream. And make sure the capability flag gets set, so\n  callers can know this capability was read, regardless.\n  (peek_for_as4_capability) Let bgp_capability_as4 do the length check.\n"
    },
    {
      "commit": "50e7a3885da44f8f6c5c639e111109deb055cdf3",
      "tree": "34ff9fa6b67d7cbb47e2450eb7f8571a6b57f092",
      "parents": [
        "b5043aabb03567b46a16463d88a8afce2acda35e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 09 13:54:33 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 04 23:55:01 2012 +0000"
      },
      "message": "tools/multiple-bgpd: Fix the PREV calculation so it works for \u003c4 bgpd\n\n* tools/multiple-bgpd: Make PREV more general and correct. Add comment\n  to route-map about why rt/soo sets are there - cause it\u0027s still broken.\n"
    },
    {
      "commit": "543fb49c316df9af2d25f08ba7e0da0305c36b5e",
      "tree": "5f1f8dd5139e47c05e37b104897485dab21f9417",
      "parents": [
        "835315bfb49bff2b2fb354f2075c6d6693c2a151"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Mar 02 11:56:38 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Mar 02 11:56:38 2012 +0000"
      },
      "message": "HACKING.pending: Add Quagga-RE details\n"
    },
    {
      "commit": "b5043aabb03567b46a16463d88a8afce2acda35e",
      "tree": "7b975c45bdbf513f62a1ad7f1aad35afb01606c9",
      "parents": [
        "b51a3a31500133e3e26f12e7639f297c655bc735"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Feb 28 18:32:56 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Feb 28 18:35:45 2012 +0000"
      },
      "message": "lib: fix incorrect thread list processing loops\n\n* thread.c: (thread_timer_process,thread_process) thread_list_delete nulls\n  thread-\u003enext. Loops need to save next first, or will only process the head.\n  Problem noted by Lou Berger \u003clberger@labn.net\u003e.\n"
    },
    {
      "commit": "835315bfb49bff2b2fb354f2075c6d6693c2a151",
      "tree": "b9cc49ef796bcb1e3836ff670da930765815acfa",
      "parents": [
        "3ecab4c8549574d09f8d8366098939a8ad3da6c4"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jan 18 12:28:30 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Feb 28 18:35:45 2012 +0000"
      },
      "message": "bgpd: Move up flag-check calls, parcel up attr-parser args, and other cleanups\n\n* bgp_attr.h: (struct bgp_attr_parser_args) Attribute parsing context,\n  containing common arguments.\n* bgp_attr.c: (general) Move the bgp_attr_flag_invalid flag-check calls up,\n  out of each individual attr parser function, to be done once in attr_parse.\n\n  Similarly move the calculation of the \u0027total\u0027 attribute length field up\n  to attr_parse.\n\n  Bundle together common arguments to attr-parsing functions and helpers\n  into (struct bgp_attr_parser_args), so it can be passed by reference down\n  the stack \u0026 also de-clutter the argument lists \u0026 make it easier to\n  add/modify the context for attr-parsing - add local const aliases to avoid\n  modifying body of code too much. This also should help avoid cut \u0026 paste\n  errors, where calls to helpers with hard-coded attribute types are pasted\n  to other functions but the code isn\u0027t changed.\n\n  (bgp_attr_flags_diagnose) as above.\n  (bgp_attr_flag_invalid) as above.\n  (bgp_attr_{origin,aspath,as4_path,nexthop,med,local_pref,atomic}) as above.\n  (bgp_attr_{aggregator,as4_aggregator,community,originator_id}) as above\n  (bgp_attr_{cluster_list,ext_communities},bgp_mp_{un,}reach_parse) as above\n  (bgp_attr_unknown) as above.\n\n  (bgp_attr_malformed) as above. Also, startp and length have to be\n  special-cased, because whether or not to send attribute data depends\n  on the particular error - a separate length argument, distinct from\n  args-\u003elength, indicates whether or not the attribute data should be sent\n  in the NOTIFY.\n  (bgp_attr_aspath_check) Call to bgp_attr_malformed is wrong here, there is\n  no attribute parsing context - e.g. the \u0027flag\u0027 argument is unlikely to be\n  right, remove it. Explicitly handle the error instead.\n  (bgp_attr_munge_as4_attrs) Flag argument is pointless.\n\n  As the comment notes, the check here is pointless as AS_PATH presence\n  already checked elsewhere.\n\n  (bgp_attr_parse) Do bgp_attr_flag_invalid call here.\n  Use (struct bgp_attr_parser_args) for args to attr parser functions.\n  Remove out-of-context \u0027flag\u0027 argument to as4 checking functions.\n"
    },
    {
      "commit": "3ecab4c8549574d09f8d8366098939a8ad3da6c4",
      "tree": "7b8281980887ef0c57485be0ca6f382c054762cd",
      "parents": [
        "b5043aabb03567b46a16463d88a8afce2acda35e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jan 17 13:31:33 2012 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Feb 28 18:35:45 2012 +0000"
      },
      "message": "bgpd: consolidate attribute flag checks\n\n* bgpd/bgp_attr.c: (attr_flags_values []) array of required flags for\n  attributes, EXTLEN \u0026 PARTIAL masked off as \"dont care\" as appropriate.\n  (bgp_attr_flag_invalid) check if flags may be invalid, according to\n  the above table \u0026 RFC rules.\n  (bgp_attr_*) Use bgp_attr_flag_invalid.\n  (bgp_attr_as4_aggregator) ditto, also take startp argument for the\n  NOTIFY data.\n  (bgp_attr_parse) pass startp to bgp_attr_as4_aggregator\n"
    },
    {
      "commit": "b51a3a31500133e3e26f12e7639f297c655bc735",
      "tree": "07bf18aeaace7f07736caf8016082e47e0f10a0c",
      "parents": [
        "ef2d5d100431031c32ea35b3c834b46cff16f511"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Fri Feb 10 10:42:45 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 21 21:45:42 2012 +0400"
      },
      "message": "ospf6d: remove defaults from iface config (BZ#550)\n"
    },
    {
      "commit": "ef2d5d100431031c32ea35b3c834b46cff16f511",
      "tree": "c327572a6ea15d00abc8e70b45f41affb0b2d21f",
      "parents": [
        "4c78376f96cd2ca56f1c6476b76fd659654431f5"
      ],
      "author": {
        "name": "Phil Laverdiere",
        "email": "phil_laverdiere@securecomputing.com",
        "time": "Mon Jan 02 20:04:26 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 21 21:35:07 2012 +0400"
      },
      "message": "ospf6d: remove own routes on SIGTERM (BZ#448)\n"
    },
    {
      "commit": "4c78376f96cd2ca56f1c6476b76fd659654431f5",
      "tree": "1019b6adbea4ef0305c9574a9588e20345539028",
      "parents": [
        "e854095932260b3e6187902aa9a7baa0e96b9428"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Jan 21 22:50:19 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 21 21:34:21 2012 +0400"
      },
      "message": "lib: fix logging of ZEBRA_HELLO message\n"
    },
    {
      "commit": "e854095932260b3e6187902aa9a7baa0e96b9428",
      "tree": "1ee0afa3ad43b610d52bc04f86ea6e2b2e4ad00d",
      "parents": [
        "e6b03b77766dce8009ad7b4a2392e14addf4ab0f"
      ],
      "author": {
        "name": "Everton Marques",
        "email": "everton.marques@gmail.com",
        "time": "Thu Feb 16 06:14:54 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Thu Feb 16 06:17:11 2012 +0100"
      },
      "message": "lib: add THREAD_TIMER_MSEC_ON()\n\n * lib/thread.h: new timer macro, millisecond precision\n\n(this was cherrypicked from pimd to isolate all non-contained changes)\n\nFrom: Everton Marques \u003ceverton.marques@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "e6b03b77766dce8009ad7b4a2392e14addf4ab0f",
      "tree": "a47466541c8f85e70b228ae4ab3da31af3391507",
      "parents": [
        "c25eaffdb2190149e768dc4ee4efc913c6d02992"
      ],
      "author": {
        "name": "Fritz Reichmann",
        "email": "fritz@reichmann.nl",
        "time": "Sat Oct 01 17:49:48 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 14 03:06:36 2012 +0400"
      },
      "message": "isisd: implement MD5 circuit authentication\n\n* Replace command \"isis passwd\" with \"isis passwd {clear|md5}\"\n* Verify HMAC MD5 on ISIS Hello PDUs\n* Add HMAC MD5 authentication to md5.h/md5.c from RFC2104\n"
    },
    {
      "commit": "c25eaffdb2190149e768dc4ee4efc913c6d02992",
      "tree": "d8623ba984fcbd1e81815fa0d31f27ef7067d075",
      "parents": [
        "d034aa027ef44d0a74805c27ad2a4d8ea20395d1"
      ],
      "author": {
        "name": "Fritz Reichmann",
        "email": "fritz@reichmann.nl",
        "time": "Sat Oct 01 17:43:12 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 14 03:06:29 2012 +0400"
      },
      "message": "isisd: unexpected kernel routing table (BZ#544)\n\nFix bug 544: isisd produces an unexpected routing table for wide-metric.\n\n* isis_spf.c: Accept VTYPE_PSEUDO_TE_IS and VTYPE_NONPSEUDO_TE_IS\n  vertex types for SPF calculation\n* isis_pdu.c: Change order of TLVs to match Cisco to make bitwise\n  comparison easier for Wireshark\n* isis_tlv.c: EXTREME_TLV_DEBUG for TLV debugging instead of\n  EXTREME_DEBUG\n"
    },
    {
      "commit": "d034aa027ef44d0a74805c27ad2a4d8ea20395d1",
      "tree": "bf464ce298c822f207f14423a9a1dc847d960cc0",
      "parents": [
        "907fd95e502e10334e5390c73cc57588b88b8171"
      ],
      "author": {
        "name": "Peter Szilagyi",
        "email": "peszilagyi@gmail.com",
        "time": "Sat Oct 01 17:22:51 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 14 03:06:17 2012 +0400"
      },
      "message": "isisd: fix wrong next-hops from SPF\n\nThe forwarding table was filled with wrong next-hops, and which is even\nworse, it was done in a totally non-deterministic way.\n\nThe next-hop set for an IP prefix by isisd was the neighbor IS from\nwhich the flooded LSP about the IP prefix was arrived. So, if an IS\nreceived all the LSPs through its, say, eth0 interface, all entries\nin the forwarding table contained the next IS reachable via eth0 as\nthe next-hop.\n\nThe solution is to propagate the correct next-hop further from node to\nnode as the SPF algorithm traverses the graph and selects the next\nnode to be added to the set of already covered nodes.\n\nAlso, the construction of the tentative node list (the nodes where the\nshortest path is not known yet) was buggy: if a node was already a\nmember of this list with a certain path cost, and an alternative path\nwas found to it with a lower cost while processing a pseudo-node LSP,\nit was not added to the list. This way, the path selected by isisd for\na certain prefix was the first one it encountered during the LSDB\nprocessing.\n\nSigned-off-by: Fritz Reichmann \u003cfritz@reichmann.nl\u003e\n"
    },
    {
      "commit": "907fd95e502e10334e5390c73cc57588b88b8171",
      "tree": "751ccecafac9014ce71f1e9fe11f817daf6a3a32",
      "parents": [
        "7fd6cd819ff98f0580b745ba637990df9c20ef0f"
      ],
      "author": {
        "name": "Peter Szilagyi",
        "email": "peszilagyi@gmail.com",
        "time": "Sat Oct 01 17:15:46 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 14 03:06:09 2012 +0400"
      },
      "message": "isisd: send proper LSP after DIS election\n\nAfter an IS has been elected as the Designated IS for a LAN, it did\nnot refresh the content of the pseudo-node after a new node has been\nconnected to the same LAN. Instead, the periodically reoriginated\npseudo-node LSP still contained only those IS neighbors that were\nalready present when the DIS election process was commenced.\n\nThe fix for the problem schedules an LSP regeneration rather than\njust reoriginating the same LSP with the old content.\n\nSigned-off-by: Fritz Reichmann \u003cfritz@reichmann.nl\u003e\n"
    },
    {
      "commit": "7fd6cd819ff98f0580b745ba637990df9c20ef0f",
      "tree": "c95fc6bc290d170cd14a5962609df5baf577999d",
      "parents": [
        "4c0cf00afc4340a429a9c4830f638b4593d7c3af"
      ],
      "author": {
        "name": "Peter Szilagyi",
        "email": "peszilagyi@gmail.com",
        "time": "Sat Oct 01 17:11:45 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 14 03:06:00 2012 +0400"
      },
      "message": "isisd: fix circuit state machine\n\nisisd has a so-called circuit state machine that takes care about\nthe interface state changes, such as initializing, down, up. When\nan interface was brought down by a link failure, the interface\ninformation was deleted and set to NULL. When the link was restored\nlater, the interface was looked up by the old pointer, but since it\nwas cleared, it was never found again, resulting in an interface\nnever entering the up state again.\n\nAlso, the program regularly crashed because of a deleted pointer in\nthe same context which was later accessed without any further\nchecking.\n\nSigned-off-by: Fritz Reichmann \u003cfritz@reichmann.nl\u003e\n"
    },
    {
      "commit": "4c0cf00afc4340a429a9c4830f638b4593d7c3af",
      "tree": "572ec0a416b23456d42e42b9f7c9fba4b562fd2a",
      "parents": [
        "4afa50b393ff1fb34dd577888a05b81dfdced5af"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon May 31 12:02:31 2010 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sat Feb 11 15:26:19 2012 +0100"
      },
      "message": "ospf6d: fix out of bounds write in ospf6_prefix_apply_mask\n\nospf6_prefix_apply_mask would write one byte beyond the 4/8/12\nbytes allocated for prefixes of length 32/64/96.\n\nbased on report and patch by Jon Andersson \u003cjon.andersson@thales.no\u003e\n\nReported-by: Jon Andersson \u003cjon.andersson@thales.no\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "4afa50b393ff1fb34dd577888a05b81dfdced5af",
      "tree": "e9bb7272c91a79276f2da1450b1cee14bc80b188",
      "parents": [
        "6eb0c5ab1d43bcf9edd4fefd19031f2b96ded728"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 24 12:39:58 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:43:00 2012 +0400"
      },
      "message": "zebra: justify rtadv VTY commands with arguments\n\nipv6 nd ra-interval\nipv6 nd ra-lifetime\nipv6 nd reachable-time\nipv6 nd home-agent-preference\nipv6 nd home-agent-lifetime\nipv6 nd router-preference\n\nCalls to atoi() and atol() are replaced with VTY_GET_INTEGER_RANGE()\nmacro, command patterns are clarified and aliases of some commands\nare added for consistency. Other changes are listed below.\n\n* zebra/rtadv.c\n  * ipv6_nd_ra_interval_msec(): resolve -Wsign-compare\n  * ipv6_nd_ra_interval(): idem\n  * rtadv_init(): update to list new aliases\n* doc/ipv6.texi: update to match current implementation\n"
    },
    {
      "commit": "6eb0c5ab1d43bcf9edd4fefd19031f2b96ded728",
      "tree": "734d264279d8a44022aaa8661f9c94cca6cb8a74",
      "parents": [
        "aca43b656623f38dfa6ea835dacbdfec51d03a67"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 24 11:02:03 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:57 2012 +0400"
      },
      "message": "zebra: freshen RFC references in rtadv\n\nRFC2461 was replaced by RFC4861\nRFC3775 was replaced by RFC6275\ndraft-ietf-mip6-mipext-advapi-03 was replaced by RFC4584\n"
    },
    {
      "commit": "aca43b656623f38dfa6ea835dacbdfec51d03a67",
      "tree": "0d53b9b2340000e169cffdf1ca39983607b193d4",
      "parents": [
        "6bb1273e83c29b3aeff9584bc8f6272e773294ad"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jan 08 18:27:12 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:54 2012 +0400"
      },
      "message": "zebra: use prefix_ipv6 in rtadv_prefix\n\nrtadv_prefix.prefix was casted to \"struct prefix_ipv6\" and had the same\nsize, make it exactly this type to make the code a bit cleaner.\n"
    },
    {
      "commit": "6bb1273e83c29b3aeff9584bc8f6272e773294ad",
      "tree": "a40cc3cb8853c2a3188ef8aabe47a3486dac30cb",
      "parents": [
        "d660f698427277ce695a5b756f3143c8304274ea"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jan 08 17:46:34 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:51 2012 +0400"
      },
      "message": "zebra: clear host bits of ND RA prefix option\n\nRFC4861 4.6.2. Prefix Information\n\nPrefix         An IP address or a prefix of an IP address.  The\n               Prefix Length field contains the number of valid\n               leading bits in the prefix.  The bits in the prefix\n               after the prefix length are reserved and MUST be\n               initialized to zero by the sender and ignored by\n               the receiver.\n\n* rtadv.c\n  * ipv6_nd_prefix(): add missing call to apply_mask_ipv6()\n  * no_ipv6_nd_prefix(): idem\n"
    },
    {
      "commit": "d660f698427277ce695a5b756f3143c8304274ea",
      "tree": "f26d5f72724cae8ee9844f30ba8e0aaf7b7c3006",
      "parents": [
        "6134b875f39986564aced5e2d7329fcd852f17f4"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Dec 30 21:55:49 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:48 2012 +0400"
      },
      "message": "zebra: justify some IPv6 ND RA timers wrt RFC\n\nThere was a regression introduced with the previous commit:\n\"ipv6 nd home-agent-lifetime 1800000\" appeared by default in every\ninterface section of running-config, although this  command is\ninvalid in this context. Troubleshooting and bugfixing of the issue\ntracked out several bugs in router advertisement procedures, some of\nwhich are fixed in this commit.\n\n* zebra/interface.c\n  * if_zebra_new_hook(): update to treat -1 as \"uninitialized\"\n  * nd_dump_vty(): idem\n* zebra/rtadv.c\n  * rtadv_send_packet(): update processing of \"router lifetime\" field,\n    \"home agent\" option and \"home agent lifetime\" field to conform to\n    RFC6275 better\n  * ipv6_nd_ra_interval_msec(): update MaxRtrAdvInterval range check,\n    make sure it never exceeds (initialized) AdvDefaultLifetime\n  * ipv6_nd_ra_interval(): idem\n  * ipv6_nd_ra_lifetime(): update AdvDefaultLifetime range check, make\n    sure it never falls below MaxRtrAdvInterval\n  * ipv6_nd_homeagent_lifetime(): update HomeAgentLifetime range check\n  * no_ipv6_nd_ra_lifetime(): update to treat -1 as \"uninitialized\"\n  * no_ipv6_nd_homeagent_lifetime(): idem\n  * rtadv_config_write(): idem\n"
    },
    {
      "commit": "6134b875f39986564aced5e2d7329fcd852f17f4",
      "tree": "19eb8d2df066047bc25162587f2ce9e1950c20ed",
      "parents": [
        "b4e45f67057be22133b6bec88cdf285d5c8214db"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 27 18:49:15 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:44 2012 +0400"
      },
      "message": "zebra: fix output of IPv6 ND RA options\n\nThe following options could be configured for an interface, but were\nnever visible in the config text:\n\nipv6 nd adv-interval-option\nipv6 nd home-agent-preference\nipv6 nd home-agent-lifetime\nipv6 nd home-agent-config-flag\n"
    },
    {
      "commit": "b4e45f67057be22133b6bec88cdf285d5c8214db",
      "tree": "80f775047efb255ef573b2e9d3affb1a7caeb6d1",
      "parents": [
        "6eac79a6fed4842e00607c00c445213b51bba377"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 05 16:35:14 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:31:42 2012 +0400"
      },
      "message": "fix zebra protocol after MP-BGP changes\n\nThe previous commits modified both zebra and bgpd for additional\nSAFI field, but not any other routing daemon, which led to zebra\ndaemon crashing with failed assertion.\n"
    },
    {
      "commit": "6eac79a6fed4842e00607c00c445213b51bba377",
      "tree": "51b63c6028d7a98236cbd31880f770c9d3787bfc",
      "parents": [
        "cb32fd690a957819865219a847e3c21a53a0f419"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 05 13:43:18 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:31:34 2012 +0400"
      },
      "message": "zebra: fix recent MP-BGP commits for FreeBSD\n"
    },
    {
      "commit": "cb32fd690a957819865219a847e3c21a53a0f419",
      "tree": "d152fe1feadaaa3b14472c097770bb71a2e75730",
      "parents": [
        "73bfe0bd9adb8e4dfcee7239e56a425c6d58f4e9"
      ],
      "author": {
        "name": "G.Balaji",
        "email": "balajig81@gmail.com",
        "time": "Sun Nov 27 20:09:40 2011 +0530"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:31:14 2012 +0400"
      },
      "message": "zebra: Removal of the following warning messages\n       warning: too many arguments for format [-Wformat-extra-args]\n"
    },
    {
      "commit": "73bfe0bd9adb8e4dfcee7239e56a425c6d58f4e9",
      "tree": "e2f5dd3fc170a28d9aff622a8c5af77f3ebf7e45",
      "parents": [
        "f768f367bcd1f37a53c563495176a5a134caf234"
      ],
      "author": {
        "name": "G.Balaji",
        "email": "balajig81@gmail.com",
        "time": "Fri Sep 23 22:36:20 2011 +0530"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:31:05 2012 +0400"
      },
      "message": "bgpd: Addition of ipv6 network command in Multicast address family mode.\n\n      The patch adds the ipv6 network command in the BGP multicast address\n      family mode.\n"
    },
    {
      "commit": "f768f367bcd1f37a53c563495176a5a134caf234",
      "tree": "57a0fff4f2a0e832623aa0d6d4d3bd2a3c951d98",
      "parents": [
        "c7ec179a95c1ed4fcd3d3be3f981c8c20dce534a"
      ],
      "author": {
        "name": "G.Balaji",
        "email": "balajig81@gmail.com",
        "time": "Sat Nov 26 22:10:39 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:30:57 2012 +0400"
      },
      "message": "zebra: IPv6 MP-BGP Routes addition and deletion\n\nThis patch contains the following:\n1. Addition of IPv6 SAFI_MULTICAST BGP routes into the RTM\u0027s RIB.\n2. Deletion of IPv6 SAFI_MULTICAST BGP routes from the RTM\u0027s RIB.\n"
    }
  ],
  "next": "c7ec179a95c1ed4fcd3d3be3f981c8c20dce534a"
}
