)]}'
{
  "log": [
    {
      "commit": "6b0655a25194c7c0331154edaa6124cf783e5e5e",
      "tree": "c0c7d479f2684531249668210da27a60322ba395",
      "parents": [
        "fdb913aedb5a9807ad60715e8badb4f25d57acea"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:53:35 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:58:02 2014 +0200"
      },
      "message": "*: nuke ^L (page feed)\n\nQuagga sources have inherited a slew of Page Feed (^L, \\xC) characters\nfrom ancient history.  Among other things, these break patchwork\u0027s\nXML-RPC API because \\xC is not a valid character in XML documents.\n\nNuke them from high orbit.\n\nPatches can be adapted simply by:\n\tsed -e \u0027s%^L%%\u0027 -i filename.patch\n(you can type page feeds in some environments with Ctrl-V Ctrl-L)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "cd40b329a2e4da882bcad0431c048c876bbeafbd",
      "tree": "cfbdec5a7559c6d3e56766797896a18809aa1746",
      "parents": [
        "e712d0e3667ffad8109ef8bce3ce01927ee95bb7"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:51 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 20:21:41 2014 +0200"
      },
      "message": "lib/command.c: rewrite command matching/parsing\n\nAdd support for keyword commands.\n\nIncludes new documentation for DEFUN() in lib/command.h, for preexisting\nfeatures as well as new keyword specification.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c78a46c27f6dfdd42fe0800cebabc1e49cb0a4bf",
      "tree": "5d88a885415f3b5e63f7dac5c72dcbcc647a7dfb",
      "parents": [
        "fd5006896fce2816244c1ef4cabc736279548538"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Mar 20 10:50:09 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 21 06:28:48 2014 +0100"
      },
      "message": "ospf6d: fix refcounting in ospf6_asbr_lsa_remove\n\nWhen iterating over a list, also the last node should be unlocked again.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "fd5006896fce2816244c1ef4cabc736279548538",
      "tree": "c9fb889019186c6aa7c800643f3ff1d9171a96a7",
      "parents": [
        "c19543b223d3b8463c048f346b8044589e0cce39"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Wed Oct 24 14:45:54 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 21 06:28:48 2014 +0100"
      },
      "message": "ospf6d: add \"auto-cost reference-bandwidth\" command\n\nThis command allows the user to change to default reference bandwidth\nfor cost calculations. The default value is 100 Mbps. With a default\nbandwidth of 10 MBps, the default cost becomes 10. Those values are\nconsistent with OSPFv2.\n\n[DL: resolved conflicts in vty command additions \u0026 docs]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c19543b223d3b8463c048f346b8044589e0cce39",
      "tree": "7da71baef36e7c7b4e628c645580f8cc18c1aabe",
      "parents": [
        "1db65fadf627637621c342b789b9a3604ca5fab5"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Wed Oct 24 14:45:53 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 21 06:28:47 2014 +0100"
      },
      "message": "ospf6d: compute interface cost from its bandwidth\n\nPreviously, the interface cost was a fixed default value that a user\nwas allowed to change with \"ipv6 ospf6 cost XX\". As what is done with\nOSPFv2, we change this behaviour to compute the default interface cost\nfrom the interface bandwidth.\n\nThe user can still force a cost with \"ipv6 ospf6 cost XX\". He can get\nthe default value with \"no ipv6 ospf6 cost\". Moreover, the default\ncost value was 1. The cost is now computed from the bandwidth and a\ndefault reference bandwidth of 100 MBps (as for OSPFv2). Since the\ndefault bandwidth for an interface is 10 MBps, the \"default\" cost\nbecomes 10 instead of 1.\n\n[DL: resolved conflict in ospf6d/ospf6_interface.c]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1db65fadf627637621c342b789b9a3604ca5fab5",
      "tree": "546c769ca03e71e6c7bb55a52b4f7ea525542864",
      "parents": [
        "e708ed69aa0b993527f48b1f31b645c00750927f"
      ],
      "author": {
        "name": "Ingo Flaschberger",
        "email": "if@xip.at",
        "time": "Sun Apr 17 18:28:20 2011 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Mar 21 06:28:23 2014 +0100"
      },
      "message": "ospf6d: solve segfaults with ospf6d on FreeBSD\n\nDo not send ospf6d hellos on fresh created interfaces without\nconfiguration (ie. no vlan configured).  Ospf6d use ip6_mtu, if it\u0027s not\ninitalised, Ospf6d tries to alloc indefinite size of memory.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e708ed69aa0b993527f48b1f31b645c00750927f",
      "tree": "8f33d73b2a85b51c042318d58a1750eeb8019616",
      "parents": [
        "a11e012e8661629d665e992e765741a5eaa7d017",
        "424cc3bd48da0f417c9056c5c2ade697a3386cd4"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 17:04:25 2014 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 17:04:25 2014 +0100"
      },
      "message": "Merge volatile/cumulus_ospf6d\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "424cc3bd48da0f417c9056c5c2ade697a3386cd4",
      "tree": "1d0e9a71f6c27b64d435c276a100f046c30e2a8b",
      "parents": [
        "11b4f01355703d34099d4da145c7d92e32d98636"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Nov 23 16:55:36 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 08:45:29 2014 +0100"
      },
      "message": "ospf6d: fix interface_down() stopping hellos\n\ninterface_down() - which also handles some nonobvious cases like the\nlast linklocal address disappearing - was previously not cancelling the\nhello timer.  This had the effect of multiple such threads ending up\nscheduled after a quick down-up cycle.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "11b4f01355703d34099d4da145c7d92e32d98636",
      "tree": "e895a3794edbfe60c481954ed4ad79fcc2b661c3",
      "parents": [
        "b13c1d9299d6426f48f074545f3e403e5a9b8a61"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Dec 09 16:48:55 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 08:45:29 2014 +0100"
      },
      "message": "ospf6d: clear lsa-\u003erefresh before clearing LSAs\n\nThis fixes a SEGV when we receive a higher-SeqNum copy of a LSA that we\noriginated ourselves, before a reboot of ospf6d.  We create a new\ncopy of the LSA to resync the SeqNum, but then half an hour later\nthe old refresh thread ends up trying to refresh the free()\u0027d old LSA.\n\nThe SEGV is triggered by this chain:\n  ospf6_lsdb_maxage_remover\n  -\u003e thread_execute(ospf6_lsa_refresh)\n     -\u003e old-\u003erefresh \u003d NULL\nWhich assumes that old-\u003erefresh is no longer scheduled to run, as it is\nbeing run right there.  But the thread_execute() doesn\u0027t know about\nold-\u003erefresh and therefore didn\u0027t remove it.\n\n(Found by ANVL OSPFV3-16.17)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b13c1d9299d6426f48f074545f3e403e5a9b8a61",
      "tree": "b313288f60c8d76a16e4f9f1796e934c0c8fefc0",
      "parents": [
        "d9628728e0924ae13ef6e8f8a67a2c9802745184"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Dec 13 16:11:16 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 08:45:20 2014 +0100"
      },
      "message": "ospf6d: handle missing link local address more gracefully\n\nospf6 can\u0027t run on an interface without a link local address.\nDon\u0027t start the state machine when an interface comes up without\nsuch an ip and bring it up later, when a usable link local\naddress is added.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d9628728e0924ae13ef6e8f8a67a2c9802745184",
      "tree": "af4cee6c7018580655cb53a0900471128cc0a8bb",
      "parents": [
        "37531a7ec380554b18c004bcae9f5a070385d132"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Mar 08 21:47:35 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 08:44:05 2014 +0100"
      },
      "message": "ospf6d: improve ordered shutdown\n\nImprove the _disable/_enable infrastructure so it gets into\na more usable shape and make \u0027no router ospf6\u0027 actually work.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a11e012e8661629d665e992e765741a5eaa7d017",
      "tree": "d6967d9c5044f8c924aa2f4b62bac8e3bda358e2",
      "parents": [
        "b52aef18a9f3acc8b24ab5c2631dc574b8e2ec70"
      ],
      "author": {
        "name": "Remi Gacogne",
        "email": "rgacogne-github@coredump.fr",
        "time": "Sun Sep 08 13:48:34 2013 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Tue Feb 11 10:28:03 2014 +0100"
      },
      "message": "security: Fix some typos and potential NULL-deref\n\nThis patch against the git tree fixes minor typos, some of them possibily\nleading to NULL-pointer dereference in rare conditions.\n\nSigned-off-by: Remi Gacogne \u003crgacogne-github@coredump.fr\u003e\nSigned-off-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "37531a7ec380554b18c004bcae9f5a070385d132",
      "tree": "fb1893fcf7be8f613a3cd0a82f0150af4a3974f7",
      "parents": [
        "1579a67f130ca34df9acefac14ebcdfdd8f6600a"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Dec 13 13:50:28 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Nov 20 10:35:59 2013 +0100"
      },
      "message": "ospf6d: clear DR info on interface_down\n\nThis fixes an issue where ospf6d would send incorrect hellos and\nperform wrong DR election when an interface went down and up\nagain.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1579a67f130ca34df9acefac14ebcdfdd8f6600a",
      "tree": "8c12770a8628fc786e08c08a125114f7d56b66d4",
      "parents": [
        "7d4aa1d57d54a57aae78e6b12cf4524e2c43a514"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Fri Mar 08 02:35:38 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Nov 20 10:35:59 2013 +0100"
      },
      "message": "ospf6d: set cmsg size correctly\n\nOn both Linux and FreeBSD, msg_controllen should be set to\nCMSG_LEN, not CMSG_SPACE. This avoids sending 4 bytes of\ntrailing garbage to the kernel.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7d4aa1d57d54a57aae78e6b12cf4524e2c43a514",
      "tree": "f6c80b75e1f258a9bc3fa7a452807a5762ca7465",
      "parents": [
        "ba960d5ae43e49991ed70fbe9ffa2e4567437a31"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Dec 13 16:10:05 2012 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Nov 20 10:35:59 2013 +0100"
      },
      "message": "ospf6d: don\u0027t run DR election early on \"ipv6 ospf6 priority\"\n\nOn changing the router priority, DR election should only be run when it\nwas completed at least once before.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ba960d5ae43e49991ed70fbe9ffa2e4567437a31",
      "tree": "8ffe0291edf209d936ce874c7a7104369f611e7e",
      "parents": [
        "a0edf6740e8203abec1ee3efa344a417c16fec7b"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Mon Aug 26 03:40:37 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Nov 20 10:35:59 2013 +0100"
      },
      "message": "ospf6d: fix integrated config\n\nWith integrated config, the line defining an interface to be p2p is defined\nbefore assigning the interface to an area. When during the interface\ntransition, there is an attempt to generate a router LSA, the process\ncrashes. This fix addresses that.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a0edf6740e8203abec1ee3efa344a417c16fec7b",
      "tree": "501efcc33069c129987ac1ec98dd0656ad67e278",
      "parents": [
        "3d35ca482babab4267570143b8327fc894df0ff8"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Mon Aug 26 03:40:23 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: add SPF logs, statistics, and display of SPF parameters\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\n[DL: adapted to rebase / readded randomly lost line]\n[DL: killed timeval_subtract]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3d35ca482babab4267570143b8327fc894df0ff8",
      "tree": "594c2040b3746a16780d748f24f395688751dd4f",
      "parents": [
        "7cf997226e86d98839f1e7872ca98b023ffea98e"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Mon Aug 26 03:40:16 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: add \u0027log-adjacency-changes [detail]\u0027\n\nSimilar to OSPFv2, add support for \u0027log-adjacency-changes [detail]\u0027 to log\nchanges in adjacency state of ospfv3 neighbors.\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7cf997226e86d98839f1e7872ca98b023ffea98e",
      "tree": "4407f125907aa5ac7a524d7bf71b9e0028f4c6cb",
      "parents": [
        "01879114f73adaf1cd4c9f5e7ae1550b72ff9ca9"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sun Aug 25 03:03:39 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: don\u0027t send LSAck on an interface if we\u0027ve flooded the LSU out that i/f\n\nIf we flood an LSA back out the same interface we received it from, don\u0027t send\nan LSAck out that interface for that LSA. This is as per RFC 2328, section 13.5\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "01879114f73adaf1cd4c9f5e7ae1550b72ff9ca9",
      "tree": "95f60a636ad4e2ebb0c55f31301a897fb6559b24",
      "parents": [
        "e68a67672ccfabefadac36c66e88af997fb572b2"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sun Aug 25 03:03:31 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: handle Prefix and Router Options bits correctly\n\nEnsure that prefixes with the NU/LA bit set do not get added to the routing\ntable. Ensure that routers with the V6/R bit set do not get added as transit\nroutes.\n\nSigned-off-by: Dinesh Dutt \u003cddutt at cumulusnetworks.com\u003e\n[DL: adjust to rebase]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e68a67672ccfabefadac36c66e88af997fb572b2",
      "tree": "7f5b3c1386121457cc5052fc2530018093d947ae",
      "parents": [
        "931b1b8c9a612665391ed43653c970fcb38bbbf0"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sun Aug 25 03:03:23 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: add LSA payload to show summary output\n\nUnlike OSPFv2, the LSID of an LSA isn\u0027t sufficient to know what the contents\nof the LSA are. Its useful for debugging and basic eyeball tests to see the\ncontents of the LSA in the simple tabular format of \"show ipv6 ospf6 database\".\nThis patch adds that output to the command. It replaces the existing fields of\n\"duration, Chksum and Length\" with a single field called Payload which is\ndependent on the LSA type. For Inter-Area Prefix, Intra-Area Prefix and\nAS-External LSAs, this will be the advertised prefix/prefix length, for Router\nLSAs, it is RtrID/IfID etc.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\n[DL: rebase fix, line disappeared in ospf6_abr_originate_summary_to_area]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "931b1b8c9a612665391ed43653c970fcb38bbbf0",
      "tree": "570f2aca4df8ef6a394925c5a1b7c9e772d3d1a1",
      "parents": [
        "7a10a359e9740710c1e39c8be0f761f506795480"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sun Aug 25 03:03:15 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: increment dbdesc seqnum on SeqNumberMismatch/BadLsReq event\n\nAs per RFC 2328, section 10.3, if the neighbor state machine reaches\nSeqNumberMismatch state when the NSM is in state Exchange or greater,\n\"router increments the DD sequence number in the neighbor data structure,\ndeclares itself master (sets the master/slave bit to master), and starts\nsending Database Description Packets, with the initialize (I), more (M)\nand master (MS) bits set.\".\n\nThe existing code doesn\u0027t increment the DD SeqNum. This patch fixes that.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7a10a359e9740710c1e39c8be0f761f506795480",
      "tree": "acf3db650a76ef97da33b0703d97920ea3d8e53a",
      "parents": [
        "3b220289a4d0da4539d965ca71e9479d68c87b11"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sun Aug 25 03:03:07 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: don\u0027t change SeqNum on initial DbDesc message\n\nThe code was setting the DbDesc seqnum to the current seconds value of time if\nthis was the initial DbDesc. However, the same code was getting invoked if the\ninitial DbDesc was retransmitted. Caused ANVL test XX.XX to fail.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3b220289a4d0da4539d965ca71e9479d68c87b11",
      "tree": "232f6c56c5c12cf292937f7b21b002ef63b8c7e3",
      "parents": [
        "f41b4a021659dd48d62b1a7aac4b28e3663dbdaa"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 08:00:44 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: handle seqnum wrapping\n\nSigned-off-by: Shrijeet Mukherjee \u003cshm at cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\n[DL: mechanical adjust to rebase]\n[DL: adjust to removal of timerwheel code]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f41b4a021659dd48d62b1a7aac4b28e3663dbdaa",
      "tree": "ec4595f0d79279eef4da07145a30d104604b0035",
      "parents": [
        "e7ad6b20d7a7c63ed7c640ab9f61c853e77508c5"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 08:00:37 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: add overload support\n\nOSPFv3: Support setting/clearing overload bit on router\n\nIt is sometimes necessary for a router to gracefully remove itself from\nthe SPF tree i.e. it cannot act as a transit router. It does this by\nsetting the overload bit in the router LSA. This patch adds support for\nenabling/disabling the overload bit.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\n[DL: patch applied with fuzz]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e7ad6b20d7a7c63ed7c640ab9f61c853e77508c5",
      "tree": "92454d3f9eca7c5f579c0c463f976e3e3b5873cc",
      "parents": [
        "b81e97a8a7f85ecc7489dc8a7c7b9d403d9c4bc6"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:57 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: fix linkdown handling\n\nEnsure OSPFv3 handles link down even correctly.\n\nOSPFv3 checks only the administrative status of a link instead of its\noperative status. This prevents it up from detecting a real link down\nevent and reacting appropriately. Only protocol timer timeouts make it\ndetect a link down eventually. This patch makes it look for the operative\nstatus of a link instead of admin status.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: James Li \u003cjli at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b81e97a8a7f85ecc7489dc8a7c7b9d403d9c4bc6",
      "tree": "48e2c8492f01cc177a6691878cf4e5a329fe4d2d",
      "parents": [
        "17d003da963d6294e5ab95c690de285eccf0bac0"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:50 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: correct nexthop through directly connected networks\n\nThis is implementing this part of RFC 2328:\n\nThis is the \"first case\", see below,\n\n16.1.1. The next hop calculation\n\n...\nIf there is at least one intervening router in the current\nshortest path between the destination and the root, the\ndestination simply inherits the set of next hops from the\nparent. Otherwise, there are two cases. In the first case,\nthe parent vertex is the root (the calculating router\nitself). This means that the destination is either a\ndirectly connected network or directly connected router.\nThe outgoing interface in this case is simply the OSPF\ninterface connecting to the destination network/router.\n...\n\nThe current Quagga code always tries to inherit the nexthop from\na parent vertex, but does not cover the case that the destination\nis directly connected to the root vertex. This patch adds support\nfor that case.\n\nSigned-off-by: James Li \u003cjli at cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "17d003da963d6294e5ab95c690de285eccf0bac0",
      "tree": "3972c371b676459408d560f4a18dc16295b70c54",
      "parents": [
        "e39d05384d4563f04edf339bbd67a117dd18e533"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:43 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:43 2013 -0800"
      },
      "message": "ospf6d: don\u0027t suppress empty router LSA\n\nCurrently in OSPFv3 implementation, if all the interfaces are down/loopback\nor are without any full adjacencies, the router LSA is suppressed. So for\na router with only stub networks, no router LSA is generated. However,\nintra-prefix LSAs are generated for the stub networks and these intra-prefix\nLSAs will reference the router LSA. So the router LSA really should not be\nsuppressed. It needs to be generated to be the starting vertex for SPF\nw.r.t the stub networks.\n\nSigned-off-by: James Li \u003cjli at cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e39d05384d4563f04edf339bbd67a117dd18e533",
      "tree": "5c1ea95d4fcd993014974c862c4b97c8064e7a5f",
      "parents": [
        "a765eb9383c53c68523a67b36cea92eadf6f3439"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:36 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: turn off expensive debugging\n\nOSPF6 has very expensive LSDB and route debug on by default. This needs to be\nturned off for scaled performance.\n\nSigned-off-by: James Li \u003cjli at cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003eSummary:\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a765eb9383c53c68523a67b36cea92eadf6f3439",
      "tree": "16fa0d6d9bb3ddda5b01d01f31c1eeffd02ded8a",
      "parents": [
        "eb82e9ee81792f86548d4937486b5dcbbd411a98"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:14 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: convert LSDB to use route_node, improve performance\n\nthe performance in the presence of a large number of LSAs. I also verified\nthat the performance improvements stayed in the presence of a large number\nof peers (I tested upto 128).\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003eSummary:\nReviewed-by: James Li \u003cjli at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "eb82e9ee81792f86548d4937486b5dcbbd411a98",
      "tree": "9c1f216017923cc40af71755506dc35c5c2c0fbc",
      "parents": [
        "c5926a92235874574b20e426a3752c1451a90ec7"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:07 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: fix neighbor state machine (faster lsdb sync, RFC compliance)\n\nThe OSPFv3 code doesn\u0027t do the following things right as part of an adjacency\nbringup:\n - Transmit DbDesc frames appropriately to ensure faster state transition to\n   Loading state\n - Transmit LsReq frames when switching to exchange state and on receipt of\n   an LS update in Loading state\n - Requesting LSAs multiple times in LsReq.\n\nIt currently uses retransmit timer expiry to send the LsReq and DbDesc frames\nwhich significantly slows down large lsdb syncs.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c5926a92235874574b20e426a3752c1451a90ec7",
      "tree": "c8b8b66eee832e3db5e5d315e966b168918ef57e",
      "parents": [
        "bf986da797e7d2a0aaae313fea626ba433581f03"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:00 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: add p2p interface support\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: Ayan Banerjee \u003cayabaner at gmail.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nReviewed-by: James Li \u003cjli at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "bf986da797e7d2a0aaae313fea626ba433581f03",
      "tree": "79e852020d1f9eb2be774d3050dcc1ea3a88e73b",
      "parents": [
        "8ae454e779d5620576990f4bf5da3a35f913cc4d"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:50 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: fix various bugs in installing and flooding LSAs\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Pradosh Mohapatra \u003cpmohapat at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8ae454e779d5620576990f4bf5da3a35f913cc4d",
      "tree": "cbfb907e0aeef1d5b3076629c8e8d510bb326068",
      "parents": [
        "09df4574b95dbb5880eb2d3c3c3c900687a9a3ef"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:41 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: add more details to show ipv6 ospf6 data\n\nSpecifically, it displays the flags, lock and retransmission count fields.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: JR Rivers \u003cjrrivers at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "09df4574b95dbb5880eb2d3c3c3c900687a9a3ef",
      "tree": "b332c0a50379a5efea3ecb9e29931dcd03e0a0ab",
      "parents": [
        "ac58e143f7278d5faaad7a8672e48328b03cffa5"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:31 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: enable the commands to support detailed debugging of LSAs.\n\nThe code for the commands exists, but it hasn\u0027t been defined in the\ndefinition of the command itself. This patch fixes that.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ac58e143f7278d5faaad7a8672e48328b03cffa5",
      "tree": "52ea2eeb0cf614f9fcdf72badfc705d88f623ee3",
      "parents": [
        "2449fcd64ae95d5fbfd95d93468fc57003def57d"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:24 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: remove older version of LSA from neigbor retx list before prematurely aging it.\n\nSee comment in code for very detailed issue and fix.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2449fcd64ae95d5fbfd95d93468fc57003def57d",
      "tree": "8c152a482f2080ee425cd06381861d2bf69769d4",
      "parents": [
        "3810e06eebe14f75c66fb17a88574384573e95fa"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:17 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: reinvoke MaxAge remover thread if not all MaxAge LSAs were flushed.\n\nMaxAge LSAs are being flushed out only on an event, unlike OSPFv2 where they\u0027re flushed out\nperiodically. This causes certain LSAs to hang around forever, never getting flushed out.\nThis patch makes flushing out MaxAge LSAs periodic, retriggered after a certain period if\nnot all MaxAge LSAs were flushed out.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3810e06eebe14f75c66fb17a88574384573e95fa",
      "tree": "0e7ba30d0b24d1ea874eb257b78fdeed2eaebf4c",
      "parents": [
        "8551e6dadce41fb87a61767af723cb25ae611a04"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:09 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:30 2013 -0800"
      },
      "message": "ospf6d: schedule SPF to run on events rather than directly on each event.\n\nOSPV3 SPF triggers on every SPF-able event instead of using timers the way\nOSPFv2 does. This patch makes SPF be triggered/throttled similar to OSPFv2.\nIt adds a command to quagga identical to the OSPFv2 equivalent to configure\nthese timers.\nSummary:\n\nSigned-off-by: Dinesh Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\n[DL: removed reference to oa-\u003ets_spf for rebase]\n[DL: killed timeval_subtract]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8551e6dadce41fb87a61767af723cb25ae611a04",
      "tree": "cb0854c2e216989a0fa211d56d2bf6fd6948b2d6",
      "parents": [
        "a83a1e9c2f035d3152451dcfc97ab13b4ac427b9"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue Oct 22 17:42:18 2013 -0700"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Oct 22 18:01:31 2013 -0700"
      },
      "message": "ospf6d/ospfd: refactor some common defines\n\nRearranging common defs and structures for use betweeen OSPFv2 and\nOSPFv3.  Created a new file called libospf.h under lib directory to\nhold defines that are common between OSPFv2 and OSPFv3 code bases.\n\n[DL: split of defines refactor from timer refactor]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4ff3bcad8e81b643f3247317a3949d7867b36f75",
      "tree": "4348c8b1db5f0c2af4a99eb560c269542223a8ff",
      "parents": [
        "a52070899afed55ae44ed6a140ac090cdf07d141"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Mar 20 10:50:07 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 31 17:58:05 2013 +0200"
      },
      "message": "isisd, ospf6d: use bug-report information from autoconf\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "837d16ccbe0fca413f8927da6a34b1e97ccada8a",
      "tree": "7aed5a517b619c03d11bf567f6a14cda6f8f5efe",
      "parents": [
        "655071f44aab42e89bcece3a93da456fdd0d913a"
      ],
      "author": {
        "name": "Balaji.G",
        "email": "balajig81@gmail.com",
        "time": "Wed Sep 26 14:09:10 2012 +0530"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:59 2012 -0700"
      },
      "message": "*: use array_size() helper macro\n\nUse the array_size() helper macro.  Replaces several instances of local\nmacros with the same definition.\n\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d8a4e42b7d19a87eacc00c825e913907a58f39ee",
      "tree": "2d0777bfbef0e77ca1722fe0e7b2591ef89d4102",
      "parents": [
        "b0145ddb4bf75d2c8853aa3d0bc7c522f4f17531"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Thu Sep 13 17:17:36 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:58 2012 -0700"
      },
      "message": "lib: improve fletcher checksum validation\n\nOVERVIEW\n\nThe checksum used in OSPF (rfc2328) is specified in rc905 annex B.  There is an\nsample implementation in rfc1008 which forms the basis of the quagga\nimplementation.  This algorithm works perfectly when generating a checksum;\nhowever, validation is a bit problematic.\n\nThe following LSA (generated by a non-quagga implementation) is received by\nquagga and marked with an invalid checksum; however, it passes both the rfc905\nand rfc1008 validation checks.\n\nstatic uint8_t lsa_10_121_233_29[] \u003d {\n   0x0e, 0x10, 0x02, 0x03,\n   0x09, 0x00, 0x35, 0x40,\n   0x0a, 0x79, 0xe9, 0x1d,\n   0x80, 0x00, 0x00, 0x03,\n   0x00, 0x8a, 0x00, 0x1c,\n   0xff, 0xff, 0xff, 0xe0,\n   0x00, 0x00, 0x36, 0xb0\n};\n\nLS Type: Summary-LSA (IP network)\n   LS Age: 3600 seconds\n   Do Not Age: False\n   Options: 0x02 (E)\n   Link-State Advertisement Type: Summary-LSA (IP network) (3)\n   Link State ID: 9.0.53.64\n   Advertising Router: 10.121.233.29 (10.121.233.29)\n   LS Sequence Number: 0x80000003\n   LS Checksum: 0x008a\n   Length: 28\n   Netmask: 255.255.255.224\n   Metric: 14000\n\nYou\u0027ll note that one byte of the checksum is 0x00; quagga would calculate the\nchecksum as 0xff8a.\n\nIt can be argued that the sourcing implementation generates an incorrect\nchecksum; however, rfc905 indicates that, for 1\u0027s complement arithmetic, the\nvalue 255 shall be regarded as 0, thus either values are valid.\n\nEXPLANATION\n\nThe quagga ospfd and ospf6d implementations operate by copying the PDU\u0027s\nexisting checksum in a holding variable, calculating the checksum, and comparing\nthe resulting checksum to the original.  As a note, this implementation has the\nside effect of modifying the contents of the PDU.\n\nEvaluation of both rfc905 and rfc1008 shows that checksum validation should\ninvolve calculating the sum over the PDU and checking that both resulting C0 and\nC1 values are zero.  This behavior is enacted in the rfc1008 implementation by\ncalling encodecc with k \u003d 0 (checksum offset); however, this functionality had\nbeen omitted from the quagga implementation.\n\nPATCH\n\nThis patch adds the ability to call the quagga\u0027s fletcher_checksum() with a\nchecksum offset value of 0xffff (aka FLETCHER_CHECKSUM_VALIDATE) which returns\nthe sum over the buffer (a value of 0 indicates a valid checksum).  This is\nsimilar to the mechanism in rfc1008 when called with k \u003d 0.  The patch also\nintroduces ospf_lsa_checksum_valid().\n\nospf6d had it\u0027s own implementation of the fletcher checksum in\nospf6_lsa_checksum(); it\u0027s the same algorithm as in fletcher_checksum().  This\npatch removes the local implementation in favor of the library\u0027s as well as creates\nand uses ospf6_lsa_checksum_valid().\n\nquagga\u0027s ISIS implementation suffers from the same problem; however, I do not\nhave the facilities to validate a fix to ISIS, thus this change has been left to\nthe ISIS maintainers.  The function iso_csum_verify() should be reduced to\nrunning the fletcher checksum over the buffer using an offset of 0.\n\nSigned-off-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Nolan Leake \u003cnolan@cumulusnetworks.com\u003e\nReviewed-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\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": "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": "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": "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": "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": "5e1731ac1d8593c1317d5d907eda62b52b17470f",
      "tree": "ca5db73351b53967c095d4e98289cb1c78155738",
      "parents": [
        "0e8032d69961ae196c11ba6ead856084c7acf7c2"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Aug 20 22:45:58 2011 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jan 08 11:39:50 2012 +0000"
      },
      "message": "ospf6d: ospf6_lsa_cmd_init() does not exist\n"
    },
    {
      "commit": "cba1fab2d7e22921a03b8b886772daec8b5977c4",
      "tree": "b650afe06f6074434f50d6c24b5a6a5c17dc4d81",
      "parents": [
        "664711c1f4cc218073783ff6ce362093debd7b53"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Thu Dec 22 18:24:19 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 19:13:48 2012 +0400"
      },
      "message": "ospf6d: fix compiler warning messages\n\n* fix disagreement with C99 in zlog_debug calls\nFormat specifier in some zlog_debug calls for size_t values\nwas changed in order to C99 (\u0027%u\u0027 -\u003e \u0027%zu\u0027).\n\n* fix -Wsign-compare warnings\nType of return value of ospf6_packet_max() was changed.\n"
    },
    {
      "commit": "6fd16207fee6d4d09f29ed7ecf26303a7220e473",
      "tree": "fbc4a0ad11f99c5b7547e1aea47dce536c14f64d",
      "parents": [
        "4e677f52db2276b92bcc201b4379a66a83d45caa"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Tue Dec 20 20:52:31 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 18:38:11 2012 +0400"
      },
      "message": "ospf6d: add verifying user\u0027s privileges\n"
    },
    {
      "commit": "b48cebbba0dc01ad7d1fbd7cbcc39a11e1ae972d",
      "tree": "a2fbe8ca90af5b9a7482de1483df40f70fb6e120",
      "parents": [
        "bb915f5fa60de1a5b7e6089fcfc680281a590463"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Wed Dec 14 14:11:29 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 14 14:11:29 2011 +0400"
      },
      "message": "ospf6d: always remove the result of a previous SPF calculation\n\nThis is needed to avoid stale routes in some cases; the regression was\nintroduced by commit 1d19234e79c77a7d55194b513f2a77c6a691bc2c.\n\n* ospf6_spf.c: (ospf6_spf_calculation) Call ospf6_spf_table_finish()\n  before possibly returning if no router-LSA is found for the root of\n  the SPF tree.\n"
    },
    {
      "commit": "5031ed1347191ee3e0767cfa44e7047c36d37bd1",
      "tree": "2b0e4904eb5b481407f1347c0fb4011c7a90ac16",
      "parents": [
        "fa0796661c9cd68f20882ceb16e9d304a12a6acd"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Oct 14 21:59:58 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 19:27:34 2011 +0400"
      },
      "message": "ospf6d: decode message type with LOOKUP()\n\n* ospf6_message.h\n  * OSPF6_MESSAGE_TYPE_CANONICAL(): dismiss\n  * OSPF6_MESSAGE_TYPE_NAME(): dismiss\n* ospf6_message.c\n  * ospf6_message_type_str: rewrite as a message list, add max value\n  * ospf6_packet_examin(): update to use LOOKUP()\n  * ospf6_receive(): idem\n  * ospf6_send(): idem\n"
    },
    {
      "commit": "fa0796661c9cd68f20882ceb16e9d304a12a6acd",
      "tree": "67a1b7b3254f8276ab654505d06bb74fd76faa61",
      "parents": [
        "0ead5c183c36b36c8545ef8b04b778f5238a5db9"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Oct 08 17:22:45 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 19:27:14 2011 +0400"
      },
      "message": "ospf6d: make some old sizing checks assertions\n\nAs long as ospf6_packet_examin() is now the single checkpoint for\nreceived packets, most of the old checks performed elsewhere can\nbe converted into assert() constructs. Malformed input data at\nrespective points can be attributed solely to a programming error,\nnot a malformed packet.\n\n* ospf6_message.c\n  * ospf6_hello_print()\n  * ospf6_dbdesc_print()\n  * ospf6_lsreq_print()\n  * ospf6_lsupdate_print()\n  * ospf6_lsack_print()\n  * ospf6_hello_recv()\n  * ospf6_dbdesc_recv_master()\n  * ospf6_dbdesc_recv_slave()\n  * ospf6_lsreq_recv()\n  * ospf6_lsupdate_recv()\n  * ospf6_lsupdate_recv()\n  * ospf6_lsack_recv()\n  * ospf6_receive()\n"
    },
    {
      "commit": "e0ca5fde7be5b5ce90dae78c2477e8245aecb8e9",
      "tree": "0e0b32ddbed4a84a3b2de9dd7217165cb81f52fa",
      "parents": [
        "ebf08631cad8a420fc6bfb7c45af5496dc11023e"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Sep 16 01:52:42 2009 +0200"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 19:13:17 2011 +0400"
      },
      "message": "lib: put route_types.txt to real use\n\nthis replaces most occurences of routing protocol lists by preprocessor\ndefines from route_types.h. the latter is autogenerated from\nroute_types.txt by a perl script (previously awk). adding a routing\nprotocol now is mostly a matter of changing route_types.txt and log.c.\n\nConflicts:\n\n\tlib/route_types.awk\n"
    },
    {
      "commit": "05e54ee3df973194f2a00e3ea0b1da7bebc71fd6",
      "tree": "c07e2bbad0c55fe03eb2975b98f121de6ae55707",
      "parents": [
        "ad8d4802a3078de694539fa9bae12322fc82042f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Dec 03 17:45:17 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:27:01 2011 +0400"
      },
      "message": "build: delete .cvsignore files\n"
    },
    {
      "commit": "b51146856e660bcec723f535c17dc1c38b2f6efc",
      "tree": "8f501c98b3714e1d5ed381bd4d82fece4106aa8c",
      "parents": [
        "2f658673fa477b58ed38caf94c156c95948de382"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Fri Nov 25 18:51:48 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:26:28 2011 +0400"
      },
      "message": "quagga: option \"-z\" (\"--socket \u003cpath\u003e\") added\n\nAll daemons modified to support custom path to zserv\nsocket.\n\nlib: generalize a zclient connection\n\nzclient_socket_connect added. zclient_socket and\nzclient_socket_un were hidden under static expression.\n\"zclient_serv_path_set\" modified.\n"
    },
    {
      "commit": "9a9446eabb8f153251d6d93d225a68ca44b436ac",
      "tree": "00ca15de108d23f938220fed8ac1daf7a73aa050",
      "parents": [
        "6989880ad7699cb6bf0cfc0fbb95da51430652cf"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Mon Nov 21 20:26:39 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:25:43 2011 +0400"
      },
      "message": "ospf6d: justify multicast group management\n\n* ospf6_network.[ch]\n  * ospf6_sso(): new function supersedes ospf6_join_allspfrouters(),\n    ospf6_leave_allspfrouters(), ospf6_join_alldrouters() and\n    ospf6_leave_alldrouters()\n* ospf6_interface.c\n  * ospf6_interface_state_change(): update respectively\n  * interface_up(): ditto\n  * interface_down(): ditto\n"
    },
    {
      "commit": "42a7debf3c76b8001ce820e104a29d2f693c7cb7",
      "tree": "0a8bd305f1a2b37ea704998604e49ab1874fe0c4",
      "parents": [
        "004b1238a21b9b6c28640f37213dc85f0da39abe"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Wed Nov 16 14:22:03 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:25:03 2011 +0400"
      },
      "message": "ospf6d: implement \u0027match interface\u0027 for route-maps\n\nospf6_routemap_rule_match_interface* was imported from ospfd\ndaemon with minor changes. new CLI options defined.\n\n`ospf6_routemap_rule_match_interface\u0027 was changed to support\nIPv6 (ospfv3) route\u0027s external information.\n"
    },
    {
      "commit": "c143c38bc707194d52aec544e62e5485c6c4bc08",
      "tree": "7938595b9e34ac8787d5c1a7a589c46f25db0fdc",
      "parents": [
        "d7a083844db63b3dda412c755ce69bf13f41961f"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Dec 07 01:25:46 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 07 01:25:46 2011 +0400"
      },
      "message": "ospf6d: fix compile warning from falling off end of main\n\nospf6 main always calls ospf6_exit() which always calls exit.\nUse attributes to tell GCC that this is ok.\n"
    },
    {
      "commit": "681b84e8f50a09ff871d9e6536e8d8afb115ce13",
      "tree": "6821d2c2472934073cc86ff332de7339105af4de",
      "parents": [
        "3cf1288bfd855e339fe2283c79a3ef3746e61737"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Tue Jul 12 17:53:33 2011 +0400"
      },
      "committer": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Thu Nov 17 21:50:47 2011 +0400"
      },
      "message": "ospf6d: check MTU with message header size in mind\n\n* ospf6_message.c: (ospf6_packet_max): new function, return maximum IPv6\n  payload on an interface; (ospf6_hello_send, ospf6_dbdesc_send,\n  ospf6_dbdesc_send_newone, ospf6_lsreq_send, ospf6_lsupdate_send_neighbor,\n  ospf6_lsupdate_send_interface, ospf6_lsack_send_neighbor,\n  ospf6_lsack_send_interface): compare message size with the maximum\n  payload instead of the MTU.\n"
    },
    {
      "commit": "6d0732c8abad7ace509d033a41814ea03a3a1b16",
      "tree": "d20c537d0e16cb5245047d8ecd9990201a4fb3b6",
      "parents": [
        "a5b228b3792937c93b589938a2545b9311b7938e"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Sep 28 14:23:35 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Oct 17 18:59:19 2011 +0400"
      },
      "message": "IPv6 transport class suppport\n\nIPv6 supports the same concept of differentiated service for routing\nprotocols as IPv4, but like too many things, the standards committee\ndecided that having two names for the same thing wasn\u0027t good enough and\nintroduced a third more generic term transport class.\n\nThe socket option to set transport class works the same as IPv4, but the\narguments are different.\n\n* lib/sockopt.[ch]\n  * setsockopt_ipv6_tclass(): new function\n* bgpd/bgp_network.c\n  * bgp_connect(): set socket option\n  * bgp_listener(): set socket option\n* ospf6d/ospf6_network.c\n  * ospf6_set_transport_class(): new function\n  * ospf6_serv_sock(): set socket option\n* ripngd/ripngd.c\n  * ripng_make_socket(): set socket option\n"
    },
    {
      "commit": "87362ceb5d493f12e8c937b533190a1996d2df22",
      "tree": "80e844bd2ace54bdfb8db4914f5e4171ffbcb6d4",
      "parents": [
        "05b7709dad416146376cc4f41db0c866b3738f5b"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Aug 27 22:19:34 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:41:33 2011 +0400"
      },
      "message": "ospf6d: address more trivial compiler warnings\n\n* ospf6_main.c: include required headers\n* ospf6_asbr.h: idem\n* ospf6_spf.c\n  * ospf6_spf_install(): remove unused variables\n"
    },
    {
      "commit": "ea4021984f9eec3f2a85551ae0822e1dff0ed2bc",
      "tree": "e820bbe620cb4fe093e657f2e2ca84b1ac528e06",
      "parents": [
        "3a8c3dd7d0331c2da7c14aa33c48d512300d6e09"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Aug 19 16:27:16 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:36:54 2011 +0400"
      },
      "message": "ospf6d: spelling\n"
    },
    {
      "commit": "5fdaa04e635fdef7deca9bdfe1be4b60ec90add6",
      "tree": "77e76c6bf353685dc9c13698b79b16f68aca3232",
      "parents": [
        "75d044d234d1826db729f9ca580c966a028dbfc3"
      ],
      "author": {
        "name": "Jon Andersson",
        "email": "jonirucoeith@gmail.com",
        "time": "Tue Sep 13 15:47:14 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:02:41 2011 +0400"
      },
      "message": "ospf6d: add lost lines to area config block\n\n* ospf6_area.c\n  * ospf6_area_config_write(): write filter-list, import-list and\n    export-list lines\n"
    },
    {
      "commit": "75d044d234d1826db729f9ca580c966a028dbfc3",
      "tree": "42a43d0c27bc08dee5d2e77b627f42474c6bfbab",
      "parents": [
        "2b43bf231c3004efaef96f2b85d0e0f4cf6a1ea1"
      ],
      "author": {
        "name": "Christian Hammers",
        "email": "ch@debian.org",
        "time": "Mon Sep 12 14:23:05 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:02:26 2011 +0400"
      },
      "message": "ospf6d: fix crash on filter-list handling (BZ#530)\n\nThis essentially merges the fix available from Debian build of Quagga.\n\n* ospf6_area.c\n  * area_filter_list(): use correct argv indices\n  * no_area_filter_list(): idem\n"
    },
    {
      "commit": "abc7ef44ca05493500865ce81f7b84f5c4eb6594",
      "tree": "35504952c627e93203df81ebd5c96023879df00b",
      "parents": [
        "09395e2a0e93b2cf4258cb1de91887948796bb68"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 13:18:51 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 18:47:16 2011 +0400"
      },
      "message": "ospf6d: CVE-2011-3323 (fortify packet reception)\n\nThis vulnerability (CERT-FI #514840) was reported by CROSS project.\n\nospf6d processes IPv6 prefix structures in incoming packets without\nverifying that the declared prefix length is valid. This leads to a\ncrash\ncaused by out of bounds memory access.\n\n* ospf6_abr.h: new macros for size/alignment validation\n* ospf6_asbr.h: idem\n* ospf6_intra.h: idem\n* ospf6_lsa.h: idem\n* ospf6_message.h: idem\n* ospf6_proto.h: idem\n* ospf6_message.c\n  * ospf6_packet_minlen: helper array for ospf6_packet_examin()\n  * ospf6_lsa_minlen: helper array for ospf6_lsa_examin()\n  * ospf6_hello_recv(): do not call ospf6_header_examin(), let upper\n    layer verify the input data\n  * ospf6_dbdesc_recv(): idem\n  * ospf6_lsreq_recv(): idem\n  * ospf6_lsupdate_recv(): idem\n  * ospf6_lsack_recv(): idem\n  * ospf6_prefixes_examin(): new function, implements A.4.1\n  * ospf6_lsa_examin(): new function, implements A.4\n  * ospf6_lsaseq_examin(): new function, an interface to above\n  * ospf6_packet_examin(): new function, implements A.3\n  * ospf6_rxpacket_examin(): new function, replaces\n    ospf6_header_examin()\n  * ospf6_header_examin(): sayonara\n  * ospf6_receive(): perform passive interface check earliest possible,\n    employ ospf6_rxpacket_examin()\n"
    },
    {
      "commit": "09395e2a0e93b2cf4258cb1de91887948796bb68",
      "tree": "771622102161a372b45f730bd48ab23e69676350",
      "parents": [
        "717750433839762d23a5f8d88fe0b4d57c8d490a"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 13:18:36 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 18:47:06 2011 +0400"
      },
      "message": "ospf6d: CVE-2011-3324 (DD LSA assertion)\n\nThis vulnerability (CERT-FI #514839) was reported by CROSS project.\n\nWhen Database Description LSA header list contains trailing zero octets,\nospf6d tries to process this data as an LSA header. This triggers an\nassertion in the code and ospf6d shuts down.\n\n* ospf6_lsa.c\n  * ospf6_lsa_is_changed(): handle header-only argument(s)\n    appropriately, do not treat LSA length underrun as a fatal error.\n"
    },
    {
      "commit": "a0bf59bcac8b40c3f83e7f2e7f65087ece6acfc7",
      "tree": "e1352b965caa07bdc181f8d30f3e107deb97bc60",
      "parents": [
        "ef95122eb214f80700fc79b4a95686eadfea859b"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Aug 20 23:12:00 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Aug 27 21:20:40 2011 +0400"
      },
      "message": "ospf6d: add missing include\n\nTwo extern declarations in ospf6_abr.h are based on struct ospf6_route,\nwhich may not be available at the time ospf6_abr.h is included. This may\nlead to warnings after including ospf6_abr.h just for the structures\ndefined in it.\n"
    },
    {
      "commit": "ef95122eb214f80700fc79b4a95686eadfea859b",
      "tree": "1aa3631ef8d9e0a5036124c4029d68259df774b5",
      "parents": [
        "d91f35bc90ec4e5c8513cd7ac1f6fd00c5113c27"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Aug 20 20:58:15 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Aug 27 21:18:51 2011 +0400"
      },
      "message": "ospf6d: move named constants to ospf6d.h\n"
    },
    {
      "commit": "d91f35bc90ec4e5c8513cd7ac1f6fd00c5113c27",
      "tree": "29499885dfe8f2f16a0fb49bd36f400fe7194265",
      "parents": [
        "538cb284864c17de66152a5236db4cd80e3e7639"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Aug 19 22:24:27 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Aug 27 21:18:38 2011 +0400"
      },
      "message": "ospf6d: justify some ABR debug code\n\n* ospf6_abr.c\n  * ospf6_abr_examin_summary(): only fill \"buf\" when it is used\n"
    },
    {
      "commit": "d42306d98fa327eb0ea6094cc6d6ae9202a07475",
      "tree": "00b8b426615925a6f3b17592cfe8e8032463aafc",
      "parents": [
        "8dd1a8daae0b15065d54c46f82d44d21aa7a2320"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Fri Apr 22 19:27:54 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Apr 22 19:27:54 2011 +0400"
      },
      "message": "ospf6d: copy \"mtu-ignore\" option from ospfd\n\n\"mtu-ignore\" is an option ospfd used to mimic from the vendor\u0027s\nimplementation, now ospf6d will also implement it.\n\n* ospf6_interface.h: extend ospf6_interface structure by one flag\n* ospf6_interface.c: (ipv6_ospf6_mtu_ignore, no_ipv6_ospf6_mtu_ignore):\n  new declarations; (ospf6_interface_create): show initial value for\n  consistency; (ospf6_interface_show): print flag status\n* ospf6_message.c: (ospf6_dbdesc_recv): consider interface-specific flag\n  when checking MTU\n"
    },
    {
      "commit": "57c4f4f45b7a3c327f274272afe43893e10008e1",
      "tree": "cbf84ef77631ac75e4f34d9b037663ced9ba5ef6",
      "parents": [
        "604a9b43dd68a087ca5a4ac2cae19eb17591ba5f"
      ],
      "author": {
        "name": "Ingo Flaschberger",
        "email": "if@xip.at",
        "time": "Mon Apr 04 11:17:45 2011 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Apr 04 11:17:45 2011 +0100"
      },
      "message": "ospf6d: fix crash if zebra_interface_state_read can\u0027t find interface\n\n* ospf6_zebra.c: (ospf6_zebra_if_state_update) zebra_interface_state_read\n  may return NULL, if it can\u0027t find an interface, deal with it.\n"
    },
    {
      "commit": "8f228de7b3f9d6f641c75b27ac7ac6e5862cf804",
      "tree": "16af34ad6f3f792c1175ae4cc92bab31cdcd5dcf",
      "parents": [
        "e7a6d80d4fe70a546a33ffe063f182252237ccd8"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Wed Nov 10 13:02:11 2010 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Mar 21 13:31:16 2011 +0000"
      },
      "message": "ospf6d: Extend the \"[no] debug ospf6 route\" vty commands\n\n* ospf6_route.c ([no_]debug_ospf6_route) Include memory as a debug\n  option.  This allows ospf6 route memory debugging to be enabled or\n  disabled interactively or from a config file.\n"
    },
    {
      "commit": "e7a6d80d4fe70a546a33ffe063f182252237ccd8",
      "tree": "d0315314a3772846fef416f027ec42b445fb0ce9",
      "parents": [
        "ae2254aa7f2eb7436734f497658f1f26f4bf37c7"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Wed Nov 10 13:03:02 2010 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Mar 21 13:31:16 2011 +0000"
      },
      "message": "ospf6d: Route locking (memory) cleanup\n\n* ospf6_route.c: (ospf6_route_best_next) Allows unlock route, even\n  when there\u0027s no next route.  This is consistent with how\n  ospf6_route_next() behaves.\n\n* ospf6_intra.c: (ospf6_intra_prefix_lsa_remove) Make sure the last\n  route considered is always unlocked.  This is needed when the for\n  loop terminates because ospf6_route_is_prefix() returns zero.\n"
    },
    {
      "commit": "ae2254aa7f2eb7436734f497658f1f26f4bf37c7",
      "tree": "8734f0e2aa855b90d9ec5cb961cd9990b5574905",
      "parents": [
        "fd795eb89cc421097f6580016ea9fbd3585d07bb"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Wed Nov 10 13:01:41 2010 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Mar 21 13:31:16 2011 +0000"
      },
      "message": "ospf6d: Have ospf6d cleanup when it terminates normally\n\nA clean exit makes it easier to use memory debuggers.\n\n* ospf6_asbr.c: (ospf6_asbr_terminate) Add a function to do route map\n  cleanup.\n* ospf6_lsa.c: (ospf6_lsa_terminate) Add a function to cleanup the lsa\n  handler vector.\n* ospf6_main.c: (ospf6_exit) Add an function that causes ospf6d to\n  gracefully exit.\n* ospf6_message.c: (ospf6_message_terminate) Add a function that frees\n  the send and receive buffers.\n* ospf6_top.c: (ospf6_delete) Enable the ospf6_delete() function.\n  Disable ospf6 before freeing everything.\n"
    },
    {
      "commit": "fd795eb89cc421097f6580016ea9fbd3585d07bb",
      "tree": "a8d49db03924483ad0662294f2a8f44f4f5a6d66",
      "parents": [
        "1d19234e79c77a7d55194b513f2a77c6a691bc2c"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Wed Nov 10 13:03:23 2010 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Mar 21 13:31:16 2011 +0000"
      },
      "message": "ospf6d: Remove obsolete code\n\n* ospf6_area.c: (ospf6_area_delete) Get rid of unused code that refers\n    to a nonexistent function and structure member.\n"
    },
    {
      "commit": "1d19234e79c77a7d55194b513f2a77c6a691bc2c",
      "tree": "4daf54c79e1cc3c3c6fa3ca66cfccb68770b3dd1",
      "parents": [
        "7e69d993673597334b1e1b3d1072a4c064f293d5"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Wed Nov 10 13:02:38 2010 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Mar 21 13:31:16 2011 +0000"
      },
      "message": "ospf6d: Fix memory allocation issues in SPF\n\n* ospf6_area.c: Call ospf6_spf_table_finish() before deleting the spf\n    table.  This ensures that the associated ospf6_vertex structures\n    are also freed.\n* ospf6_spf.c: Only allocate a priority queue when a spf calculation\n    is actually performed.  Also defer calling ospf6_spf_table_finish().\n"
    },
    {
      "commit": "403138e189c24f6867824c4eeb668d11564e1ca0",
      "tree": "436c9c428ad21fe1718ad083c790c1bf7d077f52",
      "parents": [
        "b729294c8c5c6f2af8ddf6cfbea2374b6faabe9d"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Thu Jan 13 18:25:40 2011 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 13 18:25:40 2011 +0300"
      },
      "message": "ospf6d: fix crash in SPF calculation\n\n* ospf6_spf.c: Don\u0027t replace a node with another node with a lower\n  number of hops, instead get them from the queue in the correct\n  order. (Actually, the replacement crashed the ospf6d daemon\n  rather than worked.)\n"
    },
    {
      "commit": "2470e99e828c098d2d03f8d693853cbe69e3fb6f",
      "tree": "19e1526814455301a244af928fe2c3d553ec3100",
      "parents": [
        "85c4968bb1432ddc7c059893fdee2c976bbee937"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Tue Jan 05 02:45:39 2010 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Apr 28 19:30:17 2010 -0400"
      },
      "message": "ospf6d: Fix crash when \u0027[no] ipv6 ospf6 advertise prefix-list\u0027 is in startup-config\n\n* ospf6_interface.c: When \u0027[no] ipv6 ospf6 advertise prefix-list\u0027\n  appears in the startup configuration for ospf6d, a crash occurs,\n  because ospf6d attempts to schedule LSAs when the \u0027oi-\u003earea\u0027\n  structure has not yet been initialized.\n\n  Now, when the command above is issued (either in the startup\n  configuration or at runtime), ospf6d will only schedule LSAs if\n  the \u0027oi-\u003earea\u0027 structure has been initalized. A similar test is\n  already used when handling the commands \u0027ipv6 ospf6 priority\u0027\n  and \u0027ipv6 ospf6 cost\u0027.\n"
    },
    {
      "commit": "e580216e1ba2db506d1942e382852d07973a5fad",
      "tree": "1932075db93d8989bcbd7b76c0603a00f5bb4647",
      "parents": [
        "813f6a0064e76fdc8d509ddfbd4d3870d7027850"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 10 16:18:41 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 10 16:18:41 2009 +0300"
      },
      "message": "ospf6d: remove dead code\n\n* ospf6d/ospf6_interface.c\n  * loopind(): sayonara\n* ospf6d/ospf6_top.c\n  * ospf6_delete(): comment out, it might be useful if real shutdown is\n    added\n"
    },
    {
      "commit": "813f6a0064e76fdc8d509ddfbd4d3870d7027850",
      "tree": "eed75fc5da5c0a4dd5dcd20bc8c7c2523b6fd32d",
      "parents": [
        "5eb9d11bf6bbe99ce47f929a14ac03351f21fe27"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 10 16:13:09 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 10 16:13:09 2009 +0300"
      },
      "message": "ospf6d: fix warnings from recent prefix bit commit\n\n* lib/prefix.h\n  * prefix6_bit(): add IPv6 wrapper for prefix_bit()\n* ospf6d/ospf6_lsdb.c\n  * ospf6_lsdb_type_router_head(): employ prefix6_bit()\n  * ospf6_lsdb_type_head(): idem\n"
    },
    {
      "commit": "1352ef32d70dcc102074814de63b5d08e591dd2d",
      "tree": "a0a4a40bf9a7726914f76cfa3a108529c7cc59df",
      "parents": [
        "3949a60c350fea947d2701e2fe709b174ae7af16"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Dec 09 14:43:17 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 09 14:43:17 2009 +0300"
      },
      "message": "lib: move check_bit into prefix common code\n\nMake one version of check prefix bit, and put it inline\nwith proper prototype. This gets rid of some macro\u0027s and also some\nassert() that can never happen on a non-broken compiler.\n\n* bgpd/bgp_table.c\n  * CHECK_BIT(): sayonara\n  * check_bit(): sayonara\n  * SET_LINK(): sayonara\n  * set_link(): make use of prefix_bit() instead of check_bit()\n  * bgp_node_match(): idem\n  * bgp_node_lookup(): idem\n  * bgp_node_get(): idem\n* lib/prefix.h\n  * prefix_bit(): new inline version of check_bit()\n* lib/table.c\n  * CHECK_BIT(): sayonara\n  * check_bit(): sayonara\n  * SET_LINK(): sayonara\n  * set_link(): make use of prefix_bit() instead of check_bit()\n  * route_node_match(): idem\n  * route_node_lookup(): idem\n  * route_node_get(): idem\n* ospf6d/ospf6_lsdb.c\n  * CHECK_BIT(): sayonara\n  * ospf6_lsdb_lookup_next(): make use of prefix_bit() instead of\n    CHECK_BIT()\n  * ospf6_lsdb_type_router_head(): idem\n  * ospf6_lsdb_type_head(): idem\n* ospf6d/ospf6_route.c\n  * CHECK_BIT(): sayonara\n  * ospf6_route_match_head() make use of prefix_bit() instead of\n  * CHECK_BIT()\n"
    },
    {
      "commit": "64bf3ab7291cc5c39c5add0dc1a7de447914248b",
      "tree": "d5ae874814083d89815e6c521b42d0f3eaaec69c",
      "parents": [
        "2eb445e1c22e36d07e2dbfd302ff438c4190b9fe"
      ],
      "author": {
        "name": "Ondrej Zajicek",
        "email": "santiago@crfreenet.org",
        "time": "Mon Dec 07 12:33:20 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 07 12:33:20 2009 +0300"
      },
      "message": "ospf6d: review LSA sequence number comparison\n\nIt seems that there is a bug in ospf6d in ospf6_lsa_compare(): If LSA A\nhas sequence number smaller than 0x80000000 and LSA B has sequence\nnumber larger than 0x80000000, ospf6_lsa_compare() returns that B is\nmore recent than A, although RFC says that sequence numbers should be\ncompared as signed numbers (0x8000001 smallest and 0x7FFFFFFF largest).\n\nIn ospfd, the function ospf_lsa_more_recent() has it right.\n\nThe problem appears when Quagga is used together with OSPFv3 in\ndevelopment version of BIRD daemon ( http://bird.network.cz/ ),\nwhich creates LSAs with maximum sequence number (0x7FFFFFFF)\nas a part of flushing/premature aging LSA from OSPF area.\n\nBecause both daemons has different idea of which LSA instance\nis more recent, it would lead to LSA storm.\n"
    },
    {
      "commit": "16c1c4872b29bb22c0ff77bd1ef1018c63ca25fa",
      "tree": "06813f6d1b703649757f3eedf829e7afddfe5c42",
      "parents": [
        "9964fcfc2282c8f3468b3b7355c5dea3089f0f14"
      ],
      "author": {
        "name": "Tom Goff",
        "email": "thomas.goff@boeing.com",
        "time": "Tue Dec 01 21:12:38 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 01 21:12:38 2009 +0300"
      },
      "message": "ospf6d: fix LSA locking in ospf6_new_ls_id()\n\n* ospf6_lsdb.c: (ospf6_new_ls_id) Unlock the current LSA when breaking\nout of the ospf6_lsdb_*_head() / ospf6_lsdb_*_next() loop early. No\nexplicit unlocking is needed when all LSAs are looped through\nbecause ospf6_lsdb_*_next() manages everything in that case.\n"
    },
    {
      "commit": "aabbb1ae358a3fd9af011cddc1a67dfa0b3df2d2",
      "tree": "04ce8d205c0242f93037873f92e8a6f8dc24927a",
      "parents": [
        "d1c21cabdbeeb4d12049f39579c602686eb94927"
      ],
      "author": {
        "name": "Tom Henderson",
        "email": "tomh@tomh.org",
        "time": "Fri Aug 28 15:10:00 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 28 15:10:00 2009 +0100"
      },
      "message": "ospf6d: bug #529, fix endianness problem in earlier commit \n\n* ospf6_lsa.c: (ospf6_lsa_age_current) arithmetical compares make no sense\n  in non-host order..\n\n"
    },
    {
      "commit": "065de90380c88d9fcc116627f714bed9984c2723",
      "tree": "79061a2699e0dc3e87c218b3b57c2f0577d5a69a",
      "parents": [
        "5bd5881838c22e075c3d0c245a8952a55e9dca38"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Aug 07 11:13:49 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Aug 13 10:21:13 2009 +0100"
      },
      "message": "all: check return value from daemon() call\n\n* */*main.c: (main) Current versions of Gcc warn if the return value for\n  daemon() is not checked.  So add a simple test and exit on failure.\n\n"
    },
    {
      "commit": "30d205909c5a81cc306b161c16abff0fd7f566a7",
      "tree": "6f7532a4336cf601bbeab07d2669639a05409dfd",
      "parents": [
        "d023aec49f70156d2ed894a8fba65bcfa221ff02"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Jul 28 11:58:51 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jul 28 11:58:51 2009 +0100"
      },
      "message": "[global] interface flags format warnings\n\n*/*: ifp-\u003eflags is 64 bit unsigned which can not be handled by %l on 32\n     bit architectures - requires %ll and the appropriate cast.\n"
    },
    {
      "commit": "9b4ef258a9d9c5f1052afe0e19ebaef9f6740fa2",
      "tree": "7deb3abfbddadc9c15300c1a6702549e918db5dc",
      "parents": [
        "41b2373cece77f0cc9a06fba076c99a7be653593"
      ],
      "author": {
        "name": "Tom Henderson",
        "email": "tomh@tomh.org",
        "time": "Thu Jul 16 17:20:37 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jul 16 17:20:37 2009 +0100"
      },
      "message": "[ospf6d] Fix regression in monotonic time patch - LSA max-aging broke\n\n* ospf6_lsa.c: (ospf6_lsa_premature_aging) set age to MAX_AGE - don\u0027t\n  rely on 0 magically meaning same.\n  (ospf6_lsa_age_current) handle MAXAGE.\n"
    },
    {
      "commit": "86f72dcba35f055b5344deeb5f057c2f1d9a291f",
      "tree": "b128af27119cf27a709423814709a5a0bde98bae",
      "parents": [
        "f7e0db80693aea7f5fd3d8d4f00e97347c8d0ba5"
      ],
      "author": {
        "name": "Takashi Sogabe",
        "email": "sogabe@iij.ad.jp",
        "time": "Mon Jun 22 13:07:02 2009 +0900"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jun 22 12:21:22 2009 +0100"
      },
      "message": "Convert ospf6d over to quagga_gettime() wrappers.\n"
    }
  ],
  "next": "66a11e76d4a8ee18c4e79c06d25814b9aa94e45d"
}
