5 #ifndef SRC_BGP_ROUTING_POLICY_ROUTING_POLICY_H_
6 #define SRC_BGP_ROUTING_POLICY_ROUTING_POLICY_H_
8 #include <boost/scoped_ptr.hpp>
9 #include <boost/intrusive_ptr.hpp>
10 #include <boost/shared_ptr.hpp>
11 #include <tbb/atomic.h>
12 #include <tbb/mutex.h>
13 #include <sandesh/sandesh_trace.h>
289 int prev = policy->
refcount_.fetch_and_decrement();
378 #endif // SRC_BGP_ROUTING_POLICY_ROUTING_POLICY_H_
virtual ~RoutingPolicyMgr()
RoutingPolicyTermList terms_
const_name_iterator name_cend()
int intrusive_ptr_add_ref(const AsPath *cpath)
name_iterator name_lower_bound(const std::string &name)
PolicyResult operator()(const BgpRoute *route, const BgpPath *path, BgpAttr *attr) const
RoutingPolicyTermList * terms()
const RoutingPolicyMgr * manager() const
void DestroyRoutingPolicy(RoutingPolicy *policy)
const BgpRoutingPolicyConfig * config_
RoutingPolicy * GetRoutingPolicy(const std::string &name)
bool UpdateRoutingPolicyList(const RoutingPolicyConfigList &cfg_list, RoutingPolicyAttachList *oper_list)
const BgpRoutingPolicyConfig * config() const
boost::scoped_ptr< DeleteActor > deleter_
virtual void DeleteRoutingPolicy(const std::string &name)
PolicyTermPtr BuildTerm(const RoutingPolicyTermConfig &term)
boost::scoped_ptr< DeleteActor > deleter_
RoutingPolicyList::const_iterator const_name_iterator
boost::shared_ptr< PolicyTerm > PolicyTermPtr
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
LifetimeActor * deleter()
LifetimeActor * deleter()
bool operator==(const PolicyTerm &term) const
std::map< std::string, RoutingPolicy * > RoutingPolicyList
LifetimeRef< RoutingPolicy > manager_delete_ref_
uint32_t refcount() const
const_name_iterator name_cbegin()
void RequestWalk(BgpTable *table)
const ActionList & actions() const
SandeshTraceBufferPtr trace_buf_
SandeshTraceBufferPtr trace_buffer() const
const RoutingPolicyTermList & terms() const
void WalkDone(DBTableBase *dbtable)
friend void intrusive_ptr_release(RoutingPolicy *policy)
std::list< PolicyTermPtr > RoutingPolicyTermList
RoutingPolicy::PolicyResult ExecuteRoutingPolicy(const RoutingPolicy *policy, const BgpRoute *route, const BgpPath *path, BgpAttr *attr) const
std::vector< RoutingPolicyAttachInfo > RoutingPolicyConfigList
void set_actions(const ActionList &actions)
RoutingPolicy(std::string name, BgpServer *server, RoutingPolicyMgr *mgr, const BgpRoutingPolicyConfig *config)
LifetimeRef< RoutingPolicyMgr > server_delete_ref_
const MatchList & matches() const
RoutingPolicyList::iterator name_iterator
const BgpServer * server() const
void UpdateRoutingPolicy(const BgpRoutingPolicyConfig *config)
const RoutingPolicy * GetRoutingPolicy(const std::string &name) const
std::pair< bool, bool > PolicyResult
std::vector< RoutingPolicyAction * > ActionList
virtual RoutingPolicy * CreateRoutingPolicy(const BgpRoutingPolicyConfig *config)
std::map< BgpTable *, DBTable::DBTableWalkRef > RoutingPolicyWalkRequests
uint32_t generation() const
std::list< RoutingPolicyInfo > RoutingPolicyAttachList
bool EvaluateRoutingPolicy(DBTablePartBase *root, DBEntryBase *entry)
std::vector< RoutingPolicyMatch * > MatchList
void intrusive_ptr_release(const AsPath *cpath)
const BgpServer * server() const
bool ApplyTerm(const BgpRoute *route, const BgpPath *path, BgpAttr *attr) const
boost::intrusive_ptr< DBTableWalk > DBTableWalkRef
RoutingPolicyMgr(BgpServer *server)
friend void intrusive_ptr_add_ref(RoutingPolicy *policy)
void UpdateConfig(const BgpRoutingPolicyConfig *config)
void set_matches(const MatchList &matches)
tbb::atomic< uint32_t > refcount_
void add_term(PolicyTermPtr term)
name_iterator name_begin()
void ApplyRoutingPolicy(RoutingInstance *instance)
const_name_iterator name_clower_bound(const std::string &name)
const std::string & name() const
RoutingPolicyWalkRequests routing_policy_sync_
RoutingPolicyList routing_policies_