bgp_path¶
BGP path management module.
Border Gateway Protocol (BGP) is a standardized exterior gateway routing protocol designed to exchange routing and reachability information among autonomous systems (AS). In EOS, BGP follows RFC4271.
This module provides APIs to query BGP paths in the Adj-RIB-In.
An example of the API usage is in examples/BgpPathAgent.cpp.
-
namespace
eos
-
class
bgp_path_iter_t
: public eos::iter_base<bgp_path_t, bgp_path_iter_impl>¶ - #include <bgp_path.h>
An iterator that yields an bgp_path_t for each BGP path in Adj-RIB-In.
Private Functions
-
explicit
bgp_path_iter_t
(bgp_path_iter_impl*const)¶
Friends
- friend class bgp_path_iter_impl
-
explicit
-
class
bgp_path_handler
: public eos::base_handler<bgp_path_mgr, bgp_path_handler>¶ - #include <bgp_path.h>
The BGP path handler.
This class provides handler APIs to react to BGP path changes in Adj-RIB-In. New path updates are notified once BGP has converged. An iterator must be used to retreive the existing paths after BGP convergence. This is only supported under multi-agent mode.
Public Functions
-
explicit
bgp_path_handler
(bgp_path_mgr *mgr)¶
-
inline bgp_path_mgr *
get_bgp_path_mgr
() const¶
-
void
watch_all_paths
(bool)¶ Register to receive notifications when any path has changed.
-
void
watch_ipv4_unicast_paths
(bool)¶ Register to receive notifications when any IPv4 unicast path has changed.
-
void
watch_ipv6_unicast_paths
(bool)¶ Register to receive notifications when any IPv6 unicast path has changed.
-
virtual void
on_ipv4_unicast_path
(bgp_path_key_t const &path_key)¶ Handler called when a BGP IPv4 unicast path has changed in Adj-RIB-In.
-
virtual void
on_ipv4_unicast_bgp_converged
(bool converged)¶ Handler called when BGP convergence has changed in IPv4 unicast address family.
-
virtual void
on_ipv6_unicast_path
(bgp_path_key_t const &path_key)¶ Handler called when a BGP IPv6 unicast path has changed in Adj-RIB-In.
-
virtual void
on_ipv6_unicast_bgp_converged
(bool converged)¶ Handler called when BGP convergence has changed in IPv6 unicast address family.
-
explicit
-
class
bgp_path_mgr
: public eos::base_mgr<bgp_path_handler, bgp_afi_safi_t>¶ - #include <bgp_path.h>
A manager of BGP RIB paths.
Public Functions
-
virtual
~bgp_path_mgr
()¶
-
virtual bgp_path_iter_t
ipv4_unicast_path_iter
(bgp_path_options_t&) const = 0¶ Returns an iterator over IPv4 Unicast BGP paths in Adj-RIB-In, which contains unprocessed routing information that has been advertised to the local BGP speaker by its peers.
-
virtual bgp_path_t
ipv4_unicast_path
(bgp_path_key_t const&, bgp_path_options_t&) = 0¶ Returns an IPv4 Unicast BGP path in Adj-RIB-In with the corresponding path key. Returns an empty bgp_path_t if no matching path was found. This is only supported under multi-agent mode.
-
virtual bool
ipv4_unicast_bgp_convergence
() = 0¶ Returns true if bgp is converged for IPv4 Unicast address family This is only supported under multi-agent mode.
-
virtual bgp_path_iter_t
ipv6_unicast_path_iter
(bgp_path_options_t&) const = 0¶ Returns an iterator over IPv6 Unicast BGP paths in Adj-RIB-In, which contains unprocessed routing information that has been advertised to the local BGP speaker by its peers.
-
virtual bgp_path_t
ipv6_unicast_path
(bgp_path_key_t const&, bgp_path_options_t&) = 0¶ Returns an IPv6 Unicast BGP path in Adj-RIB-In with the corresponding path key. Returns an empty bgp_path_t if no matching path was found. This is only supported under multi-agent mode.
-
virtual bool
ipv6_unicast_bgp_convergence
() = 0¶ Returns true if bgp is converged for IPv6 Unicast address family This is only supported under multi-agent mode.
Protected Functions
-
bgp_path_mgr
()¶
Private Members
-
bgp_path_mgr
Friends
- friend class bgp_path_handler
-
virtual
-
class
Type definitions in bgp_path¶
-
namespace
eos
Enums
-
class
bgp_path_attr_fields_t
¶ - #include <bgp_path.h>
The BGP path option to enable lookup of additional path attributes fields.
Public Functions
-
bgp_path_attr_fields_t
()¶
-
explicit
bgp_path_attr_fields_t
(bool next_hop)¶ Create BGP path attribute field options.
-
bgp_path_attr_fields_t
(const bgp_path_attr_fields_t &other)¶
-
bgp_path_attr_fields_t &
operator=
(bgp_path_attr_fields_t const &other)¶
-
bgp_path_attr_fields_t
(bgp_path_attr_fields_t &&other) noexcept¶
-
bgp_path_attr_fields_t &
operator=
(bgp_path_attr_fields_t &&other) noexcept¶
-
bool
next_hop
() const¶ Getter for ‘next_hop’: true if these path attribute options enable next hop lookup, false otherwise.
-
void
next_hop_is
(bool next_hop)¶ Setter for ‘next_hop’.
-
bool
community_list
() const¶ Getter for ‘community_list’: true if these path attribute options enable community list lookup, false otherwise.
-
void
community_list_is
(bool community_list)¶ Setter for ‘community_list’.
-
bool
operator==
(bgp_path_attr_fields_t const &other) const¶
-
bool
operator!=
(bgp_path_attr_fields_t const &other) const¶
-
uint32_t
hash
() const¶ The hash function for type bgp_path_attr_fields_t.
-
void
mix_me
(hash_mix &h) const¶ The hash mix function for type bgp_path_attr_fields_t.
Public Static Functions
-
static void
operator delete
(void*) noexcept¶
Friends
-
friend std::ostream &
operator<<
(std::ostream &os, const bgp_path_attr_fields_t &obj)¶ A utility stream operator that adds a string representation of bgp_path_attr_fields_t to the ostream.
-
-
class
bgp_path_options_t
¶ - #include <bgp_path.h>
The BGP path lookup options.
Public Functions
-
bgp_path_options_t
()¶
-
explicit
bgp_path_options_t
(bgp_receive_route_stage_t receive_route_stage)¶ Create BGP path options.
-
bgp_path_options_t
(const bgp_path_options_t &other)¶
-
bgp_path_options_t &
operator=
(bgp_path_options_t const &other)¶
-
bgp_path_options_t
(bgp_path_options_t &&other) noexcept¶
-
bgp_path_options_t &
operator=
(bgp_path_options_t &&other) noexcept¶
-
bgp_receive_route_stage_t
receive_route_stage
() const¶ Getter for ‘receive_route_stage’: The received routes stage of a path to lookup when retrieving the path entry.
-
void
receive_route_stage_is
(bgp_receive_route_stage_t receive_route_stage)¶ Setter for ‘receive_route_stage’.
-
bgp_path_attr_fields_t
path_attr_fields
() const¶ Getter for ‘path_attr_fields’: The additional path attributes to populate when retrieving the path entry.
-
void
path_attr_fields_is
(bgp_path_attr_fields_t const &path_attr_fields)¶ Setter for ‘path_attr_fields’.
-
void
path_attr_fields_is
(bgp_path_attr_fields_t &&path_attr_fields)¶ Moving Setter for ‘path_attr_fields’.
-
bool
operator==
(bgp_path_options_t const &other) const¶
-
bool
operator!=
(bgp_path_options_t const &other) const¶
-
uint32_t
hash
() const¶ The hash function for type bgp_path_options_t.
-
void
mix_me
(hash_mix &h) const¶ The hash mix function for type bgp_path_options_t.
Public Static Functions
-
static void
operator delete
(void*) noexcept¶
Friends
-
friend std::ostream &
operator<<
(std::ostream &os, const bgp_path_options_t &obj)¶ A utility stream operator that adds a string representation of bgp_path_options_t to the ostream.
-
-
class
bgp_path_attr_t
¶ - #include <bgp_path.h>
The BGP path attribute entry.
Public Functions
-
bgp_path_attr_t
()¶
-
explicit
bgp_path_attr_t
(uint8_t origin, uint32_t med, uint32_t local_pref)¶
-
bgp_path_attr_t
(const bgp_path_attr_t &other)¶
-
bgp_path_attr_t &
operator=
(bgp_path_attr_t const &other)¶
-
bgp_path_attr_t
(bgp_path_attr_t &&other) noexcept¶
-
bgp_path_attr_t &
operator=
(bgp_path_attr_t &&other) noexcept¶
-
uint8_t
origin
() const¶ Getter for ‘origin’: The route origin.
-
void
origin_is
(uint8_t origin)¶ Setter for ‘origin’.
-
uint32_t
med
() const¶ Getter for ‘med’: The Multi Exit Discriminator for the route.
-
void
med_is
(uint32_t med)¶ Setter for ‘med’.
-
uint32_t
local_pref
() const¶ Getter for ‘local_pref’: The I-BGP Local preference indicator.
-
void
local_pref_is
(uint32_t local_pref)¶ Setter for ‘local_pref’.
-
std::unordered_set<uint32_t> const &
community_list
() const¶ Getter for ‘community_list’: The route community list.
-
void
community_list_is
(std::unordered_set<uint32_t> const &community_list)¶ Setter for ‘community_list’.
-
void
community_list_is
(std::unordered_set<uint32_t> &&community_list)¶ Moving Setter for ‘community_list’.
-
void
community_list_set
(uint32_t const &value)¶ Inserts one community_list of ‘value’ to the set.
-
void
community_list_set
(uint32_t &&value)¶ Inserts one community_list of ‘value’ to the set.
-
void
community_list_del
(uint32_t const &value)¶ Deletes one community_list of ‘value’ from the set.
-
bool
operator==
(bgp_path_attr_t const &other) const¶
-
bool
operator!=
(bgp_path_attr_t const &other) const¶
-
uint32_t
hash
() const¶ The hash function for type bgp_path_attr_t.
-
void
mix_me
(hash_mix &h) const¶ The hash mix function for type bgp_path_attr_t.
Public Static Functions
-
static void
operator delete
(void*) noexcept¶
Friends
-
friend std::ostream &
operator<<
(std::ostream &os, const bgp_path_attr_t &obj)¶ A utility stream operator that adds a string representation of bgp_path_attr_t to the ostream.
-
-
class
bgp_path_key_t
¶ - #include <bgp_path.h>
The key which uniquely identifies a BGP path. Supports IPV4/IPV6 Unicast.
Public Functions
-
bgp_path_key_t
()¶
-
explicit
bgp_path_key_t
(ip_prefix_t const &prefix, ip_addr_t const &peer_addr, std::string const &vrf_name)¶ Create BGP path key.
-
bgp_path_key_t
(const bgp_path_key_t &other)¶
-
bgp_path_key_t &
operator=
(bgp_path_key_t const &other)¶
-
bgp_path_key_t
(bgp_path_key_t &&other) noexcept¶
-
bgp_path_key_t &
operator=
(bgp_path_key_t &&other) noexcept¶
-
ip_prefix_t
prefix
() const¶ Getter for ‘prefix’: IPv4/IPv6 network prefix.
-
void
prefix_is
(ip_prefix_t const &prefix)¶ Setter for ‘prefix’.
-
void
prefix_is
(ip_prefix_t &&prefix)¶ Moving Setter for ‘prefix’.
-
bool
operator==
(bgp_path_key_t const &other) const¶
-
bool
operator!=
(bgp_path_key_t const &other) const¶
-
bool
operator<
(bgp_path_key_t const &other) const¶
-
uint32_t
hash
() const¶ The hash function for type bgp_path_key_t.
-
void
mix_me
(hash_mix &h) const¶ The hash mix function for type bgp_path_key_t.
Public Static Functions
-
static void
operator delete
(void*) noexcept¶
Friends
-
friend std::ostream &
operator<<
(std::ostream &os, const bgp_path_key_t &obj)¶ A utility stream operator that adds a string representation of bgp_path_key_t to the ostream.
-
-
class
bgp_path_t
¶ - #include <bgp_path.h>
The BGP path entry.
Public Functions
-
bgp_path_t
()¶
-
explicit
bgp_path_t
(bgp_path_key_t const &path_key)¶
-
bgp_path_t
(const bgp_path_t &other)¶
-
bgp_path_t &
operator=
(bgp_path_t const &other)¶
-
bgp_path_t
(bgp_path_t &&other) noexcept¶
-
bgp_path_t &
operator=
(bgp_path_t &&other) noexcept¶
-
bgp_path_key_t
path_key
() const¶ Getter for ‘path_key’: The BGP path key.
-
void
path_key_is
(bgp_path_key_t const &path_key)¶ Setter for ‘path_key’.
-
void
path_key_is
(bgp_path_key_t &&path_key)¶ Moving Setter for ‘path_key’.
-
bgp_path_attr_t
path_attr
() const¶ Getter for ‘path_attr’: The BGP path attributes.
-
void
path_attr_is
(bgp_path_attr_t const &path_attr)¶ Setter for ‘path_attr’.
-
void
path_attr_is
(bgp_path_attr_t &&path_attr)¶ Moving Setter for ‘path_attr’.
-
bool
operator==
(bgp_path_t const &other) const¶
-
bool
operator!=
(bgp_path_t const &other) const¶
-
uint32_t
hash
() const¶ The hash function for type bgp_path_t.
-
void
mix_me
(hash_mix &h) const¶ The hash mix function for type bgp_path_t.
Public Static Functions
-
static void
operator delete
(void*) noexcept¶
Friends
-
friend std::ostream &
operator<<
(std::ostream &os, const bgp_path_t &obj)¶ A utility stream operator that adds a string representation of bgp_path_t to the ostream.
-
-
class