5 #ifndef vnsw_agent_path_hpp
6 #define vnsw_agent_path_hpp
72 const std::string&
vrf()
const {
325 virtual std::string
ToString()
const {
return "AgentPath"; }
339 bool &comp_nh_policy,
554 const std::string &
parent);
591 virtual std::string
ToString()
const {
return "EvpnDerivedPathData";}
629 virtual std::string
ToString()
const {
return "Resolve";}
653 bool is_learnt_route =
false):
672 virtual std::string
ToString()
const {
return "local VM";}
732 virtual std::string
ToString()
const {
return "PBB route";}
752 int tunnel_bmap,
const VnListType &dest_vn_list,
761 virtual std::string
ToString()
const {
return "host";}
786 virtual std::string
ToString()
const {
return "host";}
809 virtual std::string
ToString()
const {
return "l2-receive";}
834 virtual std::string
ToString()
const {
return "vlannh";}
879 bool ha_stale =
false):
890 virtual std::string
ToString()
const {
return "multicast";}
895 const std::string &dest_vn_name,
899 uint32_t tunnel_type,
902 bool ha_stale =
false);
920 virtual string ToString()
const {
return "subnet route";}
934 uint32_t tunnel_bmap,
bool policy,
const std::string &vn) :
947 virtual std::string
ToString()
const {
return "receive";}
951 boost::scoped_ptr<InterfaceKey>
intf_;
977 virtual std::string
ToString()
const {
return "arp";}
1016 const std::string &vrf_name,
1030 virtual std::string
ToString()
const {
return "gateway";}
1061 const std::string &vn_name);
1066 virtual std::string
ToString()
const {
return "Interface";}
1118 virtual std::string
ToString()
const {
return "MacVmBindingPathData";}
1141 const std::string &parent,
1144 virtual std::string
ToString()
const {
return "InetEvpnRoutePath"; }
1171 virtual std::string
ToString()
const {
return "Derived Inet route from Evpn";}
1199 const std::string& origin_vn =
"");
1204 virtual std::string
ToString()
const {
return "Evpn routing data";}
1241 #endif // vnsw_agent_path_hpp
InterfaceConstRef vm_interface_
VrfEntryConstRef routing_vrf_
void set_path_preference(const PathPreference &path_preference)
MulticastRoutePath(const Peer *peer)
SecurityGroupList sg_list_
virtual std::string ToString() const
uint32_t ethernet_tag() const
NextHopRef original_nh() const
void set_sequence(uint32_t sequence)
uint64_t sequence_number() const
boost::scoped_ptr< CompositeNHKey > composite_nh_key_
const TagList & tag_list() const
EvpnRoutingData(DBRequest &nh_req, const SecurityGroupList &sg_list, const CommunityList &communities, const PathPreference &path_preference, const EcmpLoadBalance &ecmp_load_balance, const TagList &tag_list, VrfEntryConstRef vrf_entry, uint32_t vxlan_id, const VnListType &vn_list, const std::string &origin_vn="")
virtual std::string ToString() const
const CommunityList communities_
virtual ~L2ReceiveRoute()
void set_path_preference(const PathPreference &rp)
uint32_t l3_vrf_vxlan_id_
virtual bool AddChangePathExtended(Agent *, AgentPath *, const AgentRoute *)
virtual ~MacVmBindingPath()
DISALLOW_COPY_AND_ASSIGN(AgentPath)
const VnListType & dest_vn_list() const
void set_vm_interface(const VmInterface *vm_interface)
std::string dest_vn_name_
void set_communities(const CommunityList &communities)
PathPreferenceData(const PathPreference &path_preference)
void ResetEcmpHashFields()
void SetDependentTable(AgentRouteTable *table)
SecurityGroupList sg_list_
MacVmBindingPathData(const VmInterface *vm_intf, bool flood_dhcp)
bool ChangeNH(Agent *agent, NextHop *nh)
bool operator==(const PathPreference &rhs) const
uint32_t tunnel_bmap() const
void set_gw_ip(const IpAddress &addr)
void set_unresolved(bool unresolved)
PathPreference(uint32_t sequence, uint32_t preference, bool wait_for_traffic, bool ecmp)
const TagList & tag_list() const
virtual std::string ToString() const
const PathPreference & path_preference() const
bool force_policy() const
DISALLOW_COPY_AND_ASSIGN(PBBRoute)
DependencyRef< AgentRoute, AgentRoute > dependant_rt_
const IpAddress subnet_service_ip() const
virtual std::string ToString() const
void set_local_ecmp_mpls_label(MplsLabel *mpls)
const MacAddress & MacAddr() const
const IpAddress & ip_addr() const
virtual AgentPath * CreateAgentPath(const Peer *peer, AgentRoute *rt) const
void set_original_nh(NextHopRef nh)
MulticastRoute(const string &vn_name, uint32_t label, int vxlan_id, uint32_t tunnel_type, DBRequest &nh_req, COMPOSITETYPE comp_nh_type, uint64_t sequence_number, bool ha_stale=false)
DISALLOW_COPY_AND_ASSIGN(MulticastRoutePath)
InetInterfaceRoute(const InetInterfaceKey &intf, uint32_t label, int tunnel_bmap, const VnListType &dest_vn_list, uint64_t sequence_number)
void SetUnresolved(bool flag)
const std::string & parent() const
CommunityList communities_
virtual const NextHop * ComputeNextHop(Agent *agent) const
SecurityGroupList sg_list_
void ImportPrevActiveNH(Agent *agent, NextHop *nh)
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
void set_routing_vrf(const VrfEntry *vrf)
DependencyRef< AgentRoute, MplsLabel > local_ecmp_mpls_label_
TunnelType::Type tunnel_type() 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.
void set_ethernet_tag(uint32_t ethernet_tag)
virtual ~EvpnDerivedPathData()
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
virtual InterfaceKey * Clone() const =0
virtual bool UpdateRoute(AgentRoute *rt)
DISALLOW_COPY_AND_ASSIGN(InetInterfaceRoute)
void ClearDependantRoute()
uint32_t preference() const
void set_sg_list(const SecurityGroupList &sg)
bool RebakeAllTunnelNHinCompositeNH(const AgentRoute *sync_route)
DISALLOW_COPY_AND_ASSIGN(IpamSubnetRoute)
ReceiveRoute(const InterfaceKey &intf_key, uint32_t label, uint32_t tunnel_bmap, bool policy, const std::string &vn)
boost::asio::ip::address IpAddress
virtual bool PostChangeNH(Agent *agent, NextHop *nh)
virtual ~EvpnRoutingData()
void set_vxlan_id(uint32_t vxlan_id)
EcmpLoadBalance ecmp_load_balance_
DISALLOW_COPY_AND_ASSIGN(VlanNhRoute)
DISALLOW_COPY_AND_ASSIGN(ResolveRoute)
uint32_t GetTunnelBmap() const
PathPreference path_preference_
boost::shared_ptr< AgentPathEcmpComponent > AgentPathEcmpComponentPtr
virtual bool IsLess(const AgentPath &rhs) const
std::vector< int > SecurityGroupList
InetEvpnRouteData(const EvpnRouteEntry *evpn_rt)
const std::string & dest_vn_name() const
void set_ip_addr(const IpAddress &ip_addr)
const TagList path_tag_list_
virtual bool CanDeletePath(Agent *agent, AgentPath *path, const AgentRoute *rt) const
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
virtual ~InetUnicastNdpRoute()
const SecurityGroupList & sg_list() const
virtual AgentPath * CreateAgentPath(const Peer *peer, AgentRoute *rt) const
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
DISALLOW_COPY_AND_ASSIGN(InetEvpnRouteData)
virtual ~InetEvpnRouteData()
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
COMPOSITETYPE comp_nh_type_
const std::string & parent() const
const VrfEntry * routing_vrf() const
EvpnDerivedPath(const EvpnPeer *evpn_peer, const IpAddress &ip_addr, uint32_t ethernet_tag, const std::string &parent)
TunnelType::TypeBmap tunnel_bmap_
bool is_health_check_service_
bool IsDynamicLearntRoute()
const AgentRoute * dependant_rt() const
void set_native_vrf_id(uint32_t vrf_id)
void set_loc_sequence(uint32_t loc_sequence)
EcmpHashFields ecmp_hash_fields_
void set_is_health_check_service(bool val)
virtual std::string ToString() const
virtual std::string ToString() const
virtual std::string ToString() const
VrfEntryConstRef routing_vrf_
virtual bool CanDeletePath(Agent *agent, AgentPath *path, const AgentRoute *rt) const
const SecurityGroupList sg_list_
void CopyData(const AgentPath *path)
std::string dest_vn_name_
virtual bool IsLess(const AgentPath &right) const
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
InterfaceConstRef arp_interface_
virtual AgentPath * CreateAgentPath(const Peer *peer, AgentRoute *rt) const
EvpnRoutingPath(const Peer *peer, AgentRoute *rt, VrfEntryConstRef routing_vrf)
void set_is_local(bool is_local)
void set_vrf(const std::string &vrf)
DISALLOW_COPY_AND_ASSIGN(MulticastRoute)
const MplsLabel * local_ecmp_mpls_label() const
virtual const NextHop * ComputeNextHop(Agent *agent) const
const std::string dest_vn_name_
L2ReceiveRoute(const std::string &dest_vn_name, uint32_t vxlan_id, uint32_t mpls_label, const PathPreference &pref, uint64_t sequence_number)
bool operator<(const PathPreference &rhs) const
ResolveRoute(const InterfaceKey *key, bool policy, const uint32_t label, const std::string &vn_name, const SecurityGroupList &sg_list, const TagList &tag_list)
bool operator==(const AgentPathEcmpComponent &rhs) const
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
void set_native_vrf_id(uint32_t vrf_id)
bool ChangeCompositeNH(Agent *agent, CompositeNHKey *nh)
bool ReorderCompositeNH(Agent *agent, CompositeNHKey *nh, bool &comp_nh_policy, const AgentPath *local_path)
void SetParent(const std::string &parent)
void SetDynamicLearntRouteFlag(bool is_learnt_route)
const AgentPath * reference_path() const
bool is_health_check_service_
Base class for all Route entries in agent.
void Swap(DBRequest *rhs)
void UpdateDependentRoute(AgentRoute *rt)
virtual bool CanDeletePath(Agent *agent, AgentPath *path, const AgentRoute *rt) const
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
CompositeNHKey * composite_nh_key()
static bool CopyPathParameters(Agent *agent, AgentPath *path, const std::string &dest_vn_name, bool unresolved, uint32_t vxlan_id, uint32_t label, uint32_t tunnel_type, NextHop *nh, const AgentRoute *rt, bool ha_stale=false)
virtual bool IsLess(const AgentPath &right) const
AgentPath(const Peer *peer, AgentRoute *rt)
virtual const AgentPath * UsablePath() const
DISALLOW_COPY_AND_ASSIGN(ReceiveRoute)
DISALLOW_COPY_AND_ASSIGN(EvpnRoutingData)
boost::scoped_ptr< const InterfaceKey > intf_key_
void ResetEcmpMemberList(AgentPathEcmpComponentPtrList list)
bool operator!=(const PathPreference &rhs) const
virtual bool UpdateRoute(AgentRoute *rt)
const Ip4Address & tunnel_dest() const
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
virtual std::string ToString() const
const CommunityList communities_
uint32_t native_vrf_id() const
virtual string ToString() const
const MacAddress & MacAddr() const
TunnelType::TypeBmap tunnel_bmap_
InetUnicastNdpRoute(const std::string &vrf_name, const IpAddress &addr, bool policy, const VnListType &vn_list, const SecurityGroupList &sg, const TagList &tag)
TunnelType::TypeBmap tunnel_bmap_
virtual bool Sync(AgentRoute *sync_route)
bool layer2_control_word() const
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
void set_tunnel_bmap(TunnelType::TypeBmap bmap)
NextHop * nexthop() const
TunnelType::Type GetTunnelType() const
COMPOSITETYPE comp_nh_type() const
DependencyRef< AgentRoute, AgentRoute > dependent_rt_
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
virtual std::string ToString() const
virtual ~Inet4UnicastGatewayRoute()
SecurityGroupList sg_list_
const TagList & tag_list() const
DISALLOW_COPY_AND_ASSIGN(AgentPathEcmpComponent)
virtual std::string ToString() const
virtual ~EvpnRoutingPath()
void set_dependent_ip(const IpAddress &ip)
virtual bool UpdateRoute(AgentRoute *rt)
void set_arp_interface(const Interface *intf)
void set_ecmp_suppressed(bool suppresed)
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
bool IsDependentRt(void) const
virtual std::string ToString() const
const SecurityGroupList sg_list_
const IpAddress & gw_ip() const
PathPreference & path_preference_non_const()
bool static_preference() const
AgentRouteTable * dependent_table_
MacVmBindingPath(const Peer *peer)
const std::string & vrf() const
DISALLOW_COPY_AND_ASSIGN(InetEvpnRoutePath)
virtual ~Inet4UnicastInterfaceRoute()
void set_subnet_service_ip(const IpAddress &ip)
uint32_t sequence() const
bool is_subnet_discard() const
void set_layer2_control_word(bool layer2_control_word)
void set_vrf_name(const std::string &vrf_name)
Inet4UnicastArpRoute(const std::string &vrf_name, const Ip4Address &addr, bool policy, const VnListType &vn_list, const SecurityGroupList &sg, const TagList &tag)
virtual std::string ToString() const
uint32_t loc_sequence() const
virtual ~MulticastRoute()
void set_copy_local_path(bool copy_local_path)
void set_parent(const std::string &parent)
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
EcmpLoadBalance ecmp_load_balance_
Inet4UnicastInterfaceRoute(const PhysicalInterface *intrface, const std::string &vn_name)
bool is_health_check_service() const
DISALLOW_COPY_AND_ASSIGN(Inet4UnicastInterfaceRoute)
virtual AgentPath * CreateAgentPath(const Peer *peer, AgentRoute *rt) const
void UpdateLabels(uint32_t evpn_label, uint32_t fabric_label)
uint32_t native_vrf_id() const
static const std::string & NullString()
const Peer * peer() const
const VmInterface * vm_interface() const
boost::intrusive_ptr< const Interface > InterfaceConstRef
DISALLOW_COPY_AND_ASSIGN(MacVmBindingPathData)
DropRoute(const string &vn_name)
const std::string & origin_vn() const
PBBRoute(const VrfKey &vrf_key, const MacAddress &mac, uint32_t isid, const VnListType &vn_list, const SecurityGroupList &sg_list, const TagList &tag_list)
const bool unresolved() const
void set_wait_for_traffic(bool wait_for_traffic)
void set_preference(uint32_t preference)
const AgentPath * reference_path_
const std::string & vrf_name() const
void ResetDependantRoute(AgentRoute *rt)
virtual std::string ToString() const
virtual ~InetEvpnRoutePath()
std::vector< std::string > CommunityList
void SetSandeshData(PathSandeshData &data) const
std::vector< Ip4Address > AddressList
void set_peer_sequence_number(uint64_t sequence_number)
virtual bool PostChangeNH(Agent *agent, NextHop *nh)
DISALLOW_COPY_AND_ASSIGN(L2ReceiveRoute)
virtual ~InetInterfaceRoute()
VlanNhRoute(const VmInterfaceKey &intf, uint16_t tag, uint32_t label, const VnListType &dest_vn_list, const SecurityGroupList &sg_list, const TagList &tag_list, const PathPreference &path_preference, uint64_t sequence_number)
uint64_t peer_sequence_number() const
std::set< std::string > VnListType
const VmInterface * vm_intf_
uint64_t peer_sequence_number_
const SecurityGroupList path_sg_list_
void set_tunnel_dest(const Ip4Address &tunnel_dest)
static Type ComputeType(TypeBmap bmap)
const std::string origin_vn_
virtual bool IsLess(const AgentPath &right) const
virtual bool UpdateRoute(AgentRoute *rt)
virtual bool CanDeletePath(Agent *agent, AgentPath *path, const AgentRoute *rt) const
Inet4UnicastGatewayRoute(const AddressList &gw_list, const std::string &vrf_name, const VnListType &vn_list, uint32_t label, const SecurityGroupList &sg, const TagList &tag, const CommunityList &communities, bool native_encap)
virtual std::string ToString() const
boost::asio::ip::address_v4 Ip4Address
virtual std::string ToString() const
DISALLOW_COPY_AND_ASSIGN(LocalVmRoute)
SecurityGroupList sg_list_
EvpnPeer * evpn_peer() const
std::vector< AgentPathEcmpComponentPtr > AgentPathEcmpComponentPtrList
uint32_t GetActiveLabel() const
bool ResolveGwNextHops(Agent *agent, const AgentRoute *sync_route)
bool UpdateNHPolicy(Agent *agent)
virtual bool Sync(AgentRoute *sync_route)
virtual std::string ToString() const
virtual std::string ToString() const
boost::intrusive_ptr< const Peer > PeerConstPtr
const IpAddress & GetFixedIp() const
void set_inactive(bool inactive)
AgentPathEcmpComponentPtrList ecmp_member_list_
std::string dest_vn_name_
virtual ~EvpnDerivedPath()
virtual AgentPath * CreateAgentPath(const Peer *peer, AgentRoute *rt) const
DISALLOW_COPY_AND_ASSIGN(EvpnDerivedPathData)
const CommunityList & communities() const
DISALLOW_COPY_AND_ASSIGN(HostRoute)
void set_ethernet_tag(uint32_t ethernet_tag)
virtual std::string ToString() const
virtual const NextHop * ComputeNextHop(Agent *agent) const
void UpdateEcmpHashFields(const Agent *agent, const EcmpLoadBalance &ecmp_load_balance, DBRequest &nh_req)
void set_tag_list(const TagList &tag)
HostRoute(const PacketInterfaceKey &intf, const std::string &dest_vn_name)
void set_nexthop(NextHop *nh)
boost::scoped_ptr< InterfaceKey > intf_
void set_is_subnet_discard(bool discard)
CommunityList communities_
PathPreference path_preference_
SecurityGroupList sg_list_
virtual ~AgentPathEcmpComponent()
void set_origin_vn(const std::string &origin_vn)
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
InetEvpnRoutePath(const Peer *peer, const MacAddress &mac, const std::string &parent, AgentRoute *rt)
AgentPathEcmpComponent(IpAddress addr, uint32_t label, AgentRoute *rt)
const VnListType dest_vn_list_
PathPreference path_preference_
virtual bool UpdateRoute(AgentRoute *rt)
virtual std::string ToString() const
void set_flood_dhcp(bool flood_dhcp)
bool dest_vn_match(const std::string &vn) const
DISALLOW_COPY_AND_ASSIGN(Inet4UnicastGatewayRoute)
void SetMacAddr(const MacAddress &mac)
uint32_t vxlan_id() const
void set_etree_leaf(bool leaf)
virtual bool UpdateRoute(AgentRoute *rt)
void DeleteEvpnType5Route(Agent *agent, const AgentRoute *rt) const
void set_arp_valid(bool valid)
void set_composite_nh_key(CompositeNHKey *key)
void set_static_preference(bool static_pref)
virtual bool flood_dhcp() const
AgentRoute * GetParentRoute()
const SecurityGroupList & sg_list() const
EvpnDerivedPathData(const EvpnRouteEntry *evpn_rt)
uint32_t vxlan_id() const
bool ecmp_suppressed() const
void set_label(uint32_t label)
bool SyncDependantRoute(const AgentRoute *sync_route)
const std::string & parent() const
void SetProxyArp(bool proxy_arp)
void set_arp_mac(const MacAddress &mac)
bool layer2_control_word_
DISALLOW_COPY_AND_ASSIGN(MacVmBindingPath)
LocalVmRoute(const VmInterfaceKey &intf, uint32_t mpls_label, uint32_t vxlan_id, bool force_policy, const VnListType &vn_list, uint8_t flags, const SecurityGroupList &sg_list, const TagList &tag_list, const CommunityList &communities, const PathPreference &path_preference, const IpAddress &subnet_service_ip, const EcmpLoadBalance &ecmp_load_balance, bool is_local, bool is_health_check_service, uint64_t sequence_number, bool etree_leaf, bool native_encap, const std::string &intf_route_type="", bool is_learnt_route=false)
const Ip4Address * NexthopIp(Agent *agent) const
bool UpdateTunnelType(Agent *agent, const AgentRoute *sync_route)
void set_dest_vn_list(const VnListType &dest_vn_list)
DBRequest composite_nh_req_
virtual const NextHop * ComputeNextHop(Agent *agent) const
bool wait_for_traffic() const
IpamSubnetRoute(DBRequest &nh_req, const std::string &dest_vn_name)
virtual ~Inet4UnicastArpRoute()
std::string intf_route_type_
bool ConfigChanged(const PathPreference &rhs) const
DISALLOW_COPY_AND_ASSIGN(Inet4UnicastArpRoute)
PathPreference path_preference_
virtual std::string ToString() const
const PathPreference path_preference_
virtual ~MulticastRoutePath()
PathPreference path_preference_
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
const IpAddress & dependent_ip() const
bool ResyncControlWord(const AgentRoute *rt)
uint32_t preference() const
uint32_t ethernet_tag() const
uint32_t tunnel_bmap() const
void reset(ObjectType *ptr)
const Interface * arp_interface() const
IpAddress subnet_service_ip_
void set_tunnel_type(TunnelType::Type type)
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
DISALLOW_COPY_AND_ASSIGN(EvpnRoutingPath)
const CommunityList & communities() const
const std::string & Parent() const
virtual bool UpdateRoute(AgentRoute *rt)
void set_force_policy(bool force_policy)
const PathPreference path_preference_
DISALLOW_COPY_AND_ASSIGN(InetUnicastNdpRoute)
const EcmpLoadBalance ecmp_load_balance_
DISALLOW_COPY_AND_ASSIGN(DropRoute)
IpAddress subnet_service_ip_
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
uint32_t sequence() const
void GetDestinationVnList(std::vector< std::string > *vn_list) const
virtual ~MacVmBindingPathData()
const IpAddress & ip_addr() const
void set_parent(const std::string &parent)
DISALLOW_COPY_AND_ASSIGN(EvpnDerivedPath)
TunnelType::Type tunnel_type_
const SecurityGroupList & sg_list() const
uint32_t vxlan_id() const
virtual const AgentPath * UsablePath() const
SecurityGroupList sg_list_
const EcmpLoadBalance & ecmp_load_balance() const
const std::string & intf_route_type() const
virtual ~IpamSubnetRoute()
void set_ecmp_load_balance(const EcmpLoadBalance &ecmp_load_balance)
NextHop * UpdateNH(Agent *agent, CompositeNH *cnh, const TsnElector *te)
void SetIpamHostRoute(bool ipam_host_route)
const PathPreference & path_preference() const
AgentRouteTable * GetDependentTable() const
void CopyLocalPath(CompositeNHKey *composite_nh_key, const AgentPath *local_path)
void SyncRoute(bool sync)
void set_tunnel_bmap(TunnelType::TypeBmap bmap)
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
boost::intrusive_ptr< NextHop > NextHopRef
virtual std::string ToString() const
std::vector< int > TagList
void set_policy(bool policy)
std::unique_ptr< InterfaceKey > interface_key_
MacAddress arp_mac() const