txt: ## dist_zef-jmaslak-Net-BGP.md
  # 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/>.
  
  # AUTHOR
  
  Joelle Maslak [jmaslak@antelope.net](mailto:jmaslak@antelope.net)
  
  # 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.
  