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();
Agent supports multiple route tables - Inet-unicast (IPv4/IPv6), Inet-multicast, bridge,...
void Process(DBRequest &req)
void RouteWalkDoneForVrfCallback(RouteWalkDoneCb cb)
void StartRouteWalk(VrfEntry *vrf)
void WalkDoneCallback(WalkDone cb)
boost::function< void()> WalkDone
Base class for all Route entries in agent.
virtual std::string ToString() const =0
bool is_multicast() const
virtual Agent::RouteTableType GetTableType() const =0
VrfTable * vrf_table() const
static Agent * GetInstance()
DBState * GetRouteExportState(DBTablePartBase *partition, DBEntryBase *e)
DBTableBase::ListenerId GetVrfExportListenerId()
DBState * GetVrfExportState(DBTablePartBase *partition, DBEntryBase *e)
AgentXmppChannel * GetAgentXmppChannel() const
void DeleteVrfState(DBTablePartBase *partition, DBEntryBase *entry)
bool VrfNotifyAll(DBTablePartBase *partition, DBEntryBase *e)
bool IsDeleteWalk() const
void RouteWalkDoneForVrf(VrfEntry *vrf)
bool RouteDelPeer(DBTablePartBase *partition, DBEntryBase *e)
bool VrfDelStale(DBTablePartBase *partition, DBEntryBase *e)
uint64_t sequence_number_
ControllerRouteWalker(const std::string &name, Peer *peer)
bool RouteNotifyInternal(DBTablePartBase *partition, DBEntryBase *e)
void StartRouteWalk(VrfEntry *vrf, bool associate, Type type)
virtual bool VrfWalkNotify(DBTablePartBase *partition, DBEntryBase *e)
bool VrfDelPeer(DBTablePartBase *partition, DBEntryBase *e)
bool RouteNotifyMulticast(DBTablePartBase *partition, DBEntryBase *e)
virtual bool RouteWalkNotify(DBTablePartBase *partition, DBEntryBase *e)
bool RouteNotifyAll(DBTablePartBase *partition, DBEntryBase *e)
bool RouteDelStale(DBTablePartBase *partition, DBEntryBase *e)
bool VrfNotifyMulticast(DBTablePartBase *partition, DBEntryBase *e)
bool VrfNotifyInternal(DBTablePartBase *partition, DBEntryBase *e)
void Start(Type type, bool associate, AgentRouteWalker::WalkDone walk_done_cb)
DBState * GetState(DBTableBase *tbl_base, ListenerId listener) const
DBTableBase * get_table() const
void ClearState(DBTableBase *tbl_base, ListenerId listener)
virtual DBTablePartBase * GetTablePartition(const DBRequestKey *key)
virtual bool SkipAddChangeRequest() const
const Type GetType() const
const std::string & GetName() const
DBTableBase::ListenerId GetListenerId() const
const string & GetName() const
bool AllRouteTableDeleted() const
static void Notify(const Agent *agent, AgentXmppChannel *, DBTablePartBase *partition, DBEntryBase *e)
#define CONTROLLER_ROUTE_WALKER_TRACE(obj,...)
void set_peer(const Peer *peer)
virtual AgentRouteKey * Clone() const =0
std::unique_ptr< DBRequestKey > key
std::unique_ptr< DBRequestData > data
RouteExport * rt_export_[Agent::ROUTE_TABLE_MAX]