5 #ifndef vnsw_evpn_route_hpp
6 #define vnsw_evpn_route_hpp
20 virtual std::string
GetTableName()
const {
return "EvpnAgentRouteTable";}
26 const std::string &context);
33 const std::string &vn_name,
38 const std::string &vn_name,
44 const IpAddress &ip_addr, uint32_t ethernet_tag,
45 const std::string &vn_name,
49 const IpAddress &ip_addr, uint32_t ethernet_tag,
50 const std::string &vn_name,
55 const IpAddress &ip_addr, uint32_t ethernet_tag,
56 const std::string &vn_name,
58 uint64_t sequence_number);
63 uint32_t ethernet_tag,
68 const std::string &vn_name,
72 uint32_t ethernet_tag,
74 const std::string &interface_name);
79 const std::string &vn_name,
83 uint32_t ethernet_tag,
90 uint32_t ethernet_tag,
97 uint32_t ethernet_tag,
104 uint32_t ethernet_tag,
111 uint32_t ethernet_tag,
116 uint32_t ethernet_tag,
129 const IpAddress &ip, uint32_t ethernet_tag);
132 uint32_t plen, uint32_t ethernet_tag,
136 uint32_t ethernet_tag);
139 uint32_t plen, uint32_t ethernet_tag);
141 uint32_t plen, uint32_t ethernet_tag);
145 uint32_t ethernet_tag);
151 uint32_t ethernet_tag);
157 const std::string &vn_name,
181 virtual std::string
ToString()
const;
227 bool active_path_changed);
251 virtual std::string
ToString()
const;
boost::asio::ip::address IpAddress
boost::asio::ip::address_v4 Ip4Address
std::vector< int > TagList
std::vector< int > SecurityGroupList
class boost::shared_ptr< AgentSandesh > AgentSandeshPtr
This class defines interfaces for manipulating the prefix of a route stored in an Agent VRF table.
uint8_t prefix_length_
The prefix length.
Agent supports multiple route tables - Inet-unicast (IPv4/IPv6), Inet-multicast, bridge,...
const std::string & vrf_name() const
Base class for all Route entries in agent.
bool is_multicast() const
std::unique_ptr< DBRequestKey > KeyPtr
const std::string & name() const
void AddLocalVmRouteReq(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const IpAddress &ip_addr, uint32_t ethernet_tag, LocalVmRoute *data)
void AddOvsPeerMulticastRoute(const Peer *peer, uint32_t vxlan_id, const std::string &vn_name, Ip4Address vtep, Ip4Address tor_ip, bool ha_stale)
DISALLOW_COPY_AND_ASSIGN(EvpnAgentRouteTable)
EvpnAgentRouteTable(DB *db, const std::string &name)
static void DeleteType5Req(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const IpAddress &ip_addr, uint32_t plen, uint32_t ethernet_tag)
virtual AgentSandeshPtr GetAgentSandesh(const AgentSandeshArguments *args, const std::string &context)
static void AddRemoteVmRoute(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const IpAddress &ip_addr, uint32_t plen, uint32_t ethernet_tag, AgentRouteData *data)
static DBTableBase * CreateTable(DB *db, const std::string &name)
void DeleteOvsPeerMulticastRoute(const Peer *peer, uint32_t vxlan_id, const Ip4Address &tor_ip)
void AddLocalVmRouteReq(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const VmInterface *intf, const IpAddress &ip, uint32_t label, const std::string &vn_name, const SecurityGroupList &sg_id_list, const TagList &tag_id_list, const PathPreference &path_pref, uint32_t ethernet_tag, bool etree_leaf)
void AddClonedLocalPathReq(const Peer *peer, const string &vrf_name, const MacAddress &mac, const IpAddress &ip_addr, uint32_t ethernet_tag, ClonedLocalPath *data)
virtual ~EvpnAgentRouteTable()
EvpnRouteEntry * FindRoute(const MacAddress &mac, const IpAddress &ip_addr, uint32_t plen, uint32_t ethernet_tag)
void AddReceiveRoute(const Peer *peer, const std::string &vrf_name, uint32_t label, const MacAddress &mac, const IpAddress &ip_addr, uint32_t ethernet_tag, const std::string &vn_name, const PathPreference &pref)
static void AddRemoteVmRouteReq(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const IpAddress &ip_addr, uint32_t plen, uint32_t ethernet_tag, AgentRouteData *data)
virtual std::string GetTableName() const
void DeleteOvsPeerMulticastRouteReq(const Peer *peer, uint32_t vxlan_id, const Ip4Address &tor_ip)
void AddLocalVmRoute(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const VmInterface *intf, const IpAddress &ip, uint32_t label, const std::string &vn_name, const SecurityGroupList &sg_id_list, const TagList &tag_id_list, const PathPreference &path_pref, uint32_t ethernet_tag, bool etree_leaf, const std::string &interface_name)
virtual Agent::RouteTableType GetTableType() const
void AddOvsPeerMulticastRouteInternal(const Peer *peer, uint32_t vxlan_id, const std::string &vn_name, Ip4Address vtep, Ip4Address tor_ip, bool enqueue, bool ha_stale)
static EvpnRouteEntry * FindRoute(const Agent *agent, const std::string &vrf_name, const MacAddress &mac, const IpAddress &ip_addr, uint32_t plen, uint32_t ethernet_tag)
static void Delete(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const IpAddress &ip_addr, uint32_t ethernet_tag)
void AddType5Route(const Peer *peer, const std::string &vrf_name, const IpAddress &ip_addr, uint32_t ethernet_tag, EvpnRoutingData *data, uint8_t plen=0)
EvpnRouteEntry * FindRouteNoLock(const MacAddress &mac, const IpAddress &ip_addr, uint32_t plen, uint32_t ethernet_tag)
void AddReceiveRouteReq(const Peer *peer, const std::string &vrf_name, uint32_t label, const MacAddress &mac, const IpAddress &ip_addr, uint32_t ethernet_tag, const std::string &vn_name, const PathPreference &pref)
void DelLocalVmRoute(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const VmInterface *intf, const IpAddress &ip, uint32_t ethernet_tag)
static uint32_t ComputeHostIpPlen(const IpAddress &addr)
void AddOvsPeerMulticastRouteReq(const Peer *peer, uint32_t vxlan_id, const std::string &vn_name, Ip4Address vtep, Ip4Address tor_ip)
void AddControllerReceiveRouteReq(const Peer *peer, const std::string &vrf_name, uint32_t label, const MacAddress &mac, const IpAddress &ip_addr, uint32_t ethernet_tag, const std::string &vn_name, const PathPreference &pref, uint64_t sequence_number)
void DeleteOvsPeerMulticastRouteInternal(const Peer *peer, uint32_t vxlan_id, const Ip4Address &tor_ip, bool enqueue)
static void DeleteReq(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const IpAddress &ip_addr, uint32_t plen, uint32_t ethernet_tag, AgentRouteData *data)
static void ResyncVmRoute(const Peer *peer, const string &vrf_name, const MacAddress &mac, const IpAddress &ip_addr, uint32_t ethernet_tag, AgentRouteData *data)
uint32_t ethernet_tag() const
virtual ~EvpnRouteEntry()
bool publish_to_inet_route_table_
virtual void UpdateDerivedRoutes(AgentRouteTable *table, const AgentPath *path, bool active_path_changed)
virtual const std::string GetSourceAddressString() const
uint8_t prefix_length() const
!
virtual Agent::RouteTableType GetTableType() const
virtual int CompareTo(const Route &rhs) const
virtual void DeleteDerivedRoutes(AgentRouteTable *table)
bool publish_to_bridge_route_table_
void set_publish_to_inet_route_table(bool publish_to_inet_route_table)
virtual void UpdateDependantRoutes()
EvpnRouteEntry(VrfEntry *vrf, const MacAddress &mac, const IpAddress &ip_addr, uint8_t plen, uint32_t ethernet_tag, bool is_multicast)
const MacAddress & mac() const
virtual KeyPtr GetDBRequestKey() const
virtual bool ReComputePathDeletion(AgentPath *path)
virtual void SetKey(const DBRequestKey *key)
bool publish_to_inet_route_table() const
void set_publish_to_bridge_route_table(bool publish_to_bridge_route_table)
const AgentPath * FindOvsPath() const
virtual std::string ToString() const
virtual bool DBEntrySandesh(Sandesh *sresp, bool stale) const
bool publish_to_bridge_route_table() const
virtual const std::string GetAddressString() const
DISALLOW_COPY_AND_ASSIGN(EvpnRouteEntry)
virtual uint32_t GetActiveLabel() const
virtual AgentRoute * AllocRouteEntry(VrfEntry *vrf, bool is_multicast) const
const IpAddress & ip_addr() const
uint32_t ethernet_tag() const
const MacAddress & GetMac() const
virtual std::string ToString() const
DISALLOW_COPY_AND_ASSIGN(EvpnRouteKey)
virtual EvpnRouteKey * Clone() const
EvpnRouteKey(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const IpAddress &ip_addr, uint32_t plen, uint32_t ethernet_tag)
virtual Agent::RouteTableType GetRouteTableType()
std::string ToString() const
static const MacAddress kZeroMac
const Peer * peer() const
const std::string & vrf_name() const