5 #ifndef SRC_BGP_BGP_ORIGIN_VN_PATH_H_
6 #define SRC_BGP_BGP_ORIGIN_VN_PATH_H_
8 #include <boost/array.hpp>
9 #include <boost/intrusive_ptr.hpp>
10 #include <tbb/atomic.h>
33 virtual std::string
ToString()
const;
64 for (OriginVnList::const_iterator it = ovnpath.
origin_vns_.begin();
66 boost::hash_range(hash, it->begin(), it->end());
86 return covnpath->
refcount_.fetch_and_increment();
90 return covnpath->
refcount_.fetch_and_decrement();
94 int prev = covnpath->
refcount_.fetch_and_decrement();
int intrusive_ptr_add_ref(const OriginVnPath *covnpath)
int intrusive_ptr_del_ref(const OriginVnPath *covnpath)
boost::intrusive_ptr< const OriginVnPath > OriginVnPathPtr
void intrusive_ptr_release(const OriginVnPath *covnpath)
OriginVnPathPtr PrependAndLocate(const OriginVnPath *ovnpath, const OriginVnPath::OriginVnValue &value)
DISALLOW_COPY_AND_ASSIGN(OriginVnPathDB)
OriginVnPathDB(BgpServer *server)
friend int intrusive_ptr_add_ref(const OriginVnPath *covnpath)
friend int intrusive_ptr_del_ref(const OriginVnPath *covnpath)
boost::array< uint8_t, 8 > OriginVnValue
tbb::atomic< int > refcount_
OriginVnPath(OriginVnPathDB *ovnpath_db)
OriginVnPath(const OriginVnPath &rhs)
friend std::size_t hash_value(const OriginVnPath &ovnpath)
int CompareTo(const OriginVnPath &rhs) const
std::vector< OriginVnValue > OriginVnList
const OriginVnList & origin_vns() const
bool Contains(const OriginVnValue &value) const
friend void intrusive_ptr_release(const OriginVnPath *covnpath)
void Prepend(const OriginVnValue &value)
OriginVnPathDB * ovnpath_db_
bool operator()(const OriginVnPath *lhs, const OriginVnPath *rhs)
virtual int CompareTo(const BgpAttribute &rhs_attr) const
std::vector< uint64_t > origin_vns
OriginVnPathSpec(const BgpAttribute &rhs)
virtual void ToCanonical(BgpAttr *attr)
virtual size_t EncodeLength() const
static const uint8_t kFlags
virtual std::string ToString() const