)]}'
{
  "log": [
    {
      "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": "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": "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": "010ebbbca6396f272cc2d50d147dd922dda68213",
      "tree": "99e92b1795d61adfa554e1cc00e998697962fcc9",
      "parents": [
        "ea55500409651b0f8fd2c8a02fdbf245acc96dd8"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Sep 16 11:53:49 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Sep 19 22:14:55 2014 +0100"
      },
      "message": "Add missing GPL headers, and copyright claims that certainly apply.\n\n* Fix (a subset of)? files with non-trivial code that are missing GPL headers.\n\n* A few copyright claims added which I am certain apply, but which I had\n  missed out on the original commits.\n\nNB: Copyright claims are not exclusive and the addition of any copyright\nclaim should not be read as implying a lack of any further claims, or\ndenying the validity of any other claims.  All those with claims of\ncopyright over any portion of Quagga are welcome to submit them, ideally as\npatches to update copyright strings in files.\n"
    },
    {
      "commit": "8b16ed74fa61523c3348d2584b66a56a8ad4e350",
      "tree": "fe7232f0df942ca8f8bbc386f5089c13d1ec452a",
      "parents": [
        "f57000c0dbdd0e30e71b6651022392f284201e19"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Jul 06 22:33:48 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Aug 18 01:49:17 2014 +0200"
      },
      "message": "tests/bgpd: don\u0027t hardcode error number (fix f57000c)\n\nf57000c (\"bgpd: don\u0027t send NOTIFY twice for malformed attrs\") introduces\nBGP_ATTR_PARSE_ERROR_NOTIFYPLS as additional error code that implies the\ncaller should sent a NOTIFY and convert it to BGP_ATTR_PARSE_ERROR.\nSadly, the latter was hardcoded in bgp_mp_attr_test.c, which now didn\u0027t\nconsider the new value to be an error.\n\nMake the testcase treat all nonzero values as error without discern.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "aeef13b0d5b50a90f293c93eb5a34c2a099d140b",
      "tree": "b2463778c9b28b78af6ef722d2ac6b32df7ade6b",
      "parents": [
        "1cb9cf062ec3ed7a3f13fb5465eb5fb917ce3329"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jan 23 04:20:37 2013 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 01 17:55:04 2013 +0100"
      },
      "message": "tests: fix missing init in bgp_mp_attr_test.c\n\nturns out, bgp_mp_reach_parse really doesn\u0027t like getting garbage\nattribute input.  In particular, attr-\u003eextra better be NULL or we\nmerrily go trample random places (like our stack).\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c9e4f8623642fc005c97830256000bef5680aa26",
      "tree": "00a40a75d31cf30727c6dabf8066054e72092647",
      "parents": [
        "cccbc0151883cfb4f43d6fa0a4a3caedc27e6cf5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 14 10:42:39 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jun 19 13:40:22 2012 +0100"
      },
      "message": "tests: BGP unit tests to set BGP_OPT_NO_LISTEN so they can run\n\nBGP tests had been broken by auto-creation of listen socket. This allows\nthem to run at least, though at least 1 test seems to have other breakage,\naspath_test.\n"
    },
    {
      "commit": "1dba254e107dd0c4254d58e9304fc6293b46fd4d",
      "tree": "963153a04b71da32dd5906b80aaf24a1bb6c93e9",
      "parents": [
        "6ebeebb50610cc86d16e56bc1a33d63340094215"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue May 01 16:20:33 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed May 02 11:02:10 2012 +0100"
      },
      "message": "tests: Fix some compile errors and warnings\n\n* aspath_test.c: match changes in aspath_unintern. Fix printf size_t warning.\n* bgp_capability_test.c: compile warnings.\n* bgp_mp_attr_test.c: update for attr parser context struct\n* ecommunity_test.c: ecommunity_free/ecommunity\n* test-checksum.c: some unused vars and funcs without need of prototypes.\n"
    },
    {
      "commit": "6ebeebb50610cc86d16e56bc1a33d63340094215",
      "tree": "77c1f0d9d199a96c6d7ccba19922e5170682e87c",
      "parents": [
        "828f235df4b6a322aac58e1b7d5089c7f9d6cc0a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed May 02 11:01:01 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed May 02 11:02:10 2012 +0100"
      },
      "message": "Revert \"tests: disable broken tests/bgp_mp_attr_test.c\"\n\nThis reverts commit d78e2b8b562f8496aaf2977f7371415b71e82433. Next 2\ncommits fix it.\n"
    },
    {
      "commit": "d78e2b8b562f8496aaf2977f7371415b71e82433",
      "tree": "b2cadec93dcb3871fd1814b036613b7771805698",
      "parents": [
        "4b5a2103b7d03b9209cfa3668d9cebead697bc82"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue May 01 18:08:43 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Tue May 01 18:53:16 2012 +0200"
      },
      "message": "tests: disable broken tests/bgp_mp_attr_test.c\n\nit doesn\u0027t compile currently; it\u0027ll be fixed after the 0.99.21 release.\n\n  * tests/bgp_mp_attr_test.c: wrap in #if 0 for now\n\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "565b828dc00cafd477dd69ce15f0f551ece67710",
      "tree": "e1d5c6c38f89b6d022339df14c9b5224de7c0ca9",
      "parents": [
        "f8627ff1ef7642c8ee4758b1f046ef0d166dfbec"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Oct 10 21:08:33 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Oct 17 19:07:02 2011 +0400"
      },
      "message": "bgpd: add flag checks for MP_(UN)REACH_NLRI\n\n* bgp_attr.[ch]\n  * bgp_mp_reach_parse(): add extra arguments and a uniform flag\n    check block\n  * bgp_mp_unreach_parse(): idem\n  * bgp_attr_parse(): provide extra arguments\n* bgp_mp_attr_test.c\n  * parse_test(): justify respective calls\n"
    },
    {
      "commit": "42e6d745d105018a9469dabad65bd4cf942dcf3c",
      "tree": "9e653fe2e44d2e3f8510fcb8451931e3b6153ebc",
      "parents": [
        "beb1ca03bfe707d6d1fcad21fcbaa63af49c82f8"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jul 14 12:36:19 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Sep 29 22:14:11 2011 +0400"
      },
      "message": "bgpd: more SAFI fixes\n\n(with resolved conflict in bgpd/bgp_packet.c)\n\nTwo macros resolving to the same integer constant broke a case block and\na more thorough merge of BGP_SAFI_VPNV4 and BGP_SAFI_VPNV6 was\nperformed.\n\n* bgpd.h: MPLS-labeled VPN SAFI is AFI-independent, switch to single\n* macro\n* bgp_capability_test.c: update test data\n* bgp_mp_attr_test.c: idem\n* bgp_route.c: (bgp_maximum_prefix_overflow, bgp_table_stats_vty) update\n  macro and check conditions (where appropriate)\n* bgp_packet.c: (bgp_route_refresh_send, bgp_capability_send,\n  bgp_update_receive, bgp_route_refresh_receive): idem\n* bgp_open.c: (bgp_capability_vty_out, bgp_afi_safi_valid_indices,\n  bgp_open_capability_orf, bgp_open_capability): idem\n* bgp_attr.c: (bgp_mp_reach_parse, bgp_packet_attribute,\n  bgp_packet_withdraw): idem\n"
    },
    {
      "commit": "1eab26bbc67b1dd36ac44f7fdd427871b3c6b59b",
      "tree": "0b11e75b1c7cb267f311f2b918765a3a9f1c3a8b",
      "parents": [
        "3d52bb8085c32b54fa21d88588310716245291d4"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sat Jun 07 20:44:30 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sat Jun 07 20:44:30 2008 +0000"
      },
      "message": "[tests] BGP MP_(UN)REACH_NLRI unit tests (actual file..)\n\n2008-06-07 Paul Jakma \u003cpaul@jakma.org\n\n\t* bgp_mp_attr_test.c: MP_(UN)REACH_NLRI unit tests\n"
    }
  ]
}
