## 8.8 - 2025-02-06
    * Improve default multiproto capability announcement selection.
      The default MP capability is only set if no other capability is
      configured on the neighbor.

    * The `reject as-set` configuration option now defaults to yes.
      Route announcements with AS_SET segments in the AS_PATH Attribute
      will be rejected. See draft-ietf-idr-deprecate-as-set-confed-set
      for more information.

    * The RFC 8654 Extended Message configuration changed from
      "announce extended (yes|no|enforce)" to
      "announce extended message (yes|no|enforce)"

    * RFC 8950 - Extended nexthop encoding support in the RIB.

    * Preliminary support for EVPN in the RIB.

    * When "transparent-as yes" is set, well-known BGP communities are
      passed on according to RFC 7947. This means that IX Route Servers
      transparently pass through NO_EXPORT, NO_ADVERTISE, etc.

    * Fix an error introduced in the previous release that prevented
      sessions from staying down.

    * Fix add-path send support using best, ecmp, or as-wide-best mode
      which was not working correctly in the previous release.

    * Fix FIB handling on FreeBSD when an interface is destroyed.

    * Make the example bgpd.conf work out of the box with 4byte ASN.

## 8.7 - 2024-12-16
    * Cache the Adj-RIB-Out for sessions that have not been down for
      more than 1h. This significantly improves synchronisation time
      of peers that flap.

    * Implement RFC 8538: Notification Message Support for
      BGP Graceful Restart.

    * Add support for RFC 8654, extended messages.

    * In bgplgd add additional endpoints to query the Adj-RIB-In and
      Adj-RIB-Out.

    * Bump internal message size limit to 128k and handle up to 10 000
      ASPA SPAS entries as suggested in draft-ietf-sidrops-aspa-profile.

    * Various improvements to the ibuf API including a new reader API
      which is used to make all message parsing in bgpd memory safe.

    * Added support for IPsec and TCP MD5 to RTR sessions.

## 8.6 - 2024-09-19
    * Filtered prefixes are now included in the Local-RIB if the config
      option 'rde rib Loc-RIB include filtered' is set.

    * Add 'bgpctl show rib filtered' to show filtered prefixes.

    * Add 'min-version' RTR config option and default to RTR version 1.
      Set min-version to 2 to enable draft-ietf-sidrops-8210bis-14 and
      ASPA support or better define the ASPA table in the config.

    * Adjust RTR ASPA pdu parser to follow draft-ietf-sidrops-8210bis-14

    * Check the max_prefix and max_out_prefix limits on config reload.

    * Fix race condition between TCP-MD5 key removal and session closure
      to ensure all messages are sent with the proper TCP-MD5 signature.

    * Fix 'nexthop qualify via bgp' by re-evaluating the nexthops when
      a BGP route is added to the FIB.

    * Handle the CLUSTER_LIST attribute according to RFC7606.

    * Fix some undefined or non-portable behaviour when handling
      NULL / 0-sized objects.

## 8.5 - 2024-06-26
    * Include OpenBSD 7.5 errata 004:
      Repair a withdraw desyncronization problem in bgpd(8).
      Affected are OpenBGPD 8.2, 8.3 and 8.4.

    * Fix Linux TCP MD5 autoconf detection and improve the code to work
      in all cases.

    * Double peer description length to 64 characters.

    * Improve handling of bgpd AFI IPv4 sessions over IPv6 only links.

    * Sessions over IPv6 link-local addresses are now always considered
      to be connected.

    * Allow operators to enforce the presence of certain capabilities.

    * Improve capability negotiation and remove 'announce capabilities'.
      The 'announce capabilities [yes|no]' neighbor config option needs to be
      removed from configuration files. Instead individual capabilities
      need to be disabled.

    * Improve negotiation of the multi-protocol capability and the fallback
      to IPv4 only mode.

    * Mark RTR and IPv6 BGP packets with DSCP CS6 (network control).

    * Increase RTR PDU limit to 48k and limit number of SPAS to 10'000.

    * Convert the remaining session engine parsers to the new ibuf API.

    * Various changes to autoconf and portable headers for NetBSD support.

## 8.4 - 2024-03-07
    * Rewrite the internal message passing mechanism to use a new
      memory-safe API.

    * Rewrite most protocol parsers to use the new memory-safe API.
      Convert the UPDATE parser, all of RTR, as well as both the MRT
      dump code in bgpd and the parser in bgpctl.

    * Improve RTR logging, error handling and version negotiation.

    * Switch to autoconf 2.71 to generate the supplied configure scripts.


## 8.3 - 2023-10-13
    * bgpd 8.1 and 8.2 could send a bad COMMUNITY attribute when
      non-transitive ext-communities are present. A workaround is to
      add a filter rule to clear non-transitive ext-communities:
            match to ebgp set ext-community delete ovs *
      This fix is included in OpenBSD 7.4.

    * Fix a possible fatal error in the RDE when "announce add-path send all"
      is used. The error is triggered by an ineligible path which is wrongly
      distributed.

    * Fix selection of the local nexthop for the alternate address family.
      This is used by 'announce IPv6 unicast' over an IPv4 session or
      vice-versa.


## 8.2 - 2023-10-02
    * Update ASPA support to follow draft-ietf-sidrops-aspa-verification-16
      and draft-ietf-sidrops-aspa-profile-16 by making the ASPA lookup
      tables AFI-agnostic.

    * Fix a fatal error in the Linux netlink parser which was triggered
      because of a mismatched netlink message size.

    * Rework UPDATE message generation to use the new ibuf API instead
      of the hand-rolled solution before. 

    * Improve error message in bgpctl for features not supported by the
      portable version of OpenBGPD.

    * Adjusted example GRACEFUL_SHUTDOWN filter rule in the example config
      to only match on ebgp sessions.

## 8.1 - 2023-07-12
    * Include OpenBSD 7.3 errata 002:
      Avoid fatal errors in bgpd(8) due to incorrect refcounting and
      mishandling of ASPA objects. Fix bgpctl(8) 'show rib in' by renaming
      'invalid' into 'disqualified'.

    * Include OpenBSD 7.3 errata 006:
      Incorrect length handling of path attributes in bgpd(8) can lead to a
      session reset.

    * Include OpenBSD 7.3 errata 009:
      When tracking nexthops over IPv6 multipath routes, or when receiving
      a NOTIFICATION while reaching an internal limit, bgpd(8) could crash.

      When checking the next hop for IPv6 multipath routes, or when receiving
      a NOTIFICATION while reaching an internal limit, bgpd(8) could crash.

    * Add configure options to adjust WWW_USER and wwwrunstatedir.

    * Fix 'ext-community * *' matching which also affects filters removing
      all ext-commuinites.

    * Limit the socket buffer size to 64k for all sessions.
      Limiting the buffer size to a reasonable size ensures that not too many
      updates end up queued in the TCP stack.


## 8.0 - 2023-05-04
    * Include OpenBSD 7.3 errata 001 (link: https://www.openbsd.org/errata73.html#p001_bgpd):
      A new ASPA object appeared in the RPKI ecosystem and exposed bugs in
      bgpd(8) and rpki-client(8).

    * Introduce a semaphore to protect intermittent RTR session data 
      from being published to the RDE.

    * Add first version of flowspec support. Right now only announcement
      of flowspec rules is possible.

    * Improve and extend the bgpctl parser to handle commands like
      `bgpctl show rib 192.0.2.0/24 detail`. Also add various flowspec
      specific commands.

## This document contains the changelogs as posted in each release announcement on the OpenBSD mailing list.