The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Perl extension Net::BGP.

0.18    2021-11-30

        Added by Wojciech Janiszewski <wojciech.janiszewski@gmail.com>:

        - Fix for outbound BGP messages getting lost in Net::BGP::Transport::_send_msg()
          when syswrite() sets EAGAIN on errno.

0.17    2019-08-03

        Added by Damian Ivereigh <damo@launtel.net.au>:

        - Fixed bug where the wrong aggregator variable was being tested.
        - Added an "OpaqueData" parameter and equivalent accessor sub "opaque_data()"
          to allow for the storage of arbitrary data with the peer. The main purpose
          of this is to allow the user to store extra data (a scalar or ref) with the
          peer that is then readable by the call back routines. I realise there are
          other ways to do this, but this seems much cleaner.
        - Fixes the situation where a socket is still in the list of sockets to be
          selected on, yet it has been closed. I believe this is caused when we
          create a new connection to a peer at the same time as we receive one.
          When we find ourselves with a bad FD, we re-check the list of sockets to
          select on.
        - It is possible to receive a notification message (error) in response to an
          OPEN message (e.g. an unrecognised ASN). We were getting a Finite State
          Machine error, now we call the notification callback.
        - _kill_session() will call _close_session() even if the socket is not open.
          This will finally terminate the session properly (stops some weird loops).
        - Added extra members of the notification state engine.
          Now calls _kill_session() rather than _cease() when the peer socket is closed.

0.16    2015-01-03
        Added by Joel Maslak <jmaslak@antelope.net>:
        - Feature: 32 bit ASN support (both as an old and a new speaker)
        - Bugfix: Lower four bits of path attribute flags were not being
          ignored as they should have been (see RFC4271 4.3 which says,
          "The lower-order four bits of the Attribute Flags octet are
          unused. They MUST be zero when sent and MUST be ignored when
          received."
        - Bugfix: Options to Peer should only match if there are no
          leading or trailing characters.
        - Bugfix: ASPath->length() counted elements in AS_SETs, when
          RFC says an AS_SET = 1 hop.  Also ensured AS_CONFED_* are counted
          as 0 hops.
        - Bugfix: Optional Transitive attributes can be expected to have
          the partial flag bit set when passing through a router that does
          not know what the attributes mean.  Added logic to handle
          receiving these.
        - Spelling: In Transport, _peer_announced_id is spelled right. Old
          spelling is also retained for compatability.
        - Bugfix: Documentation indicates Update->new() supports ASPaths in
          array reference form, but code didn't.  Added support to code for
          new ASPaths to be specified by array references (they create an
          AS_SEGMENT now, as expected from docs).
        - Bugfix: Support receipt of multiple capabilities in a single open
          message (BIRD requires this).

0.15    2014-12-18
        - Add configuration for whether or not to send capability
          announcements
            Added by Joel Maslak <jmaslak@antelope.net>
        - Bugfix - send route refresh optional parameter properly
            Added by Joel Maslak <jmaslak@antelope.net>
        - Send Cisco-style route refresh capability (capability code 128)
            Added by Joel Maslak <jmaslak@antelope.net>
        - Added ability to send MBGP information (only Unicast IPv4 now)
          to allow interoperability with devices that won't support route
          refresh without it.
            Added by Joel Maslak <jmaslak@antelope.net>
        - Renamed Refresh to AnnounceRefresh to more accurately reflect
          what it does.  Kept "Refresh" as an alias.
            Added by Joel Maslak <jmaslak@antelope.net>
        - Add patch by Stuart Pearlman to fix bug that prevents
          restarting a peer due to messages remaining in the front of
          the message queue.  See
          https://rt.cpan.org/Public/Ticket/Attachment/WithHeaders/570429
        - Add support for callback upon transition to established state
            Added by Joel Maslak <jmaslak@antelope.net>
        - Mikrotik routers will send non-multihop SYN/SYNACK with different
          TTLs than the actual OPEN message.  So it's possible to have, with
          the right misconfiguration (multihop on Perl side, non-multihop on
          Mikrotik side, more than one hop distance away from each other) to
          a case where you try to _clone() something that is already _clone-ed.
          This handles that case properly.
            Added by Joel Maslak <jmaslak@antelope.net>
        - Allow paths with > 255 ASes.  Note that there are still some limits
          that will be hit, but now this should process AS_SEGMENTs longer
          than 255 properly (without truncating/erroring on the attribute as
          previous versions did).  This will split long paths into multiple
          AS_SEGMENTs.
            Added by Joel Maslak <jmaslak@antelope.net>

0.14	2010-09-18
	- Fix validation of path attribute flags containing extended
          length attribute.
	  Fixed by Simon van der Linden <simon.vanderlinden@uclouvain.be>

0.13	2009-07-14
	- Correctly handle update packets with only withdrawn routes.
	  (RT #46496). Thanks to:
		Skewell <olivier.montanuy@m4x.org>
		Guillaume Lambert <guillaume.lambert-geek@laposte.net>
		Elisa Jasinska <elisa.jasinska@ams-ix.net>

0.12	2009-01-22
	- fixed bogus signature in version 0.11

0.11	2009-01-22
	- fix for AGGREGATOR_ID (Christian Zeng <christian@zengl.net>, RT #42226)

0.10
	- permit sending attributes with length>255 [RT #36945],
	  based on a patch submitted by Greg Skinner.

	- "use bytes" so length() works correctly in multi-byte locale

0.09  Thu Nov  8 17:31:40 UTC 2007

	- Added "listenaddr" feature from Guillaume Lambert.

0.08  2004-09-12
	- Added a refresh callback

0.07  Tue Oct 28 09:58:45 2003

	- Fixed signature test to skip all if Test::Signature is
	  not installed.

0.06  Thu Oct 28 00:42:45 2003

	- Fixed to buges reported by Robert (rt#4221):

	- Syswrite returns undef handled incorrectly

	- Receieving a partial BGP header failed

	- Added test for pod and signature

0.05  Fri Jul  4 00:36:26 2003

	- Removed the RIB.pm object - Forgot in last version!

	- Updated ASPath documentation (and some other documentation)

	- Try to avoid dying on error - only cease the transport connection

	- Net::BGP::Peer::is_established() added

	- TCP connections none-blocking not only on connect

0.04  Sun Jun  1 13:25:09 2003

	- Martin Lorensen <lorensen@cpan.org> have pushed this release
	  on behalf of the Stephen Scheck.

	- Added code to configure and later remove a dummy $SIG{PIPE}
	  handler if note is set to avoid a peer reset causes the server
	  to stop.

	- Split Update into Update and NLRI with is-a relation as
	  preperation for a RIB/Router module.

	- Split Peer into Peer and Transport with has-a relation
	  to resolve the old issue of cloned peer objects.

	- Fixed Process to handle peers with same IP local and/or remote.

	- Fixed a rare raise condision if a peer connected while outside
	  the Select statement

	- Added support for optional parameters and optional capabilities.

	- Added support for REFRESH messages.

	- Added refresh_callback which are called on new sessions and
	  when a REFRESH message is recieved.

	- Added reset_callback which are called on connection reset of
	  any kind.

	- Added "renew" constructor to Peer objects to reclaim an object
	  reference from the string representation of the same - Using
	  weak references (Scalar::Util).

	- Fixed SO_REUSEADDR - should be done BEFORE bind()

	- Added a simple asstring method for the Peer object. NOTE: Format
	  may change in the future!

	- Some methods in Peer (and Transport) maid public.

	- Added an ASPath object to handle complex ASPaths, including
	  confederations.

	- The new NLRI object is overloaded and has many new methods
	  compared to the potion of code moved from Update

	- A fairly large test suite added.

	- The RIB.pm placeholder has been removed. This functionality
	  will be implemented in a different module soon.

0.03  Sun Mar 16 13:31:55 2003
	- Added clone() method to Net::BGP::Update

	- Removed warning when encoding empty AS_PATH which is
		ok for IBGP peering sessions.

	- Removed warnings for missing mandatory path attributes
		for the case when no NLRI is present in an
		UPDATE message.

	- Fixed bug in _encode_prefix() in Net::BGP::Update
		which could cause 0.0.0.0/0 to be encoded into
		the prefix list when prefixes shorter than 32
		bits (i.e. non-host routes) are specified with
		all 4 octets (e.g. when 192.168/16 is given as
		192.168.0.0/16).

	Thanks to Martin Lorensen for identifying these problems.

0.02  Sun Jan 26 16:32:15 2003
	- Fixed symbolic method call syntax in _handle_event()
		which is not recognized prior to perl 5.6.0.

0.01  Fri Sep  6 16:09:32 2002
	- original version; created by h2xs 1.21 with options
		-A -X -n Net::BGP