Revision history for Perl extension Net::BGP.
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