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

#include <mvpn_route.h>

Collaboration diagram for MvpnPrefix:

Public Types

enum  RouteType {
  Unspecified = 0, IntraASPMSIADRoute = 1, InterASPMSIADRoute = 2, SPMSIADRoute = 3,
  LeafADRoute = 4, SourceActiveADRoute = 5, SharedTreeJoinRoute = 6, SourceTreeJoinRoute = 7
}
 

Public Member Functions

 MvpnPrefix ()
 
 MvpnPrefix (uint8_t type, const RouteDistinguisher &rd, const Ip4Address &originator)
 
 MvpnPrefix (uint8_t type, const RouteDistinguisher &rd, const uint32_t asn)
 
 MvpnPrefix (uint8_t type, const RouteDistinguisher &rd, const Ip4Address &group, const Ip4Address &source)
 
 MvpnPrefix (uint8_t type, const Ip4Address &originator)
 
 MvpnPrefix (uint8_t type, const RouteDistinguisher &rd, const Ip4Address &originator, const Ip4Address &group, const Ip4Address &source)
 
 MvpnPrefix (uint8_t type, const RouteDistinguisher &rd, const uint32_t asn, const Ip4Address &group, const Ip4Address &source)
 
Ip4Address GetType3OriginatorFromType4Route () const
 
void SetLeafADPrefixFromSPMSIPrefix (const MvpnPrefix &prefix)
 
void SetSPMSIPrefixFromLeafADPrefix (const MvpnPrefix &prefix)
 
std::string ToString () const
 
std::string ToXmppIdString () const
 
bool operator== (const MvpnPrefix &rhs) const
 
int CompareTo (const MvpnPrefix &rhs) const
 
uint8_t type () const
 
const RouteDistinguisherroute_distinguisher () const
 
Ip4Address group () const
 
Ip4Address source () const
 
Ip4Address originator () const
 
IpAddress groupIpAddress () const
 
IpAddress sourceIpAddress () const
 
IpAddress originatorIpAddress () const
 
void set_originator (const Ip4Address &originator)
 
uint32_t asn () const
 
void set_route_distinguisher (const RouteDistinguisher &rd)
 
uint8_t ip_prefix_length () const
 
void BuildProtoPrefix (BgpProtoPrefix *prefix) const
 
const std::string GetType () const
 

Static Public Member Functions

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

Static Public Attributes

static const size_t kRdSize = RouteDistinguisher::kSize
 
static const size_t kIp4AddrSize = Address::kMaxV4Bytes
 
static const size_t kIp4AddrBitSize = Address::kMaxV4PrefixLen
 
static const size_t kAsnSize = 4
 
static const size_t kPrefixBytes = 2
 
static const size_t kIntraASPMSIADRouteSize = kRdSize + kIp4AddrSize
 
static const size_t kInterASPMSIADRouteSize = kRdSize + kAsnSize
 
static const size_t kSPMSIADRouteSize
 
static const size_t kLeafADRouteSize
 
static const size_t kSourceActiveADRouteSize
 
static const size_t kSourceTreeJoinRouteSize
 

Static Private Member Functions

static bool GetTypeFromString (MvpnPrefix *prefix, const std::string &str, boost::system::error_code *errorp, size_t *pos1)
 
static bool GetRDFromString (MvpnPrefix *prefix, const std::string &str, size_t pos1, size_t *pos2, boost::system::error_code *ec)
 
static bool GetOriginatorFromString (MvpnPrefix *prefix, const std::string &str, size_t pos1, boost::system::error_code *errorp)
 
static bool GetAsnFromString (MvpnPrefix *prefix, const std::string &str, size_t pos1, size_t *pos2, boost::system::error_code *ec)
 
static bool GetSourceFromString (MvpnPrefix *prefix, const std::string &str, size_t pos1, size_t *pos2, boost::system::error_code *ec)
 
static bool GetGroupFromString (MvpnPrefix *prefix, const std::string &str, size_t pos1, size_t *pos2, boost::system::error_code *ec, bool last=false)
 
static int SpmsiAdRouteFromProtoPrefix (const BgpProtoPrefix &proto_prefix, MvpnPrefix *prefix, size_t rd_offset)
 

Private Attributes

uint8_t type_
 
RouteDistinguisher rd_
 
Ip4Address originator_
 
Ip4Address group_
 
Ip4Address source_
 
uint8_t ip_prefixlen_
 
uint32_t asn_
 
std::vector< uint8_t > rt_key_
 

Detailed Description

Definition at line 23 of file mvpn_route.h.

Member Enumeration Documentation

Enumerator
Unspecified 
IntraASPMSIADRoute 
InterASPMSIADRoute 
SPMSIADRoute 
LeafADRoute 
SourceActiveADRoute 
SharedTreeJoinRoute 
SourceTreeJoinRoute 

Definition at line 38 of file mvpn_route.h.

Constructor & Destructor Documentation

MvpnPrefix::MvpnPrefix ( )

Definition at line 35 of file mvpn_route.cc.

MvpnPrefix::MvpnPrefix ( uint8_t  type,
const RouteDistinguisher rd,
const Ip4Address originator 
)

Definition at line 52 of file mvpn_route.cc.

MvpnPrefix::MvpnPrefix ( uint8_t  type,
const RouteDistinguisher rd,
const uint32_t  asn 
)

Definition at line 39 of file mvpn_route.cc.

MvpnPrefix::MvpnPrefix ( uint8_t  type,
const RouteDistinguisher rd,
const Ip4Address group,
const Ip4Address source 
)

Definition at line 60 of file mvpn_route.cc.

MvpnPrefix::MvpnPrefix ( uint8_t  type,
const Ip4Address originator 
)

Definition at line 46 of file mvpn_route.cc.

MvpnPrefix::MvpnPrefix ( uint8_t  type,
const RouteDistinguisher rd,
const Ip4Address originator,
const Ip4Address group,
const Ip4Address source 
)

Definition at line 68 of file mvpn_route.cc.

MvpnPrefix::MvpnPrefix ( uint8_t  type,
const RouteDistinguisher rd,
const uint32_t  asn,
const Ip4Address group,
const Ip4Address source 
)

Definition at line 77 of file mvpn_route.cc.

Member Function Documentation

uint32_t MvpnPrefix::asn ( ) const
inline

Definition at line 81 of file mvpn_route.h.

void MvpnPrefix::BuildProtoPrefix ( BgpProtoPrefix prefix) const

Definition at line 241 of file mvpn_route.cc.

Here is the call graph for this function:

int MvpnPrefix::CompareTo ( const MvpnPrefix rhs) const

Definition at line 726 of file mvpn_route.cc.

int MvpnPrefix::FromProtoPrefix ( const BgpProtoPrefix proto_prefix,
MvpnPrefix prefix 
)
static

Definition at line 111 of file mvpn_route.cc.

Here is the call graph for this function:

int MvpnPrefix::FromProtoPrefix ( BgpServer server,
const BgpProtoPrefix proto_prefix,
const BgpAttr attr,
const Address::Family  family,
MvpnPrefix prefix,
BgpAttrPtr new_attr,
uint32_t *  label,
uint32_t *  l3_label 
)
static

Definition at line 231 of file mvpn_route.cc.

Here is the call graph for this function:

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

Definition at line 483 of file mvpn_route.cc.

Here is the call graph for this function:

bool MvpnPrefix::GetAsnFromString ( MvpnPrefix prefix,
const std::string &  str,
size_t  pos1,
size_t *  pos2,
boost::system::error_code *  ec 
)
staticprivate

Definition at line 467 of file mvpn_route.cc.

Here is the call graph for this function:

bool MvpnPrefix::GetGroupFromString ( MvpnPrefix prefix,
const std::string &  str,
size_t  pos1,
size_t *  pos2,
boost::system::error_code *  ec,
bool  last = false 
)
staticprivate

Definition at line 441 of file mvpn_route.cc.

bool MvpnPrefix::GetOriginatorFromString ( MvpnPrefix prefix,
const std::string &  str,
size_t  pos1,
boost::system::error_code *  errorp 
)
staticprivate

Definition at line 406 of file mvpn_route.cc.

bool MvpnPrefix::GetRDFromString ( MvpnPrefix prefix,
const std::string &  str,
size_t  pos1,
size_t *  pos2,
boost::system::error_code *  ec 
)
staticprivate

Definition at line 385 of file mvpn_route.cc.

Here is the call graph for this function:

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

Definition at line 420 of file mvpn_route.cc.

const string MvpnPrefix::GetType ( ) const

Definition at line 886 of file mvpn_route.cc.

Ip4Address MvpnPrefix::GetType3OriginatorFromType4Route ( ) const

Definition at line 85 of file mvpn_route.cc.

Here is the call graph for this function:

bool MvpnPrefix::GetTypeFromString ( MvpnPrefix prefix,
const std::string &  str,
boost::system::error_code *  errorp,
size_t *  pos1 
)
staticprivate

Definition at line 365 of file mvpn_route.cc.

Here is the call graph for this function:

Ip4Address MvpnPrefix::group ( ) const
inline

Definition at line 74 of file mvpn_route.h.

IpAddress MvpnPrefix::groupIpAddress ( ) const
inline

Definition at line 77 of file mvpn_route.h.

uint8_t MvpnPrefix::ip_prefix_length ( ) const
inline

Definition at line 83 of file mvpn_route.h.

bool MvpnPrefix::IsValid ( uint8_t  type)
static

Definition at line 816 of file mvpn_route.cc.

bool MvpnPrefix::operator== ( const MvpnPrefix rhs) const

Definition at line 820 of file mvpn_route.cc.

Ip4Address MvpnPrefix::originator ( ) const
inline

Definition at line 76 of file mvpn_route.h.

IpAddress MvpnPrefix::originatorIpAddress ( ) const
inline

Definition at line 79 of file mvpn_route.h.

const RouteDistinguisher& MvpnPrefix::route_distinguisher ( ) const
inline

Definition at line 73 of file mvpn_route.h.

void MvpnPrefix::set_originator ( const Ip4Address originator)

Definition at line 227 of file mvpn_route.cc.

Here is the call graph for this function:

void MvpnPrefix::set_route_distinguisher ( const RouteDistinguisher rd)
inline

Definition at line 82 of file mvpn_route.h.

void MvpnPrefix::SetLeafADPrefixFromSPMSIPrefix ( const MvpnPrefix prefix)

Definition at line 767 of file mvpn_route.cc.

Here is the call graph for this function:

void MvpnPrefix::SetSPMSIPrefixFromLeafADPrefix ( const MvpnPrefix prefix)

Definition at line 799 of file mvpn_route.cc.

Here is the call graph for this function:

Ip4Address MvpnPrefix::source ( ) const
inline

Definition at line 75 of file mvpn_route.h.

IpAddress MvpnPrefix::sourceIpAddress ( ) const
inline

Definition at line 78 of file mvpn_route.h.

int MvpnPrefix::SpmsiAdRouteFromProtoPrefix ( const BgpProtoPrefix proto_prefix,
MvpnPrefix prefix,
size_t  rd_offset 
)
staticprivate

Definition at line 91 of file mvpn_route.cc.

Here is the call graph for this function:

string MvpnPrefix::ToString ( ) const

Definition at line 666 of file mvpn_route.cc.

Here is the call graph for this function:

string MvpnPrefix::ToXmppIdString ( ) const

Definition at line 809 of file mvpn_route.cc.

Here is the call graph for this function:

uint8_t MvpnPrefix::type ( ) const
inline

Definition at line 72 of file mvpn_route.h.

Member Data Documentation

uint32_t MvpnPrefix::asn_
private

Definition at line 127 of file mvpn_route.h.

Ip4Address MvpnPrefix::group_
private

Definition at line 124 of file mvpn_route.h.

uint8_t MvpnPrefix::ip_prefixlen_
private

Definition at line 126 of file mvpn_route.h.

const size_t MvpnPrefix::kAsnSize = 4
static

Definition at line 29 of file mvpn_route.h.

const size_t MvpnPrefix::kInterASPMSIADRouteSize = kRdSize + kAsnSize
static

Definition at line 32 of file mvpn_route.h.

const size_t MvpnPrefix::kIntraASPMSIADRouteSize = kRdSize + kIp4AddrSize
static

Definition at line 31 of file mvpn_route.h.

const size_t MvpnPrefix::kIp4AddrBitSize = Address::kMaxV4PrefixLen
static

Definition at line 28 of file mvpn_route.h.

const size_t MvpnPrefix::kIp4AddrSize = Address::kMaxV4Bytes
static

Definition at line 27 of file mvpn_route.h.

const size_t MvpnPrefix::kLeafADRouteSize
static

Definition at line 34 of file mvpn_route.h.

const size_t MvpnPrefix::kPrefixBytes = 2
static

Definition at line 30 of file mvpn_route.h.

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

Definition at line 26 of file mvpn_route.h.

const size_t MvpnPrefix::kSourceActiveADRouteSize
static
Initial value:
=
kRdSize + 2 * (1 + kIp4AddrSize)

Definition at line 35 of file mvpn_route.h.

const size_t MvpnPrefix::kSourceTreeJoinRouteSize
static
Initial value:
=

Definition at line 36 of file mvpn_route.h.

const size_t MvpnPrefix::kSPMSIADRouteSize
static
Initial value:

Definition at line 33 of file mvpn_route.h.

Ip4Address MvpnPrefix::originator_
private

Definition at line 123 of file mvpn_route.h.

RouteDistinguisher MvpnPrefix::rd_
private

Definition at line 122 of file mvpn_route.h.

std::vector<uint8_t> MvpnPrefix::rt_key_
private

Definition at line 128 of file mvpn_route.h.

Ip4Address MvpnPrefix::source_
private

Definition at line 125 of file mvpn_route.h.

uint8_t MvpnPrefix::type_
private

Definition at line 121 of file mvpn_route.h.


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