)]}'
{
  "log": [
    {
      "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": "5a5702fac5458d63d7a099c4db7ac387afefd2de",
      "tree": "0547fea145cb10fb9ed6d9493963d374556eb65f",
      "parents": [
        "126215c1238eb42cc92d23aefbe1fac3b204438f"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:39:59 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 06:59:28 2015 +0200"
      },
      "message": "lib: move the interface list into \"struct vrf\"\n\nAn interface belongs to a specific VRF. So move the interface list\ninto the \"struct vrf\".\n\n* vrf.c/vrf.h:\n  - add a new member \"struct list *iflist\" to the the \"struct vrf\";\n  - call if_init() in vrf_new();\n  - call if_terminate() in vrf_delete();\n  - add utilities to access the interface list and VRF ID in the\n    specified VRF.\n\n* if.c/if.h:\n  - the global \"iflist\" now only exists for the default VRF;\n  - the global \"if_master\" is initialized on the definition;\n  - in if_create(), the interface is added into the list in the\n    specified VRF; if the VRF does not exist, create one;\n  - add parameters to if_init()/if_terminate() so that the\n    interface list in the VRF can be initialized/destroyed;\n  - in if_dump_all() scan the interfaces in all the VRFs;\n  - add a command \"show address vrf N\" to show addresses in a\n    specified VRF;\n  - add a command \"show address vrf all\" to show addresses in all\n    VRFs;\n  - new APIs ifxxx_vrf() are added to access an interface in a\n    specified VRF.\n\nThe old interface APIs (the global variable \"iflist\" and the API\nfunctions) are not changed to keep the backward compatibility.\nThe new APIs are used in the daemons which support multiple VRFs\n(till now only zebra).\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": "395828eea809e8b2b8c5824d3639cefedd7aa9f0",
      "tree": "61341d0667a67d8645455fad7029cc916eb9a3e2",
      "parents": [
        "be6335d682c5ee1b6930345193eda875705fbab2"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:39:55 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 06:58:12 2015 +0200"
      },
      "message": "ospf6d, bgpd: avoid calling if_nametoindex\n\nAs the comments in if.h, it is better to call ifname2ifindex()\ninstead of if_nametoindex().\n\nAnd ifname2ifindex() can work for VRF by appending a parameter\nwhile if_nametoindex() can not.\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": "41eb9a4305fbcb206c900a18af7df7115d857d60",
      "tree": "d132fa1a4e113aa5d0bcf84d60933b36383b182d",
      "parents": [
        "53009d387a633997b16d32224b50451b5c81b61a"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Sat May 23 11:08:39 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jun 01 16:31:14 2015 +0200"
      },
      "message": "lib: make prefix2str simpler to use, and use it in zclient\n\nReturning the buffer allows using it in the logging functions\nin easier way. This also makes the API consistent with sockunion.\n\nAdd also PREFIX_STRLEN to be the generic buffer length required\nfor any prefix string representation.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "53009d387a633997b16d32224b50451b5c81b61a",
      "tree": "171f2b9a92011209c353d9173133ff10907bec4b",
      "parents": [
        "3293bc280f15d8e3c04e0bf9b0a8d54d342a87a9"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Sat May 23 11:08:38 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jun 01 16:31:10 2015 +0200"
      },
      "message": "lib: make sockunion2str safer to use\n\nIt\u0027s mostly used for logging, and the return value is never\nchecked, so try to make it valid.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3293bc280f15d8e3c04e0bf9b0a8d54d342a87a9",
      "tree": "cbc3dc09016553de6bf9d97c641a4d9caaa40fda",
      "parents": [
        "f85592e05ae6463727433893e61afd1081fcf7e0"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri May 22 13:41:01 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri May 29 07:31:02 2015 +0200"
      },
      "message": "route table: constify some APIs\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": "483abc037b0ac4b3ed168c4810bb14ea338fa80c",
      "tree": "7bfbab894161fcd5852deaf96d7f2208fdb91b9b",
      "parents": [
        "c1c69e43cda64122b599746df4d1c6c5d8b52e37"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri May 22 13:40:59 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri May 29 07:30:46 2015 +0200"
      },
      "message": "sockunion: add accessors for sockunion address\n\nUpcoming nhrp code will use this, and it can be used to remove\nthe sockunion2ip(X) macro.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c1c69e43cda64122b599746df4d1c6c5d8b52e37",
      "tree": "cccc035647931b79657438087f92bc6a387aae96",
      "parents": [
        "80c9354835bb924983d12b0efad957e78f219287"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri May 22 13:40:57 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri May 29 07:30:44 2015 +0200"
      },
      "message": "lib: allow caller to provide prefix storage in sockunion2hostprefix\n\nAvoids a dynamic allocation which is usually freed immediate afterwards.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "80c9354835bb924983d12b0efad957e78f219287",
      "tree": "679ed5f44a7cdfb20ef856a9bb90f5204516e9f9",
      "parents": [
        "d79668fb440ae2689b54f52c076dbd79a8689135"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri May 22 13:40:56 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri May 29 07:29:25 2015 +0200"
      },
      "message": "privs: fix privilege dropping to use system defined groups\n\nIt may be requred for quagga process to belong to additional\ngroups. E.g. nhrp module will need to talk to strongSwan using\nvici and may require additional permissions. Initialize groups\nfrom the system group database.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d79668fb440ae2689b54f52c076dbd79a8689135",
      "tree": "d93c62249206b3199aeeaba766ce64a4bc6753e6",
      "parents": [
        "db93eec18d8f1e840b32ba2cdf8baf2510f6e1a5"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu May 14 14:47:05 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 23:37:48 2015 +0200"
      },
      "message": "tests: add testcli reference in/out \u0026 do DejaGNU\n\nThis adds reference in \u0026 output for the previously added testcli tool,\nto check basic CLI parsing/help functions.  Unlike \"testcommands\", this\none doesn\u0027t depend on compile-time system details.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "db93eec18d8f1e840b32ba2cdf8baf2510f6e1a5",
      "tree": "1118c5e17cb6e4104f84e7fda909428686a7bb3e",
      "parents": [
        "05a69d2f3833c285b399558ba7ab4a57f194a88d"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 11:04:59 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 23:37:47 2015 +0200"
      },
      "message": "tests: add CLI dummy command-exec tool\n\nThis adds some common CLI testtool code as well as a tool that has a\nbunch of commands to be poked for their correct processing.\n\nThe tool doesn\u0027t work correctly from a script at stdin at this point\nbecause the vty code will throw away all buffered when it sees EOF, so\nthe tail end of the input file is lost.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "05a69d2f3833c285b399558ba7ab4a57f194a88d",
      "tree": "5c897f789ec473225d03017bd57e6809d240e7fc",
      "parents": [
        "72855b16b72e9ad2c7eb0c0bfd8f5985f779608f"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 22:15:37 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 22:16:32 2015 +0200"
      },
      "message": "Revert \"lib: wrong #define used for IPV6_MINHOPCOUNT\"\n\nThis reverts commit 54b88cac24f335414caa875b390d2d78ff4bf9e0.\n\nUnfortunately, this breaks the build on systems where linux/in6.h and\nnetinet/in.h can\u0027t both be included, such as Ubuntu 14.04 and Debian\nJessie.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "72855b16b72e9ad2c7eb0c0bfd8f5985f779608f",
      "tree": "308f4e057157ded800b1c3e188a5eadf77e693cb",
      "parents": [
        "e97c31aafc013b8b9a0e61cb79ee97a5f1e419bf"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:39:54 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 21:52:25 2015 +0200"
      },
      "message": "ripngd: allow to enable/disable the ECMP feature\n\nIntroduce a new command \"[no] allow-ecmp\" to enable/disable the\nECMP feature in RIPng. By default, ECMP is not allowed.\n\nOnce ECMP is disabled, only one route entry can exist in the list.\n\n* ripng_zebra.c: adjust a debugging information, which shows the number\n                 of nexthops according to whether ECMP is enabled.\n* ripngd.c: ripng_ecmp_add() will reject the new route if ECMP is not\n            allowed and some entry already exists.\n            A new configurable command \"allow-ecmp\" is added to control\n            whether ECMP is allowed.\n            When ECMP is disabled, ripng_ecmp_disable() is called to\n            remove the multiple nexthops.\n* ripngd.h: Add a new member \"ecmp\" to \"struct ripng\", indicating whether\n            ECMP is allowed or not.\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": "e97c31aafc013b8b9a0e61cb79ee97a5f1e419bf",
      "tree": "d90728aedb147abf0bfa3fe5d4110f8bfa5526cc",
      "parents": [
        "54b88cac24f335414caa875b390d2d78ff4bf9e0"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:39:53 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 21:52:08 2015 +0200"
      },
      "message": "ripngd: add ECMP support\n\n* Each node in the routing table is changed into a list, holding\n  the multiple equal-cost paths.\n\n* If one of the multiple entries gets less-preferred (greater\n  metric or greater distance), it will be directly deleted instead\n  of starting a garbage-collection timer for it.\n  The garbage-collection timer is started only when the last entry\n  in the list gets INFINITY.\n\n* Some new functions are used to maintain the ECMP list. And hence\n  ripng_route_process(), ripng_redistribute_add() and ripng_timeout()\n  are significantly simplified.\n\n* ripng_zebra_ipv6_add() and ripng_zebra_ipv6_delete() now can share\n  the common code. The common part is moved to ripng_zebra_ipv6_send().\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": "54b88cac24f335414caa875b390d2d78ff4bf9e0",
      "tree": "be4834daa2e1df592b61493ec18a084c4ccefa10",
      "parents": [
        "a5d589dfbf2c563868d944376155cd4a5998722f"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed May 13 20:34:46 2015 -0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 20:48:33 2015 +0200"
      },
      "message": "lib: wrong #define used for IPV6_MINHOPCOUNT\n\nThe #define IPV6_MINHOPCNT define is never defined on any unix platform.\n\u003eFrom what I can tell the original implementation on the linux platform\nwas IPV6_MINHOPCNT, when it got accepted into the mainstream kernel\nit was transformed into IPV6_MINHOPCOUNT.  Since we test for the\ndefine before attempting to use the code it was silently doing nothing\nfor a long time.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a5d589dfbf2c563868d944376155cd4a5998722f",
      "tree": "77dee816875a287b74a164b393839308cfe62313",
      "parents": [
        "3065777ece6d14c6acd04f8b2b693a15c9f2f37c"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Wed May 13 13:59:18 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 20:39:40 2015 +0200"
      },
      "message": "lib/privs: Don\u0027t use CAP_NET_BROADCAST\n\nFrom what I can tell, CAP_NET_BROADCAST has never been required for any\nfunctionality in the Linux kernel, so we do not really need it.\n\nHowever, it causes breakage in contexts where Quagga is started with a\nlimited set of capabilities, e.g. in Docker, because these may not\ninclude CAP_NET_BROADCAST and in the case of Docker do not even support\nadding CAP_NET_BROADCAST.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3065777ece6d14c6acd04f8b2b693a15c9f2f37c",
      "tree": "5e8d9c5880ea7540a3e4dd6a7228b45330e5a0e8",
      "parents": [
        "19ed526eab33728723e25f2727f60f41d3533503"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Wed May 13 13:59:17 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 20:39:04 2015 +0200"
      },
      "message": "lib/privs: display more info if cap_set_proc fails.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "19ed526eab33728723e25f2727f60f41d3533503",
      "tree": "6b3dcfd5ee8be8148e0a85454305ae4ef0867adf",
      "parents": [
        "90d313578f035110422799ca2e188d745ceb3733"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 20 19:06:12 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 20:34:41 2015 +0200"
      },
      "message": "isisd: always print adj-\u003esysid (clang 3.6 warning)\n\nAs any new compiler version, clang 3.6 has new warnings, one of these\nbeing that it now warns for testing whether the address of an array will\nbe true.\n\nOf course there is no point in this check for the sysid, so let\u0027s always\njust print the sysid.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "90d313578f035110422799ca2e188d745ceb3733",
      "tree": "9ec0ef3c8cca4cb52dc5d1340f2a3cb8191ae586",
      "parents": [
        "464ccf36b4aa1b942cad413ea30267b4bf9e6315"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu May 14 14:24:06 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 20:34:41 2015 +0200"
      },
      "message": "lib/vty: don\u0027t clear output buffer on input EOF\n\nA VTY\u0027s input can be closed without the output becoming unavailable.\nThis happens both on stdio when stdin ends, as well as over TCP when an\nunidirectional input shutdown() happens.\n\nIn such a case, resetting the output buffer is not appropriate since\nthere might still be data to be successfully written.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "464ccf36b4aa1b942cad413ea30267b4bf9e6315",
      "tree": "1d0a46df5f2b00e5a4cfe81e0fcce5d94ee4abab",
      "parents": [
        "ba53a8fdecef07577dcc4109e5c82bb124d49c58"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 12 21:56:18 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 20:34:41 2015 +0200"
      },
      "message": "lib/vty: add vty_stdio at-close hook\n\nThis is intended to be used for either \"exit on close\", \"fork on close\"\nor \"reopen vty on close\" functionality for the stdio vty.  Which of\nthese options to take depends on the context, the use case right now is\ntest programs exiting on EOF.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ba53a8fdecef07577dcc4109e5c82bb124d49c58",
      "tree": "82b3cd36a4812e4f34baaeac106bb28ad0f49bb8",
      "parents": [
        "ba5dc5ebb4dba56cb3a64acc21e71aa34df375d9"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 11:04:46 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 20:34:40 2015 +0200"
      },
      "message": "lib/vty: put stdin in raw mode for vty\n\nThe interactive CLI actually works just fine, if we just put the\nterminal in raw mode to get keystrokes as they come.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ba5dc5ebb4dba56cb3a64acc21e71aa34df375d9",
      "tree": "af180446cdaaa0bdab5171630249fd1db9fd5b86",
      "parents": [
        "4715a53b4d390e72a06c864a6a505971841e3dc9"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Thu May 30 16:33:45 2013 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 20:34:40 2015 +0200"
      },
      "message": "lib/vty: add vty_stdio()\n\nthis introduces a new public/API function to the vty code for opening a\nVTY on stdin/stdout.  Intended for unrestricted use by the individual\ndaemons, i.e. \"offical API\".\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4715a53b4d390e72a06c864a6a505971841e3dc9",
      "tree": "a7618f437bd55b6695c9f8e4b03a252a0513f6d5",
      "parents": [
        "ee53c8b9f7979c79beada960746ca35046016a45"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Thu May 30 16:31:49 2013 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 20:34:40 2015 +0200"
      },
      "message": "lib/vty: add separate output fd support to VTYs\n\nto be used with stdin/stdout terminals, this adds support for writing to\na different FD than we\u0027re reading from.  Also fixes error messages from\nconfig load being written to stdin.\n\n[v2: fixed config write]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ee53c8b9f7979c79beada960746ca35046016a45",
      "tree": "4a1df05c8bb9b72e6508a11300dbdbccda419600",
      "parents": [
        "ec38711852abdcaa0e7001e6a1e957052a0e723d"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat May 23 05:45:59 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 27 20:28:19 2015 +0200"
      },
      "message": "vtysh: fix the fix for babeld removal... (5460bae)\n\nCommit 5460bae (\"*: fix \u0027babeld: Remove babeld from Quagga\u0027 (336724d)\")\nunfortunately removed the BABEL_NODE from vtysh, which now no longer\nstarts.\n\nFix by restoring the node (even though it won\u0027t be accessible).\n\nReported-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nFixes: 5460bae (\"*: fix \u0027babeld: Remove babeld from Quagga\u0027 (336724d)\")\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ec38711852abdcaa0e7001e6a1e957052a0e723d",
      "tree": "c06db4d3a0d1020ce22d268e7128ee5a770ce7e5",
      "parents": [
        "9196caf16e30e938f4bc3c05d96f55195af7caff"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 20 22:34:56 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 20 22:44:56 2015 +0200"
      },
      "message": "lib: fix \"sockunion: add hash function\" for BSD (9196caf)\n\nThe sockunion_hash() function uses s6_addr32, which is not defined on\nBSD systems.  (It only works on glibc because we set _GNU_SOURCE)\n\nripngd/ripng_nexthop.h already contains a workaround for this.  Bump\nworkaround to prefix.h so it\u0027s available everywhere.\n\nReported-by: NetDEF CI System \u003cmwinter@netdef.org\u003e\nFixes: 9196caf (\"sockunion: add hash function\")\nCc: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9196caf16e30e938f4bc3c05d96f55195af7caff",
      "tree": "1fdd133a1740a33380fd5f1981c736ad92ac476f",
      "parents": [
        "ef757700d0fd51dc0b46df9d3631208919f9b779"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Apr 29 09:43:05 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 20 18:53:54 2015 +0200"
      },
      "message": "sockunion: add hash function\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ef757700d0fd51dc0b46df9d3631208919f9b779",
      "tree": "722b3898fc1793cda897fa685df7128df4dfbc56",
      "parents": [
        "6b2672f3c9493aef3495192e113f95a7db4b65bc"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Apr 29 09:43:04 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 20 18:52:22 2015 +0200"
      },
      "message": "bgpd: allow using rtt in route-map\u0027s set metric\n\nUseful when the BGP neighbors are over tunnels that have large\ndifferences in geographic distances and RTTs. Especially useful\nfor DMVPN setups to allow preferring closes hub.\n\nThe parameter is added as new alias command as otherwise it seems\nthe command parser is not able to match it properly (it seems\nmerging is done for the various \u0027set metric\u0027 route-map objects in\ndifferent routing engines). For same reason also they are listed\nas three separate options: optional +/- seems not possibly easily.\n\nRelated research papers:\nhttp://www.pps.univ-paris-diderot.fr/~jch/research/delay-based.pdf\nhttp://arxiv.org/pdf/1309.0632.pdf\n\nPaper on similar extension to Babel:\nhttp://www.pps.univ-paris-diderot.fr/~jch/research/rapport-jonglez-2013.pdf\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6b2672f3c9493aef3495192e113f95a7db4b65bc",
      "tree": "6cd9affdd144ed6a714a93b16f6c888a21616f8b",
      "parents": [
        "38f22ab07c8e1f0f12e23c2e2d0a3e1f71bef695"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Apr 29 09:43:03 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 20 18:50:56 2015 +0200"
      },
      "message": "sockopt: add support for querying tcp round-trip-time\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "38f22ab07c8e1f0f12e23c2e2d0a3e1f71bef695",
      "tree": "fdb9d52bea1f2105885182aef92691a5bf01e47a",
      "parents": [
        "5460baef7f0014f2d0c3459aa9c4180da19d6850"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Apr 29 09:43:02 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 20 18:50:21 2015 +0200"
      },
      "message": "bgpd: refactor route-map objects modifying integer values\n\nUse common code to parse, validate and adjust the route-map\nobjects that contain a simple integer value. This also allows\ncompiling the add/sub format metric object.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "5460baef7f0014f2d0c3459aa9c4180da19d6850",
      "tree": "43c44fde298e4fbaf1de87a6dc287b0c82a4f515",
      "parents": [
        "336724d628be71022f80cfe3dfb34274ad95ec14"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 19 00:35:04 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 20 00:34:21 2015 +0200"
      },
      "message": "*: fix \"babeld: Remove babeld from Quagga\" (336724d)\n\nThis removes some more bits of babeld, particularly from:\n- buildtest.sh\n- redhat/ build files\n- vtysh integration (which actively broke the build)\n\nThe memtype and zclient/route type are kept in place since these don\u0027t\nbreak anything and -theoretically- make it possible to build babeld\nwith some Quagga integration externally.\n(Keeping vtysh integration is unfortunately not as easy.)\n\nReported-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nFixes: 336724d (\"babeld: Remove babeld from Quagga\")\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nAcked-by: Paul Jakma \u003cpaul@quagga.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "336724d628be71022f80cfe3dfb34274ad95ec14",
      "tree": "aa6b11c1c89d5f84d57f3baf3a8df7fa086d852c",
      "parents": [
        "219cdc95d93eda93240d472814ef4aa8bd36b039"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon May 11 15:13:31 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri May 15 16:41:57 2015 +0100"
      },
      "message": "babeld: Remove babeld from Quagga\n\nThis commit removes babeld from Quagga because the Quagga project is unable\nto meet the wishes of the babeld authors.\n"
    },
    {
      "commit": "219cdc95d93eda93240d472814ef4aa8bd36b039",
      "tree": "9f39dc298398ff012dc2243ec40a9a4bd4af3d05",
      "parents": [
        "f1fc327c7eb00634d2c2b08c2a6f6e44a626ef04"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Fri Jan 23 16:43:49 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu May 14 18:09:55 2015 +0100"
      },
      "message": "ospfd: Remove another odd flooding hack in opaque LSA code\n\n* ospf_opaque.c: (ospf_opaque_adjust_lsreq) Odd hack to general OSPF\n  database exchange but made to act only on opaque LSAs. It\u0027s either covering\n  up bugs in the flooding code or its wrong. If it\u0027s covering up bugs, those\n  would affect all LSAs and should be fixed at a lower layer in ospfd, indeed\n  perhaps those bugs are long fixed anyway (?). Alternatively, it\u0027s just plain\n  wrong. Nuke.\n  (ospf_opaque_exclude_lsa_from_lsreq) helper to above, nuke.\n* ospf_packet.c: Nuke call to ospf_opaque_adjust_lsreq.\n\nTested-by: olivier.dugeon@orange.com\n"
    },
    {
      "commit": "f1fc327c7eb00634d2c2b08c2a6f6e44a626ef04",
      "tree": "4a14fc6fd695e76a77db703880fb300e079eb8cc",
      "parents": [
        "1416293f9d8f09cb792ce0ff9b734bff71697909"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 13 12:44:50 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu May 14 14:31:06 2015 +0200"
      },
      "message": "lib: assert(0) still needs a return\n\nassert(0) is not guaranteed to not return since assert() in general can\nbe optimised out when building without debug / with optimisation.  This\nbreaks the build in clang, which warns/errors about the missing return.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1416293f9d8f09cb792ce0ff9b734bff71697909",
      "tree": "32f87dd85aa3b0d58fb45bbef60591ee7c43dce8",
      "parents": [
        "c9c06d0d8cbc766374c43328e91b7a87f93e9c62"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 12 17:18:04 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu May 14 14:26:30 2015 +0200"
      },
      "message": "lib: fix \"reduce strcmp in CLI\" fallout (10bac801)\n\nIn \"lib/cli: reduce strcmp in CLI hot paths\", I failed to notice that\nCMD_VARIABLE as a boolean test covers a superset of the other types of\nvariables.  Thus, the patch broke processing of IP/IPv6/Integer range\nparameters in the CLI.\n\nFix by some reordering and introducing TERMINAL_RECORD macro (which\nmarks whether a given terminal type is a parameter) to be used in places\nwhere the check is really for all kinds of variables.\n\nReported-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nTested-by: Martin Winter \u003cmwinter@netdef.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c9c06d0d8cbc766374c43328e91b7a87f93e9c62",
      "tree": "7079c5e07ab0941949373d901bbd672066b9e4c6",
      "parents": [
        "e66cbd10d52a79fd61acab9d615683eebdbf1df5"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Apr 13 10:21:35 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 15:07:45 2015 +0200"
      },
      "message": "lib: straighten out ORF prefix list support\n\nBGP ORF prefix lists are in a separate namespace; this was previously\nhooked up with a special-purpose AFI value.  This is a little kludgy for\nextension, hence this splits it off.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "e66cbd10d52a79fd61acab9d615683eebdbf1df5",
      "tree": "e81be2319e7b2c485354283f025e090bb56c8754",
      "parents": [
        "4584c239201037648abf1a6615186f9cdeb86b23"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Apr 13 10:21:34 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 15:06:22 2015 +0200"
      },
      "message": "lib: hide internal prefix list structures\n\nThese are about to be touched and there\u0027s no point in other code\ntouching into prefix list\u0027s internas.  Add some isolation.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4584c239201037648abf1a6615186f9cdeb86b23",
      "tree": "1af059ebcc0b9229aa78c9e775120ae8ae4a8c2f",
      "parents": [
        "e30677a5537f67e37938954cf7347e9a9c0b922d"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Apr 13 09:50:00 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 15:05:34 2015 +0200"
      },
      "message": "bgpd: speed up \"no-hit\" withdraws for routeservers\n\nThis accelerates handling of incoming Withdraw messages for routes that\ndon\u0027t exist in the table to begin with.  Cisco IOS 12.4(24)T4 has a bug\nin this regard - it sends withdraws instead of doing nothing for\nprefixes that are filtered.\n\nPulling up the adj_in removal in Quagga should have no ill effect, but\nwe can avoid the costly iteration over all rsclients if there was no\nadj_in entry.\n\nPerformance impact of this change on routeserver with 3 buggy peers,\nstartup/sync time:\n\nbefore patch:  143.12 seconds (user cpu)\nafter patch:     7.01 seconds (user cpu)\n\nMany thanks to Nick Hilliard \u0026 INEX for providing real-world test data!\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "e30677a5537f67e37938954cf7347e9a9c0b922d",
      "tree": "0fe90b1574293ff61d3088aef2e6b3b1b03170a0",
      "parents": [
        "e1bcd4741c24ff990a9413ead9a9e37b80153046"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Tue Jan 20 15:45:36 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue May 05 13:02:11 2015 +0100"
      },
      "message": "ospfd: Remove the blocking of opaque LSAs origination \u0026 flooding \u0027optimisation\u0027\n\n* Opaque support contains some kind of hack/optimisation to\n  origination/flooding to suppress some origins/floods until an opaque LS\n  Acks are received.  Previous versions of the code have already been shown\n  to have bugs in them (see e16fd8a5, e.g.). It seems over-complex and fragile,\n  plus its conceptually the wrong place to try implement flooding hacks that,\n  AFAICT, do not depend particularly on the semantics of opaque LSA.\n\n  Nuke.\n\nTested-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "e1bcd4741c24ff990a9413ead9a9e37b80153046",
      "tree": "945ee904f65bc18eb3c2d03f6dd225e9d3b25938",
      "parents": [
        "10bac80195cf5a781da6e4415e6580fd7080f734"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Fri Sep 19 16:41:10 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue May 05 12:51:43 2015 +0100"
      },
      "message": "ospfd: Make ospf_passive_interface_update calls friendly to static analysis\n\n* ospf_vty.c: ({no_}ospf_passive_interface_addr_cmd) To a static analyser,\n  the call to ospf_passive_interface_update can look like uninitialised memory\n  in addr might be read from. It won\u0027t be, as ospf_passive_interface_update\n  only reads addr if params !\u003d IF_DEF_PARAMS, but not clear. Split up the\n  helper into the two cases to make it clear.\n"
    },
    {
      "commit": "10bac80195cf5a781da6e4415e6580fd7080f734",
      "tree": "440ed474bc54a2a5d355369e928b4bd8bc315e97",
      "parents": [
        "81b139bdd530adda045d22a4daf0054b89703dab"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 11:10:20 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 11:10:42 2015 +0200"
      },
      "message": "lib/cli: reduce strcmp in CLI hot paths\n\nEr, no idea how anyone could ever have thought that it would be a good\nidea to have a zillion of strcmp() calls in the CLI\u0027s active paths, just\nto compare against things like \"A.B.C.D\".\n\nReduces 40k prefix list load time from 1.65s to 1.23s (1.34:1).\n\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n[v2: killed CMDS_* macros]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "81b139bdd530adda045d22a4daf0054b89703dab",
      "tree": "15a73adc88a1d3282ae06f572feae0fca4695377",
      "parents": [
        "b40e178af12570467f0116d6b1684cb1b961e407"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Apr 29 09:43:01 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 09:39:58 2015 +0200"
      },
      "message": "lib: constify sockunion api\n\nAdd const to read-only api calls.\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": "491417ac6383e2ea557951b24eb7bd3fffb69394",
      "tree": "4f5c961345e190d4683eb3bcb41409244788b72d",
      "parents": [
        "4da670b7a9aacf552aa11c4d4f6d994b312ada89"
      ],
      "author": {
        "name": "Amritha Nambiar",
        "email": "amritha.nambiar@intel.com",
        "time": "Thu Apr 23 15:36:55 2015 -0700"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 09:06:56 2015 +0200"
      },
      "message": "isisd: fix crash on processing own p2p hello\n\nisis_pdu.c :\nisisd crashes if router\u0027s own p2p hello packets get processed\nthereby creating an adjacecncy with itself. Asserts at\nisis_find_vertex. So discard own p2p IIH PDU and avoid\ncreating adjacency with self. This would also fix duplicate\nsystemID on an interface. These checks already exists for IS-IS\nLAN Level 1/2 Hello PDU in process_lan_hello, but not for\npoint-to-point IIH PDUs.\n\nSigned-off-by: Amritha Nambiar \u003camritha.nambiar@intel.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4da670b7a9aacf552aa11c4d4f6d994b312ada89",
      "tree": "c754baa8c63867456794e45ba04e24846ec560ac",
      "parents": [
        "f0996123fe12a0b5ea66b00475066474f48c84a0"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Mon Oct 27 15:14:06 2014 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Apr 27 15:58:41 2015 +0100"
      },
      "message": "HACKING: Use space char for indentation.\n\n* HACKING.tex: Whitespace/indent section is probably out of date. Rephrase.\n  Remove the editor recommendations, as I don\u0027t know what would be correct.\n\nAcked-by: Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n"
    },
    {
      "commit": "f0996123fe12a0b5ea66b00475066474f48c84a0",
      "tree": "0591a691a09f99ac615fa86b777978707914ed0b",
      "parents": [
        "5bcbc3f58870bd28ab1deadfff75bf59d62db021"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Mon Oct 27 15:09:38 2014 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Apr 27 15:58:41 2015 +0100"
      },
      "message": "HACKING: Fix spelling mistakes\n\nAcked-by: Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n"
    },
    {
      "commit": "5bcbc3f58870bd28ab1deadfff75bf59d62db021",
      "tree": "f73ac5adc1856f4492eb352aa4d7aff774062248",
      "parents": [
        "dc684eb9976f8a1170312be42d142effce26b568"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Wed Oct 29 10:33:17 2014 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Apr 26 18:07:30 2015 +0100"
      },
      "message": "gdb: Add a directory of files with gdb macros\n\n* gdb/: Directory to contain files with GDB macros. Organised by topic into\n  separate files.\n* gdb/lib.txt: General OS API and Quagga lib macros:\n  (def_ntohs) convert big-endian short to host order.\n  (def_ntohl) convert big-endian long to host order.\n  (walk_route_table_next) Walk to next route_node in a table, according\n  to given top and current node arguments.\n  (walk_route_table) walk the given route table dumping non-null info pointers,\n  from the given root node.\n  (dump_timeval) timeval to human readable output\n  (dump_s_addr) Print IP address of given pointer to a (struct in_addr).s_addr\n  (dump_s6_addr) Ditto for IPv6.\n  (dump_prefix4) Dump a Quagga (struct prefix_ipv4 *)\n  (dump_prefix6) Dump (struct prefix_ipv6 *)\n  (dump_prefix) Dump a (struct prefix *).\n  (rn_next_{down,up}) left-down and up-and-right walks of a route_table\n  from a given route_node.\n* gdb/ospfd.txt: ospfd specific gdb macros, depends on gdb/lib.txt\n  (dump_ospf_lsa_flags) LSA flags to text.\n  (dump_ospf_lsa_data) dump the data of a (struct lsa_header *) argument.\n  (dump_ospf_lsa) Dump the details of a (struct ospf_lsa *)\n  (walk_ospf_lsdb) Go through an LSDB, rooted at the\n  given (struct route_node *), and dump LSA details.\n  (ospf_backbone_lsdb_top) Get the LSDB top pointer for the given LSA type.\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": "e691c3bb972c0baf610d9e210ce20ea6546e1de0",
      "tree": "a3e83b01ecd4fe9e739a24dc77c61a46fd0531a2",
      "parents": [
        "193e78f2460a537695e34368a29fc5cd02e4e1f5"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:46:13 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:46:19 2015 +0200"
      },
      "message": "*: assorted warning fixes\n\nA few warnings slipped through the cracks...\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": "c313895dec3c176584d99f7b8684ddc3f9141d88",
      "tree": "88c4715a57bfec3b9f0411ae30fc2fd69bc7c1ba",
      "parents": [
        "4b6c33282973c9e1545a519f2a51bda3cf42ae21"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:02:23 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:44:52 2015 +0200"
      },
      "message": "tests: fix warnings\n\nWhile I don\u0027t see -Werror being used on tests anytime soon, there\u0027s no\nreason to keep the warnings in tests unfixed.\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": "940b19911209d8ad2ea326c4a46e0fb044568edc",
      "tree": "a973032a6ab9fc47a93e0102bb37e3e22f2c6f43",
      "parents": [
        "c0bedebfe9ca1a1ded02f1f481762dd41defa63e"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 09:45:06 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:47 2015 +0200"
      },
      "message": "pimd: fix out of tree build\n\npimd/Makefile.am was missing srcdir/lib from its include paths, breaking\nout-of-tree build regarding route_types.h\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": "3a7e83c2387885075c9ecf1912dd6c9399c6947a",
      "tree": "2a6d6fde62d16507bc836626fb83a8db6b0c32d3",
      "parents": [
        "53780e30c90ae393467afaf3ccff9e3791df5133"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 09:55:51 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:24 2015 +0200"
      },
      "message": "build: determine CFLAGS more intelligently\n\nInstead of hardcoding some compiler detection, this just checks which\nCFLAGS actually work with the compiler specified by the user.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "53780e30c90ae393467afaf3ccff9e3791df5133",
      "tree": "a02c36b3e1740c457bd3a5a6fd93847d8aaead9f",
      "parents": [
        "d689d1a0c69726330d69b2dd412fdb8dcb23394b"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 09:07:09 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:19 2015 +0200"
      },
      "message": "bgpd: drop unused static variable\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d689d1a0c69726330d69b2dd412fdb8dcb23394b",
      "tree": "ff0d7e24363df5021d9a51bd79c04728398c82c6",
      "parents": [
        "dfee58f1d41a2e36c7f5f38a3ef5712224131824"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 13:54:30 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:14 2015 +0200"
      },
      "message": "bgpd: fix SNMP write support\n\nThis code - dating back to the initial import in 2002 - probably never\nworked.  Calling asn_parse_int seems to always have been wrong, and in\nthe meantime, there no longer is a \"struct variable *\" argument for\nwrite_method.  If anyone tried to use it, it\u0027d probably have crashed.\n(I didn\u0027t try.)\n\nFix this up so it actually works.  It\u0027s the only place in Quagga where a\nSNMP write is actually supported, so it\u0027s an odd one out anyway, but\nheh.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "dfee58f1d41a2e36c7f5f38a3ef5712224131824",
      "tree": "10e588443180a85a6ac019db1ded6b1144f32a7c",
      "parents": [
        "6769f43de9d595b935f2ebf1cae1428e1d1a3a5f"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Mar 04 06:44:57 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:10 2015 +0200"
      },
      "message": "snmp: fix warnings\n\nbatch-fix all warnings that come up when enabling AgentX SNMP support.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6769f43de9d595b935f2ebf1cae1428e1d1a3a5f",
      "tree": "564d37a5c20e0511189d54c245faf7dab955d9b6",
      "parents": [
        "a9eb9063071437f5cde3b78adf273b428c49d378"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Mar 04 07:18:24 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:06 2015 +0200"
      },
      "message": "vtysh: drop unused variables \u0026 RETSIGTYPE\n\nDrop unused return values in vtysh.  Also gets rid of the rather funny\nprototyping of signal setup in vtysh - which as a side effect makes it\nnot need AC_TYPE_SIGNAL in configure.ac anymore.  It wasn\u0027t used\nsensibly to begin with...\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a9eb9063071437f5cde3b78adf273b428c49d378",
      "tree": "9585ab44c0662bab068a7fa820c7713ffa4443a4",
      "parents": [
        "a91a3bac14976c04bf22b20c7e4bada787ec79b1"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Mar 04 07:07:01 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:04 2015 +0200"
      },
      "message": "vtysh: fix function prototypes\n\nThis makes a whole bunch of vtysh functions static, fixes prototypes for\na few more, and masks user_free() and user_write_config() (both unused.)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a91a3bac14976c04bf22b20c7e4bada787ec79b1",
      "tree": "1c16b21c785b22c4f7c093e80dcf2c2af20243d1",
      "parents": [
        "3cf4053a9e832408fad33a8246ecbd189f23a956"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 09:06:51 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:01 2015 +0200"
      },
      "message": "vtysh: don\u0027t use \u0027\\0\u0027 as NULL\n\nfor some reason, the vty code was using \u0027\\0\u0027 in place of NULL.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3cf4053a9e832408fad33a8246ecbd189f23a956",
      "tree": "c55451f64ca56d5df10cbedb66b3aa1e3928ba8a",
      "parents": [
        "72c69d434840598a158747ba9f69dad536f96cea"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Apr 19 14:54:03 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:01 2015 +0200"
      },
      "message": "ospf6d: fix pointer arithmetic warning\n\ncaddr_t was signed; this buffer size comparison is better done in\nunsigned.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "72c69d434840598a158747ba9f69dad536f96cea",
      "tree": "e03e73f818cc2497bc991ae133a990e67358d136",
      "parents": [
        "0de0138a9146074f268245193e45c9376d998722"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 09:08:20 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:58 2015 +0200"
      },
      "message": "ospf6d: oi-\u003ecost is uint32, not short\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "0de0138a9146074f268245193e45c9376d998722",
      "tree": "fbf4305e4c7ebdb7ee05b69a71c443b0f5865e4f",
      "parents": [
        "33b9663a89b5ec319986de0673764d2a18ec8725"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 10:30:27 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:55 2015 +0200"
      },
      "message": "ospf6d: use existing union, avoid strict-aliasing\n\nThere are preexisting fields u.lp.id and u.lp.adv_router in struct\nprefix that do the same thing as these type-punning pointer derefs.\nUse these and shut up the strict-aliasing warnings.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "33b9663a89b5ec319986de0673764d2a18ec8725",
      "tree": "1f3353824e0af3e9caea206d903625c358f099ca",
      "parents": [
        "71f55f38cb3dd804176e7f382f52b75ddcd437de"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:57:25 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:52 2015 +0200"
      },
      "message": "watchquagga: break excessively long help string\n\nwatchquagga\u0027s command line help string exceeds the ISO C maximum string\nlength (4095 characters).  Just break it in two.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "71f55f38cb3dd804176e7f382f52b75ddcd437de",
      "tree": "59f028f69361edb116ffeb862c6ead5a7cfb7d5d",
      "parents": [
        "fd8f6ebb4c6b9e5364b98d2b5fd345d1dcc08824"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 09:08:05 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:48 2015 +0200"
      },
      "message": "lib, vtysh: reduce unneccessary C extension usage\n\nWe\u0027re only supporting GCC, Clang and ICC; but there\u0027s no reason to use\nnonstandard C constructs if they don\u0027t actually provide any benefit.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "fd8f6ebb4c6b9e5364b98d2b5fd345d1dcc08824",
      "tree": "1976b8f404ed9293af119fc733117607b5c372ec",
      "parents": [
        "81a4e85442e2011a47bbb25e8301dc40ec4ed9b6"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:57:02 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:44 2015 +0200"
      },
      "message": "lib: use const consistently for zserv path\n\nThe global variable is missing its const, but the accessor function has\na meaningless extra const in exchange...\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "81a4e85442e2011a47bbb25e8301dc40ec4ed9b6",
      "tree": "b98cf9014b0c6cd0abfddfc628968b8a14a75540",
      "parents": [
        "c7879ea62fb38999a86ca9cbabbdeca18785e135"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:56:48 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:41 2015 +0200"
      },
      "message": "lib: silence type range warning in macro\n\nWhile splitting up the CLI input macro is a bit annoying, this seems to\nbe the least annoying way to get rid of the \"\u003c 0\" comparison warning for\nunsigned long.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c7879ea62fb38999a86ca9cbabbdeca18785e135",
      "tree": "a341dc46185e3139000334ff6733b2ffdec8134c",
      "parents": [
        "a2c7f4bd869bd232eb12896ff65a510d6716d2b9"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Mar 04 06:37:20 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:38 2015 +0200"
      },
      "message": "pimd: cast ioctl values when printing them\n\nioctl values might be int or long, cast them to unsigned long for\nconsistent printing.  (They\u0027re long on FreeBSD, but were printed with\n%d.)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a2c7f4bd869bd232eb12896ff65a510d6716d2b9",
      "tree": "159a86f854be31d8183026f7f731ad3e5e49d0f9",
      "parents": [
        "e070452d981f58d60d79d7b4b38c93fb034c49b3"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 21:03:52 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:35 2015 +0200"
      },
      "message": "pimd: cast to sockaddr_in to sockaddr\n\nWhile glibc seems to have something in the system headers that prevents\nthis from triggering a warning, FreeBSD doesn\u0027t.  Fix the warning.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e070452d981f58d60d79d7b4b38c93fb034c49b3",
      "tree": "d9003c1ff67b53b45d554d4e307c321ceaa79353",
      "parents": [
        "a3466abd93f83424f9f83e56282e42188e1f94ce"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 10:41:21 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:32 2015 +0200"
      },
      "message": "pimd: mask unused zclient_broken()\n\nthis function is used by the currently not present zclient reconnect\ncode.  It\u0027ll be unmasked again when that code hits master.\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": "60a4601e2270920958e221fbffd7b0743f498d3c",
      "tree": "cc582a2fc3fbceff25f7d2874be97193b1119eaa",
      "parents": [
        "01da6176b88fe59b3c6ceaf3630df88046c83159"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:56:05 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:14 2015 +0200"
      },
      "message": "isisd: remove unused process_is_hello()\n\nThe code uses process_lan_hello() or process_p2p_hello().  The unused\nprocess_is_hello() seems to be a leftover generic version.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "01da6176b88fe59b3c6ceaf3630df88046c83159",
      "tree": "6cece2f08f9630b3131d5c106417be6e439a8eea",
      "parents": [
        "f50ee93d12f8213a048a04fcf7d73e12662288e5"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Apr 10 09:10:11 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:14 2015 +0200"
      },
      "message": "isisd: fix size_t confusions\n\nisisd had a few places that mixed up size_t vs. unsigned long, and %zd\nvs. %ld.  Clean out.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "f50ee93d12f8213a048a04fcf7d73e12662288e5",
      "tree": "af40761ee94a9bfc1054d59349929066492ee8ab",
      "parents": [
        "6db3ef65c7683069609b5ceb29bdaab49ca09f48"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Mar 04 07:13:38 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:11 2015 +0200"
      },
      "message": "isisd: assorted fixes (unused variables, static)\n\nThis just mops up a few warnings in isisd.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6db3ef65c7683069609b5ceb29bdaab49ca09f48",
      "tree": "900096a65632aee701451d368018c988433026d8",
      "parents": [
        "1250dc7834a1ba52cfd5195f68d24f22fd9c41b0"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 09:07:43 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:08 2015 +0200"
      },
      "message": "isisd: fix minor \u0026 vs. \u0026\u0026 mix-up\n\napparently we were displaying all IPv6 reachabilities as external.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1250dc7834a1ba52cfd5195f68d24f22fd9c41b0",
      "tree": "0914e393d3e50bea55b2bde25fb12f762c1e9e19",
      "parents": [
        "8c9cd85631b77fac0bc30ffb9f23b29c466d31c4"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:56:35 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:04 2015 +0200"
      },
      "message": "isisd: don\u0027t use POSIX reserved y1/yn names\n\ny1 and yn are POSIX standard names for Bessel functions.  For\nconsistency, just rename all of these variables from \"y\" to \"yy\".\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8c9cd85631b77fac0bc30ffb9f23b29c466d31c4",
      "tree": "73c0687a1306f4a274ba3a057f4913a5d77734fb",
      "parents": [
        "94bad67cd8fe7ad023a40547a1153a414d70fa0a"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Apr 19 14:40:02 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:04 2015 +0200"
      },
      "message": "bgpd: random() returns long\n\nbgpd was using unsigned to store a probability value to be used with\nrandom().  That, however, returns long, running into some warnings (and\nworst case, if RAND_MAX \u003e UINT_MAX, won\u0027t work correctly.\n\nJust use long to shuffle the value around.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "94bad67cd8fe7ad023a40547a1153a414d70fa0a",
      "tree": "548a50421210ac372b2183f372cda2ff5e6928bc",
      "parents": [
        "d43f8b39b075fe60e0c8fdb33b07b284d3fae503"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:52:22 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:02 2015 +0200"
      },
      "message": "bgpd: don\u0027t use #ifdef inside macro args\n\nUsing #ifdef inside preprocessor macro argument lists is not guaranteed\nto work.  In reality it mostly does, but we don\u0027t need these ifdefs for\nHAVE_IPV6 anymore, so let\u0027s get rid of the warning nonetheless.\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": "b1672ce858cc9c16fd7cc67b673aa241d9583a59",
      "tree": "bf7a76931a2dac5cb741f456f808f7d8ef012c01",
      "parents": [
        "ab90fc04a57b7b1d93ccddb8c9fbbf339a7ffc4c"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Apr 19 15:17:02 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:01 2015 +0200"
      },
      "message": "bgpd: fix ecommunity_token initialiser\n\nThis pulls up ecommunity_token_unknown to be the first enum value (at\n0), and uses that as initialiser to get rid of the uninitialised use\nwarning.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ab90fc04a57b7b1d93ccddb8c9fbbf339a7ffc4c",
      "tree": "7c75add9b86f59da16d636e963402494dfbf6ecd",
      "parents": [
        "388f8857eb81ef75014060976776523a58a99389"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 09:07:25 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:01 2015 +0200"
      },
      "message": "*: add/cleanup initialisers\n\nThere were some (inconsequential) warnings about uninitialised use of\nvariables.  Also, in one case, sub-structs were mixed in initialisation,\nwhich doesn\u0027t quite work as intended.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    }
  ],
  "next": "388f8857eb81ef75014060976776523a58a99389"
}
