)]}'
{
  "log": [
    {
      "commit": "0f2f7a3fa5d55e682d0739d586da021cbd43bc3c",
      "tree": "a8bdff569d71a784e2ba4ab154ce6ab70103638a",
      "parents": [
        "94627e670d661f95217521ef0bfba141e5e37e68"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Jun 16 15:40:02 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:44 2016 +0100"
      },
      "message": "*: Fix duplicate commands from view/enable node consolidation\n"
    },
    {
      "commit": "405e9e19eb6ce62fa4f3f39a1f73990db9e146b7",
      "tree": "e3e6c66af5ed0a6d7270a842986487ba5e8c8c26",
      "parents": [
        "518a4b7eadcba567f01061e6659d8179380efcdf"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Feb 04 17:00:18 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:22 2016 +0000"
      },
      "message": "bgpd: Remove the double-pass parsing of NLRIs\n\n* bgpd parses NLRIs twice, a first pass \"sanity check\" and then a second pass\n  that changes actual state. For most AFI/SAFIs this is done by\n  bgp_nlri_sanity_check and bgp_nlri_parse, which are almost identical.\n\n  As the required action on a syntactic error in an NLRI is to NOTIFY and\n  shut down the session, it should be acceptable to just do a one pass\n  parse.  There is no need to atomically handle the NLRIs.\n\n* bgp_route.h: (bgp_nlri_sanity_check) Delete\n* bgp_route.c: (bgp_nlri_parse) Make the prefixlen size check more general\n  and don\u0027t hard-code AFI/SAFI details, e.g. use prefix_blen library function.\n\n  Add error logs consistent with bgp_nlri_sanity_check as much as possible.\n\n  Add a \"defense in depth\" type check of the prefixlen against the sizeof\n  the (struct prefix) storage - ala bgp_nlri_parse_vpn.\n  Update standards text from draft RFC4271 to the actual RFC4271 text.\n\n  Extend the semantic consistency test of IPv6. E.g. it should skip mcast\n  NLRIs for unicast safi as v4 does.\n\n* bgp_mplsvpn.{c,h}: Delete bgp_nlri_sanity_check_vpn and make\n  bgp_nlri_parse_vpn_body the bgp_nlri_parse_vpn function again.\n\n  (bgp_nlri_parse_vpn) Remove the notifies.  The sanity checks were\n  responsible for this, but bgp_update_receive handles sending NOTIFY\n  generically for bgp_nlri_parse.\n\n* bgp_attr.c: (bgp_mp_reach_parse,bgp_mp_unreach_parse) Delete sanity check.\n  NLRI parsing done after attr parsing by bgp_update_receive.\n\nArising out of discussions on the need for two-pass NLRI parse with:\n\nLou Berger \u003clberger@labn.net\u003e\nDonald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "518a4b7eadcba567f01061e6659d8179380efcdf",
      "tree": "0bc751d4e0024954e1bf3bf5a7e0ce84b219ba1f",
      "parents": [
        "18ab08b71e6b29e67b36df5e2261569d381b1708"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Feb 04 13:27:04 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:21 2016 +0000"
      },
      "message": "bgpd: Regularise bgp_update_receive, add missing notifies and checks\n\n* bgp_packet.c: (bgp_update_receive) Lots of repeated code, doing same\n  thing for each AFI/SAFI.  Except when it doesn\u0027t, e.g.  the IPv4/VPN\n  case was missing the EoR bgp_clear_stale_route call - the only action\n  really needed for EoR.\n\n  Make this function a lot more regular, using common, AFI/SAFI\n  independent blocks so far as possible.\n\n  Replace the 4 separate bgp_nlris with an array, indexed by an enum.\n\n  The distinct blocks that handle calling bgp_nlri_parse for each\n  different AFI/SAFI can now be replaced with a loop.\n\n  Transmogrify the nlri SAFI from the SAFI_MPLS_LABELED_VPN code-point\n  used on the wire, to the SAFI_MPLS_VPN safi_t enum we use internally\n  as early as possible.\n\n  The existing code was not necessarily sending a NOTIFY for NLRI\n  parsing errors, if they arose via bgp_nlri_sanity_check.  Send the\n  correct NOTIFY - INVAL_NETWORK for the classic NLRIs and OPT_ATTR_ERR\n  for the MP ones.\n\n  EoR can now be handled in one block.  The existing code seemed broken\n  for EoR recognition in a number of ways:\n\n  1.  A v4/unicast EoR should be an empty UPDATE.  However, it seemed\n     to be treating an UPDATE with attributes, inc.  MP REACH/UNREACH,\n     but no classic NLRIs, as a v4/uni EoR.\n\n  2.  For other AFI/SAFIs, it was treating UPDATEs with no classic\n     withraw and with a zero-length MP withdraw as EoRs.  However, that\n     would mean an UPDATE packet _with_ update NLRIs and a 0-len MP\n     withdraw could be classed as an EoR.\n\n  This seems to be loose coding leading to ambiguous protocol\n  situations and likely incorrect behaviour, rather than simply being\n  liberal.  Be more strict about checking that an UPDATE really is an\n  EoR and definitely is not trying to update any NLRIs.\n\n  This same loose EoR parsing was noted by Chris Hall previously on\n  list.\n\n  (bgp_nlri_parse) Front end NLRI parse function, to fan-out to the correct\n  parser for the AFI/SAFI.\n\n* bgp_route.c: (bgp_nlri_sanity_check) We try convert NLRI safi to\n  internal code-point ASAP, adjust switch for that.  Leave the wire\n  code point in for defensive coding.\n\n  (bgp_nlri_parse) rename to bgp_nlri_parse_ip.\n\n* tests/bgp_mp_attr_test.c: Can just use bgp_nlri_parse frontend.\n"
    },
    {
      "commit": "18ab08b71e6b29e67b36df5e2261569d381b1708",
      "tree": "1160aff3b43a6e0bdf5e8b553425ad5bea12640f",
      "parents": [
        "c49a2747f6a6199dba27c0c413f4de6112fa649e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Jan 27 16:37:33 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Mar 08 17:53:10 2016 +0000"
      },
      "message": "bgpd: Regularise BGP NLRI sanity checks a bit\n\n* bgp_route.h: (bgp_nlri_sanity_check) The bulk of the args are equivalent\n  to a (struct bgp_nlri), consolidate.\n* bgp_route.c: (bgp_nlri_sanity_check) Make this a frontend for all afi/safis.\n  Including SAFI_MPLS_LABELED_VPN.\n  (bgp_nlri_sanity_check_ip) Regular IP NLRI sanity check based on the\n  existing code, and adjusted for (struct bgp_nlri *) arg.\n* bgp_attr.c: (bgp_mp_reach_parse) Adjust for passing (struct bgp_nlri *)\n  to bgp_nlri_sanity_check.\n  Get rid of special-casing to not sanity check VPN.\n  (bgp_mp_unreach_parse) Ditto.\n\n* bgp_mplsvpn.c: Use the same VPN parsing code for both the sanity\n  check and the actual parse.\n\n  (bgp_nlri_parse_vpn) renamed to bgp_nlri_parse_vpn_body and made\n  internal.\n\n  (bgp_nlri_parse_vpn_body) Added (bool) argument to control whether it\n  is sanity checking or whether it should update routing state for each\n  NLRI.  Send a NOTIFY and reset the session, if there\u0027s a parsing\n  error, as bgp_nlri_sanity_check_ip does, and as is required by the\n  RFC.\n\n  (bgp_nlri_parse_vpn) now a wrapper to call _body with update.\n\n  (bgp_nlri_sanity_check_vpn) wrapper to call parser without\n  updating.\n\n* bgp_mplsvpn.h: (bgp_nlri_sanity_check_vpn) export for\n  bgp_nlri_sanity_check.\n\n* bgp_packet.c: (bgp_update_receive) Adjust for bgp_nlri_sanity_check\n  argument changes.\n\n* test/bgp_mp_attr_test.c: Extend to also test the NLRI parsing functions,\n  if the initial MP-attr parsing has succeeded.  Fix the NLRI in the\n  VPN cases.  Add further VPN tests.\n\n* tests/bgpd.tests/testbgpmpattr.exp: Add the new test cases.\n\nThis commit a joint effort of:\n\nLou Berger \u003clberger@labn.net\u003e\nDonald Sharp \u003csharpd@cumulusnetworks.com\u003e\nPaul Jakma \u003cpaul.jakma@hpe.com\u003e / \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "205e6744f2dc2909dd494c9ce8acb82821459f1f",
      "tree": "a996419a840766d2ffa1025805e1be84a2dacdf4",
      "parents": [
        "544ec70f66d0ec081dadde79bec1f25c2241f57f"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:11 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:45 2016 +0000"
      },
      "message": "bgpd: remove HAVE_IPV6 conditionals\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "bf1ae6c683a53d7f43c273afb55d52ccc233296b",
      "tree": "3224355a90930170b47cccfafbeabe6bb9f27d09",
      "parents": [
        "651b402d32b52ecf7ea1d979bf83b88ff799e134"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:08 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:45 2016 +0000"
      },
      "message": "bgpd: drop machineparse / random \"show\" improvements\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "35c36863f42e3c3e61a0cae400ffa80905c96d45",
      "tree": "0bfe81796a7fa5887b797c89f6c558e5ee70f278",
      "parents": [
        "135ca1502cc54d9ad00b60b3410a0932bfeceb29"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:42:06 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:44 2016 +0000"
      },
      "message": "bgpd: VPNv6 show commands\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "050defe816e4bd4cac7b028f69e45cb1974ca96d",
      "tree": "212e07eb351c8ebd2282e4798d493cf2e64492c9",
      "parents": [
        "d5d5e3e04fc41b9a89b7ce9049fd322bdbde2e4d"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:59 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:43 2016 +0000"
      },
      "message": "bgpd: general MP/SAFI improvements\n\nThis fixes some minor mixups particularly in MPLS-related SAFIs, as well\nas doing some stylistic changes \u0026 adding comments.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nReviewed-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9da04bca0e994ec92b9242159bf27d89c6743354",
      "tree": "3c38048088082749e2ba7f03f15bdbff19234f0c",
      "parents": [
        "a03bd16eedc5077e98716509b8918ed365227e02"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:55 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:42 2016 +0000"
      },
      "message": "bgpd: wire up VPNv6 protocol processing\n\nThere wasn\u0027t much missing for VPNv6 to begin with; just a few bits of\nde- \u0026 encoding and a few lists to be updated.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n\n[Editorial note: Signed-off-by may imply an authorship claim, but need not]\n\nEdited-by: Paul Jakma \u003cpaul.jakma@hpe.com\u003e / \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "a03bd16eedc5077e98716509b8918ed365227e02",
      "tree": "ce2cdce1e28a98318bd4605e7f70c43267cc5eb7",
      "parents": [
        "a76d9ca3584c1751a592457c167c1e146648ceb6"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:54 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:42 2016 +0000"
      },
      "message": "bgpd: handle AS4 and EOI route distinguishers\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a76d9ca3584c1751a592457c167c1e146648ceb6",
      "tree": "6415cbd12e4f1cfeadc552b05f6ac06da10d51f6",
      "parents": [
        "4d80560a2b064182191371fd7e4304bf829a4d9f"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue Jan 12 13:41:53 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:42 2016 +0000"
      },
      "message": "bgpd: make _vpnv4 static handling SAFI-agnostic\n\nThis changes the existing _vpnv4 functions for MPLS-VPN into\nSAFI-agnostic functions, renaming them from *_vpnv4 to *_safi.\n\nAlso adds route-map support while at it.\n\nSigned-off-by: Lou Berger \u003clberger@labn.net\u003e\nReviewed-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "0490729cc033a3483fc6b0ed45085ee249cac779",
      "tree": "fb2822462801e3bc82ae1425d065d3d5e4d71954",
      "parents": [
        "7748fdc757a2181649dd4956f2767545673ef28d"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Jan 07 10:03:01 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:40 2016 +0000"
      },
      "message": "lib, bgpd, tests: Refactor FILTER_X in zebra.h\n\nlib/zebra.h has FILTER_X #define\u0027s.  These do not belong there.\nPut them in lib/filter.h where they belong.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "a3bc7e9400b214a0f078fdb19596ba54214a1442",
      "tree": "5268048e32b24b2bac3c8a55f41ef25a0b15ff91",
      "parents": [
        "eae18d16fefed42af33e63e096a2889b9c70b9cb"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Jan 27 16:54:45 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Feb 10 15:02:07 2016 +0000"
      },
      "message": "bgpd: Fix VU#270232, VPNv4 NLRI parser memcpys to stack on unchecked length\n\nAddress CERT vulnerability report VU#270232, memcpy to stack data structure\nbased on length field from packet data whose length field upper-bound was\nnot properly checked.\n\nThis likely allows BGP peers that are enabled to send Labeled-VPN SAFI\nroutes to Quagga bgpd to remotely exploit Quagga bgpd.\n\nMitigation: Do not enable Labeled-VPN SAFI with untrusted neighbours.\n\nImpact: Labeled-VPN SAFI is not enabled by default.\n\n* bgp_mplsvpn.c: (bgp_nlri_parse_vpnv4) The prefixlen is checked for\n  lower-bound, but not for upper-bound against received data length.\n  The packet data is then memcpy\u0027d to the stack based on the prefixlen.\n\n  Extend the prefixlen check to ensure it is within the bound of the NLRI\n  packet data AND the on-stack prefix structure AND the maximum size for the\n  address family.\n\nReported-by: Kostya Kortchinsky \u003ckostyak@google.com\u003e\n\nThis commit a joint effort between:\n\nLou Berger \u003clberger@labn.net\u003e\nDonald Sharp \u003csharpd@cumulusnetworks.com\u003e\nPaul Jakma \u003cpaul.jakma@hpe.com\u003e / \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "056f3760cd311faf088d6f5fe06498960788c8c7",
      "tree": "6098f68402cefc8dbf0b832636390c453802a245",
      "parents": [
        "5c1791f28e2e831e4e9b92c3c2f7d8ed832cb968"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Wed Apr 10 12:30:04 2013 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Oct 27 11:00:29 2015 +0000"
      },
      "message": "bgpd, lib: memory cleanups for valgrind, plus debug changes\n\nDescription:\n    We use valgrind memcheck quite a bit to spot leaks in\n    our work with bgpd. In order to eliminate false positives,\n    we added code in the exit path to release the remaining\n    allocated memory.\n\n    Bgpd startup log message now includes pid.\n\nSome little tweaks by Paul Jakma \u003cpaul.jakma@hpe.com\u003e:\n\n* bgp_mplsvpn.c: (str2prefix_rd) do the cleanup in common code at the end\n  and goto it.\n"
    },
    {
      "commit": "79969960aae4adbae1eac6caebc289fe09ddc1d6",
      "tree": "a915a98d648f6a8ff0aab2754e46e2398be23d15",
      "parents": [
        "a752c3be8c2436941311788f2e7b644a2af0fd65"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Aug 19 21:27:24 2015 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 24 15:26:43 2015 +0100"
      },
      "message": "bgpd: Fix small memory leak in str2prefix_rd\n\nstr2prefix_rd has a memory leak.  This commit fixes that issue\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "7053d8176ce502aabe39bf167f01354654bde5df",
      "tree": "95c7398ecd35ea875111cf896a78ed5038b62755",
      "parents": [
        "3921cc54445417aa1ca22668063701a626e93098"
      ],
      "author": {
        "name": "Denil Vira",
        "email": "denil@cumulusnetworks.com",
        "time": "Thu Jul 23 06:52:18 2015 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 24 15:26:43 2015 +0100"
      },
      "message": "bgpd: Fix useless call in bgpd/bgp_mplsvpn.c\n\nCoverity scan ID : 1302528. Calling \"decode_label(pnt)\" is only useful for its return value, which is\nignored. Removed the call.\n\nSigned-off-by: Denil Vira \u003cdenil@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "7aa9dcef80b2ce50ecaa77653d87c8b84e009c49",
      "tree": "bd4a8d881336a1551146725d7ae06b3e68553e4d",
      "parents": [
        "010ebbbca6396f272cc2d50d147dd922dda68213"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Fri Sep 19 14:42:23 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Sep 23 16:32:34 2014 +0100"
      },
      "message": "Fix most compiler warnings in default GCC build.\n\nFix lots of warnings. Some const and type-pun breaks strict-aliasing\nwarnings left but much reduced.\n\n* bgp_advertise.h: (struct bgp_advertise_fifo) is functionally identical to\n  (struct fifo), so just use that.  Makes it clearer the beginning of\n  (struct bgp_advertise) is compatible with with (struct fifo), which seems\n  to be enough for gcc.\n  Add a BGP_ADV_FIFO_HEAD macro to contain the right cast to try shut up\n  type-punning breaks strict aliasing warnings.\n* bgp_packet.c: Use BGP_ADV_FIFO_HEAD.\n  (bgp_route_refresh_receive) fix an interesting logic error in\n  (!ok || (ret !\u003d BLAH)) where ret is only well-defined if ok.\n* bgp_vty.c: Peer commands should use bgp_vty_return to set their return.\n* jhash.{c,h}: Can take const on * args without adding issues \u0026 fix warnings.\n* libospf.h: LSA sequence numbers use the unsigned range of values, and\n  constants need to be set to unsigned, or it causes warnings in ospf6d.\n* md5.h: signedness of caddr_t is implementation specific, change to an\n  explicit (uint_8 *), fix sign/unsigned comparison warnings.\n* vty.c: (vty_log_fixed) const on level is well-intentioned, but not going\n  to fly given iov_base.\n* workqueue.c: ALL_LIST_ELEMENTS_RO tests for null pointer, which is always\n  true for address of static variable.  Correct but pointless warning in\n  this case, but use a 2nd pointer to shut it up.\n* ospf6_route.h: Add a comment about the use of (struct prefix) to stuff 2\n  different 32 bit IDs into in (struct ospf6_route), and the resulting\n  type-pun strict-alias breakage warnings this causes.  Need to use 2\n  different fields to fix that warning?\n\ngeneral:\n\n* remove unused variables, other than a few cases where they serve a\n  sufficiently useful documentary purpose (e.g.  for code that needs\n  fixing), or they\u0027re required dummies.  In those cases, try mark them as\n  unused.\n* Remove dead code that can\u0027t be reached.\n* Quite a few \u0027no ...\u0027 forms of vty commands take arguments, but do not\n  check the argument matches the command being negated.  E.g., should\n  \u0027distance X \u003cprefix\u003e\u0027 succeed if previously \u0027distance Y \u003cprefix\u003e\u0027 was set?\n  Or should it be required that the distance match the previously configured\n  distance for the prefix?\n  Ultimately, probably better to be strict about this.  However, changing\n  from slack to strict might expose problems in command aliases and tools.\n* Fix uninitialised use of variables.\n* Fix sign/unsigned comparison warnings by making signedness of types consistent.\n* Mark functions as static where their use is restricted to the same compilation\n  unit.\n* Add required headers\n* Move constants defined in headers into code.\n* remove dead, unused functions that have no debug purpose.\n"
    },
    {
      "commit": "c63b83fe8d1addecc949258479b8d54180c4da60",
      "tree": "fbc58da3014db1cf74a2f8a91a33fe941968815d",
      "parents": [
        "d227617a972bb20a974be68bea5032e692a0970f"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Tue Apr 10 16:57:24 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed May 02 17:03:27 2012 +0200"
      },
      "message": "bgpd: Fix memory leak of some \"show ip bgp neighbor\" commands\n\nsockunion_str2su() use is prone to memory leaks. Remove it\u0027s use all over\nthe code.\n\nAt least these commands leaked a sockunion union:\n    - show ip bgp vpnv4 ... routes\n    - show ip bgp ... received prefix-filter\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "664711c1f4cc218073783ff6ce362093debd7b53",
      "tree": "5566b0c8b9d22de55772717ad6c701ea85b6241e",
      "parents": [
        "6fd16207fee6d4d09f29ed7ecf26303a7220e473"
      ],
      "author": {
        "name": "Ulrich Weber",
        "email": "ulrich.weber@sophos.com",
        "time": "Wed Dec 21 02:24:11 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 19:13:28 2012 +0400"
      },
      "message": "lib: fix some strtoul() use cases\n\n...otherwise 4294967295 is not a valid value on 32bit systems\n"
    },
    {
      "commit": "aea339f72807c34a7916d8614e030069815e144c",
      "tree": "7b0ab93dcfec82736f05ac39106096360e4ceeb5",
      "parents": [
        "c540835eaf0cb59921969537d8e94cc83bb717f5"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Thu Apr 30 17:16:22 2009 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Thu Apr 30 17:16:22 2009 +0400"
      },
      "message": "[bgpd] AS4 bugfix by Chris Caputo \u003cccaputo@alt.net\u003e\n\n* bgpd/bgp_aspath.c: (aspath_make_str_count) \"assert (len \u003c str_size)\" was\n  getting hit under certain 4-byte ASN conditions. New realloc strategy.\n* bgpd/bgp_aspath.c: (aspath_key_make) const warning fix.\n\n\"%d\" -\u003e \"%u\" 4-byte ASN corrections.  Prevent negative number when ASN is\nabove 2^31.\n"
    },
    {
      "commit": "94f2b3923e9663d0355a829f22e4e31cf68ee7b8",
      "tree": "59c0291a76b1c97fbb089abb479307f19cdfd4c1",
      "parents": [
        "7cad40007b9714dba65065916ea68577f9d3d6dd"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 12:44:16 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 12:44:16 2005 +0000"
      },
      "message": "2005-06-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) The great bgpd extern and static\u0027ification.\n\t* bgp_routemap.c: remove unused ROUTE_MATCH_ASPATH_OLD code\n\t  (route_set_metric_compile) fix u_int32_t to ULONG_MAX comparison\n\t  warnings.\n\t* bgp_route.h: (bgp_process, bgp_withdraw, bgp_update) export these\n\t  used by various files which had their own private declarations,\n\t  in the case of mplsvpn - incorrect.\n"
    },
    {
      "commit": "5a64665039dc98c341fd8d50458ec2a72c5ebbf5",
      "tree": "e89689f085b7b8eed09a0558e2a80dadb4826033",
      "parents": [
        "f3ae74cdf0768d0bd35f26f728f72439f2d8bd6f"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 05 01:25:55 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 05 01:25:55 2004 +0000"
      },
      "message": "2004-11-04 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* vty.h: Remove fields in struct vty that were related to VTY_CONTINUE\n\t  capabilities (that were used only in bgpd/bgp_route.c and are now\n\t  removed).  Also remove some other fields that were not being\n\t  used at all.\n\t* vty.c: (vty_execute) Do not test for obsolete status values VTY_START\n\t  and VTY_CONTINUE.\n\t  (vty_read) Remove calls to vty-\u003eoutput_func since that was part\n\t  of the VTY_CONTINUE infrastructure that has been removed.\n\t  (vty_flush) Remove code to support VTY_START and VTY_CONTINUE.\n\t  (vty_close) Remove code to cancel vty-\u003et_output thread, since that\n\t  thread was never actually used.\n\t* bgp_route.c: Remove all code related to VTY_CONTINUE; this feature\n\t  is deprecated because the output did not represent a single point\n\t  in time.  All output needs to be generated inline and buffered\n\t  by the library code.\n\t  (route_vty_out,route_vty_out_tag,damp_route_vty_out,\n\t   flap_route_vty_out) Remove code to count number of lines of output,\n\t   since this was only useful for VTY_CONTINUE behavior.\n\t  (bgp_show_callback) Removed.\n\t  (bgp_show_table) Remove hooks for VTY_CONTINUE callback support.\n\t  As a result, there\u0027s a new output_arg argument to this function.\n\t  Make function static.\n\t  (bgp_show) Make function static and add a new output_arg argument.\n\t  Change all functions that call bgp_show or bgp_show_table to\n\t  pass the new output_arg argument (that used to be passed inside\n\t  vty-\u003eoutput_arg).\n\t* bgp_mplsvpn.c: Remove declarations of functions defined in\n\t  bgp_route.c; these declarations belong in bgp_route.h.\n\t* bgp_route.h: Declare 3 global functions used in both bgp_route.c\n\t  and in bgp_mplsvpn.c.\n"
    },
    {
      "commit": "fd79ac918b8feaacebe9719adaac97dffb69137a",
      "tree": "d0665eb68e60da9d6e364414cdb61830f19f33d3",
      "parents": [
        "39db97e4e02eae08a1e18528367b6e9b07eb6a93"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 13 05:06:08 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 13 05:06:08 2004 +0000"
      },
      "message": "2004-10-13 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* (global) more const\u0027ification and fixups of types to clean up code.\n\t* bgp_mplsvpn.{c,h}: (str2tag) fix abuse. Still not perfect,\n          should use something like the VTY_GET_INTEGER macro, but without\n          the vty_out bits..\n        * bgp_routemap.c: (set_aggregator_as) use VTY_GET_INTEGER_RANGE\n          (no_set_aggregator_as) ditto.\n        * bgpd.c: (peer_uptime) fix unlikely bug, where no buffer is\n          returned, add comments about troublesome return value.\n"
    },
    {
      "commit": "5228ad27e2f3abe0ebb69f66607aedc048b94a13",
      "tree": "a65817a03150dbfeb56a1eaceab526f31be1cc1d",
      "parents": [
        "c2bfbcc38428b53e856617e1da8bbe9f8d2ee2fa"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jun 04 17:58:18 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jun 04 17:58:18 2004 +0000"
      },
      "message": "2004-06-04 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * type mismatch fixes\n"
    },
    {
      "commit": "718e3744195351130f4ce7dbe0613f4b3e23df93",
      "tree": "bac2ad39971cd43f31241ef123bd4e470f695ac9",
      "parents": [],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "message": "Initial revision\n"
    }
  ]
}
