36 using namespace boost::uuids;
37 using namespace autogen;
39 InitIgnoreAddressMap();
49 const std::string &name,
54 vm_(NULL, this), vn_(NULL), primary_ip_addr_(0), subnet_bcast_addr_(0),
55 primary_ip6_addr_(), vm_mac_(
MacAddress::kZeroMac), policy_enabled_(false),
56 mirror_entry_(NULL), mirror_direction_(MIRROR_RX_TX), cfg_name_(
""),
57 fabric_port_(true), need_linklocal_ip_(false), drop_new_flows_(false),
58 dhcp_enable_(true), dhcp_enable_v6_(false), do_dhcp_relay_(false), proxy_arp_mode_(PROXY_ARP_NONE),
59 vm_name_(), vm_project_uuid_(nil_uuid()), vxlan_id_(0), bridging_(false),
60 layer3_forwarding_(true), flood_unknown_unicast_(false),
61 mac_set_(false), ecmp_(false), ecmp6_(false), disable_policy_(false),
62 tx_vlan_id_(kInvalidVlanId), rx_vlan_id_(kInvalidVlanId), parent_(NULL, this),
63 local_preference_(0), oper_dhcp_options_(),
64 cfg_igmp_enable_(false), igmp_enabled_(false),
65 mac_ip_learning_enable_(false), max_flows_(0),
73 sg_list_(), tag_list_(), floating_ip_list_(), alias_ip_list_(), service_vlan_list_(),
74 static_route_list_(), allowed_address_pair_list_(),
75 instance_ipv4_list_(true), instance_ipv6_list_(false), fat_flow_list_(),
76 vrf_assign_rule_list_(), vm_ip_service_addr_(0),
80 configurer_(0), subnet_(0), subnet_plen_(0), ethernet_tag_(0),
81 logical_interface_(nil_uuid()), nova_ip_addr_(0), nova_ip6_addr_(),
82 dhcp_addr_(0), metadata_ip_map_(), hc_instance_set_(),
83 ecmp_load_balance_(), service_health_check_ip_(), is_vn_qos_config_(false),
84 learning_enabled_(false), etree_leaf_(false), layer2_control_word_(false),
85 slo_list_(), forwarding_vrf_(NULL), vhostuser_mode_(vHostUserClient),
88 service_intf_type_(
""),
100 const std::string &name,
102 const std::string &vm_name,
104 uint16_t tx_vlan_id, uint16_t rx_vlan_id,
107 uint8_t vhostuser_mode,
bool os_oper_state,
110 logical_router_uuid),
111 vm_(NULL, this), vn_(NULL), primary_ip_addr_(addr), subnet_bcast_addr_(0),
112 primary_ip6_addr_(a6), vm_mac_(mac), policy_enabled_(false),
113 mirror_entry_(NULL), mirror_direction_(MIRROR_RX_TX), cfg_name_(
""),
114 fabric_port_(true), need_linklocal_ip_(false), drop_new_flows_(false),
115 dhcp_enable_(true), dhcp_enable_v6_(false), do_dhcp_relay_(false), proxy_arp_mode_(PROXY_ARP_NONE),
116 vm_name_(vm_name), vm_project_uuid_(vm_project_uuid), vxlan_id_(0),
117 bridging_(false), layer3_forwarding_(true),
118 flood_unknown_unicast_(false), mac_set_(false),
119 ecmp_(false), ecmp6_(false), disable_policy_(false),
120 tx_vlan_id_(tx_vlan_id), rx_vlan_id_(rx_vlan_id), parent_(parent, this),
121 local_preference_(0), oper_dhcp_options_(),
122 cfg_igmp_enable_(false), igmp_enabled_(false),
123 mac_ip_learning_enable_(false), max_flows_(0),
131 sg_list_(), tag_list_(),
132 floating_ip_list_(), alias_ip_list_(), service_vlan_list_(),
133 static_route_list_(), allowed_address_pair_list_(),
134 instance_ipv4_list_(true), instance_ipv6_list_(false), fat_flow_list_(),
135 vrf_assign_rule_list_(), device_type_(device_type),
136 vmi_type_(vmi_type), hbs_intf_type_(
VmInterface::HBS_INTF_INVALID),
137 configurer_(0), subnet_(0),
138 subnet_plen_(0), ethernet_tag_(0), logical_interface_(nil_uuid()),
139 nova_ip_addr_(0), nova_ip6_addr_(), dhcp_addr_(0), metadata_ip_map_(),
140 hc_instance_set_(), service_health_check_ip_(), is_vn_qos_config_(false),
141 learning_enabled_(false), etree_leaf_(false), layer2_control_word_(false),
142 slo_list_(), forwarding_vrf_(NULL), vhostuser_mode_(vhostuser_mode),
145 service_intf_type_(
""),
178 if (
uuid_ == nil_uuid() && intf.
uuid_ == nil_uuid()) {
186 return "VM-PORT <" +
name() +
">";
202 if (
vrf_ &&
vrf_->GetName() !=
"") {
237 key->
id_type =
"virtual-machine-interface";
242 const std::string &vrf_name) {
260 return Resync(table, data);
277 bool force_update =
false;
284 ret = data->
OnResync(table,
this, &force_update);
285 std::string ri_name =
"";
289 size_t pos = fqdn_name.rfind(
":");
290 if (pos != std::string::npos)
294 ri_name = fqdn_name +
":" + fqdn_name.substr(pos, fqdn_name.length());
299 if (ri_name !=
"" && ri_name !=
vrf_name_) {
369 ApplyConfig(old_ipv4_active, old_l2_active, old_ipv6_active,
370 old_subnet, old_subnet_plen);
380 bool old_ipv6_active,
382 uint8_t old_subnet_plen) {
429 (old_subnet.is_unspecified() && old_subnet_plen == 0)) {
547 int new_vxlan_id =
vn_.get() ?
vn_->GetVxLanId() : 0;
562 return state->
Update(agent,
this, l2_force_op, l3_force_op);
587 return (new_op > old_op) ? new_op : old_op;
591 Op l2_force_op,
Op l3_force_op)
const {
607 if (
AddL3(agent, vmi))
611 if (
AddL2(agent, vmi))
679 vmi->
vm_mac(), vmi, flood_dhcp);
697 (SecurityGroupEntrySet::iterator &it) {
698 it->set_del_pending(
true);
704 SecurityGroupEntrySet::iterator it = list_.begin();
705 while (it != list_.end()) {
706 SecurityGroupEntrySet::iterator prev = it++;
710 if (prev->del_pending()) {
736 bool VmInterface::SecurityGroupEntry::operator ==
741 bool VmInterface::SecurityGroupEntry::operator()
763 if (sg_.get() != NULL)
784 std::string ignore_addr_value,
786 IpAddress in_src_prefix, uint8_t in_src_prefix_mask,
787 uint8_t in_src_aggregate_plen,
788 IpAddress in_dst_prefix, uint8_t in_dst_prefix_mask,
789 uint8_t in_dst_aggregate_plen) :
790 protocol(proto), port(p) {
804 const std::string &ignore_addr_str,
805 const std::string &in_src_prefix_str,
const int &in_src_prefix_mask,
806 const int &in_src_aggregate_plen,
807 const std::string &in_dst_prefix_str,
const int &in_dst_prefix_mask,
808 const int &in_dst_aggregate_plen) {
811 uint8_t src_prefix_mask = 0, src_aggregate_plen = 0;
812 IpAddress dst_prefix, empty_prefix, empty_prefix_v6 = IpAddress::from_string(
"0::0");
813 uint8_t dst_prefix_mask = 0, dst_aggregate_plen = 0;
823 if ((protocol == IPPROTO_ICMP) || (protocol == IPPROTO_ICMPV6)) {
824 protocol = IPPROTO_ICMP;
828 if (in_src_prefix_str.length() > 0) {
830 src_prefix = IpAddress::from_string(in_src_prefix_str);
831 src_prefix_mask = in_src_prefix_mask;
832 src_aggregate_plen = in_src_aggregate_plen;
833 if (src_prefix.is_v4()) {
844 if (in_dst_prefix_str.length() > 0) {
845 dst_prefix = IpAddress::from_string(in_dst_prefix_str);
846 dst_prefix_mask = in_dst_prefix_mask;
847 dst_aggregate_plen = in_dst_aggregate_plen;
848 if (dst_prefix.is_v4()) {
857 if (dst_prefix.is_v4()) {
863 if (dst_prefix.is_v4()) {
872 src_prefix = empty_prefix;
874 src_aggregate_plen = 0;
877 src_prefix = empty_prefix;
879 src_aggregate_plen = 0;
882 src_prefix = empty_prefix_v6;
884 src_aggregate_plen = 0;
889 dst_prefix = empty_prefix;
891 dst_aggregate_plen = 0;
894 dst_prefix = empty_prefix;
896 dst_aggregate_plen = 0;
899 dst_prefix = empty_prefix_v6;
901 dst_aggregate_plen = 0;
907 src_prefix = empty_prefix_v6;
910 dst_prefix = empty_prefix_v6;
914 ignore_addr_str, prefix_aggregate, src_prefix, src_prefix_mask,
915 src_aggregate_plen, dst_prefix, dst_prefix_mask, dst_aggregate_plen);
920 LOG(ERROR,
"Protocol:" << (
int) protocol <<
" Port:" << port <<
" IgnoreAddr:" << ignore_address
921 <<
" PrefixAggr:" << prefix_aggregate <<
" SrcPrefix:" << src_prefix.to_string() <<
"/" << (int) src_prefix_mask
922 <<
" SrcAggrPlen:" << (
int) src_aggregate_plen <<
" DstPrefix:" << dst_prefix.to_string() <<
"/" << (int) dst_prefix_mask
923 <<
" DstAggrPlen:" << (
int) dst_aggregate_plen);
943 it->set_del_pending(
true);
948 FatFlowEntrySet::iterator it = list_.begin();
949 while (it != list_.end()) {
950 FatFlowEntrySet::iterator prev = it++;
951 if (prev->del_pending_) {
959 LOG(ERROR,
"Dumping FatFlowList:\n");
960 for (FatFlowEntrySet::iterator it = list_.begin(); it != list_.end(); it++) {
979 it->set_del_pending(
true);
985 BridgeDomainEntrySet::iterator it = list_.begin();
986 while (it != list_.end()) {
987 BridgeDomainEntrySet::iterator prev = it++;
988 if (prev->del_pending_ ==
false) {
994 if (prev->bridge_domain_->vrf() == NULL) {
995 prev->del_pending_ =
true;
999 if (prev->del_pending_) {
1100 l2_label_ = l2_nh_policy_->mpls_label()->label();
1102 l2_label_ = l2_nh_no_policy_->mpls_label()->label();
1154 l3_label_ = l3_nh_policy_->mpls_label()->label();
1156 l3_label_ = l3_nh_no_policy_->mpls_label()->label();
1333 if (vmi->
vn() == NULL) {
1344 std::string vn_name;
1345 if (vmi->
vn() != NULL) {
1359 sg_id_list, tag_id_list);
1391 if (
vrf_ == NULL || vmi->
vn() == NULL)
1413 do_dhcp_relay_(false) {
1441 if (vrf_ != vmi->
vrf())
1455 if (
vrf_ == NULL ||
ip_.is_unspecified())
1463 if (
vrf_ == NULL || vmi->
vn() == NULL ||
ip_.is_unspecified())
1479 if (vrf_ != vmi->
vrf())
1498 if (
vrf_ == NULL || vmi->
vn() == NULL)
1538 it->set_del_pending(
true);
1544 InstanceIpSet::iterator it = list_.begin();
1546 while (it != list_.end()) {
1547 InstanceIpSet::iterator prev = it++;
1550 if (prev->del_pending() ==
false)
1551 prev->SetPrefixForAllocUnitIpam(vmi);
1553 if (prev->del_pending()) {
1563 is_primary_(false), is_service_ip_(false),
1564 is_service_health_check_ip_(false), is_local_(false),
1571 ip_(rhs.ip_), plen_(rhs.plen_),
ecmp_(rhs.
ecmp_),
1572 is_primary_(rhs.is_primary_), is_service_ip_(rhs.is_service_ip_),
1573 is_service_health_check_ip_(rhs.is_service_health_check_ip_),
1574 is_local_(rhs.is_local_), tracking_ip_(rhs.tracking_ip_),
1579 bool ecmp,
bool is_primary,
1581 bool is_service_health_check_ip,
1585 is_primary_(is_primary), is_service_ip_(is_service_ip),
1586 is_service_health_check_ip_(is_service_health_check_ip),
1587 is_local_(is_local), tracking_ip_(tracking_ip),
vrf_(NULL),
1600 return ip_ < rhs->
ip_;
1604 if (vmi->
vn() == NULL)
1609 uint8_t alloc_prefix = 0;
1610 if (alloc_unit > 0) {
1611 alloc_prefix = log2(alloc_unit);
1616 }
else if (ip_.is_v6()) {
1629 if (instance_ip->
ip_.is_v6()) {
1699 assert(ip_.is_unspecified() ==
false);
1700 std::string vn_name;
1708 is_force_policy(),
ecmp_,is_local_,
1744 LearntMacIpSet::iterator it = list_.find(*rhs);
1745 if (it != list_.end()) {
1746 it->set_del_pending(
true);
1753 LearntMacIpSet::iterator it = list_.begin();
1755 while (it != list_.end()) {
1756 LearntMacIpSet::iterator prev = it++;
1760 if (prev->del_pending()) {
1776 ip_(rhs.ip_), mac_(rhs.mac_),
1795 if (mac_ip->
ip_.is_v6()) {
1807 return ip_ < rhs->
ip_;
1812 if (del_pending() ==
true)
1845 l2_nh_policy_ =
static_cast<NextHop *
>
1851 l2_nh_no_policy_ =
static_cast<NextHop *
>
1856 l2_label_ = l2_nh_policy_->mpls_label()->label();
1858 l2_label_ = l2_nh_no_policy_->mpls_label()->label();
1877 l2_nh_policy_.reset();
1878 l2_nh_no_policy_.reset();
1911 l3_nh_policy_ =
static_cast<NextHop *
>
1917 l3_nh_no_policy_ =
static_cast<NextHop *
>
1923 l3_label_ = l3_nh_no_policy_->mpls_label()->label();
1925 std::string vn_name;
1959 l3_nh_policy_.reset();
1960 l3_nh_no_policy_.reset();
1982 FloatingIpSet::iterator prev = it++;
1983 if (prev->del_pending_ ==
false)
1986 if (prev->floating_ip_.is_v4()) {
1998 std::pair<FloatingIpSet::iterator, bool> ret = list_.insert(*rhs);
2022 it->set_del_pending(
true);
2029 FloatingIpSet::iterator it = list_.begin();
2030 while (it != list_.end()) {
2031 FloatingIpSet::iterator prev = it++;
2042 fixed_ip_(), direction_(DIRECTION_BOTH), port_map_enabled_(false),
2043 src_port_map_(), dst_port_map_(),
ethernet_tag_(0), port_nat_(false) {
2049 floating_ip_(rhs.floating_ip_),
vn_(rhs.
vn_),
vrf_(rhs.
vrf_, this),
2051 direction_(rhs.direction_), port_map_enabled_(rhs.port_map_enabled_),
2052 src_port_map_(rhs.src_port_map_), dst_port_map_(rhs.dst_port_map_),
2057 const std::string &
vrf,
2061 bool port_map_enabled,
2066 vrf_(NULL, this),
vrf_name_(vrf), vn_uuid_(vn_uuid), fixed_ip_(fixed_ip),
2067 direction_(direction), port_map_enabled_(port_map_enabled),
2068 src_port_map_(src_port_map), dst_port_map_(dst_port_map),
ethernet_tag_(0),
2069 port_nat_(port_nat) {
2091 if (fixed_ip_.is_unspecified()) {
2092 if (floating_ip_.is_v4() ==
true) {
2102 return port_map_enabled_;
2106 return src_port_map_.size();
2114 uint16_t src_port)
const {
2116 if (it == src_port_map_.end())
2122 uint16_t dst_port)
const {
2124 if (it == dst_port_map_.end())
2140 if (
vn_.get() == NULL)
2143 if (
vrf_.get() == NULL)
2155 if (vmi->
vrf() == NULL || vmi->
vn() == NULL)
2163 if (
vrf_.get() == NULL ||
vn_.get() == NULL || port_nat_)
2166 fixed_ip_ = GetFixedIp(vmi);
2167 uint8_t plen = floating_ip_.is_v4() ?
2170 if (floating_ip_.is_v6())
2173 bool ecmp = floating_ip_.is_v4() ? vmi->
ecmp() : vmi->
ecmp6();
2174 vmi->
AddRoute(
vrf_.get()->GetName(), floating_ip_, plen,
vn_->GetName(),
2190 if (
vrf_.get() == NULL)
2192 uint8_t plen = floating_ip_.is_v4() ?
2211 if (vmi->
vrf() == NULL || vmi->
vn() == NULL)
2222 if (
vrf_.get() == NULL ||
vn_.get() == NULL || port_nat_)
2235 (
vrf_->GetEvpnRouteTable());
2237 std::string vn_name;
2251 if (
vrf_.get() == NULL)
2256 if (evpn_table == NULL) {
2261 vmi->
vm_mac(), vmi, floating_ip_,
2270 std::pair<AliasIpSet::iterator, bool> ret = list_.insert(*rhs);
2285 it->set_del_pending(
true);
2291 AliasIpSet::iterator it = list_.begin();
2292 while (it != list_.end()) {
2293 AliasIpSet::iterator prev = it++;
2304 AliasIpSet::iterator prev = it++;
2305 if (prev->del_pending_ ==
false)
2308 if (prev->alias_ip_.is_v4()) {
2374 if (
vn_.get() == NULL) {
2379 if (
vrf_.get() == NULL) {
2387 if (
vrf_.get() == NULL ||
vn_.get() == NULL)
2390 uint8_t plen = alias_ip_.is_v4() ?
2393 if (alias_ip_.is_v6())
2395 vmi->
AddRoute(
vrf_->GetName(), alias_ip_, plen,
vn_->GetName(),
false,
2405 uint8_t plen = alias_ip_.is_v4() ?
2427 it->set_del_pending(
true);
2433 StaticRouteSet::iterator it = list_.begin();
2434 while (it != list_.end()) {
2435 StaticRouteSet::iterator prev = it++;
2439 if (prev->del_pending_) {
2454 vrf_(rhs.
vrf_), addr_(rhs.addr_), plen_(rhs.plen_), gw_list_(rhs.gw_list_),
2455 communities_(rhs.communities_) {
2462 communities_(communities) {
2474 if (addr_ != rhs->
addr_)
2475 return addr_ < rhs->
addr_;
2477 if (plen_ != rhs->
plen_) {
2478 return plen_ < rhs->
plen_;
2481 return gw_list_.size() < rhs->
gw_list_.size();
2508 std::string vn_name;
2515 if (addr_.is_v4() && !gw_list_.empty() && gw_list_[0] !=
Ip4Address(0)) {
2524 vn_list.insert(vn_name);
2527 bool native_encap =
false;
2531 native_encap =
true;
2536 (peer,
vrf_->GetName(), addr_.to_v4(), plen_,
2537 gw_list_, vn_list, vmi->
vrf_->table_label(),
2538 sg_id_list, tag_id_list, communities_, native_encap);
2542 if (addr_.is_v4()) {
2545 }
else if (addr_.is_v6()) {
2547 ecmp = vmi->
ecmp6();
2551 dependent_ip, communities_, vmi->
label(),
2589 (AllowedAddressPairSet::iterator &it) {
2590 it->set_del_pending(
true);
2596 AllowedAddressPairSet::iterator it = list_.begin();
2597 while (it != list_.end()) {
2598 AllowedAddressPairSet::iterator prev = it++;
2599 if (!prev->del_pending_)
2607 while (it != list_.end()) {
2608 AllowedAddressPairSet::iterator prev = it++;
2618 ecmp_config_changed_(false),
2626 addr_(rhs.addr_), plen_(rhs.plen_),
ecmp_(rhs.
ecmp_),
2628 ecmp_config_changed_(rhs.ecmp_config_changed_),
2630 policy_enabled_nh_(rhs.policy_enabled_nh_),
2631 policy_disabled_nh_(rhs.policy_disabled_nh_),
2636 uint32_t plen,
bool ecmp,
2639 mac_(mac), ecmp_config_changed_(false),
2655 if (addr_ != rhs->
addr_)
2656 return addr_ < rhs->
addr_;
2658 if (plen_ != rhs->
plen_) {
2659 return plen_ < rhs->
plen_;
2662 return mac_ < rhs->
mac_;
2689 if (addr_.is_v4()) {
2696 }
else if (addr_.is_v6()) {
2714 if (addr_.is_v4()) {
2720 }
else if (addr_.is_v6()) {
2748 policy_enabled_nh_ = NULL;
2749 policy_disabled_nh_ = NULL;
2755 if (
vrf_ == NULL || vmi->
vn_ == NULL)
2777 policy_disabled_nh_ = nh;
2784 nexthop_table()->FindActiveEntry(&key1));
2787 policy_enabled_nh_ = nh;
2791 label_ = policy_enabled_nh_->mpls_label()->label();
2793 label_ = policy_disabled_nh_->mpls_label()->label();
2840 it->set_del_pending(
true);
2846 ServiceVlanSet::iterator it = list_.begin();
2847 while (it != list_.end()) {
2848 ServiceVlanSet::iterator prev = it++;
2849 if (prev->del_pending_ || prev->del_add_) {
2850 prev->Update(agent, vmi);
2851 if (prev->del_pending_) {
2858 while (it != list_.end()) {
2859 ServiceVlanSet::iterator prev = it++;
2860 prev->Update(agent, vmi);
2910 if (tag_.get() && tag_->tag_uuid() ==
uuid_) {
2915 typedef ::TagEntry GlobalTagEntry;
2916 tag_ =
static_cast<GlobalTagEntry *
>(agent->
tag_table()->
2917 FindActiveEntry(&tag_key));
2948 it->set_del_pending(
true);
2955 TagEntrySet::iterator it = list_.begin();
2956 while (it != list_.end()) {
2957 TagEntrySet::iterator prev = it++;
2961 if (prev->del_pending()) {
2975 addr6_(), old_addr6_(), smac_(), dmac_(),
vrf_(NULL, this),
2977 v6_rt_installed_(false), del_add_(false) {
2981 ListEntry(rhs.del_pending_), tag_(rhs.tag_),
2983 addr6_(rhs.addr6_), old_addr6_(rhs.old_addr6_),
2985 v4_rt_installed_(rhs.v4_rt_installed_),
2986 v6_rt_installed_(rhs.v6_rt_installed_), del_add_(false) {
2997 addr6_(addr6), old_addr6_(addr6),
2998 smac_(smac), dmac_(dmac),
vrf_(NULL, this),
3000 v6_rt_installed_(false), del_add_(false) {
3012 return tag_ < rhs->
tag_;
3020 if (del_pending_ ||
vrf_ != vrf || vmi->
ipv4_active() ==
false || del_add_) {
3021 if (v4_rt_installed_) {
3025 v4_rt_installed_ =
false;
3029 if (del_pending_ ||
vrf_ != vrf || vmi->
ipv6_active() ==
false || del_add_) {
3030 if (v6_rt_installed_) {
3034 v6_rt_installed_ =
false;
3038 if (del_pending_ ||
vrf_ != vrf || del_add_) {
3044 old_addr6_ = addr6_;
3045 bool old_del_add = del_add_;
3048 if (del_pending_ ||
vrf_ == NULL || old_del_add)
3055 AddCommon(agent, vmi);
3069 if (addr_.is_unspecified() ==
false) {
3077 v4_rt_installed_ =
true;
3080 if (addr6_.is_unspecified() ==
false) {
3088 v6_rt_installed_ =
true;
3100 (
vrf_->GetBridgeRouteTable());
3123 label_ = nh->mpls_label()->label();
3128 (
vrf_->GetBridgeRouteTable());
3145 match_condition_(rhs.match_condition_) {
3149 (uint32_t
id,
const autogen::MatchConditionType &match_condition,
3150 const std::string &
vrf_name,
bool ignore_acl):
3152 match_condition_(match_condition) {
3180 it->set_del_pending(
true);
3187 VrfAssignRuleSet::iterator it = list_.begin();
3188 while (it != list_.end()) {
3189 VrfAssignRuleSet::iterator prev = it++;
3190 if (prev->del_pending_) {
3196 if (list_.size() == 0 || vmi->
IsActive() ==
false) {
3197 if (vrf_assign_acl_.get() != NULL) {
3198 vrf_assign_acl_ = NULL;
3201 req.
data.reset(NULL);
3211 for (it = list_.begin(); it != list_.end(); it++) {
3215 if (ace_spec.
Populate(&(it->match_condition_)) ==
false) {
3226 ace_spec.
action_l.push_back(vrf_translate_spec);
3234 req.
data.reset(
new AclData(agent1, NULL, acl_spec));
3241 assert(vrf_assign_acl_);
3258 it->set_del_pending(
true);
3265 VmiReceiveRouteSet::iterator it = list_.begin();
3266 while (it != list_.end()) {
3267 VmiReceiveRouteSet::iterator prev = it++;
3271 if (prev->del_pending_) {
3285 addr_(rhs.addr_), plen_(rhs.plen_), add_l2_(rhs.add_l2_) {
3301 if (addr_ != rhs->
addr_) {
3302 return addr_ < rhs->
addr_;
3305 if (plen_ != rhs->
plen_) {
3306 return plen_ < rhs->
plen_;
3309 return add_l2_ < rhs->
add_l2_;
3332 if (add_l2_ ==
false) {
3353 if (addr_.is_v6()) {
3354 table =
vrf_->GetInet6UnicastRouteTable();
3357 table->AddVHostRecvRoute(agent->
local_peer(),
vrf_->GetName(), vmi_key,
3411 if (it->tag_ == NULL) {
3415 ::TagEntry::PolicySetList::const_iterator ps_it =
3416 it->tag_->policy_set_list().begin();
3417 for(; ps_it != it->tag_->policy_set_list().end(); ps_it++) {
3419 FirewallPolicyList::iterator fw_policy_it = tag_fp_list.begin();
3420 for (; fw_policy_it != tag_fp_list.end(); fw_policy_it++) {
3421 if (it->tag_->IsNeutronFwaasTag())
3422 new_fwaas_firewall_policy_list.push_back(*fw_policy_it);
3424 new_firewall_policy_list.push_back(*fw_policy_it);
3443 TagEntrySet::const_iterator it;
3445 if (it->del_pending_)
3447 if (it->tag_.get() == NULL)
3449 tag_id_list->push_back(it->tag_->tag_id());
3451 std::sort(tag_id_list->begin(), tag_id_list->end());
3456 int new_flow_count =
flow_count_.fetch_and_add(val);
3458 if (max_flows == 0) {
3466 assert(new_flow_count >= val);
3467 if ((new_flow_count + val) <
3472 if ((new_flow_count + val) >= max_flows) {
PortSubscribeTable * port_subscribe_table() const
virtual bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
void Insert(const ServiceVlan *rhs)
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
bool IsLess(const InstanceIp *rhs) const
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
void Update(const SecurityGroupEntry *lhs, const SecurityGroupEntry *rhs)
BridgeDomainEntrySet list_
std::unique_ptr< LocalVmPortPeer > peer_
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
uint8_t dst_aggregate_plen
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
void SetPathPreference(PathPreference *pref, bool ecmp, const IpAddress &dependent_ip) const
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)
const MacAddress & vm_mac() const
void CleanupFloatingIpList()
bool AddL3(const Agent *agent, VmInterface *vmi) const
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
bool AddL2(const Agent *agent, VmInterface *vmi) const
AliasIpList alias_ip_list_
VrfTranslateActionSpec vrf_translate
void Copy(const Agent *agent, const VmInterface *vmi) const
void SetInterfacesDropNewFlows(bool drop_new_flows) const
std::unique_ptr< MetaDataIpState > metadata_ip6_state_
void Insert(const AllowedAddressPair *rhs)
static const uint8_t kMaxV6PrefixLen
NextHopRef l3_nh_no_policy_
static void AddResolveRoute(const Peer *peer, const string &vrf_name, const Ip4Address &ip, const uint8_t plen, const InterfaceKey &intf_key, const uint32_t label, bool policy, const std::string &vn_name, const SecurityGroupList &sg_list, const TagList &tag_list)
static void DeleteVlan(const boost::uuids::uuid &intf_uuid, uint16_t vlan_tag)
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
void Remove(SecurityGroupEntrySet::iterator &it)
static void Delete(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, uint32_t ethernet_tag)
const NextHop * l2_interface_nh_policy() const
bool IsLess(const VmiReceiveRoute *rhs) const
static bool GetMacIpActiveState(const VmInterface::LearntMacIp *mac_ip, const VmInterface *vmi)
bool IsLess(const StaticRoute *rhs) const
bool port_map_enabled() const
bool AddL3(const Agent *agent, VmInterface *vmi) const
void SendTrace(const AgentDBTable *table, Trace event) const
void Update(const VrfAssignRule *lhs, const VrfAssignRule *rhs)
virtual bool CmpInterface(const DBEntry &rhs) const
std::vector< AclEntrySpec > acl_entry_specs_
const boost::uuids::uuid & GetUuid() const
static const uint32_t kMaxMacIpLimit
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
const uint32_t id() const
NextHopTable * nexthop_table() const
const VnIpam * GetIpam(const IpAddress &ip) const
DBTableBase * get_table() const
void ResetConfigurer(VmInterface::Configurer type)
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
void Remove(InstanceIpSet::iterator &it)
bool AddL2(const Agent *agent, VmInterface *vmi) const
Ip4Address mdata_ip_addr() const
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
void Remove(FatFlowEntrySet::iterator &it)
VmInterface::DeviceType device_type_
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
bool dhcp_enable_config() const
bool AddL3(const Agent *agent, VmInterface *vmi) const
uint32_t table_label() const
VmInterface::DeviceType device_type() const
void DelLocalVmRoute(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const VmInterface *intf, const IpAddress &ip, uint32_t ethernet_tag)
void Remove(BridgeDomainEntrySet::iterator &it)
AllowedAddressPairList allowed_address_pair_list_
boost::asio::ip::address IpAddress
static const MacAddress & vrrp_mac()
const MacAddress & GetVifMac(const Agent *) const
static const MacAddress kZeroMac
bool operator()(const VmiReceiveRoute &lhs, const VmiReceiveRoute &rhs) const
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
bool AddL3(const Agent *agent, VmInterface *vmi) const
void DeleteDhcpSnoopEntry(const std::string &ifname)
void Update(const FatFlowEntry *lhs, const FatFlowEntry *rhs)
PortIpcHandler * port_ipc_handler() const
const Ip4Address & vm_ip_service_addr() const
tbb::atomic< int > flow_count_
std::vector< int > SecurityGroupList
const NextHop * l3_interface_nh_no_policy() const
bool ecmp_config_changed_
virtual ~VrfTableLabelState()
std::unique_ptr< DBRequestData > data
bool operator()(const FloatingIp &lhs, const FloatingIp &rhs) const
std::string ToString() const
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
void Remove(const LearntMacIp *rhs)
const NextHop * l2_interface_nh_no_policy() const
void UpdateMetaDataIpInfo()
void Copy(const Agent *agent, const VmInterface *vmi) const
std::unique_ptr< MetaDataIpState > metadata_ip_state_
const Ip4Address & subnet() const
std::unique_ptr< NextHopState > nexthop_state_
AgentDBEntry * FindActiveEntry(const DBEntry *key)
InterfaceTable * interface_table() const
bool Enqueue(DBRequest *req)
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
bool is_service_health_check_ip_
static void DeleteMulticastVmInterfaceNH(const boost::uuids::uuid &intf_uuid, const MacAddress &dmac, const std::string &intf_name)
static const uint8_t kMaxV4PrefixLen
bool AddL2(const Agent *agent, VmInterface *vmi) const
virtual bool DeleteL3(const Agent *agent, VmInterface *vmi) const
bool AddL2(const Agent *agent, VmInterface *vmi) const
IFMapNode * ifmap_node() const
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
const string & GetName() const
const MacAddress & mac() const
bool AddL2(const Agent *agent, VmInterface *vmi) const
int32_t GetSrcPortMap(uint8_t protocol, uint16_t src_port) const
void Copy(const Agent *agent, const VmInterface *vmi) const
void DeleteCommon(const VmInterface *vmi) const
std::vector< ActionSpec > action_l
StaticRouteList static_route_list_
bool AddL2(const Agent *agent, VmInterface *vmi) const
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
VmInterfaceState::Op GetOp(VmInterfaceState::Op op) const
const Peer * peer() const
IpAddress GetServiceIp(const IpAddress &ip) const
FatFlowPrefixAggregateType prefix_aggregate
bool operator()(const AliasIp &lhs, const AliasIp &rhs) const
virtual ~SecurityGroupEntry()
static Ip4Address GetIp4SubnetAddress(const Ip4Address &prefix, uint16_t plen)
bool operator()(const VrfAssignRule &lhs, const VrfAssignRule &rhs) const
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
std::unique_ptr< DBRequestKey > KeyPtr
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
bool AddL3(const Agent *agent, VmInterface *vmi) const
bool AddL3(const Agent *agent, VmInterface *vmi) const
VrfAssignRuleList vrf_assign_rule_list_
VmInterface(const boost::uuids::uuid &uuid, const std::string &name, bool os_oper_state, const boost::uuids::uuid &logical_router_uuid)
std::vector< AclDBEntryConstRef > FirewallPolicyList
Ip4Address dhcp_addr() const
std::unique_ptr< VrfTableLabelState > vrf_table_label_state_
TagTable * tag_table() const
virtual ~AllowedAddressPair()
bool learning_enabled() const
int32_t GetDstPortMap(uint8_t protocol, uint16_t dst_port) const
void Copy(const Agent *agent, const VmInterface *vmi) const
void Update(const StaticRoute *lhs, const StaticRoute *rhs)
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
static Ip6Address GetIp6SubnetAddress(const Ip6Address &prefix, uint16_t plen)
std::string ToString() const
bool AddL2(const Agent *agent, VmInterface *vmi) const
void SetPrefixForAllocUnitIpam(VmInterface *intrface) const
void SetServiceVlanPathPreference(PathPreference *pref, const IpAddress &service_ip) const
bool UpdatePolicySet(const Agent *agent)
void Update(const ServiceVlan *lhs, const ServiceVlan *rhs)
static FatFlowEntry MakeFatFlowEntry(const std::string &protocol, const int &port, const std::string &ignore_addr_str, const std::string &src_prefix_str, const int &src_prefix_mask, const int &src_aggregate_plen, const std::string &dst_prefix_str, const int &dst_prefix_mask, const int &dst_aggregate_plen)
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
IFMapNode * UuidToIFNode(const boost::uuids::uuid &u) const
void Remove(AliasIpSet::iterator &it)
void Update(const VmiReceiveRoute *lhs, const VmiReceiveRoute *rhs)
const std::string & fabric_vrf_name() const
bool AddL2(const Agent *agent, VmInterface *vmi) const
void Copy(const Agent *agent, const VmInterface *vmi) const
void Insert(const BridgeDomain *rhs)
FirewallPolicyList & fw_policy_list()
void SetConfigurer(VmInterface::Configurer type)
BridgeDomainList bridge_domain_list_
FatFlowPrefixAggregateType
MetaDataIpAllocator * metadata_ip_allocator() const
bool operator()(const LearntMacIp &lhs, const LearntMacIp &rhs) const
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
BridgeRouteEntry * FindRoute(const MacAddress &mac)
bool AddL3(const Agent *agent, VmInterface *vmi) const
void ApplyConfig(bool old_ipv4_active, bool old_l2_active, bool old_ipv6_active, const Ip4Address &old_subnet, const uint8_t old_subnet_plen)
static void Delete(const Peer *peer, const string &vrf_name, const IpAddress &addr, uint8_t plen)
void Insert(const TagEntry *rhs)
void Insert(const StaticRoute *rhs)
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
void CleanupAliasIpList()
void Update(const TagEntry *lhs, const TagEntry *rhs)
PolicySetTable * policy_set_table() const
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
bool OnChange(VmInterfaceData *data)
void Insert(const LearntMacIp *rhs)
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
bool IsLess(const SecurityGroupEntry *rhs) const
KeyPtr GetDBRequestKey() const
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
void Remove(TagEntrySet::iterator &it)
NextHopRef l3_mcast_nh_no_policy_
bool IsConfigurerSet(VmInterface::Configurer type)
const UpdateFloatingIpFn & update_floatingip_cb() const
VmiReceiveRouteList receive_route_list_
static void CreateMulticastVmInterfaceNH(const boost::uuids::uuid &intf_uuid, const MacAddress &dmac, const string &vrf_name, const string &intf_name)
virtual bool OnResync(const InterfaceTable *table, VmInterface *vmi, bool *force_update) const =0
std::unique_ptr< MacVmBindingState > mac_vm_binding_state_
static void Create(NextHopTable *table, const Interface *intf, bool policy)
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
bool need_linklocal_ip() const
uint32_t label_op() const
uint32_t GetAllocUnitFromIpam(const IpAddress &ip) const
BridgeDomainTable * bridge_domain_table() const
MetaDataIpMap metadata_ip_map_
NextHopConstRef flow_key_nh_
bool Populate(const autogen::MatchConditionType *match_condition)
Ip4Address vm_ip_service_addr_
boost::asio::ip::address_v6 Ip6Address
uint32_t PortMappingSize() const
bool operator()(const StaticRoute &lhs, const StaticRoute &rhs) const
bool UpdateState(const VmInterfaceState *attr, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
VnEntry * FindVnRef(const boost::uuids::uuid &uuid) const
std::map< std::string, FatFlowIgnoreAddressType > IgnoreAddressMap
uint8_t src_aggregate_plen
bool metadata_ip_active() const
ServiceVlanList service_vlan_list_
std::unique_ptr< ResolveRouteState > resolve_route_state_
std::unique_ptr< DBRequestKey > key
bool IsMaxMacIpLearnt() const
void Update(const BridgeDomain *lhs, const BridgeDomain *rhs)
friend struct VmInterfaceNewFlowDropData
bool layer3_forwarding() const
virtual bool DeleteL2(const Agent *agent, VmInterface *vmi) const
bool IsIpv4Active() const
LearntMacIpList learnt_mac_ip_list_
virtual bool OnDelete(const InterfaceTable *table, VmInterface *entry) const
bool AddL3(const Agent *agent, VmInterface *vmi) const
void Copy(const Agent *agent, const VmInterface *vmi) const
bool IsLess(const TagEntry *rhs) const
bool UpdateList(const Agent *agent, VmInterface *vmi)
bool DeleteState(VmInterfaceState *attr)
bool AddL3(const Agent *agent, VmInterface *vmi) const
void DeleteRoute(const std::string &vrf_name, const IpAddress &ip, uint32_t plen)
AgentRouteTable * GetBridgeRouteTable() const
const Peer * local_peer() const
void AddCommon(const Agent *agent, const VmInterface *vmi) const
VrfEntry * FindVrfRef(const std::string &name) const
void Update(const AllowedAddressPair *lhs, const AllowedAddressPair *rhs)
HealthCheckInstanceSet hc_instance_set_
void CreateTableLabel(bool learning_enabled, bool l2, bool flod_unknown_unicast, bool layer2_control_word)
FirewallPolicyList fwaas_fw_policy_list_
void Remove(VrfAssignRuleSet::iterator &it)
const VnEntry * vn() const
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
void Update(const InstanceIp *lhs, const InstanceIp *rhs)
bool policy_enabled() const
std::vector< std::string > CommunityList
void update_flow_count(int val) const
std::vector< Ip4Address > AddressList
Ip6Address mdata_ip6_addr() const
AgentDBEntry * Find(const DBEntry *key, bool ret_del)
FatFlowList fat_flow_list_
virtual void Process(DBRequest &req)
void Remove(VmiReceiveRouteSet::iterator &it)
FatFlowIgnoreAddressType ignore_address
void set_del_pending(bool val) 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)
std::set< std::string > VnListType
void decr_active_vmi_count()
bool AddL3(const Agent *agent, VmInterface *vmi) const
bool PolicyEnabled() const
bool IsLess(const ServiceVlan *rhs) const
void UpdateInterfaceHealthCheckService()
void Remove(ServiceVlanSet::iterator &it)
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
void Insert(const VrfAssignRule *rhs)
boost::asio::ip::address_v4 Ip4Address
TrafficAction::Action simple_action
static const uint32_t kInvalidLabel
std::map< PortMapKey, uint16_t, PortMapKey > PortMap
VrfTable * vrf_table() const
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
const Ip4Address & primary_ip_addr() const
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
void incr_active_vmi_count()
void set_ignore_acl(bool ignore_acl)
FirewallPolicyList fw_policy_list_
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
const std::string & vrf_name() const
PortMap::iterator PortMapIterator
static void DeleteL2InterfaceNH(const boost::uuids::uuid &intf_uuid, const MacAddress &mac, const std::string &intf_name)
void Copy(const Agent *agent, const VmInterface *vmi) const
static const char * kInterfaceStatic
bool Resync(const InterfaceTable *table, const VmInterfaceData *data)
PolicySet * global_policy_set() const
virtual ~MacVmBindingState()
bool IsLess(const VrfAssignRule *rhs) const
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
bool operator()(const AllowedAddressPair &lhs, const AllowedAddressPair &rhs) const
void Remove(StaticRouteSet::iterator &it)
const Peer * mac_vm_binding_peer() const
static const char * kInterface
void Update(const AliasIp *lhs, const AliasIp *rhs)
VmInterface::VmiType vmi_type() const
autogen::MatchConditionType match_condition_
InstanceIpList instance_ipv4_list_
bool IsLess(const AliasIp *rhs) const
virtual bool AddL3(const Agent *agent, VmInterface *vmi) const
const Ip6Address & primary_ip6_addr() const
virtual bool AddL2(const Agent *agent, VmInterface *vmi) const
bool IsMetaDataIPActive() const
static IgnoreAddressMap fatflow_ignore_addr_map_
bool AddL3(const Agent *agent, VmInterface *vmi) const
static void CreateL2VmInterfaceNH(const boost::uuids::uuid &intf_uuid, const MacAddress &dmac, const string &vrf_name, bool learning_enabled, bool etree_leaf, bool layer2_control_word, const std::string &intf_name)
void DeleteMacVmBindingRoute(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const VmInterface *vm_intf)
bool operator==(const TagEntry &rhs) const
uint32_t l2_label() const
uint32_t max_flows() const
const uint8_t subnet_plen() const
static bool GetInstanceIpActiveState(const VmInterface::InstanceIp *instance_ip, const VmInterface *vmi)
#define LOCAL_VM_PORT_PEER_NAME
static void AddGatewayRoute(const Peer *peer, const string &vrf_name, const Ip4Address &dst_addr, uint8_t plen, const AddressList &gw_list, const VnListType &vn_name, uint32_t label, const SecurityGroupList &sg_list, const TagList &tag_list, const CommunityList &communities, bool native_encap)
FloatingIpList floating_ip_list_
InstanceIpList instance_ipv6_list_
std::unique_ptr< VmiRouteState > interface_route_state_
static void AddBridgeReceiveRoute(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const std::string &vn_name, const std::string &interface, bool policy)
bool IsLess(const FloatingIp *rhs) const
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
virtual KeyPtr GetDBRequestKey() const
virtual Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
#define LOG(_Level, _Msg)
uint32_t ethernet_tag() const
bool layer2_control_word() const
void AddL2InterfaceRoute(const IpAddress &ip, const MacAddress &mac, const IpAddress &dependent_ip) const
SgTable * sg_table() const
AgentRouteTable * GetRouteTable(uint8_t table_type) const
virtual bool Update(const Agent *agent, VmInterface *vmi, Op l2_force_op, Op l3_force_op) const
static void AddVlanNHRoute(const Peer *peer, const string &vm_vrf, const IpAddress &addr, uint8_t plen, const boost::uuids::uuid &intf_uuid, uint16_t tag, uint32_t label, const VnListType &dest_vn_list, const SecurityGroupList &sg_list_, const TagList &tag_list, const PathPreference &path_preference)
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
void Insert(const VmiReceiveRoute *rhs)
static void CreateL3VmInterfaceNH(const boost::uuids::uuid &intf_uuid, const MacAddress &dmac, const string &vrf_name, bool learning_enabled, const std::string &intf_name)
virtual void Copy(const Agent *agent, const VmInterface *vmi) const
const std::string & name() const
void Insert(const FloatingIp *rhs)
const Peer * local_vm_peer() const
void Copy(const Agent *agent, const VmInterface *vmi) const
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
bool IsMetaDataL2Active() const
bool do_dhcp_relay() const
static const int kDropNewFlowsRecoveryThreshold
NextHopRef l2_nh_no_policy_
const string & GetName() const
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
VrfEntry * forwarding_vrf() const
static void CreateVlan(const boost::uuids::uuid &intf_uuid, const std::string &vrf_name, uint16_t vlan_tag)
static bool GetIpActiveState(const IpAddress &ip, const VmInterface *vmi)
static void DeleteL3InterfaceNH(const boost::uuids::uuid &intf_uuid, const MacAddress &mac, const std::string &intf_name)
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
static const char * kServiceInterface
bool IsLess(const LearntMacIp *rhs) const
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
virtual bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
const std::string & fabric_vn_name() const
bool ResetVrfDelete(const InterfaceTable *table, const std::string &vrf_name)
void Update(const FloatingIp *lhs, const FloatingIp *rhs)
virtual Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
void Remove(AllowedAddressPairSet::iterator &it)
void Insert(const SecurityGroupEntry *rhs)
void set_delete_on_zero_refcount(bool val)
void AddMacVmBindingRoute(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const VmInterface *vm_intf, bool flood_dhcp)
const IpAddress GetFixedIp(const VmInterface *) const
void DeleteL2InterfaceRoute(const VrfEntry *vrf, uint32_t ethernet_tag, const IpAddress &ip, const MacAddress &mac) const
AclTable * acl_table() const
void Insert(const AliasIp *rhs)
MetaDataIpAllocator * metadata_ip6_allocator() const
void Insert(const FatFlowEntry *rhs)
CommunityList communities_
TrafficAction::TrafficActionType ta_type
void Remove(FloatingIpSet::iterator &it)
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
void CopySgIdList(SecurityGroupList *sg_id_list) const
void set_vrf_name(const std::string &vrf_name)
bool IsLess(const AllowedAddressPair *rhs) const
bool operator()(const InstanceIp &lhs, const InstanceIp &rhs) const
bool IsIpv6Active() const
static Op RecomputeOp(Op old_op, Op new_op)
static uint16_t ProtocolStringToInt(const std::string &str)
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
bool AddL3(const Agent *agent, VmInterface *vmi) const
void Update(const LearntMacIp *lhs, const LearntMacIp *rhs)
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
SecurityGroupEntryList sg_list_
virtual ~ResolveRouteState()
bool is_hc_active() const
void Insert(const InstanceIp *rhs)
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
void Copy(const Agent *agent, const VmInterface *vmi) const
static void Create(const boost::uuids::uuid &intf_uuid, uint16_t vlan_tag, const std::string &vrf_name, const MacAddress &smac, const MacAddress &dmac)
void Copy(const Agent *agent, const VmInterface *vmi) const
bool AddL3(const Agent *agent, VmInterface *vmi) const
bool operator()(const ServiceVlan &lhs, const ServiceVlan &rhs) const
bool drop_new_flows() const
bool AddL3(const Agent *agent, VmInterface *vmi) const
void Update(const Agent *agent, VmInterface *vmi) const
const MplsLabel * mpls_label() const
std::vector< int > TagList
bool operator()(const TagEntry &lhs, const TagEntry &rhs) const
void CopyTagIdList(TagList *tag_id_list) const
bool DeleteL3(const Agent *agent, VmInterface *vmi) const