OpenSDN source code
ExtCommunity Class Reference

#include <community.h>

Collaboration diagram for ExtCommunity:

Public Types

typedef boost::array< uint8_t, 8 > ExtCommunityValue
 
typedef std::vector< ExtCommunityValueExtCommunityList
 

Public Member Functions

 ExtCommunity (ExtCommunityDB *extcomm_db)
 
 ExtCommunity (const ExtCommunity &rhs)
 
 ExtCommunity (ExtCommunityDB *extcomm_db, const ExtCommunitySpec spec)
 
virtual ~ExtCommunity ()
 
virtual void Remove ()
 
int CompareTo (const ExtCommunity &rhs) const
 
bool ContainsRTarget (const ExtCommunityValue &val) const
 
bool ContainsOriginVn (as_t asn, uint32_t vn_index) const
 
bool ContainsOriginVn (const ExtCommunityValue &val) const
 
bool ContainsOriginVn4 (const ExtCommunityValue &val) const
 
bool ContainsVrfRouteImport (const ExtCommunityValue &val) const
 
bool ContainsSourceAs (const ExtCommunityValue &val) const
 
uint32_t GetSubClusterId () const
 
const ExtCommunityListcommunities () const
 
std::vector< std::string > GetTunnelEncap () const
 
std::vector< int > GetTagList (as2_t asn=0) const
 
std::vector< int > GetTag4List (as_t asn=0) const
 
bool ContainsTunnelEncapVxlan () const
 
int GetOriginVnIndex () const
 

Static Public Member Functions

static ExtCommunityList ExtCommunityFromString (const std::string &comm)
 
static ExtCommunityValue FromHexString (const std::string &comm, boost::system::error_code *errorp)
 
static bool is_origin_vn (const ExtCommunityValue &val)
 
static bool is_default_gateway (const ExtCommunityValue &val)
 
static bool is_es_import (const ExtCommunityValue &val)
 
static bool is_esi_label (const ExtCommunityValue &val)
 
static bool is_mac_mobility (const ExtCommunityValue &val)
 
static bool is_local_sequence_number (const ExtCommunityValue &val)
 
static bool is_etree (const ExtCommunityValue &val)
 
static bool is_multicast_flags (const ExtCommunityValue &val)
 
static bool is_router_mac (const ExtCommunityValue &val)
 
static bool is_route_target (const ExtCommunityValue &val)
 
static uint32_t get_rtarget_val (const ExtCommunityValue &val)
 
static bool is_security_group (const ExtCommunityValue &val)
 
static bool is_security_group4 (const ExtCommunityValue &val)
 
static bool is_site_of_origin (const ExtCommunityValue &val)
 
static bool is_source_as (const ExtCommunityValue &val)
 
static bool is_sub_cluster (const ExtCommunityValue &val)
 
static bool is_vrf_route_import (const ExtCommunityValue &val)
 
static bool is_tunnel_encap (const ExtCommunityValue &val)
 
static bool is_load_balance (const ExtCommunityValue &val)
 
static bool is_tag (const ExtCommunityValue &val)
 
static bool is_tag4 (const ExtCommunityValue &val)
 
static std::string ToString (const ExtCommunityValue &val)
 
static std::string ToHexString (const ExtCommunityValue &val)
 

Private Member Functions

void Append (const ExtCommunityValue &value)
 
void Append (const ExtCommunityList &list)
 
void Remove (const ExtCommunityList &list)
 
void RemoveMFlags ()
 
void RemoveRTarget ()
 
void RemoveSGID ()
 
void RemoveTag ()
 
void RemoveSiteOfOrigin ()
 
void RemoveSourceAS ()
 
void RemoveVrfRouteImport ()
 
void RemoveOriginVn ()
 
void RemoveTunnelEncapsulation ()
 
void RemoveLoadBalance ()
 
void RemoveSubCluster ()
 
void Set (const ExtCommunityList &list)
 

Private Attributes

tbb::atomic< int > refcount_
 
ExtCommunityDBextcomm_db_
 
ExtCommunityList communities_
 

Friends

class ExtCommunityDB
 
class BgpAttrTest
 
std::size_t hash_value (ExtCommunity const &comm)
 
int intrusive_ptr_add_ref (const ExtCommunity *cextcomm)
 
int intrusive_ptr_del_ref (const ExtCommunity *cextcomm)
 
void intrusive_ptr_release (const ExtCommunity *cextcomm)
 

Detailed Description

Definition at line 152 of file community.h.

Member Typedef Documentation

◆ ExtCommunityList

Definition at line 155 of file community.h.

◆ ExtCommunityValue

typedef boost::array<uint8_t, 8> ExtCommunity::ExtCommunityValue

Definition at line 154 of file community.h.

Constructor & Destructor Documentation

◆ ExtCommunity() [1/3]

ExtCommunity::ExtCommunity ( ExtCommunityDB extcomm_db)
inlineexplicit

Definition at line 157 of file community.h.

◆ ExtCommunity() [2/3]

ExtCommunity::ExtCommunity ( const ExtCommunity rhs)
inlineexplicit

Definition at line 161 of file community.h.

◆ ExtCommunity() [3/3]

ExtCommunity::ExtCommunity ( ExtCommunityDB extcomm_db,
const ExtCommunitySpec  spec 
)
explicit

Definition at line 679 of file community.cc.

Here is the call graph for this function:

◆ ~ExtCommunity()

virtual ExtCommunity::~ExtCommunity ( )
inlinevirtual

Definition at line 169 of file community.h.

Member Function Documentation

◆ Append() [1/2]

void ExtCommunity::Append ( const ExtCommunityList list)
private

Definition at line 257 of file community.cc.

◆ Append() [2/2]

void ExtCommunity::Append ( const ExtCommunityValue value)
private

Definition at line 265 of file community.cc.

◆ communities()

const ExtCommunityList& ExtCommunity::communities ( ) const
inline

Definition at line 182 of file community.h.

◆ CompareTo()

int ExtCommunity::CompareTo ( const ExtCommunity rhs) const

Definition at line 222 of file community.cc.

◆ ContainsOriginVn() [1/2]

bool ExtCommunity::ContainsOriginVn ( as_t  asn,
uint32_t  vn_index 
) const

Definition at line 436 of file community.cc.

Here is the call graph for this function:

◆ ContainsOriginVn() [2/2]

bool ExtCommunity::ContainsOriginVn ( const ExtCommunityValue val) const

Definition at line 427 of file community.cc.

Here is the call graph for this function:

◆ ContainsOriginVn4()

bool ExtCommunity::ContainsOriginVn4 ( const ExtCommunityValue val) const

◆ ContainsRTarget()

bool ExtCommunity::ContainsRTarget ( const ExtCommunityValue val) const

Definition at line 418 of file community.cc.

Here is the call graph for this function:

◆ ContainsSourceAs()

bool ExtCommunity::ContainsSourceAs ( const ExtCommunityValue val) const

Definition at line 447 of file community.cc.

Here is the call graph for this function:

◆ ContainsTunnelEncapVxlan()

bool ExtCommunity::ContainsTunnelEncapVxlan ( ) const

Definition at line 656 of file community.cc.

Here is the call graph for this function:

◆ ContainsVrfRouteImport()

bool ExtCommunity::ContainsVrfRouteImport ( const ExtCommunityValue val) const

Definition at line 467 of file community.cc.

Here is the call graph for this function:

◆ ExtCommunityFromString()

ExtCommunity::ExtCommunityList ExtCommunity::ExtCommunityFromString ( const std::string &  comm)
static

Definition at line 306 of file community.cc.

Here is the call graph for this function:

◆ FromHexString()

ExtCommunity::ExtCommunityValue ExtCommunity::FromHexString ( const std::string &  comm,
boost::system::error_code *  errorp 
)
static

Definition at line 273 of file community.cc.

Here is the call graph for this function:

◆ get_rtarget_val()

static uint32_t ExtCommunity::get_rtarget_val ( const ExtCommunityValue val)
inlinestatic

Definition at line 280 of file community.h.

Here is the call graph for this function:

◆ GetOriginVnIndex()

int ExtCommunity::GetOriginVnIndex ( ) const

Definition at line 668 of file community.cc.

Here is the call graph for this function:

◆ GetSubClusterId()

uint32_t ExtCommunity::GetSubClusterId ( ) const

Definition at line 456 of file community.cc.

Here is the call graph for this function:

◆ GetTag4List()

vector< int > ExtCommunity::GetTag4List ( as_t  asn = 0) const

Definition at line 633 of file community.cc.

Here is the call graph for this function:

◆ GetTagList()

vector< int > ExtCommunity::GetTagList ( as2_t  asn = 0) const

Definition at line 615 of file community.cc.

Here is the call graph for this function:

◆ GetTunnelEncap()

vector< string > ExtCommunity::GetTunnelEncap ( ) const

Definition at line 596 of file community.cc.

Here is the call graph for this function:

◆ is_default_gateway()

static bool ExtCommunity::is_default_gateway ( const ExtCommunityValue val)
inlinestatic

Definition at line 205 of file community.h.

◆ is_es_import()

static bool ExtCommunity::is_es_import ( const ExtCommunityValue val)
inlinestatic

Definition at line 213 of file community.h.

◆ is_esi_label()

static bool ExtCommunity::is_esi_label ( const ExtCommunityValue val)
inlinestatic

Definition at line 221 of file community.h.

◆ is_etree()

static bool ExtCommunity::is_etree ( const ExtCommunityValue val)
inlinestatic

Definition at line 242 of file community.h.

◆ is_load_balance()

static bool ExtCommunity::is_load_balance ( const ExtCommunityValue val)
inlinestatic

Definition at line 374 of file community.h.

◆ is_local_sequence_number()

static bool ExtCommunity::is_local_sequence_number ( const ExtCommunityValue val)
inlinestatic

Definition at line 237 of file community.h.

◆ is_mac_mobility()

static bool ExtCommunity::is_mac_mobility ( const ExtCommunityValue val)
inlinestatic

Definition at line 229 of file community.h.

◆ is_multicast_flags()

static bool ExtCommunity::is_multicast_flags ( const ExtCommunityValue val)
inlinestatic

Definition at line 250 of file community.h.

◆ is_origin_vn()

static bool ExtCommunity::is_origin_vn ( const ExtCommunityValue val)
inlinestatic

Definition at line 195 of file community.h.

◆ is_route_target()

static bool ExtCommunity::is_route_target ( const ExtCommunityValue val)
inlinestatic

Definition at line 267 of file community.h.

◆ is_router_mac()

static bool ExtCommunity::is_router_mac ( const ExtCommunityValue val)
inlinestatic

Definition at line 259 of file community.h.

◆ is_security_group()

static bool ExtCommunity::is_security_group ( const ExtCommunityValue val)
inlinestatic

Definition at line 306 of file community.h.

◆ is_security_group4()

static bool ExtCommunity::is_security_group4 ( const ExtCommunityValue val)
inlinestatic

Definition at line 315 of file community.h.

◆ is_site_of_origin()

static bool ExtCommunity::is_site_of_origin ( const ExtCommunityValue val)
inlinestatic

Definition at line 324 of file community.h.

◆ is_source_as()

static bool ExtCommunity::is_source_as ( const ExtCommunityValue val)
inlinestatic

Definition at line 337 of file community.h.

◆ is_sub_cluster()

static bool ExtCommunity::is_sub_cluster ( const ExtCommunityValue val)
inlinestatic

Definition at line 348 of file community.h.

◆ is_tag()

static bool ExtCommunity::is_tag ( const ExtCommunityValue val)
inlinestatic

Definition at line 380 of file community.h.

◆ is_tag4()

static bool ExtCommunity::is_tag4 ( const ExtCommunityValue val)
inlinestatic

Definition at line 386 of file community.h.

◆ is_tunnel_encap()

static bool ExtCommunity::is_tunnel_encap ( const ExtCommunityValue val)
inlinestatic

Definition at line 368 of file community.h.

◆ is_vrf_route_import()

static bool ExtCommunity::is_vrf_route_import ( const ExtCommunityValue val)
inlinestatic

Definition at line 359 of file community.h.

◆ Remove() [1/2]

void ExtCommunity::Remove ( )
virtual

Definition at line 245 of file community.cc.

Here is the call graph for this function:

◆ Remove() [2/2]

void ExtCommunity::Remove ( const ExtCommunityList list)
private

Definition at line 238 of file community.cc.

◆ RemoveLoadBalance()

void ExtCommunity::RemoveLoadBalance ( )
private

Definition at line 574 of file community.cc.

Here is the call graph for this function:

◆ RemoveMFlags()

void ExtCommunity::RemoveMFlags ( )
private

Definition at line 476 of file community.cc.

Here is the call graph for this function:

◆ RemoveOriginVn()

void ExtCommunity::RemoveOriginVn ( )
private

Definition at line 553 of file community.cc.

Here is the call graph for this function:

◆ RemoveRTarget()

void ExtCommunity::RemoveRTarget ( )
private

Definition at line 487 of file community.cc.

Here is the call graph for this function:

◆ RemoveSGID()

void ExtCommunity::RemoveSGID ( )
private

Definition at line 498 of file community.cc.

Here is the call graph for this function:

◆ RemoveSiteOfOrigin()

void ExtCommunity::RemoveSiteOfOrigin ( )
private

Definition at line 521 of file community.cc.

Here is the call graph for this function:

◆ RemoveSourceAS()

void ExtCommunity::RemoveSourceAS ( )
private

Definition at line 532 of file community.cc.

Here is the call graph for this function:

◆ RemoveSubCluster()

void ExtCommunity::RemoveSubCluster ( )
private

Definition at line 585 of file community.cc.

Here is the call graph for this function:

◆ RemoveTag()

void ExtCommunity::RemoveTag ( )
private

Definition at line 510 of file community.cc.

Here is the call graph for this function:

◆ RemoveTunnelEncapsulation()

void ExtCommunity::RemoveTunnelEncapsulation ( )
private

Definition at line 563 of file community.cc.

Here is the call graph for this function:

◆ RemoveVrfRouteImport()

void ExtCommunity::RemoveVrfRouteImport ( )
private

Definition at line 542 of file community.cc.

Here is the call graph for this function:

◆ Set()

void ExtCommunity::Set ( const ExtCommunityList list)
private

Definition at line 249 of file community.cc.

◆ ToHexString()

string ExtCommunity::ToHexString ( const ExtCommunityValue val)
static

Definition at line 353 of file community.cc.

◆ ToString()

string ExtCommunity::ToString ( const ExtCommunityValue val)
static

Definition at line 362 of file community.cc.

Here is the call graph for this function:

Friends And Related Function Documentation

◆ BgpAttrTest

friend class BgpAttrTest
friend

Definition at line 409 of file community.h.

◆ ExtCommunityDB

friend class ExtCommunityDB
friend

Definition at line 408 of file community.h.

◆ hash_value

std::size_t hash_value ( ExtCommunity const &  comm)
friend

Definition at line 392 of file community.h.

◆ intrusive_ptr_add_ref

int intrusive_ptr_add_ref ( const ExtCommunity cextcomm)
friend

Definition at line 432 of file community.h.

◆ intrusive_ptr_del_ref

int intrusive_ptr_del_ref ( const ExtCommunity cextcomm)
friend

Definition at line 436 of file community.h.

◆ intrusive_ptr_release

void intrusive_ptr_release ( const ExtCommunity cextcomm)
friend

Definition at line 440 of file community.h.

Member Data Documentation

◆ communities_

ExtCommunityList ExtCommunity::communities_
private

Definition at line 429 of file community.h.

◆ extcomm_db_

ExtCommunityDB* ExtCommunity::extcomm_db_
private

Definition at line 428 of file community.h.

◆ refcount_

tbb::atomic<int> ExtCommunity::refcount_
mutableprivate

Definition at line 427 of file community.h.


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