[![Build Status](https://travis-ci.org/jmaslak/Raku-Net-BGP.svg?branch=master)](https://travis-ci.org/jmaslak/Raku-Net-BGP) NAME ==== Net::BGP - BGP Server Support SYNOPSIS ======== use Net::BGP my $bgp = Net::BGP.new( port => 179 ); # Create a server object DESCRIPTION =========== This provides framework to support the BGP protocol within a Raku application. This is a pre-release of the final version, and as such the interface may change. The best way of seeing how this module works is to look at `bin/bgpmon.pl6` and examining it. If you are interested in using this module, and have any suggestions at all, please let me know! ATTRIBUTES ========== port ---- The port attribute defaults to 179 (the IETF assigned port default), but can be set to any value between 0 and 65535. It can also be set to Nil, meaning that it will be an ephimeral port that will be set once the listener is started. listen-host ----------- The host to listen on (defaults to the IPv4 any-host IP, 0.0.0.0). server-channel -------------- Returns the channel communicate to command the BGP server process. This will not be defined until `listen()` is executed. It is intended that user code will send messages to the BGP server. user-channel ------------ Returns the channel communicate for the BGP server process to communicate to user code. add-unknown-peers ----------------- If this is `True` (default is `False`), connections from unknown peers are allowed. When they first connect, a new peer is added to the peer list using the remote address and the ASN sent in the peer's OPEN message. METHODS ======= listen ------ $bgp.listen(); Starts BGP listener, on the port provided in the port attribute. For a given instance of the BGP class, only one listener can be active at any point in time. peer-add -------- $bgp.peer-add( :peer-asn(65001), :peer-ip("192.0.2.1"), :peer-port(179), :passive(False), :ipv4(True), :ipv6(False), :md5($key), ); Add a new peer to the BGP server. Providing `peer-asn` and `peer-ip` is required. However, if the `peer-port` is not provided, `179` will be used. If `passive` is not used, the connection will not be configured as a passive connection. If `ipv4` is not provided, it defaults to `True` (enabling the IPv4 address family), while `ipv6` defaults to `False` (disabling the IPv6 address family). If an `md5` parameter is provided, this is used to set up MD5 associations (on OSes that support this via the `TCP::LowLevel` module). PATRONS ======= Mythic Beasts, a managed and unmanaged VPS, dedicated server, web and email hosting company (among many other services) generously donated the use of a VPS host with IPv4 and IPv6 BGP feeds for the development of this module. Check them out at [https://www.mythic-beasts.com/](https://www.mythic-beasts.com/). AUTHOR ====== Joelle Maslak COPYRIGHT AND LICENSE ===================== Copyright © 2018-2020 Joelle Maslak This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.