5 #include <boost/shared_ptr.hpp>
7 #include <sandesh/sandesh_trace.h>
19 #include "controller/controller_types.h"
27 peer_(peer), associate_(false), type_(NOTIFYALL), sequence_number_(0) {
234 GetTablePartition(vrf);
241 table_type, partition, entry);
270 GetDBRequestKey().get()))->
Clone();
294 GetTablePartition(vrf);
309 GetDBRequestKey().get()))->
Clone();
332 bgp_peer->DeleteVrfState(partition, entry);
const std::string & GetName() const
bool VrfNotifyAll(DBTablePartBase *partition, DBEntryBase *e)
static Agent * GetInstance()
void WalkDoneCallback(WalkDone cb)
virtual bool SkipAddChangeRequest() const
void StartRouteWalk(VrfEntry *vrf, bool associate, Type type)
DBState * GetState(DBTableBase *tbl_base, ListenerId listener) const
DBTableBase * get_table() const
Agent supports multiple route tables - Inet-unicast (IPv4/IPv6), Inet-multicast, bridge, EVPN (Type2/Type5). This base class contains common code for all types of route tables.
bool RouteNotifyInternal(DBTablePartBase *partition, DBEntryBase *e)
bool is_multicast() const
std::unique_ptr< DBRequestData > data
virtual bool VrfWalkNotify(DBTablePartBase *partition, DBEntryBase *e)
const string & GetName() const
DBState * GetRouteExportState(DBTablePartBase *partition, DBEntryBase *e)
bool RouteNotifyMulticast(DBTablePartBase *partition, DBEntryBase *e)
Base class for all Route entries in agent.
DBTableBase::ListenerId GetListenerId() const
bool RouteNotifyAll(DBTablePartBase *partition, DBEntryBase *e)
const Type GetType() const
virtual Agent::RouteTableType GetTableType() const =0
std::unique_ptr< DBRequestKey > key
DBTableBase::ListenerId GetVrfExportListenerId()
void StartRouteWalk(VrfEntry *vrf)
AgentXmppChannel * GetAgentXmppChannel() const
void RouteWalkDoneForVrfCallback(RouteWalkDoneCb cb)
DBState * GetVrfExportState(DBTablePartBase *partition, DBEntryBase *e)
ControllerRouteWalker(const std::string &name, Peer *peer)
void ClearState(DBTableBase *tbl_base, ListenerId listener)
void Start(Type type, bool associate, AgentRouteWalker::WalkDone walk_done_cb)
virtual bool RouteWalkNotify(DBTablePartBase *partition, DBEntryBase *e)
VrfTable * vrf_table() const
uint64_t sequence_number_
virtual DBTablePartBase * GetTablePartition(const DBRequestKey *key)
virtual AgentRouteKey * Clone() const =0
void RouteWalkDoneForVrf(VrfEntry *vrf)
virtual std::string ToString() const =0
bool VrfDelStale(DBTablePartBase *partition, DBEntryBase *e)
bool RouteDelStale(DBTablePartBase *partition, DBEntryBase *e)
void Process(DBRequest &req)
RouteExport * rt_export_[Agent::ROUTE_TABLE_MAX]
bool VrfNotifyInternal(DBTablePartBase *partition, DBEntryBase *e)
bool VrfNotifyMulticast(DBTablePartBase *partition, DBEntryBase *e)
static void Notify(const Agent *agent, AgentXmppChannel *, DBTablePartBase *partition, DBEntryBase *e)
#define CONTROLLER_ROUTE_WALKER_TRACE(obj,...)
bool IsDeleteWalk() const
boost::function< void()> WalkDone
bool AllRouteTableDeleted() const
bool RouteDelPeer(DBTablePartBase *partition, DBEntryBase *e)
void set_peer(const Peer *peer)
bool VrfDelPeer(DBTablePartBase *partition, DBEntryBase *e)