)]}'
{
  "log": [
    {
      "commit": "128293286a8be01b99ed60db53e19ce6e2669558",
      "tree": "59bf4be72bc1905a404c572d0446390f1587c67b",
      "parents": [
        "c63b83fe8d1addecc949258479b8d54180c4da60"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Tue Apr 10 16:57:25 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:28 2012 +0200"
      },
      "message": "lib, zebra: extend use of sockunion2ip macro\n\n  * lib/sockunion.c,\n  * zebra/zebra_rib.c: replace -\u003esin.sin_addr.s_addr with sockunion2ip\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n[reworded commit message]\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "9665856e3718e42068e7d897f5e2468e77fb8c17",
      "tree": "264cd6e05ee23bcf46d1ce42c38ffa228b5035f1",
      "parents": [
        "fa4094ac49b4cc23589f5c5b7e608c4b4ee6ca04"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Apr 20 17:23:39 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Apr 20 17:29:31 2012 +0200"
      },
      "message": "Revert \"zebra: clean up client routes when client goes away\"\n\nThis reverts commit af56d404cd56d94ad3b2ec3f159650eb72baef0a,\nwhich was accidentally duplicating functionality from commit\n2ea1ab1 \"zebra: ZEBRA_HELLO and mopping up routes (BZ#448)\"\n\nConflicts:\n\n\tzebra/zebra_rib.c\n\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "14d2bbaa3f4aa53152472694c29f336808e47313",
      "tree": "e39bdddef4ea53207dd8fb61e1fd6b54d8c7721d",
      "parents": [
        "51d4ef832c1e58150325630e25c442866e5a6cf5",
        "e96b312150d8e376c1ef463793d1929eca3618d5"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Wed Apr 11 23:51:08 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Wed Apr 11 23:51:08 2012 -0700"
      },
      "message": "Merge quagga mainline into the google ISIS code.\n\nThe steps were:\n\n  $ git checkout google-is-is\n  $ git merge quagga\n  $ git checkout google-is-is -- isisd\n\n  # Resolve conflicts in the following:\n  lib/md5.h\n  zebra/rt_netlink.c\n  zebra/zebra_rib.c\n  zebra/zserv.c\n\nNote that the content in the isisd directory is left unchanged in the\nmerge. As a result, changes made to isisd as part of the following\ncommits on the quagga mainline are dropped.\n\n  # 8ced4e82 is the merge base, e96b3121 is the current quagga master\n  $ git log --oneline --reverse 8ced4e82..e96b3121 -- isisd\n  5574999 isisd: fix crash on \"no router isis\" (BZ#536)\n  8998075 isisd: raise hello rate for DIS (BZ#539)\n  306ca83 isisd: include hash.h, not hash.c\n  b82cdeb delete CVS keywords\n  2f65867 isisd: indent longopts array\n  b511468 quagga: option \"-z\" (\"--socket \u003cpath\u003e\") added\n  05e54ee build: delete .cvsignore files\n  b4e45f6 fix zebra protocol after MP-BGP changes\n  7fd6cd8 isisd: fix circuit state machine\n  907fd95 isisd: send proper LSP after DIS election\n  d034aa0 isisd: fix wrong next-hops from SPF\n  c25eaff isisd: unexpected kernel routing table (BZ#544)\n  e6b03b7 isisd: implement MD5 circuit authentication\n"
    },
    {
      "commit": "af56d404cd56d94ad3b2ec3f159650eb72baef0a",
      "tree": "2d923b385dd21a5f0ced95d2430b4c998af18f94",
      "parents": [
        "fc328ac9d3d49b871c1139f36deb702a254c0d4f"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Wed Mar 21 18:47:51 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sun Apr 08 00:28:50 2012 -0700"
      },
      "message": "zebra: clean up client routes when client goes away\n\n  * zebra/zebra_rib.c: Add code to clean up routes added by a client\n    (as identfied by \u0027rib type\u0027).\n\n  * zebra/zserv.[ch]: Maintain the type of the routes added by a\n    client on the \u0027zserv\u0027 structure -- assume that a given client uses\n    a single route type for now.\n\n    Clean up routes from a client when the client goes away (in\n    zebra_client_close()).\n\nFrom: Josh Bailey \u003cjoshb@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "fc328ac9d3d49b871c1139f36deb702a254c0d4f",
      "tree": "a7189a1286862a347834792e93a7b00df3c0cfac",
      "parents": [
        "e38e0df01ad305ad48ecf816b52fa99fd3f2a4e1"
      ],
      "author": {
        "name": "Subbaiah Venkata",
        "email": "svenkata@google.com",
        "time": "Tue Mar 27 16:35:22 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 23:52:40 2012 -0700"
      },
      "message": "zebra: add more logs/asserts to rib work queue code\n\n  * zebra/zebra_rib.c: (rib_queue_add, rib_queue_init) Add some more\n    logs and asserts.\n\nFrom: Subbaiah Venkata \u003csvenkata@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "26e2ae362baf207d82e4c1ac76bc1c2b2df6ccaa",
      "tree": "e0d060875b5eab622244977e58b2445d55d6d240",
      "parents": [
        "d531050b7bf0f93d4d29a7a2f7b745641778b483"
      ],
      "author": {
        "name": "Josh Bailey",
        "email": "joshb@google.com",
        "time": "Thu Mar 22 01:09:21 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:54:02 2012 -0700"
      },
      "message": "zebra: read multipath routes and hw addr from netlink\n\n  * zebra/rt_netlink.c:\n\n    - Pick up the hardware address of an interface when we receive a\n      netlink link change message. Extract code for parsing the\n      link-layer hardware address into a new function so we can reuse\n      it.\n\n    - netlink_routing_table(): Update to handle multipath routes.\n\n    - netlink_route_change(): Update to handle multipath routes. Fix\n      problem where the metric was not being read out.\n\n  * zebra/zebra_rib.[ch]: Extern nexthop_ipv4_ifindex_add() -- it is\n    now called from the netlink code.\n\nFrom: Josh Bailey \u003cjoshb@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "5734509c0545ebd95a5b8e3f22a911c1a39ffa1b",
      "tree": "2f35ad50d793080db1f858c2de2228cfd2946dfd",
      "parents": [
        "fe67e668881b8b8d71b1570575c913cd287fafcf"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Dec 25 17:52:09 2011 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Mar 25 17:06:51 2012 +0100"
      },
      "message": "babeld: Initial import, for Babel routing protocol.\n\n* Initial import of the Babel routing protocol, ported to Quagga.\n* LICENCE: Update the original LICENCE file to include all known potentially\n  applicable copyright claims.  Ask that any future contributors to babeld/\n  grant MIT/X11 licence to their work.\n* *.{c,h}: Add GPL headers, in according with the SFLC guidance on\n  dealing with potentially mixed GPL/other licensed work, at:\n\n  https://www.softwarefreedom.org/resources/2007/gpl-non-gpl-collaboration.html\n"
    },
    {
      "commit": "f768f367bcd1f37a53c563495176a5a134caf234",
      "tree": "57a0fff4f2a0e832623aa0d6d4d3bd2a3c951d98",
      "parents": [
        "c7ec179a95c1ed4fcd3d3be3f981c8c20dce534a"
      ],
      "author": {
        "name": "G.Balaji",
        "email": "balajig81@gmail.com",
        "time": "Sat Nov 26 22:10:39 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:30:57 2012 +0400"
      },
      "message": "zebra: IPv6 MP-BGP Routes addition and deletion\n\nThis patch contains the following:\n1. Addition of IPv6 SAFI_MULTICAST BGP routes into the RTM\u0027s RIB.\n2. Deletion of IPv6 SAFI_MULTICAST BGP routes from the RTM\u0027s RIB.\n"
    },
    {
      "commit": "cddf391bf6839e9f093cef15508669c1f3f92122",
      "tree": "38dfaa5a7b98776ba67bb8a812beec8724810839",
      "parents": [
        "5a616c08ce089e25dc0e8da920727af4d11279bf"
      ],
      "author": {
        "name": "G.Balaji",
        "email": "balajig81@gmail.com",
        "time": "Sat Nov 26 21:59:32 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:30:42 2012 +0400"
      },
      "message": "zebra: IPv4 MP-BGP Routes addition and deletion\n\nThis patch contains the following:\n1. Addition of IPv4 SAFI_MULTICAST BGP routes into the RTM\u0027s RIB.\n2. Deletion of IPv4 SAFI_MULTICAST BGP routes from the RTM\u0027s RIB.\n"
    },
    {
      "commit": "4f1735fd6ac5d0881bafa9bd421e00645b6c60fd",
      "tree": "ec6039710bef675594c4ce50aa488bfb64e4157b",
      "parents": [
        "cba1fab2d7e22921a03b8b886772daec8b5977c4"
      ],
      "author": {
        "name": "Matthias Ferdinand",
        "email": "mf@14v.de",
        "time": "Mon Dec 26 16:35:30 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 19:13:58 2012 +0400"
      },
      "message": "zebra: fix ifindex test condition (BZ#487)\n\nWhen the same ip address is used on several interfaces,\nand one of them gets deleted (or equivalent: set to down and\nthen address removed), rib_delete_ipv[46] will also remove\nthe connected route from other interfaces.\n\nrib_delete_ipv[46] is called twice when an interface is\ndeleted:\n    - for the \"ifdown\" event\n    - for the address removal\n(note: this may be specific to the netlink interface of linux)\nThe second call does not find the connected route to that same\nifindex anymore, but deletes similar connected routes to any\nother ifindex instead.\n\nReason: the ifindex check is on the same level as the check\nfor ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. If everything\nmatches except for the ifindex, the \"else\" part (intended for\ndifferent route types) is executed, thus removing the route\nfrom the wrong interface.\n\nfix: move ifindex check inside the \"then\" part of the check\nfor ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. Now connected\nroutes to other ifindexes will not spill over to the \"else\"\npart for different route types anymore.\n"
    },
    {
      "commit": "2ea1ab1c30c765cd4703794fcfaf044454fb533c",
      "tree": "650e97a5a9e8cc1fb8666ff6ce87647df3e0e604",
      "parents": [
        "2654e43ca2eaa8d93268c9ec85ac2dd968e5fb94"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Sun Dec 11 18:48:47 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 18:37:24 2012 +0400"
      },
      "message": "zebra: ZEBRA_HELLO and mopping up routes (BZ#448)\n\nZEBRA_HELLO message is used by routing daemons to inform zebra\nwhat type of routes daemon will be announcing to zebra. Also\nzebra uses route_type_oaths array to track which daemon announces\nwhich protocol. Zebra mops up routes if daemon didn\u0027t for some\nreason.\n"
    },
    {
      "commit": "7052f22880f439a6ee691dd9436e1bda932f7b3b",
      "tree": "d9e6713dd7c559039816e1c20347676e7d6c9cd1",
      "parents": [
        "ca9f342c2c35523b7bb34631b4f75cad1232355b"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Thu Aug 27 00:28:28 2009 +0200"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 19:12:49 2011 +0400"
      },
      "message": "rib: default distance value for new protocols (v2)\n\nadding protocols and forgetting to update zebra_rib.c currently causes\na beyond end of array access for the default distance value. fix by\nmaking 150 the default distance for unknown routing protocols.\n\n150 is higher than all other IGPs but lower than iBGP (200)\n"
    },
    {
      "commit": "cc2dd9280c4456586080d1cf4537d26c02fa9a36",
      "tree": "a7573e32187b87015f2a8efc6cbd9b8b7ef7057c",
      "parents": [
        "1352ef32d70dcc102074814de63b5d08e591dd2d"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Dec 09 17:54:49 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 09 17:54:49 2009 +0300"
      },
      "message": "zebra: cleanup RIB meta queue code\n\n* zebra/zebra_rib.c\n  * rib_queue_add(): indent comments and simplify debug code\n  * rib_queue_init(): remove unneeded assert() calls and\n    extra return statements\n"
    },
    {
      "commit": "d02c56cdf0c2e01a986417ed973dd7a2a5368ac1",
      "tree": "59e92e74fefdddd8fd01b0fff98749922652b061",
      "parents": [
        "0d6388abc7a5da2a20a4854c400c8e176127e480"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Dec 08 13:14:27 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 08 13:14:27 2009 +0300"
      },
      "message": "zebra: fix more compiler warnings\n\n* zebra/zebra_rib.c\n  * nexthop_active_update(): make local int vars unsigned\n  * nexthop_active_check(): return unsigned for consistency\n  * rib_dump(): cast time in printf format\n  * vrf_free(): remove unused function\n  * vrf_lookup_by_name(): idem\n  * rib_if_up(): idem\n  * rib_if_down(): idem\n"
    },
    {
      "commit": "a50c107e3fbdaaea78a12a868a3865fd25136ad2",
      "tree": "cdc78feecf243768780ef784608f68386d41fef0",
      "parents": [
        "80b2a9418f0ee70318c677778d63f860f0f397c3"
      ],
      "author": {
        "name": "David Ward",
        "email": "david.ward@ll.mit.edu",
        "time": "Thu Dec 03 15:34:39 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 15:34:39 2009 +0300"
      },
      "message": "zebra: fix RIB debug message for IPv6\n\nApply changes from commit f304cb48f0d7d0ff8f36e7aca8293141a9fa9e60\nto rib_queue_add.\n\nAlso includes spelling fixes.\n"
    },
    {
      "commit": "67b9467f6cad5097a3e4c6e49348be4d6c17a5bb",
      "tree": "a4c14d2d2ad51f367c3e2a511942e8945bc22a16",
      "parents": [
        "228da42898c4f7bd72d9c1ee4135108e8d40d860"
      ],
      "author": {
        "name": "Chris Caputo",
        "email": "ccaputo@alt.net",
        "time": "Sat Jul 18 04:02:26 2009 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jul 21 10:13:11 2009 +0100"
      },
      "message": "[zebra] Silence noisy process_subq\n\nzebra_rib.c: process_subq(): #ifdef out debug code.\n"
    },
    {
      "commit": "c3a5606302777cdd33d4025fc30bed723fc84d79",
      "tree": "afa5d20dd20d6a05f99107655ce68d8788f847cc",
      "parents": [
        "3f4ab7f9e9ffaee7c448744f45d6e5e2176cce89"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Jun 24 19:15:36 2009 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jun 24 22:43:58 2009 +0100"
      },
      "message": "zebra: Static route does not reach kernel.\n\nA static route like below: ip route 172.16.1.0/30 192.168.101.162 11\ndoes not move properly to a new interface when the\ninterface used goes down. Zebra reports that it have\nmoved but kernel isn\u0027t informed so the route is lost.\n\n* zebra_rib.c: (nexthop_active_update) if ifindex has changed, then the\n  route should be considered to have changed.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n"
    },
    {
      "commit": "81cce0185e23b6ecd2ab98ab34182901226bcf9e",
      "tree": "24a8fa282d80b9dab623bb26fbbec731c0c8b34a",
      "parents": [
        "82f5ee1ead0aa83f83f918abfc3f5071741a56e5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Tue Apr 28 14:28:00 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:27 2009 +0100"
      },
      "message": "[cleanup] Use correct buffer size for inet_ntop()\n\nDon\u0027t need big buffer 1024 to hold IPV4 (INET_ADDRSTRLEN)\nor IPv6 (INET6_ADDRSTRLEN) message.\n"
    },
    {
      "commit": "6c684653f08fadf738ca52a3fbe512e3d1698ceb",
      "tree": "f5f48e6647a3158ad8b42785031b0bf986ed5fe5",
      "parents": [
        "5110a0c6222be91d3b2a786692949dd94fb0c9ac"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Thu Sep 18 16:51:06 2008 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:25 2009 +0100"
      },
      "message": "[zebra] remove incorrect debug message\n"
    },
    {
      "commit": "5110a0c6222be91d3b2a786692949dd94fb0c9ac",
      "tree": "e7cd59e893c1f9be7f91f546bb84540b8f85857a",
      "parents": [
        "c84154977d822ceee9df66be535c56cb5f0fce10"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Aug 11 16:22:15 2008 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:25 2009 +0100"
      },
      "message": "[zebra] Cleanup meta-queue code\n\nDo some cleanup work on recently added meta-queue code:\n  * use table rather than switch\n  * indent with quagga standard indentation\n  * since meta_queue_new is only used at initialization\n    allocation failure should be fatal.\n"
    },
    {
      "commit": "393deb9bd663361e6b110d579a8b1d4c22667068",
      "tree": "e93ebf2f57bf92ff7a9cd045764b3cdbb99a07e5",
      "parents": [
        "3453a7122c1d585ad789ed0f63deb90cc5e89fae"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Aug 18 14:13:29 2008 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:07:49 2009 +0100"
      },
      "message": "[cleanup] Convert XMALLOC/memset to XCALLOC\n\nSimple conversion of XMALLOC/memset to XCALLOC\n"
    },
    {
      "commit": "ef9b113e2d4c0d49bd7d61458fa9acc113658d2c",
      "tree": "f2f57b5c771e7709be26daefa2861cd657764aeb",
      "parents": [
        "d145bc008a03889fff8949890cb8c532ee6aff74"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 17:44:47 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:26 2008 +0100"
      },
      "message": "[zebra] trivia: static qualifiers for metaq\n\n2008-08-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra_rib.c: (process_subq) mark static\n\t  (rib_meta_queue_add) ditto\n\t  (meta_queue_new) ditt\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "d145bc008a03889fff8949890cb8c532ee6aff74",
      "tree": "f8bb5b09a4ca2c3f8fa0e93ae6d8a8acd46d3889",
      "parents": [
        "16814f9698a3ee14b1412286c53711a562c348fc"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 17:41:37 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra] make some data local\n\n2008-06-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra_rib.c: static qualifier on local data\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "16814f9698a3ee14b1412286c53711a562c348fc",
      "tree": "9fb7ec8e786b648f0c74f0aeff5ff959dc663d18",
      "parents": [
        "4c699477d24e7104893130d072963df5cea17214"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 17:39:31 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra] ignore dead routes in RIB update\n\n2008-08-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra_rib.c: When doing a RIB update, routes in process of removal\n\t  should be ignored. This fixes bugs where a route is removed but a\n\t  recursive route is not changed.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "e96f92034dad1a70c92ad4ad863a5259c122cecb",
      "tree": "c3b9bebef0fe2059182b31b43243289b5c7248e3",
      "parents": [
        "a15cfd16fcdec39588ce2f780671ba7c6de0b919"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Jun 02 12:03:22 2008 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Jun 02 12:03:22 2008 +0000"
      },
      "message": "+ initial edition of meta-queue for RIB updates processing (bug #431)\n"
    },
    {
      "commit": "20e5ff0a8893ffad6d31739d68d224931c4a7992",
      "tree": "8ecd9184d2d7268e0fc51bcd612790301780efda",
      "parents": [
        "dea04441fb51f74dc25f6ab4bd756b4159d961b6"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Feb 26 14:02:24 2008 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Feb 26 14:02:24 2008 +0000"
      },
      "message": "+ fix bug#326 by rib_lookup_and_pushup()\n"
    },
    {
      "commit": "3f087670efa606021cde2f6a9615ac7e07aec2a5",
      "tree": "c2d884aa51da1a95614380c813900e6f18a85c60",
      "parents": [
        "912df1e8ab61962c29eb4faff17a7d75c4905b84"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jan 08 20:12:46 2008 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jan 08 20:12:46 2008 +0000"
      },
      "message": "[link-detect] Static interface routes should behave properly with link-detect.\n\n2008-01-08 Michael Larson \u003cmike@vyatta.com\u003e\n\n\t* zebra_rib.c: (nexthop_active_check) Replace if_is_up with\n\t  if_is_operative to solve problems with static interface\n\t  routes not behaving properly with link-detect.\n"
    },
    {
      "commit": "a3aaf5b0ceb8c5b3821793333b4057df872fbedd",
      "tree": "c4c95460aff0f7332f84546e9dd0d651abc8868a",
      "parents": [
        "f304cb48f0d7d0ff8f36e7aca8293141a9fa9e60"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Thu Oct 04 10:49:21 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Thu Oct 04 10:49:21 2007 +0000"
      },
      "message": "+ rib_process() speedup for multi-nexthop route nodes\n"
    },
    {
      "commit": "f304cb48f0d7d0ff8f36e7aca8293141a9fa9e60",
      "tree": "85b0f508c0175bc9078640207c2f31a3e2b96b9c",
      "parents": [
        "6b148faa291f68dd43bba37fbc0e6b75a2e1e078"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Wed Oct 03 12:27:16 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Wed Oct 03 12:27:16 2007 +0000"
      },
      "message": "+ Minor bugfix: IPv6 prefixes were logged incorrectly in RIB debugging calls. Fixed.\n"
    },
    {
      "commit": "03e232a4588187992f3538985d541289dc272464",
      "tree": "6bb2c36ccb39c678b49d29fd3d379e0de313a17d",
      "parents": [
        "dc95824ae13d65156dd873a6e784d9a0eed2f39f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 14 09:46:48 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 14 09:46:48 2007 +0000"
      },
      "message": "Merged own patch for bug #390 (rewrite zebra/zebra_rib.c:nexthop_active_update())\n"
    },
    {
      "commit": "dc95824ae13d65156dd873a6e784d9a0eed2f39f",
      "tree": "fa53aa99e517d9cfe5c56474051afdaa1bc9a666",
      "parents": [
        "068fd77cff0ce09b6390641abd84fc09a89c49db"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Aug 13 16:03:06 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Aug 13 16:03:06 2007 +0000"
      },
      "message": "Merged own patch for the bug #391 (debugging and comments mostly).\n"
    },
    {
      "commit": "93bdadae74a9b391152f5511dbced6f08fad6d94",
      "tree": "95e5f9b12164dfc4b7ffe8d2221641f416c7f369",
      "parents": [
        "7591d8b862439dfae8b4b16d148ce567b6ff8cb7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Aug 06 19:25:11 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Aug 06 19:25:11 2007 +0000"
      },
      "message": "[zebra] Add extra debug logging for RIB and RIB queueing\n\n2007-08-06  Denis Ovsienko\n\n\t* zebra_rib.c: (general) Add extra debug logging for RIB and\n\t  RIB queue.\n"
    },
    {
      "commit": "0b8c4f1d811170224e467b305137ac94861daee6",
      "tree": "1f334740ab6492fd10b882b59f459ad470e9c6e3",
      "parents": [
        "fbf24544a2e2ac97192502d34729f57933d1eb4c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Jun 27 11:12:38 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Jun 27 11:12:38 2007 +0000"
      },
      "message": "[zebra] rib loop check for RIB_ENTRY_REMOVED checks wrong var\n\n2007-06-25 Denis Ovsienko\n\n\t* zebra_rib.c: (rib_add_ipv4_multipath) Loop through RIB\n\t  is using \u0027same\u0027 variable, but RIB_ENTRY_REMOVED check\n\t  is testing the constant \u0027rib\u0027 variable, fix. Impact\n\t  unknown at this point.\n"
    },
    {
      "commit": "7514fb7739f74311830e9ddd1381d0d228224f61",
      "tree": "4d4b9a4fdfcea4cb6fa496085327f1aae9a9a380",
      "parents": [
        "5fa05099567bbe42aae87a9bef8fd630b3666a4d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed May 02 16:05:35 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed May 02 16:05:35 2007 +0000"
      },
      "message": "[zebra] Routemap support on received routes, with \u0027set src\u0027 command (linux)\n\n2007-05-01 David L Stevens \u003cdlstevens@us.ibm.com\u003e\n\n\t* (general) These changes collectively add route-map and\n\t  prefix-list support to zebra and fix a bug in \"show\n\t  route-map\" (with no argument).\n\t* doc/main.texi: added route-map, prefix-list, ip protocol\n\t  and set src documentation\n\t* lib/command.h: added PROTOCOL_NODE type\n\t* lib/log.c: (proto_name2num) new function, protocol name to\n\t  number translation.\n\t* lib/routemap.c: (vty_show_route_map) fixed \"show route-map\"\n\t  without route-map name\n\t* lib/routemap.h: added RMAP_ZEBRA type\n\t* lib/zebra.h: added proto_name2num() prototype\n\t* vtysh/extract.pl.in: added VTYSH_ZEBRA flag for route-map and\n\t  plist\n\t* vtysh/Makefile.am: added zebra_routemap.c\n\t* vtysh/vtysh.h: added VTYSH_ZEBRA flag to VTYSH_RMAP\n\t* zebra/connected.c: (connected_up_ipv4) added src preference argument\n\t  to rib_add_ipv4()\n\t* zebra/kernel_socket.c: (rtm_read) ditto\n\t* zebra/main.c: added prefix list initialization\n\t* zebra/Makefile.am: added zebra_routemap.c source file\n\t* zebra/rib.h: added generic address union \"g_addr\" and use in\n\t  existing places that had an explicit union.\n\t  Added \"src\" to struct nexthop.\n\t  Added preferred src arg to nexthop_ipv4_add and rib_add_ipv4.\n\t* zebra/rt_netlink.c: (netlink_routing_table) set preferred source on\n\t  netlink messages.\n\t  (netlink_route_change) ditto\n\t  (netlink_route_multipath) ditto.\n\t* zebra/rtread_getmsg.c: (handle_route_entry) added (NULL) src to\n\t  rib_add_ipv4() call.\n\t* zebra/rtread_proc.c: (proc_route_read) ditto\n\t* zebra/zebra_rib.c: (nexthop_ipv4_add) add src argument.\n\t  (nexthop_ipv4_ifindex_add) ditto\n\t  (rib_add_ipv4) ditto\n\t  (nexthop_active_check) Add route-map processing.\n\t* zebra/zebra_routemap.c: new file for zebra route-map commands.\n\t* zebra/zebra_vty.c: (ip_protocol_cmd) Apply route-map to protocol\n\t  (vty_show_ip_route_detail) added \"src\" printing\n\t  (vty_show_ip_route) ditto\n\t  (show_ip_protocol_cmd) new command, list routemaps.\n\t  (config_write_protocol) write out routemap protocl config.\n\t  (zebra_vty_init) Install the new routemap protocol commands.\n\t* zebra/zserv.c: (zread_ipv4_add) added (NULL) src arg\n\t  (zebra_init) init zebra route-maps.\n\t* zebra/zserv.h: add zebra_route_map_init\n"
    },
    {
      "commit": "3c0755dc9772deccff2ba6e9dc0511a9af2b9d1b",
      "tree": "320e64867af564f2f943742f2a895132606f2e16",
      "parents": [
        "95fdcd8a793d6c271996da221c4030d8ee277891"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 00:53:14 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 00:53:14 2006 +0000"
      },
      "message": "[zebra] Changes of nexthops of static routes didnt take effect\n\n2006-12-08 Piotr Chytla \u003cpch@packetconsulting.pl\u003e\n\n\t* zebra_rib.c: (static_install_ipv{4,6}) Case where existing\n\t  RIB is updated must explicitely rib_addqueue the route_node,\n\t  to ensure the update actually takes effect.\n"
    },
    {
      "commit": "6d691129594f87958ecaf4169b2e1f62f90d3616",
      "tree": "4c1fb7ec763de18938af31f1f261f47db8da3391",
      "parents": [
        "b0498dc6ff0510efe9467fbaed41945f3f056af4"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 21:49:00 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 21:49:00 2006 +0000"
      },
      "message": "[zebra] Bug #268, Fix race between add/delete of routes, sanitise rib queueing\n\n2006-07-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rib.h: (struct rib) Add a route_node rn_status flag field,\n\t  this has to be copied every time head RIB of a route_node\n\t  changes.\n\t  Remove the rib lock field, not needed - see below.\n\t  Add a status field for RIB-private flags.\n\t* zebra_rib.c: Add a global for the workqueue hold time, useful\n\t  for testing.\n\t  (general) Fix for bug #268. Problem originally\n\t  detailed by Simon Bryden in [quagga-dev 4001].\n\t  Essentially, add/delete of a RIB must happen /before/ the\n\t  queue. Best-path selection (ie rib_process) and reaping of\n\t  freed RIBs can then be done after queueing. Only the route_node\n\t  is queued - no important RIB state (i.e. whether a RIB is to be\n\t  deleted) is queued.\n\t  (struct zebra_queue_node_t) Disappears, no longer need to\n\t  track multiple things on the queue, only the route_node.\n\t  (rib_{lock,unlock}) removed, RIBs no longer need to be\n\t  refcounted, no longer queued.\n\t  (rib_queue_qnode_del) Removed, deleted RIBs no longer deleted\n\t  via the queue.\n\t  (rib_queue_add_qnode) deleted\n\t  (rib_queue_add) Only the route_node is queued for best-path\n\t  selection, we can check whether it is already queued or\n\t  not and avoid queueing same node twice - struct rib * argument\n\t  is not needed.\n\t  (rib_link/unlink) (un)link RIB from route_node.\n\t  (rib_{add,del}node) Front-end to updates of a RIB.\n\t  (rib_process) Reap any deleted RIBs via rib_unlink.\n\t  Unset the route_node \u0027QUEUED\u0027 flag.\n\t  (General) Remove calls to rib_queue_add where add/del node was\n\t  called - not needed, update calls where not.\n\t  Ignore RIB_ENTRY_REMOVEd ribs in loops through route_nodes\n"
    },
    {
      "commit": "457eb9af72e6e7aa85c26b65ba4d053f9ecbffac",
      "tree": "ca93002285032e0c845749cfd770a446a9fc702b",
      "parents": [
        "1893740016d35d75de567a5f6b74db2314ffdc52"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 19:59:58 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 19:59:58 2006 +0000"
      },
      "message": "[zebra] Add test rig code, for testing the zebra RIB\n\n2006-07-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* {ioctl,kernel}_null.c: Dummy/Null kernel method implementations,\n\t  useful for testing zebra code that calls such methods.\n\t* {redistribute,misc}_null.c: Dummy/Null methods, as above. But\n\t  for zclient, and for various misc functions.\n\t* test_main.c: Test harness for zebra, currently just to test the\n\t  RIB.\n\t* Makefile.am: Build testzebra using above.\n\t* zebra_rib.c: Add a global for the workqueue hold time, useful\n\t  for testing.\n"
    },
    {
      "commit": "171eee31edbddbd8906447dc8725e0513227d013",
      "tree": "edf6f16fe912232d92dac1eeb6d9adadb93082c6",
      "parents": [
        "1fe6ed38cd0136c514aabae01389653beab27fb9"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 16:11:02 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 16:11:02 2006 +0000"
      },
      "message": "[zebra] Connected routes must always be added to main table\n\n2006-07-27 Rumen Svobodnikov \u003crumen@telecoms.bg\u003e\n\n\t* connected.c: (connected_up_ipv4) interface connected routes always\n\t  go to table main (or otherwise they cannot be used by linux as\n          nexthops)\n\t* zserv.c: (zread_ipv4_add) send route to the correct routing table\n\t* zebra_rib.c (static_install_ipv4) set routing table\n"
    },
    {
      "commit": "27b472533bc8bb0fdb37dcda7596c385d3b9f414",
      "tree": "60e09c43d4d016b32eb47ec0ba4a0263f0b40bbc",
      "parents": [
        "33d5ab9ef197ce281859f12251df4e412c469c65"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Jul 02 16:38:54 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Jul 02 16:38:54 2006 +0000"
      },
      "message": "[zebra] Fix CID #104, check addr for null, and #18, check nexthop type args\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rt_netlink.c: (netlink_interface_addr) Fix CID #104, can not\n\t  proceed if addr is NULL.\n\t* zebra_rib.c: (static_add_ipv6) Fix CID #18, double check\n\t  required arguments are supplied for the given nexthop type.\n"
    },
    {
      "commit": "a1038a15658d2fd4ab3314a9036bbd63f8f471c1",
      "tree": "5cef40b1e66fd105d0d0d6e4ecf52089ed15e803",
      "parents": [
        "a8d9c1f9caae29410b74f138f81d9b07645c47ce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jan 30 14:08:51 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jan 30 14:08:51 2006 +0000"
      },
      "message": "[zebra] Fix pauls zebra_rib/rib_process commit mistakes, again.\n\n2006-01-30 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zebra_rib.c: (rib_process) Fourth time lucky on this jinxed\n\t  commit, last commit had a hole that could allow connected\n\t  route selection to escape beyond the connected route logic.\n\t  This time I cross-checked with Gunnar first. ;)\n"
    },
    {
      "commit": "a8d9c1f9caae29410b74f138f81d9b07645c47ce",
      "tree": "ee5285e9e8932ebf89b16bb051c1af78755ade08",
      "parents": [
        "5c78b3d006e6926f938796cffa08e8e14fb8e7af"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 25 06:31:04 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 25 06:31:04 2006 +0000"
      },
      "message": "[zebra] Fix incorrect changes made in RIB metric selection patch\n\n2006-01-25 Gunnar Stigen \u003cgunnar.stigen@axxessit.no\u003e\n\n\t* zebra_rib.c: (rib_process) Application of Gunnar\u0027s earlier\n\t  metric selection RIB change included incorrect tidy-ups made\n\t  by commiter. Fix. (NB: any errors here are again due to paul).\n"
    },
    {
      "commit": "e8e1946edf6ba87ef53832cdceccc39d7f0c3f26",
      "tree": "fcdaf92bf4129a8a58825bd21ae841a6b3b2bda8",
      "parents": [
        "779adb0147cfff1a831b08853976342ad2110fcd"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jan 19 20:16:55 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jan 19 20:16:55 2006 +0000"
      },
      "message": "[compiler] miscellaneous trivial compiler warning fixes\n\n2006-01-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * (general) various miscellaneous compiler warning fixes.\n          Remove redundant break statements from switch clauses\n          which return.\n          return from main, not exit, cause it annoys SOS.\n          Remove stray semi-colons which cause empty-statement\n          warnings.\n\t* zebra/main.c: (sighup) remove private declaration of external\n\t  function.\n"
    },
    {
      "commit": "af887b5111ada0e8cd961e9479aa9d39796a80c8",
      "tree": "0bc5674824e5cebe0c0bd17ef34eac99f7b68a48",
      "parents": [
        "eac314c7c49f6c0ec502be08e244f91bfc778739"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 18 14:52:52 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 18 14:52:52 2006 +0000"
      },
      "message": "2006-01-18 Gunnar Stigen \u003cgunnar.stigen@axxessit.no\u003e\n\n\t* zebra_rib.c: Take interface metric into account.\n"
    },
    {
      "commit": "0fb58d5d7993b638fc46085944d17d3a54d66046",
      "tree": "9b1195ad505d2c14fdf09036db4f324ff3ec7f18",
      "parents": [
        "76367ea9753aa9cef7cf5d3c954f55b5725f31da"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 14:31:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 14:31:49 2005 +0000"
      },
      "message": "2005-11-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zebra_rib.c: (rib_process) convert to new workqueue specs and\n\t  shut up gcc, which complains about cast from void via\n\t  function parameters, for some dumb reason. Do the cast\n\t  inside the function instead.\n\t  (rib_queue_qnode_del) ditto.\n\t  (rib_queue_init) no need for the casts anymore.\n"
    },
    {
      "commit": "ebf1ead0326bf18293c24ee151d22071e8bebc10",
      "tree": "a39df91000789222ca622fec1325f4acaf2d564e",
      "parents": [
        "75b2dd025af1d839279a21ee4b3035085d17331c"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 21 14:58:20 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 21 14:58:20 2005 +0000"
      },
      "message": "\t* zebra_rib.c: Reduce the height of some staircases. Fix\n\t  rib_delete_ipv6() to match routes in the RIB by their gateway as\n\t  well as by destination.\n"
    },
    {
      "commit": "319572cc52267bfd55cca5eaab405df4db27ddaf",
      "tree": "576a148fe8515caf60bde98505a41845068c1d4d",
      "parents": [
        "5339cfdb7c3f6187452982173aa55ff525d1f6fe"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Sep 21 12:30:08 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Sep 21 12:30:08 2005 +0000"
      },
      "message": "2005-09-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zebra_rib.c: (static_uninstall_ipv{4,6}) Fix regression wrt\n\t  removal of static routes with multiple-hops introduced with\n\t  the workqueue conversion. We should free the relevant\n\t  nexthop and then get rib_process to run, otherwise we just\n\t  get same static route back again (with no way to unconfigure\n          it, because its already deleted from configuration).\n"
    },
    {
      "commit": "be61c4eb59b8df1aab496176d87bb2e1763f185e",
      "tree": "063e8baa7cd4a863e72d246d7c14f14842cbb604",
      "parents": [
        "b7395791a31f7b734094d032998ab632136f36f1"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Aug 27 06:05:47 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Aug 27 06:05:47 2005 +0000"
      },
      "message": "\t* zebra_rib.c, rib.h: Add distance and metric arguments to the\n\t  rib_add_ipv6() function so that IPv6 routes in RIB can have correct\n\t  metric. No IPv6 routing daemon uses distance yet though.\n\t* zserv.c, connected.c, kernel_socket.c, rt_netlink.c,\n\t  rtread_proc.c,zserv.c: Pass metric and distance info to the\n\t  rib_add_ipv6().\n\n\tForwardport from stable branch.\n"
    },
    {
      "commit": "a1ac18c4d5b4f8f4f279efb2ae12b46258f22282",
      "tree": "e37732ef4b00ae98d1be693e721b01cc2566ba39",
      "parents": [
        "94f2b3923e9663d0355a829f22e4e31cf68ee7b8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 17:17:12 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 17:17:12 2005 +0000"
      },
      "message": "2005-06-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) Extern and static\u0027ification, with related fixups\n\t  of declarations, ensuring files include their own headers, etc.\n\t  if_ioctl.c: (interface_info_ioctl) fix obvious arg mis-order in\n\t  list loop\n"
    },
    {
      "commit": "4d38fdb421ee04430ac2f4d4e8ef4a4e27c1020b",
      "tree": "a7bdb41cd18be9f612c54531efef5a5ccaab36f1",
      "parents": [
        "8b70d0b04f6bba2f30827d71084dd74fd00808b3"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 28 17:35:14 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 28 17:35:14 2005 +0000"
      },
      "message": "2005-04-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rib.h: (struct rib) Add lock field for refcounting.\n\t* zserv.h: (struct zebra_t) Add a ribq workqueue to the zebra\n\t  \u0027master\u0027 struct.\n\t* zserv.c: (zread_ipv4_add) XMALLOC then memset should be XCALLOC.\n\t* zebra_rib.c: Clean up refcounting of route_node, make struct rib\n\t  refcounted and convert rib_process to work-queue. In general,\n\t  rib\u0027s should be rib_addnode\u0027d and delnode\u0027d to route_nodes, and\n\t  these symmetrical functions will manage the locking of referenced\n\t  route_node and freeing of struct rib - rather than having users\n\t  manage each seperately - with much scope for bugs..\n\t  (newrib_free) removed and replaced with rib_lock\n\t  (rib_lock) new function, check state of lock and increment.\n\t  (rib_unlock) new function, check lock state and decrement. Free\n\t  struct rib if refcount hits 0, freeing struct nexthop\u0027s, as\n\t  newrib_free did.\n\t  (rib_addnode) Add RIB to route_node, locking both.\n\t  (rib_delnode) Delete RIB from route_node, unlocking each.\n\t  (rib_process) Converted to a work-queue work function.\n\t  Functional changes are minimal, just arguments, comments and\n\t  whitespace.\n\t  (rib_queue_add_qnode) Helper function to setup a ribq item.\n\t  (rib_queue_add) Helper function, same arguments as old\n\t  rib_process, to replace in callers of rib_process.\n\t  (rib_queue_qnode_del) ribq deconstructor.\n\t  (rib_queue_init) Create the ribq.\n\t  (rib_init) call rib_queue_init.\n\t  (remainder) Sanitise refcounting of route_node\u0027s. Convert to\n\t  rib_queue_add, rib_addnode and rib_delnode. Change XMALLOC/memset\n\t  to XCALLOC. Remove calls to nexthop_delete and nexthop_free.\n"
    },
    {
      "commit": "55468c86040081320f557b696e509b76ddfd6c83",
      "tree": "3ee726f155f8776d4a220997681d14c0b09addd0",
      "parents": [
        "909a215508fd42473fcbe4f5292a59404e5473af"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 20:19:01 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 20:19:01 2005 +0000"
      },
      "message": "2005-03-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) update all c files to match the lib/vector.h rename of\n\t  (struct vector).active to max, and vector_max macro to\n\t  vector_active.\n\t* lib/vector.h: Rename to (struct vector).max to slightly less\n\t  confusing active, for the number of active slots, distinct from\n\t  allocated or active-and-not-empty. Rename vector_max to\n\t  vector_active for same reason.\n"
    },
    {
      "commit": "b6178002270192fe3ab2403dafac12e5babe11e6",
      "tree": "6b9c352d814185e16a353d17752059eb995019e0",
      "parents": [
        "8ddca7040da413cd283a4beba4634744f4e61ac8"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 21:12:56 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 07 21:12:56 2004 +0000"
      },
      "message": "2004-12-07 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* *.c: Change level of debug messages to LOG_DEBUG.\n"
    },
    {
      "commit": "39db97e4e02eae08a1e18528367b6e9b07eb6a93",
      "tree": "2fb3a0269f4f2fe235ef722e3ad9cc8e6005bb6c",
      "parents": [
        "39ff11dc92d004b59d1ec786fd54b27111fee0b5"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 12 20:50:58 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 12 20:50:58 2004 +0000"
      },
      "message": "Some compiler warnings fixes and fix for bugzilla #119.\n"
    },
    {
      "commit": "fce954f8de1456dd62d26b52902a4a352ef17a93",
      "tree": "3dee77fa141697940a9ff3203ea453e454e88d95",
      "parents": [
        "1cd80845dc5262ff7d3d38deb1921f0b8390f4df"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Oct 07 20:29:24 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Oct 07 20:29:24 2004 +0000"
      },
      "message": "Fix warnings. Didn\u0027t even look at files not compiled in Linux though.\n"
    },
    {
      "commit": "9e867fe663c4eb43c36f35067c0dd092e8c83c14",
      "tree": "f29461b6a2dc8c38037dc0cf91e70392f9ed4ab2",
      "parents": [
        "eb5d44eb8dcf25a1b328e57d1eabb1f89e3bc59b"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Tue Dec 23 08:56:18 2003 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Tue Dec 23 08:56:18 2003 +0000"
      },
      "message": "Merge isisd into the Quagga\u0027s framework:\n  - add privs support\n  - use misc quagga\u0027s definitions\n  - make it compile\"able\"\n  - fix segfault cases related to hostname()\n  - add debug isis xxx command\n\nThis patch has been approved by Paul Jakma.\n"
    },
    {
      "commit": "b5f4502146e38ee34efa5336ec82b4501a1cf705",
      "tree": "60393dde529ecb841d8ada365006d65291420a67",
      "parents": [
        "af5cd0a52c89c73ec8c0fec808ab866cdda96f30"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 02 07:28:05 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 02 07:28:05 2003 +0000"
      },
      "message": "2003-11-02 Krzysztof Oledzki \u003coleq@ans.pl\u003e\n\n        * zebra/zebra_rib.c: Revert patch (dating from zebra.org) which\n          caused zebra to read all routes in all tables, rather than just\n          the main table. See [quagga-dev 280].\n"
    },
    {
      "commit": "6baeb98892ee1c574af5cd3896a3a6d65cef0117",
      "tree": "ea244accc69fe5778a747c3a2c2e5c1387df7b63",
      "parents": [
        "948cf55c4447257960fda0d89fb45e93644393b1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 28 03:47:15 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 28 03:47:15 2003 +0000"
      },
      "message": "2003-10-27 Gilad Arnold \u003cgilad.arnold@terayon.com\u003e\n\n        * zebra/zebra_rib.c: (nexthop_active_update) Check for multipath\n          limit when setting changed flag to avoid spurious changes.\n          (static_install_ipv{4,6}) dont uninstall by default, might not be\n          required - avoid spurious uninstalls.\n          (static_uninstall_ipv{4,6}) only uninstall the route if its\n\t  actually FIB route.\n"
    },
    {
      "commit": "143a385f0cb858126e79bb7c637c2aede234c4ab",
      "tree": "50114b91a57e3fde3c03030d20a19663c3d576ba",
      "parents": [
        "5ae016eeecc8f0ce353b875b98a7c64ce70931dd"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 29 20:06:13 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 29 20:06:13 2003 +0000"
      },
      "message": "2003-09-29 Gilad Arnold \u003cgilad.arnold@terayon.com\u003e\n\n\t* zebra/zebra_rib.c: Fix possible dangling reference to rib\n \troute_nodes - unlock it the appropriate number of times. (twice,\n\tbecause of the implicit lock). see [quagga-dev 251].\n"
    },
    {
      "commit": "7021c425a9f5bd9f62b934124becbaadd961cac0",
      "tree": "cf386f6923eac9f1c665400d0557448c4f5a89e0",
      "parents": [
        "8fc0f64b143ed2155567f5c9f0faad756252146a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 15 12:52:22 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 15 12:52:22 2003 +0000"
      },
      "message": "2003-07-15 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * lib/version.h: add ZEBRA_URL (unused for now)\n        * lib/vty.c: CMD_ERR_NOTHING_TODO when reading conf file should not\n          be fatal. slight reformating.\n        * ospfd/ospf_zebra.c: ignore reject/blackhole routes if zebra sends\n          these type of routes. probably should be a new type of route to\n          allow daemons to more easily choose whether to redistribute them\n          - rathen than just a flag (eg for reject/blackhole).\n          reorder the is_prefix_default test for ZEBRA_IPV4_ROUTE_DELETE to\n          avoid the inverted test - slightly more readable.\n        * redhat/zebra.spec.in: Add ospfapi port to services file, if\n          with_ospfapi.\n        * zebra/rib.h: Change nexthop types to an enum.\n        * zebra/rt_netlink.c: run it through indent -nut.\n          Add nexthop_types_desc[] descriptive array for nexthop types.\n          (netlink_route_multipath) debug statements indicate which branch\n          they are in and print out nexthop type.\n        * zebra/zebra_rib.c: slight reformatting.\n        * zebra/zebra_vty.c: Pass ZEBRA_FLAG_BLACKHOLE flag to\n          static_add_ipv4() if Null0 route is configured. print out Null0 if\n          STATIC_IPV4_BLACKHOLE route, and ignore flags (shouldnt be\n          possible to set flags from vty) for config and show route.\n"
    },
    {
      "commit": "5ec90d28c9268c54e000c2bcfb9b164abfacbacd",
      "tree": "ab5d297f68b94182647d043d790ffab4a2b44c93",
      "parents": [
        "dd488a78add05f10f58f4096dca622c6b5f1f0c9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jun 19 01:41:37 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jun 19 01:41:37 2003 +0000"
      },
      "message": "2003-06-19 Vladimir Ivaschenko \u003chazard@francoudi.com\u003e\n\n\t* zebra/rt_netlink.c: Debug statements added to\n          netlink_route_multipath()\n\t* zebra/zebra_rib.c: If route has a gateway, delete only existing\n          route with that specified gateway.\n"
    },
    {
      "commit": "b21b19c5785487f2ff4a6ce38f45c2e6c35f4363",
      "tree": "c79f90ce7bd798b3f1391010153d9fdf7c7418f0",
      "parents": [
        "0e4f190ebf5a26e4b66fb49cd74ae0ff0c7e0863"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Jun 15 01:28:29 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Jun 15 01:28:29 2003 +0000"
      },
      "message": "2003-06-15 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* lib/vty.{c,h}: Remove vty layer depending on a \u0027master\u0027 global,\n\t  pass the thread master in explicitly to vty_init. Sort out some\n\t  header dependency problems with lib/command.h\n\t* zebra/: Move globals to struct zebrad. Update vty_init().\n\t* (.*)/\\1_main.c: update call to vty_init().\n"
    },
    {
      "commit": "368aa3f0f5edc4daed09055b641c47a9e9dc48c9",
      "tree": "da46e98e5c9f8a1c94189dc2de43542ffd5e266a",
      "parents": [
        "b3516a791d7d44469b9a2a51557347958fe506d1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 25 23:24:50 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 25 23:24:50 2003 +0000"
      },
      "message": "Fix missing else in static_add_ipv4() which was causing case of (!ifname)\nto always be considered to be a blackhole route. (if gate is passed in, it\ncant be).\n"
    },
    {
      "commit": "595db7f16506d2c82a3478e9f8dab00c8733d386",
      "tree": "240d477dd4b5262ba78cc50fda4b81de09e2c91c",
      "parents": [
        "726f9b2bbdd5a607f7b0a10a64547739b807e361"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 25 21:35:06 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 25 21:35:06 2003 +0000"
      },
      "message": "Add back support for null0 interface blackhole routes.\n"
    },
    {
      "commit": "726f9b2bbdd5a607f7b0a10a64547739b807e361",
      "tree": "9c46a6ce71cf4ea96553a85a231e38b462b3dee0",
      "parents": [
        "71c0fb50fe75928f8fbe1bbff1995d9d91b3702b"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun May 25 21:04:54 2003 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun May 25 21:04:54 2003 +0000"
      },
      "message": "Last fixes from 6Wind patch.\n"
    },
    {
      "commit": "81dfcaa2e27d53f4eb61c549e03065dcb1b8eec3",
      "tree": "2aed449138a4833fe343052cdfa505be74332cb4",
      "parents": [
        "15291357d130b804dcdcfd81bdb1b86a84567fd0"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun May 25 19:21:25 2003 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun May 25 19:21:25 2003 +0000"
      },
      "message": "Route (reject|blackhole) support from 6Wind patch.\n"
    },
    {
      "commit": "a4b70768b4d08683d16a1e8225411e429fb531d3",
      "tree": "7292e9fb8c75d76120bbf67c63d141d6cad37ec3",
      "parents": [
        "a0f6acd8a49906399e2ac73fde6406da552b2443"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 16 17:19:48 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 16 17:19:48 2003 +0000"
      },
      "message": "From: Gilad Arnold \u003cgilad.arnold@terayon.com\u003e\nSubject: [zebra 19084] Re: suspected memory leakage upon static route\n\nI believe this is a more complete patch, it also addresses\nallocating/freeing of nexthop-\u003eifname string buffer (1) using\nXSTRDUP/XFREE macros (thus correctly updating memory statistics), and\n(2) for all nexthop-\u003etype cases that carry an ifname string.\n"
    },
    {
      "commit": "a0f6acd8a49906399e2ac73fde6406da552b2443",
      "tree": "e89a2bd710f70fe860bfe8f7963b880fec65a0c3",
      "parents": [
        "843521964f801b1266e59df3b005b1b4bf48fdc7"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 14 18:29:13 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 14 18:29:13 2003 +0000"
      },
      "message": "From: Gilad Arnold \u003cgilad arnold at terayon com\u003e\nSubject: [zebra 19080] suspected memory leakage upon static route deletion\n\nupon deletion of a static route entry, at the end of\nzebra/zebra_rib.c/static_delete_ipv4(), there\u0027s a call to XFREE to\ndeallocate the \u0027struct static_ipv4\u0027. However, in the case of a static with\nifname as nexthop (type\u003d\u003dSTATIC_IPV4_IFNAME), this struct holds a pointer to\na dynamically allocated ifname string buffer (si-\u003egate.ifname, see its\nallocation within static_add_ipv4() using XSTRDUP). IMO, the attached patch\nis required.\n\nNotes: the same applies to IPv6 statics as well (fix included in patch);\nand, I admit I haven\u0027t yet tested that, but it seems simple enough to be\nworking... ;-\u003e\n"
    },
    {
      "commit": "d753e9eec96f03aa02a7648e4279c524c376908d",
      "tree": "5434dea114f81d8596fc87a619f65c36629b4300",
      "parents": [
        "d4f5031c5c2ca3953d071cfce0a3faa34f9b073d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 22 19:45:50 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 22 19:45:50 2003 +0000"
      },
      "message": "Matthew Grant \u003cgrantma@anathoth.gen.nz\u003e\nSubject: [zebra 17290] [PATCHES] - Fixes for problems in 0.93b\n\nAdded ifupstaticfix\n"
    },
    {
      "commit": "718e3744195351130f4ce7dbe0613f4b3e23df93",
      "tree": "bac2ad39971cd43f31241ef123bd4e470f695ac9",
      "parents": [],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "message": "Initial revision\n"
    }
  ]
}
