Revision history for Perl extension Net::BGP. 0.18 2021-11-30 Added by Wojciech Janiszewski : - 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 : - 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 : - 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 - Bugfix - send route refresh optional parameter properly Added by Joel Maslak - Send Cisco-style route refresh capability (capability code 128) Added by Joel Maslak - 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 - Renamed Refresh to AnnounceRefresh to more accurately reflect what it does. Kept "Refresh" as an alias. Added by Joel Maslak - 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 - 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 - 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 0.14 2010-09-18 - Fix validation of path attribute flags containing extended length attribute. Fixed by Simon van der Linden 0.13 2009-07-14 - Correctly handle update packets with only withdrawn routes. (RT #46496). Thanks to: Skewell Guillaume Lambert Elisa Jasinska 0.12 2009-01-22 - fixed bogus signature in version 0.11 0.11 2009-01-22 - fix for AGGREGATOR_ID (Christian Zeng , 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 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