5 #ifndef vnsw_agent_route_ksync_h
6 #define vnsw_agent_route_ksync_h
8 #include <boost/asio.hpp>
9 #include <boost/bind/bind.hpp>
21 #include "vrouter/ksync/agent_ksync_types.h"
24 using namespace boost::placeholders;
36 uint32_t
label()
const {
return label_; }
38 bool flood()
const {
return flood_; }
51 virtual std::string
ToString()
const;
54 virtual int AddMsg(
char *buf,
int buf_len);
55 virtual int ChangeMsg(
char *buf,
int buf_len);
56 virtual int DeleteMsg(
char *buf,
int buf_len);
64 char *buf,
int buf_len);
66 char *buf,
int buf_len);
118 void ManagedDelete();
120 virtual void EmptyTable();
138 mac_preference_map_(mac_binding.mac_preference_map_) {}
141 mac_preference_map_[mac] = pref;
147 for (MacPreferenceMap::const_iterator it = mac_preference_map_.begin();
148 it != mac_preference_map_.end(); it++) {
151 pref = it->second.preference();
158 mac_preference_map_.erase(mac);
162 if (mac_preference_map_.size() == 0) {
170 mac_preference_map_[mac] = pref;
174 for (MacPreferenceMap::const_iterator it = mac_preference_map_.begin();
175 it != mac_preference_map_.end(); it++) {
176 if (it->second.wait_for_traffic() ==
true) {
198 const uint32_t
vrf_id()
const {
return vrf_id_; }
205 virtual std::string
ToString()
const;
208 virtual int AddMsg(
char *buf,
int buf_len);
209 virtual int ChangeMsg(
char *buf,
int buf_len);
210 virtual int DeleteMsg(
char *buf,
int buf_len);
213 char *buf,
int buf_len);
248 void RegisterDBClients();
253 void UnRegisterEvpnRouteTableListener(
const VrfEntry *entry,
257 uint32_t ethernet_tag,
259 bool wait_for_traffic);
261 const MacAddress &mac, uint32_t ethernet_tag);
264 bool GetIpMacWaitForTraffic(
VrfEntry *vrf,
287 void EnqueueDelete();
boost::asio::ip::address IpAddress
boost::intrusive_ptr< AgentRouteWalker > AgentRouteWalkerPtr
static bool IsLess(const ShowRoute &lhs, const ShowRoute &rhs, const BgpSandeshContext *bsc, const string &table_name)
Agent supports multiple route tables - Inet-unicast (IPv4/IPv6), Inet-multicast, bridge,...
Base class for all Route entries in agent.
boost::intrusive_ptr< KSyncEntry > KSyncEntryPtr
VrfKSyncObject::VrfState * state_
DISALLOW_COPY_AND_ASSIGN(KSyncRouteWalker)
bool marked_for_deletion_
static const MacAddress & ZeroMac()
bool layer2_control_word_
NHKSyncEntry * nh() const
bool wait_for_traffic() const
uint32_t prefix_len() const
void set_prefix_len(uint32_t len)
RouteKSyncObject * ksync_obj_
void set_ip(IpAddress addr)
DISALLOW_COPY_AND_ASSIGN(RouteKSyncEntry)
TunnelType::Type tunnel_type_
bool EvpnIsLess(const KSyncEntry &rhs) const
bool local_vm_peer_route_
Agent::RouteTableType rt_type_
DISALLOW_COPY_AND_ASSIGN(RouteKSyncObject)
AgentRouteTable * rt_table_
LifetimeRef< RouteKSyncObject > table_delete_ref_
const uint32_t hbf_lintf() const
DISALLOW_COPY_AND_ASSIGN(VrfKSyncEntry)
VrfKSyncObject * ksync_obj_
void set_hbf_rintf(uint32_t hbf_rintf)
void set_hbf_lintf(uint32_t hbf_lintf)
const uint32_t vrf_id() const
const uint32_t hbf_rintf() const
std::map< IpToMacBindingKey, MacBinding > IpToMacBinding
std::pair< IpAddress, uint32_t > IpToMacBindingKey
DISALLOW_COPY_AND_ASSIGN(VrfKSyncObject)
DBTableBase::ListenerId vrf_listener_id_
DBTableBase::ListenerId vrf_listener_id() const
static string ToString(PhysicalDevice::ManagementProtocol proto)
bool WaitForTraffic() const
MacBinding(const MacBinding &mac_binding)
void reset_mac(const MacAddress &mac)
MacPreferenceMap mac_preference_map_
std::map< const MacAddress, PathPreference > MacPreferenceMap
const MacAddress & get_mac() const
MacBinding(const MacAddress &mac, const PathPreference &pref)
std::pair< const MacAddress, PathPreference > MacPreferencePair
void set_mac(const PathPreference &pref, const MacAddress &mac)
AgentRouteWalkerPtr ksync_route_walker_
RouteKSyncObject * inet6_uc_route_table_
IpToMacBinding ip_mac_binding_
DBTableBase::ListenerId evpn_rt_table_listener_id_
RouteKSyncObject * inet4_mc_route_table_
RouteKSyncObject * inet4_uc_route_table_
RouteKSyncObject * bridge_route_table_
static uint64_t UTCTimestampUsec()