)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "98571dab5cbed20268d606d4275d9d7c85744515",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_attr.c",
      "new_id": "d74e0efc7f72d00f578739d4891e06d7fb4157b2",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_attr.c"
    },
    {
      "type": "modify",
      "old_id": "83bb6ca9d9019d1e4815e42f7e2e9600b6a169a3",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_mplsvpn.c",
      "new_id": "08a4272d6a4446a2a2f168f018beeac6b9106ccb",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_mplsvpn.c"
    },
    {
      "type": "modify",
      "old_id": "b89b6d8acc0abcddeede5a645c187fc49999e210",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_mplsvpn.h",
      "new_id": "3299b9cb9a0474cd6e48d735e1cd4de9e9305325",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_mplsvpn.h"
    },
    {
      "type": "modify",
      "old_id": "628c333abdc6ec206b7fd803dca0980d6677bf03",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_packet.c",
      "new_id": "740b0f1ce6038fbfe13ab5aa5498c6bc25d24473",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_packet.c"
    },
    {
      "type": "modify",
      "old_id": "b581fd9908828dbb0a641494935caa4ede09c8b4",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_route.c",
      "new_id": "2728b10311117eddf30aca4a29a68e9bc13c1eb8",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_route.c"
    },
    {
      "type": "modify",
      "old_id": "8064598c46d71549310410bf80ace6ada47f9c76",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_route.h",
      "new_id": "c803759256d77b8778e1e2db0465c9221a0391ed",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_route.h"
    }
  ]
}
