bgpd: OPEN parse errors should send OPEN_ERR and UNSPECIFIC subcode.

CEASE NOTIFICATION for OPEN parsing errors seems, to my reading of RFC4271
ยง6.2 to be incorrect.

* bgp_packet.c: (bgp_open_receive) OPEN/UNACEP_HOLDTIME is not an
  appropriate error subcode if bgp_open_option_parse returns an error.  Set
  it to "Unspecific". Where a more specific subcode is appropriate, then lower
  level should send that.
* bgp_open.c: (bgp_open_option_parse) Malformed OPENs should result in
  NOTIFICATION with OPEN error, and OPEN/UNSPECIFIC sub-code - not CEASE.
  (bgp_capability_{parse,orf_entry}) ditto.
* bgpd.h: Add BGP_NOTIFY_OPEN_UNSPECIFIC for 0.  Note that IANA lists 0 as
  reserved in the OPEN error sub-code registry, but RFC4271 page 32 says 0
  is the "Unspecific" OPEN error subcode.

  Have emailed IANA, they says it's a known errate to 4271 under review.

  Some inspiration from Cumulus' bgpd-capability-cleanup.patch, though
  v different result.
3 files changed