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();
124 #endif // SRC_BGP_BGP_ORIGIN_VN_PATH_H_
int intrusive_ptr_add_ref(const AsPath *cpath)
std::vector< OriginVnValue > OriginVnList
int CompareTo(const OriginVnPath &rhs) const
DISALLOW_COPY_AND_ASSIGN(OriginVnPathDB)
virtual void ToCanonical(BgpAttr *attr)
OriginVnPathPtr PrependAndLocate(const OriginVnPath *ovnpath, const OriginVnPath::OriginVnValue &value)
virtual size_t EncodeLength() const
boost::intrusive_ptr< const OriginVnPath > OriginVnPathPtr
friend std::size_t hash_value(const OriginVnPath &ovnpath)
friend void intrusive_ptr_release(const OriginVnPath *covnpath)
friend int intrusive_ptr_add_ref(const OriginVnPath *covnpath)
static const uint8_t kFlags
std::vector< uint64_t > origin_vns
int intrusive_ptr_del_ref(const AsPath *cpath)
OriginVnPathDB(BgpServer *server)
OriginVnPath(OriginVnPathDB *ovnpath_db)
virtual int CompareTo(const BgpAttribute &rhs_attr) const
const OriginVnList & origin_vns() const
OriginVnPathSpec(const BgpAttribute &rhs)
virtual std::string ToString() const
bool Contains(const OriginVnValue &value) const
void intrusive_ptr_release(const AsPath *cpath)
OriginVnPathDB * ovnpath_db_
friend int intrusive_ptr_del_ref(const OriginVnPath *covnpath)
void Prepend(const OriginVnValue &value)
OriginVnPath(const OriginVnPath &rhs)
bool operator()(const OriginVnPath *lhs, const OriginVnPath *rhs)
boost::array< uint8_t, 8 > OriginVnValue
tbb::atomic< int > refcount_