40 using namespace boost::uuids;
47 IpAddress::from_string(
"FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF");
64 VmiToPhysicalDeviceVnTree::iterator iter =
72 if (iter->second.dev_ != dev || iter->second.vn_ != vn) {
74 (vmi, iter->second.dev_, iter->second.vn_);
77 iter->second.dev_ = dev;
78 iter->second.vn_ = vn;
83 VmiToPhysicalDeviceVnTree::iterator iter =
89 (vmi, iter->second.dev_, iter->second.vn_);
178 if (parentIntf == NULL)
180 else if (parentIntf->
IsActive() ==
false) {
196 if (
vrf_.get() == NULL) {
199 }
else if ((
vn_.get() == NULL) || (
vrf_.get() == NULL)) {
203 if (
vn_.get() && !
vn_.get()->admin_state()) {
332 }
else if (
ecmp ==
true) {
342 bool ecmp_mode =
false;
379 }
else if (ecmp_mode ==
true) {
426 label, vn_name, sg_id_list,
433 uint32_t ethernet_tag,
448 uint32_t plen,
const std::string &dest_vn,
449 bool force_policy,
bool ecmp,
bool is_local,
450 bool is_health_check_service,
454 const std::string &intf_route_type,
455 bool is_learnt_route) {
467 bool native_encap =
false;
475 vn_list.insert(dest_vn);
480 sg_id_list,
tag_list, communities, force_policy, path_preference,
482 name(), native_encap, intf_route_type, is_learnt_route);
497 (std::vector<autogen::DhcpOptionType> *
options)
const {
508 (std::vector<autogen::DhcpOptionType> *
options,
bool ipv6)
const {
510 const std::vector<VnIpam> &vn_ipam =
vn()->
GetVnIpam();
512 for (index = 0; index < vn_ipam.size(); ++index) {
520 if (index < vn_ipam.size() &&
521 vn_ipam[index].oper_dhcp_options.are_dhcp_options_set()) {
522 *
options = vn_ipam[index].oper_dhcp_options.dhcp_options();
532 (std::vector<autogen::DhcpOptionType> *
options,
bool ipv6)
const {
534 std::string ipam_name;
535 autogen::IpamType ipam_type;
538 *
options = ipam_type.dhcp_option_list.dhcp_option;
543 *
options = ipam_type.dhcp_option_list.dhcp_option;
553 AllowedAddressPairSet::const_iterator it =
556 if (it->addr_ == ip && it->plen_ == plen &&
562 LearntMacIpSet::const_iterator mac_ip_it =
565 if (mac_ip_it->ip_ == ip &&
567 return mac_ip_it->mac_;
580 AllowedAddressPairSet::const_iterator it =
583 if (it->addr_ == ip && it->plen_ == plen) {
601 (
vrf_->GetInet4UnicastRouteTable()->FindActiveEntry(&rt_key));
610 return rt->
FindPath(
peer_.get())->path_preference().wait_for_traffic();
617 }
else if (vm_ip.is_v6()) {
620 if (
vn_.get() == NULL) {
624 const VnIpam *ipam = NULL;
625 if (
subnet_.is_unspecified()) {
626 ipam =
vn_->GetIpam(vm_ip);
632 if ((vm_ip.is_v4() && ipam->
dns_server.is_v4()) ||
633 (vm_ip.is_v6() && ipam->
dns_server.is_v6())) {
642 if (
vn_.get() == NULL) {
646 const VnIpam *ipam = NULL;
647 if (
subnet_.is_unspecified()) {
648 ipam =
vn_->GetIpam(vm_ip);
654 if ((vm_ip.is_v4() && ipam->
default_gw.is_v4()) ||
655 (vm_ip.is_v6() && ipam->
default_gw.is_v6())) {
664 SecurityGroupEntrySet::const_iterator it;
666 if (it->del_pending_)
668 if (it->sg_.get() == NULL)
670 sg_id_list->push_back(it->sg_->GetSgId());
677 if (it->vrf_.get() ==
vrf) {
688 if (it->tag_ == vlan_tag) {
689 return it->vrf_.get();
709 VmInterface::FloatingIpSet::const_iterator it =
712 if ((*it).floating_ip_ == ip) {
722 VmInterface::AliasIpSet::const_iterator it =
725 if (it->vrf_.get() == NULL) {
729 if (ip == it->alias_ip_) {
730 return it->vrf_.get();
737 std::pair<HealthCheckInstanceSet::iterator, bool> ret;
776 if (hc_service == NULL)
801 return std::string();
822 while (start != end) {
823 if ((start->protocol == protocol) && (start->port == port) &&
825 *ignore_addr = start->ignore_address;
841 uint8_t max_mask, max_plen;
846 if (src_ip->is_v4()) {
880 *src_ip, max_mask, max_plen,
889 (start->protocol == protocol) && (start->port == port)) {
890 while (start != end) {
891 if (src_ip->is_v4() && start->src_prefix.is_v4() &&
893 start->src_prefix_mask) &&
894 (start->protocol == protocol) && (start->port == port)) {
897 match_ffe = &(*start);
899 }
else if (src_ip->is_v6() && start->src_prefix.is_v6() &&
901 start->src_prefix_mask) &&
902 (start->protocol == protocol) && (start->port == port)) {
905 match_ffe = &(*start);
912 if (src_ip->is_v4()) {
929 uint16_t *dport,
bool *same_port_num,
933 if ((*sport) < (*dport)) {
944 if ((*sport) == (*dport)) {
945 *same_port_num =
true;
969 uint8_t max_mask, max_plen;
974 if (dst_ip->is_v4()) {
1008 *dst_ip, max_mask, max_plen);
1013 (start->protocol == protocol) && (start->port == port)) {
1014 while (start != end) {
1015 if (dst_ip->is_v4() && start->dst_prefix.is_v4() &&
1017 start->dst_prefix_mask) &&
1018 (start->protocol == protocol) && (start->port == port)) {
1021 match_ffe = &(*start);
1023 }
else if (dst_ip->is_v6() && start->dst_prefix.is_v6() &&
1025 start->dst_prefix_mask) &&
1026 (start->protocol == protocol) && (start->port == port)) {
1029 match_ffe = &(*start);
1036 if (dst_ip->is_v4()) {
1054 uint16_t *dport,
bool *same_port_num,
1058 if ((*sport) < (*dport)) {
1069 if ((*sport) == (*dport)) {
1070 *same_port_num =
true;
1081 *sport = *dport = 0;
1093 Ip4Address Ipv4_src_subnet, Ipv4_src_ret_subnet;
1094 Ip4Address Ipv4_dst_subnet, Ipv4_dst_ret_subnet;
1095 Ip6Address Ipv6_src_subnet, Ipv6_src_ret_subnet;
1096 Ip6Address Ipv6_dst_subnet, Ipv6_dst_ret_subnet;
1097 uint8_t max_mask, max_plen;
1100 if (src_ip->is_v4()) {
1135 *src_ip, max_mask, max_plen,
1136 *dst_ip, max_mask, max_plen);
1141 (start->protocol == protocol) && (start->port == port)) {
1142 while (start != end) {
1143 if (src_ip->is_v4() && start->src_prefix.is_v4() &&
1144 start->dst_prefix.is_v4() &&
1146 start->src_prefix_mask) &&
1148 start->dst_prefix_mask) &&
1149 (start->protocol == protocol) && (start->port == port)) {
1150 match_ffe = &(*start);
1151 }
else if (src_ip->is_v6() && start->src_prefix.is_v6() &&
1152 start->dst_prefix.is_v6() &&
1154 start->src_prefix_mask) &&
1156 start->dst_prefix_mask) &&
1157 (start->protocol == protocol) && (start->port == port)) {
1158 match_ffe = &(*start);
1164 if (src_ip->is_v4()) {
1165 Ipv4_src_ret_subnet =
1168 Ipv4_dst_ret_subnet =
1171 *src_ip =
IpAddress(Ipv4_src_ret_subnet);
1172 *dst_ip =
IpAddress(Ipv4_dst_ret_subnet);
1174 Ipv6_src_ret_subnet =
1177 Ipv6_dst_ret_subnet =
1180 *src_ip =
IpAddress(Ipv6_src_ret_subnet);
1181 *dst_ip =
IpAddress(Ipv6_dst_ret_subnet);
1190 uint16_t *dport,
bool *same_port_num,
1193 if ((*sport) < (*dport)) {
1204 if ((*sport) == (*dport)) {
1205 *same_port_num =
true;
1216 *sport = *dport = 0;
1224 uint16_t *sport, uint16_t *dport,
1225 bool *same_port_num,
1227 bool *is_fat_flow_src_prefix,
1228 bool *is_fat_flow_dst_prefix,
1232 uint16_t *src_port = sport,
1234 IpAddress *src_ip = (ingress? SrcIP: DstIP),
1235 *dst_ip = (ingress? DstIP: SrcIP);
1236 bool *is_src_prefix = (ingress? is_fat_flow_src_prefix : is_fat_flow_dst_prefix);
1237 bool *is_dst_prefix = (ingress? is_fat_flow_dst_prefix : is_fat_flow_src_prefix);
1241 *is_src_prefix =
false;
1242 *is_dst_prefix =
false;
1246 src_ip, &ign_addr)) {
1247 *is_src_prefix =
true;
1248 *ignore_addr = ign_addr;
1253 dst_ip, &ign_addr)) {
1254 *is_dst_prefix =
true;
1255 *ignore_addr = ign_addr;
1262 *is_src_prefix =
true;
1263 *is_dst_prefix =
true;
1275 if ((sip == gw_ip) || (dip == gw_ip)) {
1282 boost::system::error_code ec;
1283 Ip4Address ll_subnet = Ip4Address::from_string
1284 (
agent()->v4_link_local_subnet(), ec);
1286 agent()->v4_link_local_plen())) {
1290 agent()->v4_link_local_plen())) {
1295 if ((sip == gw_ip) || (dip == gw_ip)) {
1302 boost::system::error_code ec;
1303 Ip6Address ll6_subnet = Ip6Address::from_string
1304 (
agent()->v6_link_local_subnet(), ec);
1306 agent()->v6_link_local_plen())) {
1310 agent()->v6_link_local_plen())) {
1320 if (!ip.is_unspecified()) {
1321 value = plen | htonl(ip.to_ulong());
1328 if (ip.is_v6() && !ip.is_unspecified()) {
1348 boost::system::error_code ec;
1349 Ip4Address ll_subnet = Ip4Address::from_string
1350 (
agent()->v4_link_local_subnet(), ec);
1351 plen = (uint64_t(
agent()->v4_link_local_plen()) << 32);
1359 Ip6Address ll6_subnet = Ip6Address::from_string
1360 (
agent()->v6_link_local_subnet(), ec);
1407 std::vector<std::string> *vect)
const {
1414 InstanceIpSet::iterator it = list.begin();
1415 while (it != list.end()) {
1418 vect->push_back(rt.
ip_.to_string());
1425 return it->bridge_domain_->isid();
1433 if (it->bridge_domain_->vrf()) {
1434 return it->bridge_domain_->vrf()->vrf_id();
1443 if (it->bridge_domain_->vrf()) {
1444 return it->bridge_domain_->vrf()->table_label();
1463 std::pair<MetaDataIpMap::iterator, bool> ret;
1472 LOG(DEBUG,
"Return code for Metadata IP Map Erase: " <<ret<<
" for MetaDataIp: " <<mip->
GetLinkLocalIp());
1479 it->second->UpdateInterfaceCb();
1502 if (addr.to_ulong() == 0) {
1525 InterfaceInfo intf_info;
1526 intf_info.set_name(
name());
1527 intf_info.set_index(
id_);
1531 intf_info.set_op(
"IPV4 Activated");
1534 intf_info.set_op(
"IPV4 Deactivated");
1537 intf_info.set_op(
"IPV6 Activated");
1540 intf_info.set_op(
"IPV6 Deactivated");
1543 intf_info.set_op(
"L2 Activated");
1546 intf_info.set_op(
"L2 Deactivated");
1549 intf_info.set_op(
"Add");
1552 intf_info.set_op(
"Delete");
1556 intf_info.set_op(
"Floating IP change");
1557 std::vector<FloatingIPInfo> fip_list;
1563 fip.set_vrf_name(ip.
vrf_->GetName());
1564 fip_list.push_back(fip);
1567 intf_info.set_fip(fip_list);
1574 intf_info.set_op(
"VMI reuse");
1579 intf_info.set_op(
"VRF reuse");
1589 intf_info.set_vn(
vn_->GetName());
1592 intf_info.set_vrf(
vrf_->GetName());
boost::asio::ip::address_v6 Ip6Address
boost::asio::ip::address IpAddress
boost::asio::ip::address_v4 Ip4Address
bool IsIp6SubnetMember(const Ip6Address &ip, const Ip6Address &subnet, uint8_t plen)
bool IsIp4SubnetMember(const Ip4Address &ip, const Ip4Address &prefix_ip, uint16_t plen)
void Ip6AddressToU64Array(const Ip6Address &addr, uint64_t *arr, int size)
std::vector< int > TagList
std::vector< int > SecurityGroupList
std::set< std::string > VnListType
#define OPER_TRACE_ENTRY(obj, table,...)
std::vector< std::string > CommunityList
static const uint8_t kMaxV4PrefixLen
static Ip4Address GetIp4SubnetAddress(const Ip4Address &prefix, uint16_t plen)
static Ip6Address GetIp6SubnetAddress(const Ip6Address &prefix, uint16_t plen)
AgentDBEntry * Find(const DBEntry *key, bool ret_del)
virtual AgentPath * FindPath(const Peer *peer) const
InterfaceTable * interface_table() const
static const std::string & NullString()
VrfEntry * fabric_vrf() const
PhysicalDeviceVnTable * physical_device_vn_table() const
static const MacAddress & vrrp_mac()
const std::string & fabric_vrf_name() const
DBTableBase * get_table() const
bool Enqueue(DBRequest *req)
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)
void DelLocalVmRoute(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const VmInterface *intf, const IpAddress &ip, uint32_t ethernet_tag)
IpAddress destination_ip() const
IpAddress get_source_ip() const
HealthCheckService * service() const
HealthCheckType health_check_type() const
void ResyncHealthCheckInterface(const HealthCheckService *service, const VmInterface *intf)
static void Delete(const Peer *peer, const string &vrf_name, const IpAddress &addr, uint8_t plen)
static void AddLocalVmRoute(const Peer *peer, const string &vm_vrf, const IpAddress &addr, uint8_t plen, const boost::uuids::uuid &intf_uuid, const VnListType &vn_list, uint32_t label, const SecurityGroupList &sg_list, const TagList &tag_list, const CommunityList &communities, bool force_policy, const PathPreference &path_preference, const IpAddress &subnet_service_ip, const EcmpLoadBalance &ecmp_load_balance, bool is_local, bool is_health_check_service, const std::string &intf_name, bool native_encap, const std::string &intf_route_type=VmInterface::kInterface, bool is_learnt_route=false)
const Ip4Address GetDhcpSnoopEntry(const std::string &ifname)
void DhcpSnoopSetConfigSeen(const std::string &ifname)
VmiToPhysicalDeviceVnTree vmi_to_physical_device_vn_tree_
void DelPhysicalDeviceVnEntry(const boost::uuids::uuid &vmi)
void UpdatePhysicalDeviceVnEntry(const boost::uuids::uuid &vmi, boost::uuids::uuid &dev, boost::uuids::uuid &vn, IFMapNode *vn_node)
VrfEntry * FindVrfRef(const std::string &name) const
const MacAddress & mac() const
bool os_oper_state() const
bool is_hc_active() const
const std::string & name() const
uint32_t os_index() const
struct InterfaceOsParams os_params_
virtual void GetOsParams(Agent *agent)
static const uint32_t kInvalidIndex
const boost::uuids::uuid & GetUuid() const
bool NeedDefaultOsOperStateDisabled(Agent *agent) const
VnswInterfaceListener * vnsw_interface_listner() const
static const MacAddress kZeroMac
const std::string GetAnalyzerName() const
static const uint32_t kInvalidLabel
const DhcpOptionsList & dhcp_options() const
void set_static_preference(bool static_pref)
void set_dependent_ip(const IpAddress &ip)
void set_preference(uint32_t preference)
void set_vrf(const std::string &vrf)
bool DeleteConfigEntry(const boost::uuids::uuid &vmi, const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
bool AddConfigEntry(const boost::uuids::uuid &vmi, const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
static TypeBmap AllType()
static Type ComputeType(TypeBmap bmap)
const VmiEcmpLoadBalance & ecmp_load_balance() const
const MirrorEntry * mirror_entry() const
void InsertMetaDataIpInfo(MetaDataIp *mip)
bool layer3_forwarding() const
void SetServiceVlanPathPreference(PathPreference *pref, const IpAddress &service_ip) const
bool IsFatFlowPrefixAggregation(bool ingress, uint8_t protocol, uint16_t *sport, uint16_t *dport, bool *same_port_num, IpAddress *SrcIP, IpAddress *DstIP, bool *is_src_prefix, bool *is_dst_prefix, FatFlowIgnoreAddressType *ignore_addr) const
VmInterface * PortTuplePairedInterface() const
HealthCheckInstanceSet hc_instance_set_
void DeleteL2InterfaceRoute(const VrfEntry *vrf, uint32_t ethernet_tag, const IpAddress &ip, const MacAddress &mac) const
uint32_t GetPbbLabel() const
const VrfEntry * GetServiceVlanVrf(uint16_t vlan_tag) const
ServiceVlanList service_vlan_list_
static const uint32_t kInvalidIsid
bool GetInterfaceDhcpOptions(std::vector< autogen::DhcpOptionType > *options) const
void DeleteMetaDataIpInfo(MetaDataIp *mip)
bool HasFloatingIp() const
bool CopyIpAddress(Ip4Address &addr)
uint32_t local_preference_
LearntMacIpList learnt_mac_ip_list_
BridgeDomainList bridge_domain_list_
bool IsFatFlowPortBased(uint8_t protocol, uint16_t port, FatFlowIgnoreAddressType *ignore_addr) const
uint32_t ethernet_tag() const
bool NeedOsStateWithoutDevice() const
const Interface * parent() const
std::set< HealthCheckInstanceBase * > HealthCheckInstanceSet
AllowedAddressPairList allowed_address_pair_list_
void UpdateMetaDataIpInfo()
MetaDataIpMap metadata_ip_map_
bool IsIpv6Active() const
VmiEcmpLoadBalance ecmp_load_balance_
bool MatchDstPrefixPort(uint8_t protocol, uint16_t port, IpAddress *dst_ip, FatFlowIgnoreAddressType *ignore_addr) const
void AddL2InterfaceRoute(const IpAddress &ip, const MacAddress &mac, const IpAddress &dependent_ip) const
IpAddress GetServiceIp(const IpAddress &ip) const
bool IsFloatingIp(const IpAddress &ip) const
std::unique_ptr< LocalVmPortPeer > peer_
Ip4Address primary_ip_addr_
bool WaitForTraffic() const
bool InstallBridgeRoutes() const
void DeleteRoute(const std::string &vrf_name, const IpAddress &ip, uint32_t plen)
bool IsMetaDataIPActive() const
bool IsMetaDataL2Active() const
boost::uuids::uuid vm_project_uuid_
void InsertHealthCheckInstance(HealthCheckInstanceBase *hc_inst)
void CopyTagIdList(TagList *tag_id_list) const
bool IsHealthCheckEnabled() const
std::set< InstanceIp, InstanceIp > InstanceIpSet
void DeleteHealthCheckInstance(HealthCheckInstanceBase *hc_inst)
FatFlowPrefixAggregateType
@ AGGREGATE_PREFIX_MIN_VAL
SecurityGroupEntryList sg_list_
bool GetSubnetDhcpOptions(std::vector< autogen::DhcpOptionType > *options, bool ipv6) const
void FillV4ExcludeIp(uint64_t plen, const Ip4Address &ip, FatFlowExcludeList *list) const
void FillV6ExcludeIp(uint16_t plen, const IpAddress &ip, FatFlowExcludeList *list) const
bool MatchDstPrefixRule(uint8_t protocol, uint16_t *sport, uint16_t *dport, bool *same_port_num, IpAddress *DstIP, FatFlowIgnoreAddressType *ignore_addr) const
void BuildFatFlowExcludeList(FatFlowExcludeList *list) const
AliasIpList alias_ip_list_
const MacAddress & GetVifMac(const Agent *) const
const TagEntryList & tag_list() const
bool MatchSrcDstPrefixPort(uint8_t protocol, uint16_t port, IpAddress *src_ip, IpAddress *dst_ip) const
uint32_t GetServiceVlanLabel(const VrfEntry *vrf) const
FloatingIpList floating_ip_list_
bool MatchSrcDstPrefixRule(uint8_t protocol, uint16_t *sport, uint16_t *dport, bool *same_port_num, IpAddress *SrcIP, IpAddress *DstIP) const
const OperDhcpOptions & oper_dhcp_options() const
InstanceIpList instance_ipv4_list_
const VnEntry * vn() const
const std::string GetAnalyzer() const
void UpdateInterfaceHealthCheckService()
static const uint32_t kInvalidVlanId
const Ip4Address & primary_ip_addr() const
const HealthCheckInstanceSet & hc_instance_set() const
boost::uuids::uuid si_other_end_vmi_
void CopySgIdList(SecurityGroupList *sg_id_list) const
void SendTrace(const AgentDBTable *table, Trace event) const
void AddRoute(const std::string &vrf_name, const IpAddress &ip, uint32_t plen, const std::string &vn_name, bool force_policy, bool ecmp, bool is_local, bool proxy_arp, const IpAddress &service_ip, const IpAddress &dependent_ip, const CommunityList &communties, uint32_t label, const string &intf_route_type, bool is_learnt_route=false)
bool MatchAapIp(const IpAddress &ip, uint8_t plen) const
VmInterface::VmiType vmi_type_
bool GetIpamDhcpOptions(std::vector< autogen::DhcpOptionType > *options, bool ipv6) const
bool MatchSrcPrefixPort(uint8_t protocol, uint16_t port, IpAddress *src_ip, FatFlowIgnoreAddressType *ignore_addr) const
MetaDataIp * GetMetaDataIp(const IpAddress &ip) const
void CopyEcmpLoadBalance(EcmpLoadBalance &ecmp_load_balance)
virtual void GetOsParams(Agent *agent)
bool ExcludeFromFatFlow(Address::Family family, const IpAddress &sip, const IpAddress &dip) const
const MacAddress & GetIpMac(const IpAddress &, const uint8_t plen) const
bool pbb_interface() const
uint32_t GetPbbVrf() const
void SetPathPreference(PathPreference *pref, bool ecmp, const IpAddress &dependent_ip) const
const Ip6Address & primary_ip6_addr() const
friend struct VmInterfaceOsOperStateData
VrfEntry * GetAliasIpVrf(const IpAddress &ip) const
void BuildIpStringList(Address::Family family, std::vector< std::string > *vect) const
bool PolicyEnabled() const
FatFlowList fat_flow_list_
bool MatchSrcPrefixRule(uint8_t protocol, uint16_t *sport, uint16_t *dport, bool *same_port_num, IpAddress *SrcIP, FatFlowIgnoreAddressType *ignore_addr) const
InstanceIpList instance_ipv6_list_
bool IsIpv4Active() const
Ip6Address primary_ip6_addr_
const Peer * peer() const
VmInterface::DeviceType device_type_
const std::string & vrf_name() const
IpAddress GetGatewayIp(const IpAddress &ip) const
bool use_global_vrouter() const
virtual void Copy(const VmiEcmpLoadBalance &rhs)
const std::vector< VnIpam > & GetVnIpam() const
const string & GetName() const
bool IsHostLinkStateUp(const std::string &name) const
const string & GetName() const
static const uint32_t kInvalidIndex
AgentRouteTable * GetEvpnRouteTable() const
VrfEntry * forwarding_vrf() const
#define LOG(_Level, _Msg)
static std::string UuidToString(const boost::uuids::uuid &id)
std::unique_ptr< DBRequestKey > key
std::unique_ptr< DBRequestData > data
AllowedAddressPairSet list_
BridgeDomainEntrySet list_
uint8_t src_aggregate_plen
FatFlowPrefixAggregateType prefix_aggregate
uint8_t dst_aggregate_plen
FatFlowIgnoreAddressType ignore_address
std::vector< uint64_t > fat_flow_v4_exclude_list_
std::vector< uint64_t > fat_flow_v6_exclude_lower_list_
std::vector< uint64_t > fat_flow_v6_exclude_upper_list_
std::vector< uint16_t > fat_flow_v6_exclude_plen_list_
SecurityGroupEntrySet list_
VmiToPhysicalDeviceVnData(const boost::uuids::uuid &dev, const boost::uuids::uuid &vn)
~VmiToPhysicalDeviceVnData()
#define FAT_FLOW_ENTRY_MIN_PREFIX_LEN
static IpAddress ipv6_max_addr
static IpAddress ipv6_empty_addr
static IpAddress ipv4_empty_addr
static IpAddress ipv4_max_addr