36 using namespace boost::uuids;
 
   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 ==
 
  738     return uuid_ == rhs.uuid_;
 
  741 bool VmInterface::SecurityGroupEntry::operator()
 
  743     return lhs.IsLess(&rhs);
 
  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_) {
 
 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) {
 
 1455     if (
vrf_ == NULL || 
ip_.is_unspecified())
 
 1463     if (
vrf_ == NULL || vmi->
vn() == NULL || 
ip_.is_unspecified())
 
 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,
 
 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()) {
 
 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;
 
 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_;
 
 3021         if (v4_rt_installed_) {
 
 3025             v4_rt_installed_ = 
false;
 
 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());
 
 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();
 
 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);
 
 3475         assert(new_flow_count >= val);
 
 3476         if ((new_flow_count + val) <
 
 3481         if ((new_flow_count + val) >= 
max_flows) {
 
boost::asio::ip::address_v6 Ip6Address
 
boost::asio::ip::address IpAddress
 
boost::asio::ip::address_v4 Ip4Address
 
#define FLOWS_LIMIT_UNLIMITED
 
std::vector< int > TagList
 
std::vector< int > SecurityGroupList
 
std::vector< Ip4Address > AddressList
 
std::set< std::string > VnListType
 
std::vector< std::string > CommunityList
 
bool Populate(const autogen::MatchConditionType *match_condition)
 
std::vector< ActionSpec > action_l
 
static const uint8_t kMaxV4PrefixLen
 
static Ip4Address GetIp4SubnetAddress(const Ip4Address &prefix, uint16_t plen)
 
static const uint8_t kMaxV6PrefixLen
 
static Ip6Address GetIp6SubnetAddress(const Ip6Address &prefix, uint16_t plen)
 
AgentDBEntry * FindActiveEntry(const DBEntry *key)
 
AgentDBEntry * Find(const DBEntry *key, bool ret_del)
 
virtual void Process(DBRequest &req)
 
IFMapNode * ifmap_node() const
 
InterfaceTable * interface_table() const
 
MetaDataIpAllocator * metadata_ip6_allocator() const
 
TagTable * tag_table() const
 
PortIpcHandler * port_ipc_handler() const
 
VrfTable * vrf_table() const
 
const Peer * mac_vm_binding_peer() const
 
const Peer * local_peer() const
 
AclTable * acl_table() const
 
uint32_t global_max_vmi_flows() const
 
static const int kDropNewFlowsRecoveryThreshold
 
const Peer * local_vm_peer() const
 
const std::string & fabric_vn_name() const
 
BridgeDomainTable * bridge_domain_table() const
 
static uint16_t ProtocolStringToInt(const std::string &str)
 
NextHopTable * nexthop_table() const
 
static const MacAddress & vrrp_mac()
 
SgTable * sg_table() const
 
const std::string & fabric_vrf_name() const
 
PolicySetTable * policy_set_table() const
 
MetaDataIpAllocator * metadata_ip_allocator() const
 
void AddMacVmBindingRoute(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const VmInterface *vm_intf, bool flood_dhcp)
 
BridgeRouteEntry * FindRoute(const MacAddress &mac)
 
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)
 
void DeleteMacVmBindingRoute(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const VmInterface *vm_intf)
 
static void Delete(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, uint32_t ethernet_tag)
 
std::unique_ptr< DBRequestKey > KeyPtr
 
DBTableBase * get_table() const
 
bool Enqueue(DBRequest *req)
 
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)
 
void DelLocalVmRoute(const Peer *peer, const std::string &vrf_name, const MacAddress &mac, const VmInterface *intf, const IpAddress &ip, uint32_t ethernet_tag)
 
virtual KeyPtr GetDBRequestKey() const
 
static void AddVHostRecvRoute(const Peer *peer, const string &vrf, const InterfaceKey &interface, const IpAddress &addr, uint8_t plen, const string &vn_name, bool policy, bool native_encap, bool ipam_host_route=true)
 
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 Delete(const Peer *peer, const string &vrf_name, const IpAddress &addr, uint8_t plen)
 
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)
 
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)
 
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)
 
static void DeleteL2InterfaceNH(const boost::uuids::uuid &intf_uuid, const MacAddress &mac, const std::string &intf_name)
 
void set_delete_on_zero_refcount(bool val)
 
static void CreateMulticastVmInterfaceNH(const boost::uuids::uuid &intf_uuid, const MacAddress &dmac, const string &vrf_name, const string &intf_name)
 
static void DeleteMulticastVmInterfaceNH(const boost::uuids::uuid &intf_uuid, const MacAddress &dmac, const std::string &intf_name)
 
static void CreateL3VmInterfaceNH(const boost::uuids::uuid &intf_uuid, const MacAddress &dmac, const string &vrf_name, bool learning_enabled, const std::string &intf_name)
 
static void DeleteL3InterfaceNH(const boost::uuids::uuid &intf_uuid, const MacAddress &mac, const std::string &intf_name)
 
VnEntry * FindVnRef(const boost::uuids::uuid &uuid) const
 
const UpdateFloatingIpFn & update_floatingip_cb() const
 
void incr_active_vmi_count()
 
void DeleteDhcpSnoopEntry(const std::string &ifname)
 
void decr_active_vmi_count()
 
VrfEntry * FindVrfRef(const std::string &name) const
 
NextHopConstRef flow_key_nh_
 
const MacAddress & mac() const
 
bool is_hc_active() const
 
const std::string & name() const
 
bool metadata_ip_active() const
 
uint32_t l2_label() const
 
const boost::uuids::uuid & GetUuid() const
 
const uint32_t id() const
 
std::string ToString() const
 
static const MacAddress kZeroMac
 
static const uint32_t kInvalidLabel
 
const MplsLabel * mpls_label() const
 
PolicySet * global_policy_set() const
 
FirewallPolicyList & fw_policy_list()
 
PortSubscribeTable * port_subscribe_table() const
 
IFMapNode * UuidToIFNode(const boost::uuids::uuid &u) const
 
static void Create(NextHopTable *table, const Interface *intf, bool policy)
 
static void Create(const boost::uuids::uuid &intf_uuid, uint16_t vlan_tag, const std::string &vrf_name, const MacAddress &smac, const MacAddress &dmac)
 
FirewallPolicyList fw_policy_list_
 
FirewallPolicyList fwaas_fw_policy_list_
 
bool layer3_forwarding() const
 
void SetServiceVlanPathPreference(PathPreference *pref, const IpAddress &service_ip) const
 
bool UpdateState(const VmInterfaceState *attr, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
VrfAssignRuleList vrf_assign_rule_list_
 
bool policy_enabled() const
 
VmInterface::VmiType vmi_type() const
 
HealthCheckInstanceSet hc_instance_set_
 
void DeleteL2InterfaceRoute(const VrfEntry *vrf, uint32_t ethernet_tag, const IpAddress &ip, const MacAddress &mac) const
 
ServiceVlanList service_vlan_list_
 
bool Resync(const InterfaceTable *table, const VmInterfaceData *data)
 
VmiReceiveRouteList receive_route_list_
 
virtual bool CmpInterface(const DBEntry &rhs) const
 
bool OnChange(VmInterfaceData *data)
 
const uint8_t subnet_plen() const
 
const NextHop * l2_interface_nh_policy() const
 
const Ip4Address & vm_ip_service_addr() const
 
bool drop_new_flows() const
 
LearntMacIpList learnt_mac_ip_list_
 
BridgeDomainList bridge_domain_list_
 
uint32_t max_flows() const
 
uint32_t ethernet_tag() const
 
bool IsMaxMacIpLearnt() const
 
static const char * kServiceInterface
 
std::unique_ptr< MetaDataIpState > metadata_ip6_state_
 
AllowedAddressPairList allowed_address_pair_list_
 
void UpdateMetaDataIpInfo()
 
MetaDataIpMap metadata_ip_map_
 
bool IsIpv6Active() const
 
Ip4Address dhcp_addr() const
 
void AddL2InterfaceRoute(const IpAddress &ip, const MacAddress &mac, const IpAddress &dependent_ip) const
 
bool need_linklocal_ip() const
 
bool learning_enabled() const
 
IpAddress GetServiceIp(const IpAddress &ip) const
 
friend struct VmInterfaceNewFlowDropData
 
uint32_t label_op() const
 
void SetConfigurer(VmInterface::Configurer type)
 
std::unique_ptr< LocalVmPortPeer > peer_
 
std::unique_ptr< ResolveRouteState > resolve_route_state_
 
void DeleteRoute(const std::string &vrf_name, const IpAddress &ip, uint32_t plen)
 
bool IsMetaDataIPActive() const
 
bool IsMetaDataL2Active() const
 
void CleanupAliasIpList()
 
bool IsConfigurerSet(VmInterface::Configurer type)
 
void CopyTagIdList(TagList *tag_id_list) const
 
FatFlowPrefixAggregateType
 
SecurityGroupEntryList sg_list_
 
Ip6Address mdata_ip6_addr() const
 
const NextHop * l2_interface_nh_no_policy() const
 
bool ResetVrfDelete(const InterfaceTable *table, const std::string &vrf_name)
 
bool DeleteState(VmInterfaceState *attr)
 
static const char * kInterfaceStatic
 
void CleanupFloatingIpList()
 
void ResetConfigurer(VmInterface::Configurer type)
 
std::unique_ptr< VmiRouteState > interface_route_state_
 
std::string ToString() const
 
std::unique_ptr< NextHopState > nexthop_state_
 
AliasIpList alias_ip_list_
 
const MacAddress & GetVifMac(const Agent *) const
 
std::map< std::string, FatFlowIgnoreAddressType > IgnoreAddressMap
 
void SetInterfacesDropNewFlows(bool drop_new_flows) const
 
Ip4Address vm_ip_service_addr_
 
bool do_dhcp_relay() const
 
FloatingIpList floating_ip_list_
 
InstanceIpList instance_ipv4_list_
 
const MacAddress & vm_mac() const
 
VmInterface(const boost::uuids::uuid &uuid, const std::string &name, bool os_oper_state, const boost::uuids::uuid &logical_router_uuid)
 
bool UpdatePolicySet(const Agent *agent)
 
VmInterface::DeviceType device_type() const
 
const VnEntry * vn() const
 
bool dhcp_enable_config() const
 
std::unique_ptr< MacVmBindingState > mac_vm_binding_state_
 
void UpdateInterfaceHealthCheckService()
 
const Ip4Address & primary_ip_addr() const
 
StaticRouteList static_route_list_
 
const Ip4Address & subnet() const
 
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)
 
void ApplyConfig(bool old_ipv4_active, bool old_l2_active, bool old_ipv6_active, const Ip4Address &old_subnet, const uint8_t old_subnet_plen)
 
std::unique_ptr< VrfTableLabelState > vrf_table_label_state_
 
bool layer2_control_word() const
 
VrfEntry * forwarding_vrf() const
 
static const char * kInterface
 
KeyPtr GetDBRequestKey() const
 
tbb::atomic< int > flow_count_
 
std::unique_ptr< MetaDataIpState > metadata_ip_state_
 
void SetPathPreference(PathPreference *pref, bool ecmp, const IpAddress &dependent_ip) const
 
Ip4Address mdata_ip_addr() const
 
const NextHop * l3_interface_nh_no_policy() const
 
const Ip6Address & primary_ip6_addr() const
 
bool PolicyEnabled() const
 
FatFlowList fat_flow_list_
 
static const uint32_t kMaxMacIpLimit
 
InstanceIpList instance_ipv6_list_
 
bool IsIpv4Active() const
 
void update_flow_count(int val) const
 
static IgnoreAddressMap fatflow_ignore_addr_map_
 
const Peer * peer() const
 
VmInterface::DeviceType device_type_
 
const std::string & vrf_name() const
 
const string & GetName() const
 
const VnIpam * GetIpam(const IpAddress &ip) const
 
uint32_t GetAllocUnitFromIpam(const IpAddress &ip) const
 
static void DeleteVlan(const boost::uuids::uuid &intf_uuid, uint16_t vlan_tag)
 
static void CreateVlan(const boost::uuids::uuid &intf_uuid, const std::string &vrf_name, uint16_t vlan_tag)
 
const string & GetName() const
 
uint32_t table_label() const
 
AgentRouteTable * GetBridgeRouteTable() const
 
void CreateTableLabel(bool learning_enabled, bool l2, bool flod_unknown_unicast, bool layer2_control_word)
 
AgentRouteTable * GetRouteTable(uint8_t table_type) const
 
#define LOG(_Level, _Msg)
 
#define LOCAL_VM_PORT_PEER_NAME
 
std::vector< AclEntrySpec > acl_entry_specs_
 
VrfTranslateActionSpec vrf_translate
 
TrafficAction::TrafficActionType ta_type
 
TrafficAction::Action simple_action
 
std::unique_ptr< DBRequestKey > key
 
std::unique_ptr< DBRequestData > data
 
void Copy(const Agent *agent, const VmInterface *vmi) const
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
virtual ~MacVmBindingState()
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
NextHopRef l3_mcast_nh_no_policy_
 
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
 
NextHopRef l3_nh_no_policy_
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
NextHopRef l2_nh_no_policy_
 
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
 
bool AddL2(const Agent *agent, VmInterface *vmi) const
 
virtual ~ResolveRouteState()
 
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
 
void Copy(const Agent *agent, const VmInterface *vmi) const
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
bool AddL2(const Agent *agent, VmInterface *vmi) const
 
virtual bool OnDelete(const InterfaceTable *table, VmInterface *entry) const
 
virtual bool OnResync(const InterfaceTable *table, VmInterface *vmi, bool *force_update) const =0
 
InterfaceKey * Clone() const
 
virtual bool Update(const Agent *agent, VmInterface *vmi, Op l2_force_op, Op l3_force_op) const
 
virtual bool AddL2(const Agent *agent, VmInterface *vmi) const
 
virtual void Copy(const Agent *agent, const VmInterface *vmi) const
 
virtual bool AddL3(const Agent *agent, VmInterface *vmi) const
 
virtual Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
 
virtual bool DeleteL2(const Agent *agent, VmInterface *vmi) const
 
virtual bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
virtual Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
static Op RecomputeOp(Op old_op, Op new_op)
 
void Update(const AliasIp *lhs, const AliasIp *rhs)
 
void Insert(const AliasIp *rhs)
 
void Remove(AliasIpSet::iterator &it)
 
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
bool IsLess(const AliasIp *rhs) const
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
bool operator()(const AliasIp &lhs, const AliasIp &rhs) const
 
void Copy(const Agent *agent, const VmInterface *vmi) const
 
void Update(const AllowedAddressPair *lhs, const AllowedAddressPair *rhs)
 
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
void Remove(AllowedAddressPairSet::iterator &it)
 
void Insert(const AllowedAddressPair *rhs)
 
bool AddL2(const Agent *agent, VmInterface *vmi) const
 
bool ecmp_config_changed_
 
void Copy(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
 
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
 
virtual ~AllowedAddressPair()
 
bool IsLess(const AllowedAddressPair *rhs) const
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
bool operator()(const AllowedAddressPair &lhs, const AllowedAddressPair &rhs) const
 
void Update(const BridgeDomain *lhs, const BridgeDomain *rhs)
 
void Remove(BridgeDomainEntrySet::iterator &it)
 
void Insert(const BridgeDomain *rhs)
 
BridgeDomainEntrySet list_
 
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)
 
uint8_t src_aggregate_plen
 
FatFlowPrefixAggregateType prefix_aggregate
 
uint8_t dst_aggregate_plen
 
FatFlowIgnoreAddressType ignore_address
 
bool UpdateList(const Agent *agent, VmInterface *vmi)
 
void Remove(FatFlowEntrySet::iterator &it)
 
void Insert(const FatFlowEntry *rhs)
 
void Update(const FatFlowEntry *lhs, const FatFlowEntry *rhs)
 
void Insert(const FloatingIp *rhs)
 
void Remove(FloatingIpSet::iterator &it)
 
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
void Update(const FloatingIp *lhs, const FloatingIp *rhs)
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
int32_t GetDstPortMap(uint8_t protocol, uint16_t dst_port) const
 
uint32_t PortMappingSize() const
 
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
 
bool IsLess(const FloatingIp *rhs) const
 
bool AddL2(const Agent *agent, VmInterface *vmi) const
 
std::map< PortMapKey, uint16_t, PortMapKey > PortMap
 
int32_t GetSrcPortMap(uint8_t protocol, uint16_t src_port) const
 
void Copy(const Agent *agent, const VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
const IpAddress GetFixedIp(const VmInterface *) const
 
bool operator()(const FloatingIp &lhs, const FloatingIp &rhs) const
 
PortMap::iterator PortMapIterator
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
bool port_map_enabled() const
 
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
 
virtual bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
void Insert(const InstanceIp *rhs)
 
void Remove(InstanceIpSet::iterator &it)
 
void Update(const InstanceIp *lhs, const InstanceIp *rhs)
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
void SetPrefixForAllocUnitIpam(VmInterface *intrface) const
 
bool is_service_health_check_ip_
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
void Copy(const Agent *agent, const VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
bool IsLess(const InstanceIp *rhs) const
 
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
 
bool operator()(const InstanceIp &lhs, const InstanceIp &rhs) const
 
bool AddL2(const Agent *agent, VmInterface *vmi) const
 
void Update(const LearntMacIp *lhs, const LearntMacIp *rhs)
 
virtual bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
void Insert(const LearntMacIp *rhs)
 
void Remove(const LearntMacIp *rhs)
 
void Copy(const Agent *agent, const VmInterface *vmi) const
 
bool AddL2(const Agent *agent, VmInterface *vmi) const
 
bool operator()(const LearntMacIp &lhs, const LearntMacIp &rhs) const
 
bool IsLess(const LearntMacIp *rhs) const
 
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
 
void set_del_pending(bool val) const
 
VmInterfaceState::Op GetOp(VmInterfaceState::Op op) const
 
SecurityGroupEntrySet list_
 
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
void Insert(const SecurityGroupEntry *rhs)
 
void Update(const SecurityGroupEntry *lhs, const SecurityGroupEntry *rhs)
 
void Remove(SecurityGroupEntrySet::iterator &it)
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
virtual ~SecurityGroupEntry()
 
bool IsLess(const SecurityGroupEntry *rhs) const
 
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
void Remove(ServiceVlanSet::iterator &it)
 
void Insert(const ServiceVlan *rhs)
 
void Update(const ServiceVlan *lhs, const ServiceVlan *rhs)
 
bool operator()(const ServiceVlan &lhs, const ServiceVlan &rhs) const
 
void DeleteCommon(const VmInterface *vmi) const
 
bool IsLess(const ServiceVlan *rhs) const
 
void AddCommon(const Agent *agent, const VmInterface *vmi) const
 
void Update(const Agent *agent, VmInterface *vmi) const
 
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
void Update(const StaticRoute *lhs, const StaticRoute *rhs)
 
void Insert(const StaticRoute *rhs)
 
void Remove(StaticRouteSet::iterator &it)
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
bool IsLess(const StaticRoute *rhs) const
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
bool operator()(const StaticRoute &lhs, const StaticRoute &rhs) const
 
void Copy(const Agent *agent, const VmInterface *vmi) const
 
CommunityList communities_
 
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
void Insert(const TagEntry *rhs)
 
void Update(const TagEntry *lhs, const TagEntry *rhs)
 
void Remove(TagEntrySet::iterator &it)
 
bool operator()(const TagEntry &lhs, const TagEntry &rhs) const
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
bool IsLess(const TagEntry *rhs) const
 
bool operator==(const TagEntry &rhs) const
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
void Remove(VmiReceiveRouteSet::iterator &it)
 
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
void Insert(const VmiReceiveRoute *rhs)
 
void Update(const VmiReceiveRoute *lhs, const VmiReceiveRoute *rhs)
 
void Copy(const Agent *agent, const VmInterface *vmi) const
 
bool AddL2(const Agent *agent, VmInterface *vmi) const
 
bool IsLess(const VmiReceiveRoute *rhs) const
 
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
bool operator()(const VmiReceiveRoute &lhs, const VmiReceiveRoute &rhs) const
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
void Insert(const VrfAssignRule *rhs)
 
void Remove(VrfAssignRuleSet::iterator &it)
 
void Update(const VrfAssignRule *lhs, const VrfAssignRule *rhs)
 
bool UpdateList(const Agent *agent, VmInterface *vmi, VmInterfaceState::Op l2_force_op, VmInterfaceState::Op l3_force_op)
 
bool IsLess(const VrfAssignRule *rhs) const
 
bool operator()(const VrfAssignRule &lhs, const VrfAssignRule &rhs) const
 
autogen::MatchConditionType match_condition_
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL2(const Agent *agent, const VmInterface *vmi) const
 
bool DeleteL3(const Agent *agent, VmInterface *vmi) const
 
bool AddL2(const Agent *agent, VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
bool DeleteL2(const Agent *agent, VmInterface *vmi) const
 
void Copy(const Agent *agent, const VmInterface *vmi) const
 
bool AddL3(const Agent *agent, VmInterface *vmi) const
 
VmInterfaceState::Op GetOpL3(const Agent *agent, const VmInterface *vmi) const
 
virtual ~VrfTableLabelState()
 
void set_ignore_acl(bool ignore_acl)
 
void set_vrf_name(const std::string &vrf_name)
 
static bool GetIpActiveState(const IpAddress &ip, const VmInterface *vmi)
 
static bool GetInstanceIpActiveState(const VmInterface::InstanceIp *instance_ip, const VmInterface *vmi)
 
static bool GetMacIpActiveState(const VmInterface::LearntMacIp *mac_ip, const VmInterface *vmi)
 
std::vector< AclDBEntryConstRef > FirewallPolicyList