OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
EvpnPrefix Class Reference

#include <evpn_route.h>

Collaboration diagram for EvpnPrefix:

Public Types

enum  RouteType {
  Unspecified = 0, AutoDiscoveryRoute = 1, MacAdvertisementRoute = 2, InclusiveMulticastRoute = 3,
  SegmentRoute = 4, IpPrefixRoute = 5, SelectiveMulticastRoute = 6
}
 

Public Member Functions

 EvpnPrefix ()
 
 EvpnPrefix (const RouteDistinguisher &rd, const EthernetSegmentId &esi, uint32_t tag)
 
 EvpnPrefix (const RouteDistinguisher &rd, const MacAddress &mac_addr, const IpAddress &ip_address)
 
 EvpnPrefix (const RouteDistinguisher &rd, uint32_t tag, const MacAddress &mac_addr, const IpAddress &ip_address)
 
 EvpnPrefix (const RouteDistinguisher &rd, uint32_t tag, const IpAddress &ip_address)
 
 EvpnPrefix (const RouteDistinguisher &rd, const EthernetSegmentId &esi, const IpAddress &ip_address)
 
 EvpnPrefix (const RouteDistinguisher &rd, const IpAddress &ip_address, uint8_t ip_prefixlen)
 
 EvpnPrefix (const RouteDistinguisher &rd, uint32_t tag, const IpAddress &source, const IpAddress &group, const IpAddress &originator)
 
void BuildProtoPrefix (BgpProtoPrefix *proto_prefix, const BgpAttr *attr, uint32_t label, uint32_t l3_label=0) const
 
std::string ToString () const
 
std::string ToXmppIdString () const
 
int CompareTo (const EvpnPrefix &rhs) const
 
bool operator== (const EvpnPrefix &rhs) const
 
bool operator!= (const EvpnPrefix &rhs) const
 
bool operator< (const EvpnPrefix &rhs) const
 
bool operator> (const EvpnPrefix &rhs) const
 
uint8_t type () const
 
const RouteDistinguisherroute_distinguisher () const
 
const EthernetSegmentIdesi () const
 
uint32_t tag () const
 
const MacAddressmac_addr () const
 
Address::Family family () const
 
const IpAddressaddr () const
 
IpAddress ip_address () const
 
IpAddress group () const
 
IpAddress source () const
 
uint8_t ip_address_length () const
 
uint8_t prefixlen () const
 
const Ip4Address ip4_addr () const
 
const Ip6Address ip6_addr () const
 
Ip4Prefix inet_prefix () const
 
Inet6Prefix inet6_prefix () const
 
void set_route_distinguisher (const RouteDistinguisher &rd)
 
bool IsMoreSpecific (const EvpnPrefix &rhs) const
 

Static Public Member Functions

static int FromProtoPrefix (BgpServer *server, const BgpProtoPrefix &proto_prefix, const BgpAttr *attr, const Address::Family family, EvpnPrefix *evpn_prefix, BgpAttrPtr *new_attr, uint32_t *label, uint32_t *l3_label=NULL)
 
static EvpnPrefix FromString (const std::string &str, boost::system::error_code *errorp=NULL)
 

Static Public Attributes

static const EvpnPrefix kNullPrefix
 
static const uint32_t kInvalidLabel = 0x01000000
 
static const uint32_t kNullTag = 0
 
static const uint32_t kMaxTag = 0xFFFFFFFF
 
static const uint32_t kMaxVni = 0x00FFFFFF
 
static const int32_t kMaxVniSigned
 
static const size_t kRdSize = RouteDistinguisher::kSize
 
static const size_t kEsiSize = EthernetSegmentId::kSize
 
static const size_t kTagSize = 4
 
static const size_t kIp4AddrSize = 4
 
static const size_t kIp6AddrSize = 16
 
static const size_t kMacSize = MacAddress::size()
 
static const size_t kLabelSize = BgpProtoPrefix::kLabelSize
 
static const size_t kMinAutoDiscoveryRouteSize
 
static const size_t kMinMacAdvertisementRouteSize
 
static const size_t kMinInclusiveMulticastRouteSize
 
static const size_t kMinSelectiveMulticastRouteSize
 
static const size_t kMinSegmentRouteSize
 
static const size_t kMinInetPrefixRouteSize
 
static const size_t kMinInet6PrefixRouteSize
 

Private Member Functions

size_t GetIpAddressSize () const
 
void ReadIpAddress (const BgpProtoPrefix &proto_prefix, size_t ip_offset, size_t ip_size, size_t ip_psize)
 
void ReadSource (const BgpProtoPrefix &proto_prefix, size_t ip_offset, size_t ip_size)
 
void ReadGroup (const BgpProtoPrefix &proto_prefix, size_t ip_offset, size_t ip_size)
 
void WriteIpAddress (BgpProtoPrefix *proto_prefix, size_t ip_offset) const
 
void WriteSource (BgpProtoPrefix *proto_prefix, size_t ip_offset) const
 
void WriteGroup (BgpProtoPrefix *proto_prefix, size_t ip_offset) const
 

Static Private Member Functions

static bool GetSourceFromString (EvpnPrefix *prefix, const std::string &str, size_t pos1, size_t *pos2, boost::system::error_code *errorp)
 
static bool GetGroupFromString (EvpnPrefix *prefix, const std::string &str, size_t pos1, size_t *pos2, boost::system::error_code *errorp)
 

Private Attributes

uint8_t type_
 
RouteDistinguisher rd_
 
EthernetSegmentId esi_
 
uint32_t tag_
 
MacAddress mac_addr_
 
Address::Family family_
 
IpAddress ip_address_
 
IpAddress source_
 
IpAddress group_
 
uint8_t ip_prefixlen_
 
uint8_t flags_
 

Detailed Description

Definition at line 24 of file bgp/evpn/evpn_route.h.

Member Enumeration Documentation

Enumerator
Unspecified 
AutoDiscoveryRoute 
MacAdvertisementRoute 
InclusiveMulticastRoute 
SegmentRoute 
IpPrefixRoute 
SelectiveMulticastRoute 

Definition at line 48 of file bgp/evpn/evpn_route.h.

Constructor & Destructor Documentation

EvpnPrefix::EvpnPrefix ( )

Definition at line 113 of file bgp/evpn/evpn_route.cc.

EvpnPrefix::EvpnPrefix ( const RouteDistinguisher rd,
const EthernetSegmentId esi,
uint32_t  tag 
)

Definition at line 120 of file bgp/evpn/evpn_route.cc.

EvpnPrefix::EvpnPrefix ( const RouteDistinguisher rd,
const MacAddress mac_addr,
const IpAddress ip_address 
)

Definition at line 130 of file bgp/evpn/evpn_route.cc.

EvpnPrefix::EvpnPrefix ( const RouteDistinguisher rd,
uint32_t  tag,
const MacAddress mac_addr,
const IpAddress ip_address 
)

Definition at line 146 of file bgp/evpn/evpn_route.cc.

EvpnPrefix::EvpnPrefix ( const RouteDistinguisher rd,
uint32_t  tag,
const IpAddress ip_address 
)

Definition at line 158 of file bgp/evpn/evpn_route.cc.

EvpnPrefix::EvpnPrefix ( const RouteDistinguisher rd,
const EthernetSegmentId esi,
const IpAddress ip_address 
)

Definition at line 173 of file bgp/evpn/evpn_route.cc.

EvpnPrefix::EvpnPrefix ( const RouteDistinguisher rd,
const IpAddress ip_address,
uint8_t  ip_prefixlen 
)

Definition at line 189 of file bgp/evpn/evpn_route.cc.

EvpnPrefix::EvpnPrefix ( const RouteDistinguisher rd,
uint32_t  tag,
const IpAddress source,
const IpAddress group,
const IpAddress originator 
)

Definition at line 205 of file bgp/evpn/evpn_route.cc.

Here is the call graph for this function:

Member Function Documentation

const IpAddress& EvpnPrefix::addr ( ) const
inline

Definition at line 106 of file bgp/evpn/evpn_route.h.

void EvpnPrefix::BuildProtoPrefix ( BgpProtoPrefix proto_prefix,
const BgpAttr attr,
uint32_t  label,
uint32_t  l3_label = 0 
) const

Definition at line 451 of file bgp/evpn/evpn_route.cc.

Here is the call graph for this function:

int EvpnPrefix::CompareTo ( const EvpnPrefix rhs) const

Definition at line 617 of file bgp/evpn/evpn_route.cc.

const EthernetSegmentId& EvpnPrefix::esi ( ) const
inline

Definition at line 102 of file bgp/evpn/evpn_route.h.

Address::Family EvpnPrefix::family ( ) const
inline

Definition at line 105 of file bgp/evpn/evpn_route.h.

int EvpnPrefix::FromProtoPrefix ( BgpServer server,
const BgpProtoPrefix proto_prefix,
const BgpAttr attr,
const Address::Family  family,
EvpnPrefix evpn_prefix,
BgpAttrPtr new_attr,
uint32_t *  label,
uint32_t *  l3_label = NULL 
)
static

Definition at line 231 of file bgp/evpn/evpn_route.cc.

Here is the call graph for this function:

EvpnPrefix EvpnPrefix::FromString ( const std::string &  str,
boost::system::error_code *  errorp = NULL 
)
static

Definition at line 719 of file bgp/evpn/evpn_route.cc.

Here is the call graph for this function:

bool EvpnPrefix::GetGroupFromString ( EvpnPrefix prefix,
const std::string &  str,
size_t  pos1,
size_t *  pos2,
boost::system::error_code *  errorp 
)
staticprivate

Definition at line 698 of file bgp/evpn/evpn_route.cc.

size_t EvpnPrefix::GetIpAddressSize ( ) const
private

Definition at line 1089 of file bgp/evpn/evpn_route.cc.

bool EvpnPrefix::GetSourceFromString ( EvpnPrefix prefix,
const std::string &  str,
size_t  pos1,
size_t *  pos2,
boost::system::error_code *  errorp 
)
staticprivate

Definition at line 677 of file bgp/evpn/evpn_route.cc.

IpAddress EvpnPrefix::group ( ) const
inline

Definition at line 108 of file bgp/evpn/evpn_route.h.

Inet6Prefix EvpnPrefix::inet6_prefix ( ) const
inline

Definition at line 117 of file bgp/evpn/evpn_route.h.

Ip4Prefix EvpnPrefix::inet_prefix ( ) const
inline

Definition at line 114 of file bgp/evpn/evpn_route.h.

const Ip4Address EvpnPrefix::ip4_addr ( ) const
inline

Definition at line 112 of file bgp/evpn/evpn_route.h.

const Ip6Address EvpnPrefix::ip6_addr ( ) const
inline

Definition at line 113 of file bgp/evpn/evpn_route.h.

IpAddress EvpnPrefix::ip_address ( ) const
inline

Definition at line 107 of file bgp/evpn/evpn_route.h.

uint8_t EvpnPrefix::ip_address_length ( ) const

Definition at line 1079 of file bgp/evpn/evpn_route.cc.

bool EvpnPrefix::IsMoreSpecific ( const EvpnPrefix rhs) const

Definition at line 662 of file bgp/evpn/evpn_route.cc.

Here is the call graph for this function:

const MacAddress& EvpnPrefix::mac_addr ( ) const
inline

Definition at line 104 of file bgp/evpn/evpn_route.h.

bool EvpnPrefix::operator!= ( const EvpnPrefix rhs) const
inline

Definition at line 91 of file bgp/evpn/evpn_route.h.

Here is the call graph for this function:

bool EvpnPrefix::operator< ( const EvpnPrefix rhs) const
inline

Definition at line 94 of file bgp/evpn/evpn_route.h.

Here is the call graph for this function:

bool EvpnPrefix::operator== ( const EvpnPrefix rhs) const
inline

Definition at line 88 of file bgp/evpn/evpn_route.h.

Here is the call graph for this function:

bool EvpnPrefix::operator> ( const EvpnPrefix rhs) const
inline

Definition at line 97 of file bgp/evpn/evpn_route.h.

Here is the call graph for this function:

uint8_t EvpnPrefix::prefixlen ( ) const
inline

Definition at line 111 of file bgp/evpn/evpn_route.h.

void EvpnPrefix::ReadGroup ( const BgpProtoPrefix proto_prefix,
size_t  ip_offset,
size_t  ip_size 
)
private

Definition at line 1116 of file bgp/evpn/evpn_route.cc.

void EvpnPrefix::ReadIpAddress ( const BgpProtoPrefix proto_prefix,
size_t  ip_offset,
size_t  ip_size,
size_t  ip_psize 
)
private

Definition at line 1135 of file bgp/evpn/evpn_route.cc.

void EvpnPrefix::ReadSource ( const BgpProtoPrefix proto_prefix,
size_t  ip_offset,
size_t  ip_size 
)
private

Definition at line 1097 of file bgp/evpn/evpn_route.cc.

const RouteDistinguisher& EvpnPrefix::route_distinguisher ( ) const
inline

Definition at line 101 of file bgp/evpn/evpn_route.h.

void EvpnPrefix::set_route_distinguisher ( const RouteDistinguisher rd)
inline

Definition at line 120 of file bgp/evpn/evpn_route.h.

IpAddress EvpnPrefix::source ( ) const
inline

Definition at line 109 of file bgp/evpn/evpn_route.h.

uint32_t EvpnPrefix::tag ( ) const
inline

Definition at line 103 of file bgp/evpn/evpn_route.h.

string EvpnPrefix::ToString ( ) const

Definition at line 1022 of file bgp/evpn/evpn_route.cc.

Here is the call graph for this function:

string EvpnPrefix::ToXmppIdString ( ) const

Definition at line 1065 of file bgp/evpn/evpn_route.cc.

Here is the call graph for this function:

uint8_t EvpnPrefix::type ( ) const
inline

Definition at line 100 of file bgp/evpn/evpn_route.h.

void EvpnPrefix::WriteGroup ( BgpProtoPrefix proto_prefix,
size_t  ip_offset 
) const
private

Definition at line 1181 of file bgp/evpn/evpn_route.cc.

void EvpnPrefix::WriteIpAddress ( BgpProtoPrefix proto_prefix,
size_t  ip_offset 
) const
private

Definition at line 1155 of file bgp/evpn/evpn_route.cc.

void EvpnPrefix::WriteSource ( BgpProtoPrefix proto_prefix,
size_t  ip_offset 
) const
private

Definition at line 1168 of file bgp/evpn/evpn_route.cc.

Member Data Documentation

EthernetSegmentId EvpnPrefix::esi_
private

Definition at line 128 of file bgp/evpn/evpn_route.h.

Address::Family EvpnPrefix::family_
private

Definition at line 131 of file bgp/evpn/evpn_route.h.

uint8_t EvpnPrefix::flags_
private

Definition at line 136 of file bgp/evpn/evpn_route.h.

IpAddress EvpnPrefix::group_
private

Definition at line 134 of file bgp/evpn/evpn_route.h.

IpAddress EvpnPrefix::ip_address_
private

Definition at line 132 of file bgp/evpn/evpn_route.h.

uint8_t EvpnPrefix::ip_prefixlen_
private

Definition at line 135 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kEsiSize = EthernetSegmentId::kSize
static

Definition at line 34 of file bgp/evpn/evpn_route.h.

const uint32_t EvpnPrefix::kInvalidLabel = 0x01000000
static

Definition at line 27 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kIp4AddrSize = 4
static

Definition at line 36 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kIp6AddrSize = 16
static

Definition at line 37 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kLabelSize = BgpProtoPrefix::kLabelSize
static

Definition at line 39 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kMacSize = MacAddress::size()
static

Definition at line 38 of file bgp/evpn/evpn_route.h.

const uint32_t EvpnPrefix::kMaxTag = 0xFFFFFFFF
static

Definition at line 29 of file bgp/evpn/evpn_route.h.

const uint32_t EvpnPrefix::kMaxVni = 0x00FFFFFF
static

Definition at line 30 of file bgp/evpn/evpn_route.h.

const int32_t EvpnPrefix::kMaxVniSigned
static
Initial value:
=
static_cast<uint32_t>(EvpnPrefix::kMaxVni)

Definition at line 31 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kMinAutoDiscoveryRouteSize
static
Initial value:

Definition at line 40 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kMinInclusiveMulticastRouteSize
static
Initial value:
=

Definition at line 42 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kMinInet6PrefixRouteSize
static
Initial value:

Definition at line 46 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kMinInetPrefixRouteSize
static
Initial value:

Definition at line 45 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kMinMacAdvertisementRouteSize
static
Initial value:

Definition at line 41 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kMinSegmentRouteSize
static
Initial value:
=

Definition at line 44 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kMinSelectiveMulticastRouteSize
static
Initial value:
=

Definition at line 43 of file bgp/evpn/evpn_route.h.

const EvpnPrefix EvpnPrefix::kNullPrefix
static

Definition at line 26 of file bgp/evpn/evpn_route.h.

const uint32_t EvpnPrefix::kNullTag = 0
static

Definition at line 28 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kRdSize = RouteDistinguisher::kSize
static

Definition at line 33 of file bgp/evpn/evpn_route.h.

const size_t EvpnPrefix::kTagSize = 4
static

Definition at line 35 of file bgp/evpn/evpn_route.h.

MacAddress EvpnPrefix::mac_addr_
private

Definition at line 130 of file bgp/evpn/evpn_route.h.

RouteDistinguisher EvpnPrefix::rd_
private

Definition at line 127 of file bgp/evpn/evpn_route.h.

IpAddress EvpnPrefix::source_
private

Definition at line 133 of file bgp/evpn/evpn_route.h.

uint32_t EvpnPrefix::tag_
private

Definition at line 129 of file bgp/evpn/evpn_route.h.

uint8_t EvpnPrefix::type_
private

Definition at line 126 of file bgp/evpn/evpn_route.h.


The documentation for this class was generated from the following files: