)]}'
{
  "log": [
    {
      "commit": "3676cb0c029c8f8f06ab703dd441c1e23e5ef333",
      "tree": "613e8f2a7c7b2b9e2d334830ce994f50611e9d4e",
      "parents": [
        "481986950290323e2f5d1e774a666d4b7ed510d6"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Jul 29 13:39:37 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "*: Remove some for statement declarations\n\nWe generally require C99.  Some compilers, e.g.  gcc, barf on\n\u0027for\u0027 statement declared variables, if std\u003d{gnu,c}99 or higher is not\ngiven - even while seemingly accepting other C99 constructs.\n\nAs it\u0027s trivial, remove these.\n"
    },
    {
      "commit": "15773a87ce652da5b02ca14dc0088408899ea007",
      "tree": "0c4d6ceab9ca1d8183382f40601265133b15f68b",
      "parents": [
        "ae51c9d510fb7d9cc41ead8803af916c1f4b34ca"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 18:29:55 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "zebra: Add link parameters support to Zebra\n\n* zebra/interface.c:\n   - Add new link-params CLI commands\n   - Add new functions to set/get link parameters for interface\n* zebra/redistribute.[c,h]: Add new function to propagate link parameters\n  to routing daemon (essentially OSPFD and ISISD) for Traffic Engineering.\n* zebra/redistribute_null.c: Add new function\n  zebra_interface_parameters_update()\n* zebra/zserv.[c,h]: Add new functions to send link parameters\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "581ecbfe91d23791c116a8e3790208a17c1a5983",
      "tree": "c6087fe822be69a1b424b2453aa87ac30014ec5e",
      "parents": [
        "00667cea1fbd088900f7909f2044da2a7e26270d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue May 03 19:59:43 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "zebra: count iface up/down events and keep last time of their occurrence\n\nIt is quite useful to be able to assert whether specific interfaces have\nflapped or also to verify that specific interfaces have not flapped.\n\nBy having counters for those events and storing the last time of their\noccurrence, this is made possible.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "68b45cc592d5d61e748e8d99ec9f84e63aa73213",
      "tree": "eb1008834813757b86e5f4bc439e7b2b3188adbf",
      "parents": [
        "b9ac2f320922542e0320ceeced4aa7264564e98a"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 11 14:27:13 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:33 2016 +0100"
      },
      "message": "*: Consolidate all double VIEW_NODE and ENABLE_NODE\u0027s\n\nIf a command is put into the VIEW_NODE, it is going into the\nENABLE_NODE as well.  This is especially true for show commands.\nAs such if a command is in both consolidate it down to VIEW_NODE.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "23757db11c5378521b7948847e17691f4fc35e0a",
      "tree": "5b62d70b558c89ab751626e5b3f1a028a0be431e",
      "parents": [
        "7bd31774cf2c1cfaf74bca87f57f698e20a07e65"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Feb 24 06:26:02 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "*: get rid of \"MTYPE 0\"\n\nA few places are using 0 in place of the MTYPE_* argument.  The\nfollowing rewrite of the alloc tracking won\u0027t deal with that, so let\u0027s\nuse MTYPE_TMP instead.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d869dbd03b4d75d512552d07ed8fbe0807272a9c",
      "tree": "2ade0de7288c4dd3fc68232708346881fd1a59fa",
      "parents": [
        "9da9a61e2f8afb61aa31c17fb810169290bf96ee"
      ],
      "author": {
        "name": "Udaya Shankara KS",
        "email": "shankara.k.s.u@gmail.com",
        "time": "Thu Feb 11 21:42:29 2016 +0530"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "zebra: Enable fpm module to connect to remote fpm server\n\nFPM aims to provide cross platform mechanism to support the scenario\nwhere the router has forwarding path distinct fromt the kernel.Commonly\nHardware based fast path.Hence it is non-configurable paramter.This\nlimits us to use funcationality to update FIB information to remote\nhosts, like SDN controller.\n\nThis implementation provides the CLI to configure remote hosts and port\ninformation of remote fpm controller.Otherwise default fpm server will\nbe localhost and default fpm port will be well know port 2620.\n\n* zebra_fpm.c: added fpm_server paramter to zfpm_global_t handler.\n    Implemented CLI for configuring the fpm server and no fpm\n    command to revert back to default configuration.\n\n* zserv.c: Install zebra node to write fpm configuration info\n   on console/config file.\n\nFurther documentation supplied:\n-------------------------------\n\n               ZEBRA : CLI CONFIGURATION FOR FPM MODULE\n         \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n1. INTRODUCTION\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n   1.1 scope\n\n     This memo discusses the configuration option for zebra to update\n     FIB information to local and remote modules.\n     This will also helps to address the issue associated with CORD project.\n     https://jira.onosproject.org/browse/CORD-411\n\n2. REFERENCE\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  Quagga version 99.24+ ( main branch committed on 29-sep-2015)\n\n3. PROBLEM DESCRIPTION\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n    Once FPM is enabled, Quagga periodically tries to initiate fpm\nconnection to localhost:2620.  These values are non configurable in\nexisting implementation.  There is no CLI available to configure\n\"host:port\".  hence limits us to use it for hardware based fast path\nmodules only.\n\n4. PROPOSED CHANGES\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nFollowing changes are done to the quagga code\n   a) Added new CLI to configure \"host address : port\".\n      The CLI format\n      \u003cconf t\u003e\n           $ fpm connection ip \u003cipv4 address\u003e port \u003ctcp port num\u003e\n\n      and no fpm command to revert back to default\n      \u003cconf t\u003e\n           $ no fpm connection ip \u003cipv4 address\u003e port \u003ctcp port num\u003e\n\n   b) Allowed values are ipv4 address and tcp port range \u003c1-65535\u003e\n\n   c) FPM initialization code has been enhanced to pick the \"host\n      address : port\" values from zebra.conf.  if not found then\n      default values as localhost:2620 will be used.  and updated the\n      information on to config file on write config command\n\n5. FILES MODIFIED\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  1) fpm/fpm.h :\n     a) Added MACRO to represent network order loopback ip\n\n  2) zebra/zebra_fpm.h :\n\n     a) introduced fpm_server variable in zfpm_glob_t handler to hold\n        the remote fpm server address\n\n     b) Hooked \u0027fpm_remote_ip_cmd\u0027 and \u0027no_fpm_remote_ip_cmd\u0027 at CONFIG\n        node to configure remote fpm detail and to revert back to\n        default respectively\n\n  3) zebra/zserv.c :\n     a) Hooked \u0027config_write_fpm\u0027 callback function, at ZEBRA_NODE to\n        display the fpm connection details on console on entering\n        command\n\n         $ show running_config\n        and to write to configuration file on entering command\n         $ write config\n\n6. TESTING DETAILS\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n   6.1. default behavior\n\n          In default configuration FPM will attempt to connect to\n          localhost:2620\n\n   6.2. update fpm info\n        a) Using CLI command user can configure fpm host:port details\n           and can be able to write to config file(zebra.conf) using\n           write config command.  this parameters has no\n           dependency/impact on other parameters of config file\n\n        b) show running-config/write config will display the fpm\n           information if configured.  and will not display any\n           information related to fpm for default configuration\n\n        c) these configured information will be stored to config file.\n           only on write config command.\n\n   6.3 loading from config file\n        a) zebra attempts to connect to fpm server if fpm parameter\n           found in config file.else connects to default parameters.\n\n        b) if fpm connection drops, fpm will periodically attempts to\n           connect to remote server.\n\n        c) if fpm connections already established. then newly\n           configured fpm parameters will not disconnect the existing\n           connection.  new connection to the different fpm server will\n           happen only after existing connection closes by either of\n           the end.\n"
    },
    {
      "commit": "9514fee4b37a9043738aa16ca8684993a1b572ad",
      "tree": "715d5bfb6824dc213a3f0c98cf149bfb5e104ea7",
      "parents": [
        "3c964045459f66921f8a3dc33fe4c028e6b0b141"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Jan 26 11:44:14 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "bgpd, ripngd, zebra: Remove duplicate PSIZE define\n\nThe PSIZE macro is defined the same in multiple places.  Remove\nthe duplicates.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "5f678889843fb9bc3f07d05eebc2f8fb35584a91",
      "tree": "284e203bd4345265fae0648bbdd54460171951f0",
      "parents": [
        "aef4650851cf0f74d944466d50e26bb8f8635c3d"
      ],
      "author": {
        "name": "Igor Ryzhov",
        "email": "iryzhov@nfware.com",
        "time": "Fri Apr 22 17:38:24 2016 +0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 29 19:48:45 2016 -0400"
      },
      "message": "zebra: add missing vty commands\n\nSigned-off-by: Igor Ryzhov \u003ciryzhov@nfware.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "aef4650851cf0f74d944466d50e26bb8f8635c3d",
      "tree": "0fa32e61bc3c9d715247091fd3003690b3e056a1",
      "parents": [
        "bb01bdd740339b0c07d8ed0786811801b2a79192"
      ],
      "author": {
        "name": "Stas Nichiporovich",
        "email": "stas@iptel.by",
        "time": "Tue Apr 26 08:14:36 2016 +0000"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 29 19:46:16 2016 -0400"
      },
      "message": "zebra: fix crash caused by using route-map with \"set src\"\n\nSigned-off-by: Stas Nichiporovich \u003cstas@iptel.by\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "190591f0fe3388c746ea48f69a439f4bd0b49834",
      "tree": "de1420f8f017c3e36b5ce6233d01af4f75960c9e",
      "parents": [
        "80f61a9979079ed16b9eff50ba65ad8bf1b15fb6"
      ],
      "author": {
        "name": "Jafar Al-Gharaibeh",
        "email": "jafar@atcorp.com",
        "time": "Thu Apr 21 17:40:12 2016 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:37:53 2016 -0400"
      },
      "message": "zserv: [pimd] fix - avoid dereferencing a NULL pointer\n\nSigned-off-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "7e73eb740f3c52a5b7c0ae9c2cd33b486d885552",
      "tree": "610292c5f4b071790a9fba7bcd77f68934a31809",
      "parents": [
        "7e7a101dde5969f62074801d84bb4cc75e50f548"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Sat Apr 09 17:22:32 2016 +0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:36:40 2016 -0400"
      },
      "message": "zebra: handle multihop nexthop changes properly\n\nThe rib entries are normally added and deleted when they are\nchanged. However, they are modified in placae when the nexthop\nreachability changes. This fixes to:\n - properly detect nexthop changes from nexthop_active_update()\n   calls from rib_process()\n - rib_update_kernel() to not reset FIB flags when a RIB entry\n   is being modifed (old and new RIB are same)\n - improves the \"show ip route \u003cprefix\u003e\" output to display\n   both ACTIVE and FIB flags for each nexthop\n\nFixes: 325823a5 \"zebra: support FIB override routes\"\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nReported-By: Igor Ryzhov \u003ciryzhov@nfware.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "d849e23b1c6b7278aef2f460723ac17cdc63e1a7",
      "tree": "d0627a3b565375788d11f930143afe561d9b0d2b",
      "parents": [
        "f9f4731245eb9f83d0795acac24183c6cf709288"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Thu Feb 18 18:19:54 2016 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 18:05:23 2016 +0000"
      },
      "message": "zebra: Fix route deletion on *BSD\n\nFix for not handling RTM_CHANGE correctly.  This patch change it to\ndelete/add instead.  Using RTM_CHANGE on kernels where it works is better,\nbut is left as an exercise for developer who has access and will to fix it\non *BSD.\n\n[ed note: collaboration with Martin Winter]\n"
    },
    {
      "commit": "91ce87aacfd8718b5a52fb0f4453e9f72d8bdb53",
      "tree": "8abce3edf10e5874aa342090810adcfbf2380053",
      "parents": [
        "d18396369ff85517cd4b0b7abe96f6f706710dc7"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Dec 09 08:24:45 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:47 2016 +0000"
      },
      "message": "zebra, bgpd: Fixup MULTIPATH_NUM usage to not consider 0\n\nThe code has spots where MULTIPATH_NUM set to 0 is equal to 64.\nNow that MULTIPATH_NUM is set from the makefile to never be 0,\nremove the code that depends on this.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d18396369ff85517cd4b0b7abe96f6f706710dc7",
      "tree": "748597138dba3b393808782c8767fdf886b603f4",
      "parents": [
        "693da6096a28eef5eadeea699771265987b3ec0c"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Dec 09 08:24:44 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:47 2016 +0000"
      },
      "message": "build: Rework how MULTIPATH_NUM is delivered to build\n\nChanges made here:\n\n1) MULTIPATH_NUM will never be 0.  If user specifies --enable-multipath\u003d0\nthen this translates to MULTIPATH_NUM being set to 64 inside of the build\nsystem.\n\n2) Move MULTIPATH_NUM from a Makefile construct to a config.h construct.\n\n3) Allowed MULTIPATH_NUM to be a number \u003e 99 but \u003c 1000\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "9099f9b2a66e86f8a90d7fe18f61bd2bb1bc6744",
      "tree": "1ce5d2e4ecff6b57eb00d40b1a91b3f363ff35fe",
      "parents": [
        "954c7d6bcd04c2cf037965adda0f9d11afdcd165"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Jan 18 10:12:10 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "*: use an ifindex_t type, defined in lib/if.h, for ifindex values\n"
    },
    {
      "commit": "954c7d6bcd04c2cf037965adda0f9d11afdcd165",
      "tree": "707ba870b0989d08a98e6b969fc1e2388f09e1c0",
      "parents": [
        "4d3ae716ce86c28e3979c9ae57c4e717ac5e27e4"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Jan 15 17:36:33 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "lib, zebra: unify link layer type and hardware address handling\n\nThis removes the BSD specific usage of struct sockaddr_dl\nhardware address. This unifies to use explict hw_addr member for\nthe address, and zebra specific enumeration for the link layer\ntype.\n\nAdditionally the zapi is updated to never send platform specific\nstructures over the wire, but the ll_type along with hw_addr_len\nand hw_addr are now sent for all platforms.\n\nBased on initial work by Paul Jakma.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "4d3ae716ce86c28e3979c9ae57c4e717ac5e27e4",
      "tree": "42d84ffb3cfe8a1f267c059e3a62fea87554f1c7",
      "parents": [
        "325823a5f07d6850318e52f6e66691eca59d24fe"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Jan 15 17:36:32 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "zebra: remove metric from kernel\n\nIt simplifies things as we can do atomic replace of route prefix.\nAnd it seems there\u0027s some race condition somewhere that can result\nin an incorrect change request leaving prefixes in kernel when\nthey were intended to be replaced/deleted.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "325823a5f07d6850318e52f6e66691eca59d24fe",
      "tree": "9be443652c5c0734b6761a84f44980be7958b708",
      "parents": [
        "82a6635ca580ccd3c31551c960ec3de816b6c15d"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Jan 15 17:36:31 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "zebra: support FIB override routes\n\nFIB override routes are for routing protocols that establish\nshortcut routes, or establish point-to-point routes that should\nnot be redistributed. Namely this is useful NHRP daemon to come.\n\nZebra is extended to select two entries from RIB the \"best\" entry\nfrom routing protocols, and the FIB entry to install to kernel.\nFIB override routes are never selected as best entry, and thus\nare never adverticed to other routing daemons. The best FIB\noverride, or if it does not exist the otherwise best RIB is\nselected as FIB entry to be installed.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "82a6635ca580ccd3c31551c960ec3de816b6c15d",
      "tree": "d55f7b9894ccfda8f6b3295fd1efdf86356c1969",
      "parents": [
        "0abf6796c3d8ae8f5ea8624668424bc1554de25e"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Jan 15 17:36:30 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "zebra: use link scope for interface routes\n\nIn linux, \u0027scope\u0027 is a hint of distance of the IP. And this is\nevident from the fact that only lower scope can be used as recursive\nvia lookup result. This changes all interface routes scope to link\nso kernel will allow regular routes to use it as via. Then we do\nnot need to use the \u0027onlink\u0027 attribute.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\n"
    },
    {
      "commit": "0abf6796c3d8ae8f5ea8624668424bc1554de25e",
      "tree": "2d1713deeb970d79930912588341ff756949b49c",
      "parents": [
        "b0d02889624eaafa0984873dcd78c086418bdf13"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Jan 15 17:36:29 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "zebra: atomic FIB updates\n\nThis commit updates the kernel API so that route changes are\natomically updated using change/replaces messages instead\nof first sending a withdraw followed with update.\n\nSame for zclient updates, changes are sent as single ADD\ninstead of DELETE + ADD.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\n"
    },
    {
      "commit": "40278bd4c51939ccf8ec06ef1f33aedf8f05e86c",
      "tree": "569686df98a09491cf051593b91ea43206f956f4",
      "parents": [
        "b05c6ca57130f079f8a8a6686d9d4ffa5ff440f0"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:45 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:41 2016 +0000"
      },
      "message": "zebra: additional redistribute related logging\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b05c6ca57130f079f8a8a6686d9d4ffa5ff440f0",
      "tree": "5533689d6a3ff733280cd7a5458a562a8fe032d7",
      "parents": [
        "d7be042378eac103634ab62abf4b2a5ca225092d"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:44 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:41 2016 +0000"
      },
      "message": "zebra: make RTF_LLINFO optional to fix FreeBSD\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d7be042378eac103634ab62abf4b2a5ca225092d",
      "tree": "63901594ccd70f4fa15d9f9b90a578e8573f931b",
      "parents": [
        "0490729cc033a3483fc6b0ed45085ee249cac779"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:43 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:40 2016 +0000"
      },
      "message": "zebra: wire up \"debug zebra packet detail\"\n\nThere was no way to actually set ZEBRA_DEBUG_DETAIL, even though some\ndebug output was conditional to it.  Add CLI command.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "eae18d16fefed42af33e63e096a2889b9c70b9cb",
      "tree": "ca1a184a44902f2d6a9c7dfa92cf50225b8e8cd8",
      "parents": [
        "0d27129ac5fd70b90820e3dde05c085d1a0f63a8"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Sat Nov 21 07:55:42 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Dec 09 08:54:37 2015 -0500"
      },
      "message": "zebra: Fix solaris build issue\n\nThe number of parameters to rib_add_ipv4 has been increased.\nSubmitter of original patch failed to modify solaris code path.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "0d27129ac5fd70b90820e3dde05c085d1a0f63a8",
      "tree": "c0267ab193459bd71f217dcbd0905ad0b9db012e",
      "parents": [
        "64e0ac29ddc43bb5b1a2999a8ebedbdff115e3ca"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Nov 19 07:21:30 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:16:24 2015 -0500"
      },
      "message": "zebra: Fix non usage of VRF_DEFAULT\n\nA vrf_id was being set to 0 instead of VRF_DEFAULT\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "642577340cfb7ad66d021ab2b86d72f7cdde03bc",
      "tree": "981104744f3fb913ec3e5a006199e6810101ab55",
      "parents": [
        "8253b73c3c71d4102c0010f63b59b2829f3b0f90"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Nov 20 08:33:30 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:16:12 2015 -0500"
      },
      "message": "zebra: Cleanup RTADV define\n\nThe RTADV define was not being set correctly or consistently.\nMake the code consistent with our HAVE_IPV6 define.\n\nIf the user wants to explicitly turn it off then they should\nrun --disable-rtadv from the configure cli\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "c1900e09a7fdd70437f3ba0329868f1eee3f5a1a",
      "tree": "5f1032936f4413f7dc12935eabbdf62f940ffd12",
      "parents": [
        "949b719eac0c8b51c73f144eb035fab27a16c2a6"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:40 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: Fix change of distance on ipv6 route creating duplicate routes\n\nIf you enter:\n\nipv6 route 2002:44:44:44::44/128 swp1 4\nipv6 route 2002:44:44:44::44/128 swp1 99\n\nYou get:\n\nhost-111# show ipv6 route\nCodes: K - kernel route, C - connected, S - static, R - RIPng,\nO - OSPFv6, I - IS-IS, B - BGP, A - Babel, T - Table,\n\u003e - selected route, * - FIB route\nS 2002:44:44:44::44/128 [99/0] is directly connected, swp1\nS\u003e* 2002:44:44:44::44/128 [4/0] is directly connected, swp1\n\nThis problem is fixed in the ipv4 code path.  Copying the same\ncode from the ipv4 into the ipv6 code path fixes the issue.\n\nWith the fix:\n\nhost-111(config)# ipv6 route 2002:44:44:44::44/128 swp1 4\nhost-111(config)# do show ipv6 route\nCodes: K - kernel route, C - connected, S - static, R - RIPng,\n       O - OSPFv6, I - IS-IS, B - BGP, A - Babel, T - Table,\n       \u003e - selected route, * - FIB route\n\nS\u003e* 2002:44:44:44::44/128 [4/0] is directly connected, swp1\nC * fe80::/64 is directly connected, swp1\nC\u003e* fe80::/64 is directly connected, eth0\nhost-111(config)# ipv6 route 2002:44:44:44::44/128 swp1 99\nhost-111(config)# do show ipv6 route\nCodes: K - kernel route, C - connected, S - static, R - RIPng,\n       O - OSPFv6, I - IS-IS, B - BGP, A - Babel, T - Table,\n       \u003e - selected route, * - FIB route\n\nS\u003e* 2002:44:44:44::44/128 [99/0] is directly connected, swp1\nC * fe80::/64 is directly connected, swp1\nC\u003e* fe80::/64 is directly connected, eth0\nhost-111(config)#\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "949b719eac0c8b51c73f144eb035fab27a16c2a6",
      "tree": "ca22748a46ab77ab04354d13890335a3bcb690a1",
      "parents": [
        "a979ab70e0ec51f3cf779edae509f3c52be0b0f4"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:39 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: Combine static_uninstall_ipv[4|6] into one function\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "a979ab70e0ec51f3cf779edae509f3c52be0b0f4",
      "tree": "f81b6472598e824ea37e3f17e1dd8b167044fbeb",
      "parents": [
        "9bcdd1a252ba84424eb06e84adf7fb48ae66ce1f"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:38 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: combine static_ipv[4|6]_nexthop_same into one function\n\nCombine the static_ipv[4|6]_nexthop_same into static_nexthop_same.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "9bcdd1a252ba84424eb06e84adf7fb48ae66ce1f",
      "tree": "e604d71dcc41c9449d91c6d85c732320d6a112ec",
      "parents": [
        "0d955affd51df42dd5ae24b0d41edd992fb59a78"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:37 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: Combine static_install_ipv[4|6]\n\nCombine the static_install_ipv[4|6] function calls into\nstatic_install_route.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "0d955affd51df42dd5ae24b0d41edd992fb59a78",
      "tree": "8cdf0f263b5c9950c598e6ef2908efbb55004845",
      "parents": [
        "d4c27d656d072fbd81003a71c4f3391c96852c60"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:36 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: Remove HAVE_IPV6 from rib.h and zebra_rib.c\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d4c27d656d072fbd81003a71c4f3391c96852c60",
      "tree": "27f40829775ca271f6a7d7b5031284b264c0f479",
      "parents": [
        "b11f3b54c842117e22e2f5cf1561ea34eee8dfcc"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Nov 04 13:26:35 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: Collapse struct static_ipv[4|6] into struct static_route\n\nThe \u0027struct static_ipv4\u0027 and \u0027struct static_ipv6\u0027 structures\nare essentially the same.  Collapse them into one data structure\n\u0027struct static_route\u0027.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "b11f3b54c842117e22e2f5cf1561ea34eee8dfcc",
      "tree": "c31f9893baa2a05db24ea72d1370fb6b11f59c20",
      "parents": [
        "7eb6136b2732d4782360f9f376336c6d4f667ff0"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Mon Nov 02 16:50:07 2015 +0200"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: implement per-route mtu handling\n\nThis commits allow overriding MTU using netlink attributes on\nper-route basis. This is useful for routing protocols that can\nadvertice prefix specific MTUs between routers (e.g. NHRP).\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\n"
    },
    {
      "commit": "7eb6136b2732d4782360f9f376336c6d4f667ff0",
      "tree": "5e77b44139cf542a18a949d1204ace4316b474f1",
      "parents": [
        "929a26a7cf80b2df9981595e6bcfcfc4a970052a"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Mon Nov 02 16:50:05 2015 +0200"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:12:10 2015 -0500"
      },
      "message": "zebra: make ZEBRA_FLAG_CHANGED internal status\n\nThis flag is used internally in zebra only. And it makes no sense\nto expose it over the zclient API, as having it set from client\ncould corrupt the internal state.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "983525e8b560fc44d2214ca3f6d72af809b6ebd9",
      "tree": "e746b161aa9266c270d80e2a51e01e49dad87e44",
      "parents": [
        "6d853c43d9dd315eb42211150b7a4a43bae4cb62"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Thu Oct 22 11:35:16 2015 +0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:11:18 2015 -0500"
      },
      "message": "zebra: fix rtadv detection\n\nThe GLIBC macro tests were just plain wrong. Glibc 2.1 is ancient\nand the support should be detected via configure.ac test, not\nmacro test. Build with HAVE_RTADV but !RTADV is broke after vrf,\nso for now, just define RTADV always if HAVE_RTADV is there.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\n"
    },
    {
      "commit": "283596fd6d49a5b2861a6923db9a88628ef0eca4",
      "tree": "1b461a1fea8840efaafd1250f729831be91fea9f",
      "parents": [
        "be62b17c736ea06181f2788e3011066830555610",
        "fc1c114aab24fe47bc6a1976c1c602d507fa4e69"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Wed Oct 28 14:25:06 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Oct 28 14:25:06 2015 +0000"
      },
      "message": "Merge \u0027patch-tracking/4/proposed/netdef-solaris\u0027 into accepted\n"
    },
    {
      "commit": "7125293d65d73a451ec203c8c1630c236171f5a3",
      "tree": "f9d118c9a8f8374d69fb9c75c87531a2ca478fb2",
      "parents": [
        "fd1c1a133af47ae5533a5ed41b73ff62e7aa1058"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Sep 24 09:25:19 2015 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Oct 27 10:53:21 2015 +0000"
      },
      "message": "lib: zclient.c remove extern struct thread_master *\n\nzclient.c depended upon link time inclusion of a\nextern struct thread_master *master.  This is a violation of the\nnamespace of the calling daemon.  If a library needs the pointer\npass it in and save it for future use.\n\nThis code change also makes the zclient code consistent with\nthe other lib functions that need to schedule work on your behalf\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "7904509bdf9ec7fad3ac1aee763ae39e7c308c52",
      "tree": "3bb692701804c22e215828b87f4c11451b5a93e1",
      "parents": [
        "8fa1d027f23115dcb1c38b09c6e46edf5b8f7238"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 15 22:09:30 2015 -0700"
      },
      "committer": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Fri Oct 16 23:50:47 2015 -0700"
      },
      "message": "zebra/if_ioctl_solaris: Make foo static\n\nmake interface_ioctl_ioctl() and if_get_index() static\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8fa1d027f23115dcb1c38b09c6e46edf5b8f7238",
      "tree": "73ed587d0f0967ee78e93f64d95be6ba3b9aaf68",
      "parents": [
        "ebd2687a531a0f9b9449f6fcf7001f53afa99d02"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 15 21:55:38 2015 -0700"
      },
      "committer": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Fri Oct 16 23:50:47 2015 -0700"
      },
      "message": "zebra/rt_socket: Fix warnings\n\nFix warning about unused sin_masklen / sin6_masklen\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ebd2687a531a0f9b9449f6fcf7001f53afa99d02",
      "tree": "b37a4a6bdb5a3b5dfc3e69a6e882f5dad76925ba",
      "parents": [
        "f90ce64d68cf0ad56ff0370338ec58c883a3448d"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 15 21:40:31 2015 -0700"
      },
      "committer": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Fri Oct 16 23:50:46 2015 -0700"
      },
      "message": "zebra/rtread_getmsg: fix sign warnings\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "da1b7eaa0ac5d590818e1cde92a9807a2f0e07f2",
      "tree": "17bfadeef20983eb5cd070734f0d2b02f23a9663",
      "parents": [
        "a2b503131b188292ede08df99309bcbef4bd1a52"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 15 20:36:20 2015 -0700"
      },
      "committer": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Fri Oct 16 23:50:46 2015 -0700"
      },
      "message": "solaris: more warnings fixed\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a2b503131b188292ede08df99309bcbef4bd1a52",
      "tree": "9e834012068d8f2106fd3846fac62d080e3248d8",
      "parents": [
        "fe56125bbcbc0c503ae6bd0b934a4940c4693b4f"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 15 19:35:41 2015 -0700"
      },
      "committer": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Fri Oct 16 23:50:46 2015 -0700"
      },
      "message": "solaris: no ROUNDUP\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "fe56125bbcbc0c503ae6bd0b934a4940c4693b4f",
      "tree": "25dc1d7b525c4c5cfead2fec9d4061eed4f9399a",
      "parents": [
        "ba6cd587b4114528c8d6af439c4f49c7bb95a92b"
      ],
      "author": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Tue Sep 15 19:12:31 2015 -0700"
      },
      "committer": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Fri Oct 16 23:50:46 2015 -0700"
      },
      "message": "zebra/ioctl_solaris: Fix use of prefix2str in if_prefix_add/delete_ipv6\n\nFirst argument of prefix2str pointed to ifc-\u003eaddress-\u003eprefix, but\nno prefix exists in address. Should have been ifc-\u003eaddress.\n\nSigned-off-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6d9362274e8ba2d57ffe17aa735eb941ac3d5fbc",
      "tree": "690bb673621812ce671cac14927933af460a457c",
      "parents": [
        "285ed0c62af4f57902d5deacc621f290fdeec276"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 15 02:59:04 2015 -0700"
      },
      "committer": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Fri Oct 16 23:50:46 2015 -0700"
      },
      "message": "zebra/solaris: fix uninitialised vars\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "285ed0c62af4f57902d5deacc621f290fdeec276",
      "tree": "ef1559318aef1e718f09d829c586c009e02920cf",
      "parents": [
        "12bbd62112724483f72c4040a4c4b585aff8eb54"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 15 02:46:53 2015 -0700"
      },
      "committer": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Fri Oct 16 23:50:46 2015 -0700"
      },
      "message": "build/solaris: create ioctl_solaris.h\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c8394ace7081ef0e71f3d162067c83c2629fc088",
      "tree": "7736d5d1ca6d3ea79c3f43e32dccf4baf0fa1094",
      "parents": [
        "75daab1784f515104ceef747d134981ecee7b0af"
      ],
      "author": {
        "name": "Morgan Stewart",
        "email": "morgan@cumulusnetworks.com",
        "time": "Thu Sep 17 19:04:30 2015 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 24 15:26:46 2015 +0100"
      },
      "message": "Fixed if_add_update possible null dereference\n\nCoverity Scan #1221454\nIn zebra/interface.c if_data could be null dereferenced without early\ncheck.\n\nSigned-off-by: Morgan Stewart \u003cmorgan@cumulusnetworks.com\u003e\nReviewed-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "26b663da7ea8a3efae816d6e7fda293bdc1082f5",
      "tree": "dfaf1057216d4dd0e750ff1a2aa2a2653a1c6202",
      "parents": [
        "782c882077b5a63213b3d160535d5e8259f6df61"
      ],
      "author": {
        "name": "Morgan Stewart",
        "email": "morgan@cumulusnetworks.com",
        "time": "Wed Sep 16 13:17:54 2015 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 24 15:26:45 2015 +0100"
      },
      "message": "zebra: Fix leaked sockets in rtadv.c\n\nCoverity Scan #709790\nIn zebra/rtadv.c: rtadv_make_socket leaks socket for error cases.\nAdded lines to close the socket for each error case or return.\n\nSigned-off-by: Morgan Stewart \u003cmorgan@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "782c882077b5a63213b3d160535d5e8259f6df61",
      "tree": "31a9ed3f8d228f41080e684557b48939943ee6a8",
      "parents": [
        "8ccd74c29f5242f312c1e0561497558482c9be65"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Mon Sep 14 13:29:37 2015 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 24 15:26:45 2015 +0100"
      },
      "message": "zebra: rib-\u003enexthop_num is double incremented\n\nWhile reading linux kernel netlink messages, rib-\u003enexthop_num is incremented\nin the read loop as well as the underlying nexthop_add() function call.  This\nnumber should only be incremented in one spot.  Removing the increment from\nthe read loop and allowing the underlying code to track this data as it is\nalready.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "8ccd74c29f5242f312c1e0561497558482c9be65",
      "tree": "5cfa8948b7f55bce37923a2607c4d7a4c21b241d",
      "parents": [
        "8965be4baaa1a4c619cbb4a8a10d15a72d80b60d"
      ],
      "author": {
        "name": "Hiroshi Yokoi",
        "email": "hiroshi.yokoi.0313@gmail.com",
        "time": "Tue Sep 08 11:52:20 2015 +0900"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 24 15:26:45 2015 +0100"
      },
      "message": "zebra: fix addr sent in ZEBRA_IPV6_NEXTHOP_LOOKUP\n\nI found that zebra doesn\u0027t set correct IPv6 address in its result because of\nusing *addr\u0027s address.  Although I\u0027m using 0.99.22, the latest version has\nalso use \"\u0026addr\".  Shouldn\u0027t it use \"addr\"?\n\nSigned-off-by: Hiroshi Yokoi \u003chiroshi.yokoi.0313@gmail.com\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "52c0bc739b1184621525e64720b944268d6b0eeb",
      "tree": "a556a51ef56f6ccaa63c942c9880c684fc4b3bae",
      "parents": [
        "c8ee940cc695cbcf9c0156ee6f72730f1fff9814"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Thu Aug 20 21:30:17 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 03 16:44:48 2015 +0100"
      },
      "message": "build: Remove the old PIC/PIE patch, let libtool sort it out\n\n* Remove the old change from \u002708 to add in PIE arguments at automake level.\n  Versions of libtool since then know how to deal with -fpie and do the right\n  thing according to whether its building shared or executable objects.\n  So just pass \u0027-fpie\u0027 as CFLAG and let libtool do its thing.\n"
    },
    {
      "commit": "8b84c2762ccd2d47a115824ee083d33e697a7741",
      "tree": "6f561e4d5b78e3cc5b8388d7cbaf6dbe512ce50b",
      "parents": [
        "8c56b44de0fa8100b6f0b367dbc604d41b94025f"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Sat May 30 18:57:54 2015 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Aug 04 16:39:27 2015 +0100"
      },
      "message": "Removal of \u0027show ip mroute\u0027\n\nThe \u0027show ip mroute\u0027 in zebra_vty.c collided with the\n\u0027show ip mroute\u0027 command in pim_cmd.c.  The \u0027show ip rpf\u0027\ncommand is functionally equivalent to the zebra_vty.c\n\u0027show ip mroute\u0027.  Therefore remove the \u0027show ip mroute\u0027 command\nin zebra_vty.c.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "8c56b44de0fa8100b6f0b367dbc604d41b94025f",
      "tree": "c7f04ccf33183b461c10b636dbe48ded10222e06",
      "parents": [
        "9487b4fcfc0754109e49240214e283fd58756843"
      ],
      "author": {
        "name": "Kaloyan Kovachev",
        "email": "kkovachev@varna.net",
        "time": "Mon Jun 15 17:08:48 2015 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 29 21:47:57 2015 +0100"
      },
      "message": "Fix _netlink_route_debug message\n"
    },
    {
      "commit": "c99f3481a598e9cadd1de96714f6b5df9ad85c4a",
      "tree": "aac6df566f28c13fce5c9f02275f159fab73a24d",
      "parents": [
        "758fb8f99a7bfac3d31c419fd1a5694fc5f33f6a"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Thu Oct 16 09:52:36 2014 +0800"
      },
      "committer": {
        "name": "Nicolas Dichtel",
        "email": "nicolas.dichtel@6wind.com",
        "time": "Wed Jun 03 10:24:12 2015 +0200"
      },
      "message": "*: add VRF ID in the API message header\n\nThe API messages are used by zebra to exchange the interfaces, addresses,\nroutes and router-id information with its clients. To distinguish which\nVRF the information belongs to, a new field \"VRF ID\" is added in the\nmessage header. And hence the message version is increased to 3.\n\n* The new field \"VRF ID\" in the message header:\n\n    Length    (2 bytes)\n    Marker    (1 byte)\n    Version   (1 byte)\n    VRF ID    (2 bytes, newly added)\n    Command   (2 bytes)\n\n  - Client side:\n\n    - zclient_create_header() adds the VRF ID in the message header.\n    - zclient_read() extracts and validates the VRF ID from the header,\n      and passes the VRF ID to the callback functions registered to\n      the API messages.\n    - All relative functions are appended with a new parameter \"vrf_id\",\n      including all the callback functions.\n    - \"vrf_id\" is also added to \"struct zapi_ipv4\" and \"struct zapi_ipv6\".\n      Clients need to correctly set the VRF ID when using the API\n      functions zapi_ipv4_route() and zapi_ipv6_route().\n    - Till now all messages sent from a client have the default VRF ID\n      \"0\" in the header.\n    - The HELLO message is special, which is used as the heart-beat of\n      a client, and has no relation with VRF. The VRF ID in the HELLO\n      message header will always be 0 and ignored by zebra.\n\n  - Zebra side:\n\n    - zserv_create_header() adds the VRF ID in the message header.\n    - zebra_client_read() extracts and validates the VRF ID from the\n      header, and passes the VRF ID to the functions which process\n      the received messages.\n    - All relative functions are appended with a new parameter \"vrf_id\".\n\n* Suppress the messages in a VRF which a client does not care:\n\n  Some clients may not care about the information in the VRF X, and\n  zebra should not send the messages in the VRF X to those clients.\n\n  Extra flags are used to indicate which VRF is registered by a client,\n  and a new message ZEBRA_VRF_UNREGISTER is introduced to let a client\n  can unregister a VRF when it does not need any information in that\n  VRF.\n\n  A client sends any message other than ZEBRA_VRF_UNREGISTER in a VRF\n  will automatically register to that VRF.\n\n  - lib/vrf:\n\n    A new utility \"VRF bit-map\" is provided to manage the flags for\n    VRFs, one bit per VRF ID.\n\n    - Use vrf_bitmap_init()/vrf_bitmap_free() to initialize/free a\n      bit-map;\n    - Use vrf_bitmap_set()/vrf_bitmap_unset() to set/unset a flag\n      in the given bit-map, corresponding to the given VRF ID;\n    - Use vrf_bitmap_check() to test whether the flag, in the given\n      bit-map and for the given VRF ID, is set.\n\n  - Client side:\n\n    - In \"struct zclient\", the following flags are changed from\n      \"u_char\" to \"vrf_bitmap_t\":\n          redist[ZEBRA_ROUTE_MAX]\n          default_information\n      These flags are extended for each VRF, and controlled by the\n      clients themselves (or with the help of zclient_redistribute()\n      and zclient_redistribute_default()).\n\n  - Zebra side:\n\n    - In \"struct zserv\", the following flags are changed from\n      \"u_char\" to \"vrf_bitmap_t\":\n          redist[ZEBRA_ROUTE_MAX]\n          redist_default\n          ifinfo\n          ridinfo\n\n      These flags are extended for each VRF, as the VRF registration\n      flags. They are maintained on receiving a ZEBRA_XXX_ADD or\n      ZEBRA_XXX_DELETE message.\n\n      When sending an interface/address/route/router-id message in\n      a VRF to a client, if the corresponding VRF registration flag\n      is not set, this message will not be dropped by zebra.\n\n    - A new function zread_vrf_unregister() is introduced to process\n      the new command ZEBRA_VRF_UNREGISTER. All the VRF registration\n      flags are cleared for the requested VRF.\n\n  Those clients, who support only the default VRF, will never receive\n  a message in a non-default VRF, thanks to the filter in zebra.\n\n* New callback for the event of successful connection to zebra:\n\n  - zclient_start() is splitted, keeping only the code of connecting\n    to zebra.\n\n  - Now zclient_init()\u003d\u003ezclient_connect()\u003d\u003ezclient_start() operations\n    are purely dealing with the connection to zbera.\n\n  - Once zebra is successfully connected, at the end of zclient_start(),\n    a new callback is used to inform the client about connection.\n\n  - Till now, in the callback of connect-to-zebra event, all clients\n    send messages to zebra to request the router-id/interface/routes\n    information in the default VRF.\n\n    Of corse in future the client can do anything it wants in this\n    callback. For example, it may send requests for both default VRF\n    and some non-default VRFs.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "758fb8f99a7bfac3d31c419fd1a5694fc5f33f6a",
      "tree": "4aa860a2b96ec03622376bf3753840155ab478fe",
      "parents": [
        "d6cf5134c05a7890738411852d9357ee5bb322f3"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Thu Jul 03 18:23:09 2014 +0800"
      },
      "committer": {
        "name": "Nicolas Dichtel",
        "email": "nicolas.dichtel@6wind.com",
        "time": "Wed Jun 03 10:23:32 2015 +0200"
      },
      "message": "zebra, lib/memtypes.c: the netlink sockets work per VRF\n\nThis patch lets the netlink sockets work per VRF.\n\n* The definition of \"struct nlsock\" is moved into zebra/rib.h.\n\n* The previous global variables \"netlink\" and \"netlink_cmd\" now\n  become the members of \"struct zebra_vrf\", and are initialized\n  in zebra_vrf_alloc().\n\n* All relative functions now work for a specific VRF, by adding\n  a new parameter which specifies the working VRF, except those\n  functions in which the VRF ID can be obtained from the interface.\n\n* kernel_init(), interface_list() and route_read() are now also\n  working per VRF, and moved from main() to zebra_vrf_enable().\n\n* A new function kernel_terminate() is added to release the\n  netlink sockets. It is called from zebra_vrf_disable().\n\n* Correct VRF ID, instead of the previous VRF_DEFAULT, are now\n  passed to the functions of processing interfaces or route\n  entries.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d6cf5134c05a7890738411852d9357ee5bb322f3",
      "tree": "d39b1880b82497d68b1d44623278eec27f4ef349",
      "parents": [
        "49f76097fc191761db8482aa3bf6e6322c52c647"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 08:31:38 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 08:31:38 2015 +0200"
      },
      "message": "zebra: fix VRF code for *BSD\n\nThere seems to be no rtm_table in struct rt_msghdr, at least on the\nsystems I have access to...\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "49f76097fc191761db8482aa3bf6e6322c52c647",
      "tree": "c7aef97b17e3dd41b19fa53535ecf1a9ca8aafb9",
      "parents": [
        "267ceb2ce3adf4ce1357deb7ce48f151d6c58b92"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:10 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:48:34 2015 +0200"
      },
      "message": "zebra: maintain RTADV per VRF\n\nThis moves the global variable \"rtadv\" into the \"struct zebra_vrf\",\nso that RTADV feature can work per VRF.\n\n* rtadv.c/rtadv.h:\n\n  Add a proper parameter to the functions so that the entity of the\n  \"struct zebra_vrf\" and interfaces can be obtained from the specified\n  VRF.\n\n  The old rtadv_init() is splitted into:\n  - rtadv_cmd_init(): it installs the RTADV commands; is called from\n                      main();\n  - new rtadv_init(): it creates the socket; is called from\n                      zebra_vrf_enable().\n\n  rtadv_terminate() is added to stop the threads, close the socket and\n  clear the counters. It is called from zebra_vrf_disable().\n\n  rtadv_make_socket() now calls vrf_socket() to create a socket in\n  the VRF.\n\n* interface.h and rib.h: define the macro RTADV.\n* main.c: according changes, refer to rtadv.c.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "267ceb2ce3adf4ce1357deb7ce48f151d6c58b92",
      "tree": "0b86ed01d5d2ea61f0bb509a60cad32916de061e",
      "parents": [
        "fb2bfc1ba2416c1561bc9bfb30dfb5adf3e65616"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:09 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:48:34 2015 +0200"
      },
      "message": "zebra: add hooks upon enabling / disabling a VRF\n\nzebra_vrf_enable() is the callback for VRF_ENABLE_HOOK.\nIt presently needs do nothing.\n\nzebra_vrf_disable() is the callback for VRF_DISABLE_HOOK.\nIt presently withdraws routes, shuts down interfaces, and\nclears the router-id candidates in that VRF.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ac19a449261bf69e83827f4bb0c6e5526277b41b",
      "tree": "a93cc7cde55a9c0c65da4b09fc309b503807ffda",
      "parents": [
        "7aaf4ea990398335bd40b56cc9586ab6a7178a4f"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:07 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:48:34 2015 +0200"
      },
      "message": "zebra: maintain the router-id per VRF\n\nA router may need different identifier among the VRFs. So move the\nmaintenance of router-id per VRF.\n\n* rib.h:\n\n  Move the previous global variables in router-id.c into the\n  \"struct zebra_vrf\":\n  - struct list _rid_all_sorted_list/*rid_all_sorted_list\n  - struct list _rid_lo_sorted_list/*rid_lo_sorted_list\n  - struct prefix rid_user_assigned\n\n* router-id.c/router-id.h:\n\n  A new parameter \"vrf_id\" is added to all the router-id APIs.\n  Their operations are done only within the specified VRF.\n\n  A new command \"router-id A.B.C.D vrf N\" is added to allow\n  manual router-id for any VRF.\n\n  The old router_id_init() function is splitted into two:\n  - router_id_cmd_init(): it only installs the commands\n  - router_id_init(): this new one initializes the variables for\n                      a specified VRF\n\n* zebra_rib.c: Add new functions zebra_vrf_get/lookup() called\n               from router-id.c.\n\n* main.c: Replace router_id_init() with router_id_cmd_init() and\n          call the new router_id_init() in zebra_vrf_new().\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7aaf4ea990398335bd40b56cc9586ab6a7178a4f",
      "tree": "12800739e1a926cff27d4d676323be35318ef8ac",
      "parents": [
        "8970f74ec77f93eb862ab8803d9d7c76c7128940"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:06 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:48:34 2015 +0200"
      },
      "message": "zebra: configure static routes in any VRF\n\nIntroduce new commands to configure static routes in any VRF, by\nappending the old static route commands with a new parameter\n\"vrf N\".\n\nA new parameter \"const char *vrf_id_str\" is added to the functions\nzebra_static_ipv4() and static_ipv6_func() to get the configured\nVRF ID.\n\nA new member \"vrf_id\" is added to the \"struct static_ipv4\" and\n\"struct static_ipv6\", indicating which VRF this static route is\nconfigured in.\n\nBut till now, no interface can exist in any non-default VRF. So\nthese static routes in non-default VRFs are kept inactive.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8970f74ec77f93eb862ab8803d9d7c76c7128940",
      "tree": "9659720ad515d0aea454ab42bc424ea34150f7b9",
      "parents": [
        "1885d0a5274cd78e46ad6c22171a5240a2f27f64"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:05 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:48:34 2015 +0200"
      },
      "message": "zebra: lookup the address in all VRFs when set the route-map rule \"set src\"\n\nWhen configuring the route-map rule \"set src A.B.C.D\", it checked\nwhether the source address exists on some interface.\n\nNow it checks the source address throughout all VRFs.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1885d0a5274cd78e46ad6c22171a5240a2f27f64",
      "tree": "acaf9496dcdd722400d5634e58180f17350cc0b6",
      "parents": [
        "4364ee5b6f65008fe19225f05e489ad8257a7df8"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:04 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:48:34 2015 +0200"
      },
      "message": "zebra: let the route-map rule \"match interface\" work for VRFs\n\nIntroduce a new \"struct nexthop_vrfid\" to specify a nexthop together\nwith the VRF ID it belongs to.\n\nThus in route_match_interface(), we can lookup the interface from\nthe correct VRF.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4364ee5b6f65008fe19225f05e489ad8257a7df8",
      "tree": "dd6b5e9e5e5e7cf5c212b3b9182d6231d8166e97",
      "parents": [
        "0d0686f98e64017415071e590bde262f0ab5a4c9"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:03 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:48:30 2015 +0200"
      },
      "message": "zebra: show routes in a specified VRF or all VRFs\n\nThe present \"show ip[v6] [m]route [xxx]\" and \"show ip rpf [xxx]\"\ncommands now show routes only in the default VRF.\n\nA new option is introduced to show routes in a specified VRF:\n    show ip[v6] [m]route [xxx] vrf N\n    show ip rpf [xxx] vrf N\n\nand a new option is used to show routes through all VRFs:\n    show ip[v6] [m]route [xxx] vrf all\n    show ip rpf [xxx] vrf all\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\n[DL: conflicts resolved]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "0d0686f98e64017415071e590bde262f0ab5a4c9",
      "tree": "a8ffef2548d24ce9a7662a20573d2a26a8e17142",
      "parents": [
        "a2854770ff839553c9444193e84a1593645fa848"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:02 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:46:17 2015 +0200"
      },
      "message": "zebra: let FIB stand for its respective VRF\n\nA new member \"vrf_id\" is added to \"struct rib\", reflecting the VRF\nwhich it belongs to.\n\nA new parameter \"vrf_id\" is added to the relative functions where\nneed, except those:\n- which already have the parameter \"vrf_id\"; or\n- which have a parameter in type of \"struct rib\"; or\n- which have a parameter in type of \"struct interface\".\n\nAll incoming routes are set to default VRF.\n\nIn fact, all routes in FIB are kept in default VRF. And the logic\nis not changed.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\n[DL: conflicts fixed + compile warning fix]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a2854770ff839553c9444193e84a1593645fa848",
      "tree": "f10e20591ccf74ae1e5a9015cb9dd6aadfecd67d",
      "parents": [
        "471ea39ce54537194ff2f22420589ddec5ef5ada"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:01 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:22:58 2015 +0200"
      },
      "message": "zebra: show interfaces in a specified VRF or all VRFs\n\nThe following commands only show interfaces in the default VRF:\n    show interface\n    show interface IFNAME\n    show interface description\n\nNew options are introduced to show interfaces in a specified VRF:\n    show interface vrf N\n    show interface IFNAME vrf N\n    show interface description vrf N\n\nor all VRFs:\n    show interface vrf all\n    show interface IFNAME vrf all\n    show interface description vrf all\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "471ea39ce54537194ff2f22420589ddec5ef5ada",
      "tree": "65b04ef42d4ece7e4a44d230fcc0a15f388755c4",
      "parents": [
        "5a5702fac5458d63d7a099c4db7ac387afefd2de"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:00 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 06:59:36 2015 +0200"
      },
      "message": "lib, zebra, vtysh: configure an interface in non-default VRF\n\nIntroduce a new command \"interface IFNAME vrf N\" to configure an\ninterface in the non-default VRF.\n\nTill now, only zebra uses this command. Other daemons will install\nthe command when they support multiple VRFs.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "126215c1238eb42cc92d23aefbe1fac3b204438f",
      "tree": "22910b50f39003e297efc6236711581cbf3b2ada",
      "parents": [
        "2fc97f6335dd5d7df2c285b363c6ef56bb98dcf8"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:39:58 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 06:58:12 2015 +0200"
      },
      "message": "*: call if_init()/if_terminate() from vrf_init()/vrf_terminate()\n\nLater, an interface will belong to a specific VRF, and the interface\ninitialization will be a part of the VRF initialization. So now call\nif_init() from vrf_init(), and if_terminate() from vrf_terminate().\n\nDaemons have the according changes:\n- if if_init() was called or \"iflist\" was initialized, now call\n  vrf_init() instead;\n- if if_terminate() was called or \"iflist\" was destroyed, now call\n  vrf_terminate() instead.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2fc97f6335dd5d7df2c285b363c6ef56bb98dcf8",
      "tree": "22361093e3faf9587d055474c1163796aae94194",
      "parents": [
        "41f44a23e86a65a5cad7e5e8cafd7e935f153232"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:39:57 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 06:58:12 2015 +0200"
      },
      "message": "lib, zebra: add \"vrf_id\" into the \"struct interface\"\n\nLater, an interface will belong to a specific VRF. Now we add a\nproperty \"vrf_id\" to the \"struct interface\", and keep it as the\ndefault value 0.\n\nThis property is shown when displaying interfaces information.\nIt is also added in some logs.\n\nThis is just the preparation to move the interace list into the\n\"struct vrf\". The main logic is not changed.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "41f44a23e86a65a5cad7e5e8cafd7e935f153232",
      "tree": "1fcffa568b188ae66e5f18df09f6960522dfe564",
      "parents": [
        "395828eea809e8b2b8c5824d3639cefedd7aa9f0"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:39:56 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 06:58:12 2015 +0200"
      },
      "message": "lib, zebra: move \"struct vrf\" to be a lib module\n\nPreviously \"struct vrf\" is defined locally in zebra. Now it is moved\nto be a lib module.\n\nThis is the first step to support multi-VRF in quagga. The\nimplementation is splitted into small patches for the purpose of\neasy review.\n\n* lib:\n    \"struct vrf\" with basic members is defined in vrf.c. The member\n    \"void *info\" is for user data.\n\n    Some basic functions are defined in vrf.c for adding/deleting/\n    looking up a VRF, scanning the VRF table and initializing the\n    VRF module.\n\n    The type \"vrf_id_t\" is defined specificly for VRF ID.\n\n* zebra:\n    The previous \"struct vrf\" is re-defined as \"struct zebra_vrf\";\n    and previous \"vrf\" variables are renamed to \"zvrf\".\n\n    The previous \"struct vrf\" related functions are removed from\n    zbera_rib.c. New functions are defined to maintain the new\n    \"struct zebra_vrf\".\n\n    The names vrf_xxx are reserved for the functions in VRF module.\n    So:\n    - the previous vrf_table() are renamed to zebra_vrf_table();\n    - the previous vrf_static_table() are renamed to\n      zebra_vrf_static_table().\n\n    The main logic is not changed.\n\n    BTW: Add a statement to zebra_snmp.c telling that the SNMP is\n         running only for the MIBs in the default VRF.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "be6335d682c5ee1b6930345193eda875705fbab2",
      "tree": "2107740224a8a6b3f44241ba71d9be562f138232",
      "parents": [
        "53a5c39c705f917567d5b1764f1fe12ad5c5e577"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Sat May 23 11:08:41 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jun 01 16:50:58 2015 +0200"
      },
      "message": "zebra: use prefix2str for logging where possible\n\nThis makes code more robust, consice and readable.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "53a5c39c705f917567d5b1764f1fe12ad5c5e577",
      "tree": "fd116539e632b8c5a0cbdd0312134767e1966f78",
      "parents": [
        "41eb9a4305fbcb206c900a18af7df7115d857d60"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Sat May 23 11:08:40 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jun 01 16:31:21 2015 +0200"
      },
      "message": "zebra/vty: use prefix2str and unify show ip/ipv6 route code\n\nUse prefix2str where possible. As now ip/ipv6 are practically\nidentical, they are merged removing unneeded code duplication.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f85592e05ae6463727433893e61afd1081fcf7e0",
      "tree": "2a87863a6f00342334d260a25d02ccda99128a89",
      "parents": [
        "483abc037b0ac4b3ed168c4810bb14ea338fa80c"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri May 22 13:41:00 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri May 29 07:31:01 2015 +0200"
      },
      "message": "zebra: simplify redistribution code\n\nMerge the conditionals as one to avoid code duplication.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b40e178af12570467f0116d6b1684cb1b961e407",
      "tree": "652143a283cdfaa1f9d735b29798b2f09fb3633a",
      "parents": [
        "e38545bb2cd155306fd78223e0c579117fcfae90"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Apr 29 09:43:00 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 09:38:03 2015 +0200"
      },
      "message": "zebra: fix rtadv check for non-glibc linux\n\nDefault RTADV enabled for non-glibc linux (fixes check for musl libc).\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e38545bb2cd155306fd78223e0c579117fcfae90",
      "tree": "d9cd5f1b36d67d081e564314c7b3f2b6a0bc5547",
      "parents": [
        "491417ac6383e2ea557951b24eb7bd3fffb69394"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Apr 29 09:42:59 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 09:37:55 2015 +0200"
      },
      "message": "zebra: fix build with rtadv disabled\n\nOtherwise we get warning on rtadv_init() prototype not being\ndefined when compiling rtadv.c (as dummy stub is provided always).\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "dc684eb9976f8a1170312be42d142effce26b568",
      "tree": "1d1354118bc0b063e7048c86154339aa2f141d1c",
      "parents": [
        "06bd420d4646333bc7ed9964e348f19a942fcfe2",
        "e691c3bb972c0baf610d9e210ce20ea6546e1de0"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Apr 23 13:31:17 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Apr 23 13:36:08 2015 +0200"
      },
      "message": "Merge branch \u0027volatile/fix_warnings\u0027\n\nThanks to Donald Sharp and Greg Troxel for providing feedback!\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "193e78f2460a537695e34368a29fc5cd02e4e1f5",
      "tree": "50f23a15fd6847b8f39b8d003b0a6a6ff716a706",
      "parents": [
        "6ed810d986df5d843c89166fee6b73a71222b7bd"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:42:30 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:44:57 2015 +0200"
      },
      "message": "zebra: fix NetBSD interface stats printf\n\n\"format \u0027%qu\u0027 expects type \u0027long long unsigned int\u0027, but argument 3 has\ntype \u0027__uint64_t\u0027\"\n\nMove to %llu, which is more standard.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6ed810d986df5d843c89166fee6b73a71222b7bd",
      "tree": "86ac070fc69ae3e62fc6bf5d8750990bf0fa6c3e",
      "parents": [
        "c313895dec3c176584d99f7b8684ddc3f9141d88"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:13:07 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:44:56 2015 +0200"
      },
      "message": "*: fix more initialisers (for BSD)\n\nFreeBSD and NetBSD spew a few more warnings about variable initialisers.\nFound with OSR\u0027s/NetDEF\u0027s fancy new CI system.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4b6c33282973c9e1545a519f2a51bda3cf42ae21",
      "tree": "1feeb189ff45197527e7a45d24976a27f44596c1",
      "parents": [
        "940b19911209d8ad2ea326c4a46e0fb044568edc"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 09:47:57 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:20:18 2015 +0200"
      },
      "message": "zebra: silence zebra_serv_un unused warning\n\nzebra_serv_un() is unused if --enable-tcp-zebra is given.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c0bedebfe9ca1a1ded02f1f481762dd41defa63e",
      "tree": "9c040f71733fb7509c03457bc146373e65e95536",
      "parents": [
        "3a7e83c2387885075c9ecf1912dd6c9399c6947a"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 10:00:43 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:33 2015 +0200"
      },
      "message": "build: add --enable-werror\n\nThis allows enabling -Werror in a consistent way.  Note that this is\ndifferent from just specifiying it in CFLAGS, since that would either\nbreak configure tests (if done on ./configure), or would override\nconfigure\u0027s CFLAGS (if done on make).\n\nUsing --enable-werror instead provides a new WERROR variable that is\nadditionally used during make with a consistent set of warning flags.\n\nThe tests/ directory is exempt.  (Rationale being, better to have more\ntests than pedantically complain about them.)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a3466abd93f83424f9f83e56282e42188e1f94ce",
      "tree": "ca3359fa701f5d1cac8e4d711c62fadb234d6563",
      "parents": [
        "3e9e2c9fb66895df42159b98a3743e25399760df"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 09:14:46 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:28 2015 +0200"
      },
      "message": "zebra: clean up misc_null pragmas\n\nThe no-op alternatives provided in misc_null trigger a few warnings\nsince they provide functions / use pragmas without prototypes.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3e9e2c9fb66895df42159b98a3743e25399760df",
      "tree": "5570f07b6e4c28d6bade800df0c49b9187dfd258",
      "parents": [
        "7e92322cfcc6c062acae3b550f90d36fe40763f1"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Apr 10 09:14:58 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:28 2015 +0200"
      },
      "message": "zebra: static int inline -\u003e static inline int\n\nThe BSD socket kernel interface had some weird ordering of function\nattribute keywords. (\"static int inline foobar()\")\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7e92322cfcc6c062acae3b550f90d36fe40763f1",
      "tree": "c3269438b6cc435c481913fe4d3467c0df592200",
      "parents": [
        "48ab06b43040bb27d267bb165eedf9e496eb865b"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 21:04:20 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:25 2015 +0200"
      },
      "message": "zebra: use SA_SIZE for RT_ROUNDUP on FreeBSD\n\nFreeBSD provides SA_SIZE (and none of the other options to infer padded\nsize of a struct sockaddr).  Just define SAROUNDUP to SA_SIZE if it is\navailable.\n\nThis also drops a superfluous-looking extra macro branch which would\nrequire ROUNDUP.  It seemed redundant to my eyes, but I have no idea\nwhat odd things might have triggered addition of this in the first\nplace...\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "48ab06b43040bb27d267bb165eedf9e496eb865b",
      "tree": "cff2cd83453daa7ddb10b6098c1f8fad82ffa9df",
      "parents": [
        "872b0dc0537b62503d98bafd3075553795c847cb"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Mar 04 07:05:39 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:21 2015 +0200"
      },
      "message": "zebra: use prototypes/includes in rt_netlink\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "872b0dc0537b62503d98bafd3075553795c847cb",
      "tree": "9b6ea87ff63cd46db494a9f57fcc06c3df022b5f",
      "parents": [
        "52f02b47685bc823c4c75560175a27aab0bd6709"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:57:49 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:18 2015 +0200"
      },
      "message": "zebra: remove unused netlink_route()/kernel_rtm_ipv6()\n\nkernel_delete_ipv6_old(), removed in 51bdeba a little while ago, was the\nlast user of netlink_route() and kernel_rtm_ipv6().  Everything else\nuses the _multipath variants of these functions.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "52f02b47685bc823c4c75560175a27aab0bd6709",
      "tree": "81f7e0fd01fd10d4433d3f67a36eea0296df75e4",
      "parents": [
        "60a4601e2270920958e221fbffd7b0743f498d3c"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Apr 10 09:14:30 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:17 2015 +0200"
      },
      "message": "zebra, isisd: cast to unsigned char for ctypes\n\nctype.h macros take int as arguments, but expect arguments to be in\nunsigned char\u0027s range.  Even though it probably works, this isn\u0027t\ncorrect on systems that have a signed char type.  Cast explicitly.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d43f8b39b075fe60e0c8fdb33b07b284d3fae503",
      "tree": "8c98dce915aaaabd0707a12c2c08199d0bfdec2e",
      "parents": [
        "b1672ce858cc9c16fd7cc67b673aa241d9583a59"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:54:54 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:01 2015 +0200"
      },
      "message": "bgpd, zebra: fix struct/pointer sizeof mixups\n\nTwo places were taking sizeof(pointer) instead of the sizeof(struct),\nwhile performing operations on the struct.  Both are initialisation\nfunctions;  I guess we haven\u0027t seen fallout since they weren\u0027t critical.\nFix anyway.\n\n[v2: fix mistake that actually broke bgpd RS workqueue init]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "388f8857eb81ef75014060976776523a58a99389",
      "tree": "d425f43437cc937f4cd415d3170c8d6c8f6bf33c",
      "parents": [
        "21401f3215be26dcb0f787105f5907745498e966"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:55:54 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:01 2015 +0200"
      },
      "message": "*: add missing includes\n\nSome places, particularly headers, were spewing warnings since they\ndon\u0027t include neccessary other headers to get struct/enum definitions.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "eed3c48d3a7d2dae2cae2f2f250deffb843754a6",
      "tree": "07b2252438225065024d4a534eddf0e86c9b87a4",
      "parents": [
        "ef008d2f8dc8f7160d8a3d24a15f2fad79ef3242"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:51:53 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:17:31 2015 +0200"
      },
      "message": "*: use void * for printing pointers\n\nOn higher warning levels, compilers expect %p printf arguments to be\nvoid *.  Since format string / argument warnings can be useful\notherwise, let\u0027s get rid of this noise by sprinkling casts to void *\nover printf calls.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "941789e470199df4f612368f669ecc0fd096fb9a",
      "tree": "7320a1dad4346e06a77d786274d8e8962688db00",
      "parents": [
        "ec62e1438ece9af0546f9028aa1403f2c84bf177"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Mon Mar 23 15:16:29 2015 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Mon Mar 23 15:16:29 2015 -0400"
      },
      "message": "Fix alignment assumptions on non-RT_ROUNDUP platforms.\n\nThe comment said that apple uses int and BSD traditionally used long,\nbut the code was backwards.  This fixes apple to be int, and otherwise\nlong.  That should make FreeBSD, which aligns to long, work correctly,\neven without using SA_SIZE.\n"
    },
    {
      "commit": "b7cce958649775600458f2fb3a8d33fc84683d26",
      "tree": "d33d2e70408fc0d13e4b0c9d7494fca02bfb8b26",
      "parents": [
        "5cd0e5c659d0ae7840748e83cd9f340568fa4204"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Mar 07 08:40:48 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Mar 07 08:40:48 2015 +0100"
      },
      "message": "zebra: don\u0027t print uninitialized string (3b02fe8)\n\nThis crept in as part of the MRIB improvements and I missed the compiler\nwarning between other noise.  Unfortunately, printing an uninitialised\nvariable can in fact make zebra crash, so this is not trivial.\n\nFixes: 3b02fe8 (\"zebra: add \"show ip rpf\" to get result of RPF lookup\")\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4c421215a0330b96d85879810558d40027a96ca6",
      "tree": "50667e33680a4f4ba3d5ced80668a8077b0e9546",
      "parents": [
        "75a3cf6cf69f6ab940f8421b0f79b2b1f689b904"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Mar 02 06:42:11 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Mar 02 07:00:57 2015 +0100"
      },
      "message": "zebra: print \"no link-detect\"\n\nThe default for this is slated to change, so let\u0027s print the current\ndefault value for preexisting configurations.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "237aac56960575f6ad2451ba2796d94bd5ae4b33",
      "tree": "f23c49fa32bc6b706bd5f37a9a3a45ce27adf15d",
      "parents": [
        "b6fa76098d127f5641a7dda0dee21f06ca167edb"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 22:23:10 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:19:14 2015 +0100"
      },
      "message": "build: get rid of INCLUDES, use AM_CPPFLAGS\n\nINCLUDES in configure.ac was not used at all, and INCLUDES in\nMakefile.am is supposed to be AM_CPPFLAGS these days.\n\nReduces warnings spewed during bootstrap/autoreconf.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "39b233f0d789a6b5273c3dd279f17a67c718ea1a",
      "tree": "14f304d8b422de93657b9beed22d45596dac0f48",
      "parents": [
        "29ed622f3dc32816236a89de6fce323e3b092cf0"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 21:49:18 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:19:02 2015 +0100"
      },
      "message": "zebra: remove rt_ioctl kernel interface\n\nNone of the BSDs uses ioctls to set routes anymore.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "29ed622f3dc32816236a89de6fce323e3b092cf0",
      "tree": "dd28d05145b4dd83bbdafd531302c5abfcbef523",
      "parents": [
        "51bdebad99fe813d1b7104543b352f0e39b1c8dc"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 21:42:25 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:19:00 2015 +0100"
      },
      "message": "build: remove ancient Linux/BSD IPv6 cruft\n\nIPv6 functions in a separate library... yeah, right.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "51bdebad99fe813d1b7104543b352f0e39b1c8dc",
      "tree": "b2040a5c538cd3168a6c8842b92e28e35fa17420",
      "parents": [
        "86a82e99aa3728d78a1ec65b60a2162914cd7519"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 21:28:50 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:18:56 2015 +0100"
      },
      "message": "zebra: remove kernel_delete_ipv6_old()\n\nThe only user of this was rib_bogus_ipv6(), which was removed in the\nprevious commit.  Good riddance.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "86a82e99aa3728d78a1ec65b60a2162914cd7519",
      "tree": "5eedc1965841fb529c6c5e44511c80f388b90681",
      "parents": [
        "6d6df30386423518b5daef93c2f047b4140f85f4"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 21:26:36 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:18:51 2015 +0100"
      },
      "message": "zebra, ripngd: remove ::/64 special-casing\n\nIn the 90ies, IPv4 was believed to exist within IPv6, with some kernels\nimplementing this belief in code...  Our code here is keyed to \"#ifdef\nLINUX\", yet no Linux from the past 10 years had this, making the code\ncompletely useless.\n\nFreeBSD 10.0 does in fact have a \"::/96 via ::1 dev lo0 reject\" route.\nIMHO we shouldn\u0027t mess with that, the admin can filter as neccessary\nanyway.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n[DL: slightly adjusted commit message to remove misunderstanding]\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "6d6df30386423518b5daef93c2f047b4140f85f4",
      "tree": "7da3226d3276e019c49a4b4a673911a85297ecc7",
      "parents": [
        "0f048b90b5d6e4bd185913945b68dd254126eb9f"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 21:12:37 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:18:49 2015 +0100"
      },
      "message": "build: remove INRIA, NRL and MUSICA IPv6 quirks\n\nValar dohaeris.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "0f048b90b5d6e4bd185913945b68dd254126eb9f",
      "tree": "69ffaaf5925bebb7cc1a8e79179bee99bfde0129",
      "parents": [
        "2e5ca49758543cde69d98f4a6a7b39486e88311d"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 21:01:32 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:18:47 2015 +0100"
      },
      "message": "build: remove AIX, NEC EWS and IRIX\n\nValar morghulis.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "2e5ca49758543cde69d98f4a6a7b39486e88311d",
      "tree": "478181eaff0d3064505edfb6eba3c88f4f0d400f",
      "parents": [
        "79f74962d20fa2c90df5a57335fc3b5e19bfeccf"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 20:54:31 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:18:40 2015 +0100"
      },
      "message": "build: remove Linux non-netlink config\n\nThis path is deprecated, completely untested, likely broken and will not\nbe maintained.  Kill it with fire.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "863f20c326758c8a97e0a7a41c87355b66c4012d",
      "tree": "dea3fc4a2a9e203c5a81715080349684a08b2a44",
      "parents": [
        "3b02fe84aae567c56ef63e74cdb0dc63c66e2968"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jan 27 20:24:15 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 06 22:01:52 2015 +0100"
      },
      "message": "zebra: mark multicast commands experimental\n\ndepending on feedback from actually having these commands in a released\nversion, we may want to adjust them.  Thus, mark them as experimental so\nusers are aware of this.\n\nCc: Everton Marques \u003ceverton.marques@gmail.com\u003e\nCc: Balaji G \u003cbalajig81@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3b02fe84aae567c56ef63e74cdb0dc63c66e2968",
      "tree": "9a24aa7caa14bee4c78142ebd1a0213c1cc4a5ec",
      "parents": [
        "bd0781296703cf2eddebced34258a1897a03b535"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Jan 22 19:12:35 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 06 22:01:52 2015 +0100"
      },
      "message": "zebra: add \"show ip rpf\" to get result of RPF lookup\n\nChecking what route exactly a RPF lookup for a given source uses is\nessential for an administrator to debug multicast routing issues.  This\ncommand provides exactly that, using the multicst RPF lookup function\nand printing out its result to the CLI.\n\nCc: Everton Marques \u003ceverton.marques@gmail.com\u003e\nCc: Balaji G \u003cbalajig81@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    }
  ],
  "next": "bd0781296703cf2eddebced34258a1897a03b535"
}
