5 #ifndef controller_route_path_hpp
6 #define controller_route_path_hpp
11 #include <xmpp_enet_types.h>
12 #include <xmpp_unicast_types.h>
86 virtual string ToString()
const {
return "remote VM";}
90 const string &default_vrf,
92 const string &vrf_name,
101 bool ecmp_suppressed,
150 virtual string ToString()
const {
return "remote PE";}
154 const string &default_vrf,
156 const string &vrf_name,
165 bool ecmp_suppressed,
191 template <
typename TYPE>
198 const std::string &prefix_str);
208 const std::string &prefix_str,
209 const std::string vrf_name =
"");
217 std::vector<IpAddress> &tunnel_dest_list,
218 std::vector<uint32_t> &label_list,
219 const std::string &prefix_str,
220 const std::string &vrf_name);
224 virtual string ToString()
const {
return "inet4 ecmp";}
226 void BuildNhReq(
const string &vrf_name,
const autogen::ItemType *item_type,
281 return "Nexthop cloned from local path";
309 return "Stale path marking(healdess mode)";
315 #endif //controller_route_path_hpp
uint64_t sequence_number() const
virtual string ToString() const
SecurityGroupList sg_list_
std::vector< uint32_t > label_list_
PathPreference path_preference_
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
TunnelType::TypeBmap tunnel_bmap_
ClonedLocalPathList cloned_data_list_
virtual string ToString() 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.
virtual string ToString() const
void set_copy_local_path(bool copy_local_path)
ControllerMplsRoute(const BgpPeer *peer, const string &vrf_name, const Ip4Address &addr, uint32_t label, const VnListType &dest_vn_list, int bmap, const SecurityGroupList &sg_list, const TagList &tag_list, const PathPreference &path_preference, DBRequest &req, bool ecmp_suppressed, const EcmpLoadBalance &ecmp_load_balance, bool etree_leaf, const MacAddress &rewrite_dmac=MacAddress())
PathPreference path_preference_
std::vector< int > SecurityGroupList
std::vector< IpAddress > tunnel_dest_list_
ControllerMplsRoute(const BgpPeer *peer)
static const uint64_t kInvalidPeerIdentifier
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
ControllerEcmpRoute(const BgpPeer *peer, const VnListType &vn_list, const EcmpLoadBalance &ecmp_load_balance, const TagList &tag_list, const TYPE *item, const AgentRouteTable *rt_table, const std::string &prefix_str)
DISALLOW_COPY_AND_ASSIGN(ClonedLocalPath)
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
virtual ~ControllerEcmpRoute()
Base class for all Route entries in agent.
void Swap(DBRequest *rhs)
DISALLOW_COPY_AND_ASSIGN(ControllerVmRoute)
const SecurityGroupList & sg_list() const
ClonedLocalPath(uint32_t label, const VnListType &vn_list, const SecurityGroupList &sg_list, const TagList &tag_list, uint64_t sequence_number)
virtual bool CanDeletePath(Agent *agent, AgentPath *path, const AgentRoute *rt) const
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
virtual bool AddChangePathExtended(Agent *agent, AgentPath *path, const AgentRoute *rt)
static ControllerVmRoute * MakeControllerVmRoute(const BgpPeer *peer, const string &default_vrf, const Ip4Address &router_id, const string &vrf_name, const Ip4Address &tunnel_dest, TunnelType::TypeBmap bmap, uint32_t label, MacAddress rewrite_dmac, const VnListType &dest_vn_list, const SecurityGroupList &sg_list, const TagList &tag_list, const PathPreference &path_preference, bool ecmp_suppressed, const EcmpLoadBalance &ecmp_load_balance, bool etree_leaf)
virtual ~ControllerVmRoute()
ControllerVmRoute(const BgpPeer *peer, const string &vrf_name, const Ip4Address &addr, uint32_t label, const VnListType &dest_vn_list, int bmap, const SecurityGroupList &sg_list, const TagList &tag_list, const PathPreference &path_preference, DBRequest &req, bool ecmp_suppressed, const EcmpLoadBalance &ecmp_load_balance, bool etree_leaf, const MacAddress &rewrite_dmac=MacAddress())
PathPreference path_preference_
std::vector< uint32_t > label_list_
const TagList & tag_list() const
DISALLOW_COPY_AND_ASSIGN(ControllerEcmpRoute)
static const uint32_t maximum_ecmp_paths
ClonedLocalPathList & cloned_local_path_list()
const SecurityGroupList sg_list_
std::set< std::string > VnListType
virtual std::string ToString() const
ControllerPeerPath(const BgpPeer *peer)
boost::asio::ip::address_v4 Ip4Address
std::list< ClonedLocalPath * > ClonedLocalPathList
std::vector< IpAddress > tunnel_dest_list_
EcmpLoadBalance ecmp_load_balance_
bool CopyToPath(AgentPath *path)
void BuildNhReq(const string &vrf_name, const autogen::ItemType *item_type, const VnListType &vn_list)
static ControllerMplsRoute * MakeControllerMplsRoute(const BgpPeer *peer, const string &default_vrf, const Ip4Address &router_id, const string &vrf_name, const Ip4Address &tunnel_dest, TunnelType::TypeBmap bmap, uint32_t label, MacAddress rewrite_dmac, const VnListType &dest_vn_list, const SecurityGroupList &sg_list, const TagList &tag_list, const PathPreference &path_preference, bool ecmp_suppressed, const EcmpLoadBalance &ecmp_load_balance, bool etree_leaf)
SecurityGroupList sg_list_
ClonedLocalPathList::iterator ClonedLocalPathListIter
TunnelType::TypeBmap tunnel_bmap_
DISALLOW_COPY_AND_ASSIGN(ControllerMplsRoute)
DISALLOW_COPY_AND_ASSIGN(StalePathData)
EcmpLoadBalance ecmp_load_balance_
SecurityGroupList sg_list_
virtual bool UpdateRoute(AgentRoute *route)
const VnListType vn_list_
const SecurityGroupList & sg_list() const
virtual std::string ToString() const
TunnelType::TypeBmap tunnel_bmap_
const TagList & tag_list() const
EcmpLoadBalance ecmp_load_balance_
virtual bool UpdateRoute(AgentRoute *route)
virtual ~ControllerMplsRoute()
StalePathData(uint64_t sequence_number)
ControllerVmRoute(const BgpPeer *peer)
virtual ~ClonedLocalPath()
std::vector< int > TagList