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();
std::vector< RoutingPolicyAttachInfo > RoutingPolicyConfigList
std::list< RoutingPolicyInfo > RoutingPolicyAttachList
boost::intrusive_ptr< DBTableWalk > DBTableWalkRef
std::vector< RoutingPolicyMatch * > MatchList
void set_matches(const MatchList &matches)
std::vector< RoutingPolicyAction * > ActionList
bool operator==(const PolicyTerm &term) const
void set_actions(const ActionList &actions)
const MatchList & matches() const
const ActionList & actions() const
bool ApplyTerm(const BgpRoute *route, const BgpPath *path, BgpAttr *attr) const
void DestroyRoutingPolicy(RoutingPolicy *policy)
bool EvaluateRoutingPolicy(DBTablePartBase *root, DBEntryBase *entry)
void UpdateRoutingPolicy(const BgpRoutingPolicyConfig *config)
bool UpdateRoutingPolicyList(const RoutingPolicyConfigList &cfg_list, RoutingPolicyAttachList *oper_list)
SandeshTraceBufferPtr trace_buffer() const
const_name_iterator name_cbegin()
RoutingPolicyWalkRequests routing_policy_sync_
void ApplyRoutingPolicy(RoutingInstance *instance)
name_iterator name_begin()
LifetimeRef< RoutingPolicyMgr > server_delete_ref_
RoutingPolicyList routing_policies_
const_name_iterator name_cend()
const_name_iterator name_clower_bound(const std::string &name)
std::map< BgpTable *, DBTable::DBTableWalkRef > RoutingPolicyWalkRequests
boost::scoped_ptr< DeleteActor > deleter_
SandeshTraceBufferPtr trace_buf_
RoutingPolicyList::iterator name_iterator
std::map< std::string, RoutingPolicy * > RoutingPolicyList
RoutingPolicy::PolicyResult ExecuteRoutingPolicy(const RoutingPolicy *policy, const BgpRoute *route, const BgpPath *path, BgpAttr *attr) const
void RequestWalk(BgpTable *table)
void WalkDone(DBTableBase *dbtable)
virtual RoutingPolicy * CreateRoutingPolicy(const BgpRoutingPolicyConfig *config)
RoutingPolicyList::const_iterator const_name_iterator
virtual ~RoutingPolicyMgr()
name_iterator name_lower_bound(const std::string &name)
virtual void DeleteRoutingPolicy(const std::string &name)
const RoutingPolicy * GetRoutingPolicy(const std::string &name) const
RoutingPolicyMgr(BgpServer *server)
const BgpServer * server() const
RoutingPolicy * GetRoutingPolicy(const std::string &name)
LifetimeActor * deleter()
const RoutingPolicyMgr * manager() const
friend void intrusive_ptr_add_ref(RoutingPolicy *policy)
const std::string & name() const
RoutingPolicyTermList * terms()
uint32_t generation() const
void UpdateConfig(const BgpRoutingPolicyConfig *config)
friend void intrusive_ptr_release(RoutingPolicy *policy)
LifetimeActor * deleter()
const RoutingPolicyTermList & terms() const
PolicyTermPtr BuildTerm(const RoutingPolicyTermConfig &term)
const BgpRoutingPolicyConfig * config_
PolicyResult operator()(const BgpRoute *route, const BgpPath *path, BgpAttr *attr) const
RoutingPolicyTermList terms_
const BgpServer * server() const
std::list< PolicyTermPtr > RoutingPolicyTermList
tbb::atomic< uint32_t > refcount_
void add_term(PolicyTermPtr term)
LifetimeRef< RoutingPolicy > manager_delete_ref_
RoutingPolicy(std::string name, BgpServer *server, RoutingPolicyMgr *mgr, const BgpRoutingPolicyConfig *config)
const BgpRoutingPolicyConfig * config() const
std::pair< bool, bool > PolicyResult
uint32_t refcount() const
boost::shared_ptr< PolicyTerm > PolicyTermPtr
boost::scoped_ptr< DeleteActor > deleter_
void intrusive_ptr_add_ref(RoutingPolicy *policy)
void intrusive_ptr_release(RoutingPolicy *policy)
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr