10 #include <boost/asio.hpp>
21 #include "vrouter/ksync/agent_ksync_types.h"
28 #include "vr_interface.h"
36 #define TUN_INTF_CLONE_DEV "/dev/net/tun"
37 #define SOCK_RETRY_COUNT 4
39 #define VIF_FAT_FLOW_ENCODE_AGGR_PROTO_PORT(prefix_aggr, ignore_addr, protocol, port) \
40 (((prefix_aggr) << 28) | \
41 ((ignore_addr) << 24) | \
42 ((protocol) << 16) | \
49 drop_new_flows_(entry->drop_new_flows_),
50 dhcp_enable_(entry->dhcp_enable_),
51 dhcp_enable_v6_(entry->dhcp_enable_v6_),
53 flow_key_nh_id_(entry->flow_key_nh_id_),
54 has_service_vlan_(entry->has_service_vlan_),
55 interface_id_(entry->interface_id_),
56 interface_name_(entry->interface_name_),
57 ip_(entry->ip_), primary_ip6_(entry->primary_ip6_),
58 hc_active_(false), ipv4_active_(false),
59 layer3_forwarding_(entry->layer3_forwarding_),
60 ksync_obj_(obj), l2_active_(false),
61 metadata_l2_active_(entry->metadata_l2_active_),
62 metadata_ip_active_(entry->metadata_ip_active_),
63 bridging_(entry->bridging_),
67 mirror_direction_(entry->mirror_direction_),
68 network_id_(entry->network_id_),
70 parent_(entry->parent_),
71 policy_enabled_(entry->policy_enabled_),
72 sub_type_(entry->sub_type_),
73 vmi_device_type_(entry->vmi_device_type_),
74 vmi_type_(entry->vmi_type_),
75 hbs_intf_type_(entry->hbs_intf_type_),
77 rx_vlan_id_(entry->rx_vlan_id_),
78 tx_vlan_id_(entry->tx_vlan_id_),
79 vrf_id_(entry->vrf_id_),
80 multicast_vrf_id_(entry->multicast_vrf_id_),
81 persistent_(entry->persistent_),
82 subtype_(entry->subtype_),
83 xconnect_(entry->xconnect_),
84 no_arp_(entry->no_arp_),
85 encap_type_(entry->encap_type_),
86 display_name_(entry->display_name_),
87 transport_(entry->transport_),
88 flood_unknown_unicast_ (entry->flood_unknown_unicast_),
89 qos_config_(entry->qos_config_),
90 learning_enabled_(entry->learning_enabled_),
91 isid_(entry->isid_), pbb_cmac_vrf_(entry->pbb_cmac_vrf_),
92 pbb_mac_(entry->pbb_mac_), etree_leaf_(entry->etree_leaf_),
93 pbb_interface_(entry->pbb_interface_),
94 vhostuser_mode_(entry->vhostuser_mode_),
95 igmp_enable_(entry->igmp_enable_),
96 mac_ip_learning_enable_(false),
97 os_guid_(entry->os_guid_),
98 xconnect_list_(entry->xconnect_list_) {
105 drop_new_flows_(false),
107 dhcp_enable_v6_(false),
110 has_service_vlan_(false),
111 interface_id_(intf->id()),
112 interface_name_(intf->name()),
116 layer3_forwarding_(true),
119 metadata_l2_active_(false),
120 metadata_ip_active_(false),
126 os_index_(intf->os_index()),
128 policy_enabled_(false),
130 vmi_device_type_(
VmInterface::DEVICE_TYPE_INVALID),
136 vrf_id_(intf->vrf_id()),
137 multicast_vrf_id_(
VrfEntry::kInvalidIndex),
143 transport_(
Interface::TRANSPORT_INVALID),
144 flood_unknown_unicast_(false), qos_config_(NULL),
145 learning_enabled_(false), isid_(
VmInterface::kInvalidIsid),
146 pbb_cmac_vrf_(
VrfEntry::kInvalidIndex), pbb_mac_(), etree_leaf_(false),
147 pbb_interface_(false), vhostuser_mode_(
VmInterface::vHostUserClient),
148 igmp_enable_(false), mac_ip_learning_enable_(false),
149 os_guid_(intf->os_guid()),
172 for (
size_t i = 0; i <vmitf->
parent_list().size(); i++) {
229 s <<
" Vrf : " << vrf->
GetName();
397 uint32_t vrf_id = VIF_VRF_INVALID;
398 uint32_t multicast_vrf_id = VIF_VRF_INVALID;
399 bool policy_enabled =
false;
400 std::string analyzer_name;
406 vrf_id = VIF_VRF_INVALID;
416 multicast_vrf_id = intf->
vrf_id();
418 multicast_vrf_id = vm_port->
GetPbbVrf();;
422 multicast_vrf_id = VIF_VRF_INVALID;
465 qos_config_ksync_obj();
508 switch (intf->
type()) {
517 std::set<MacAddress> aap_mac_list;
518 for (VmInterface::AllowedAddressPairSet::iterator aap_it =
522 aap_mac_list.insert(aap_it->mac_);
557 no_arp = xconnect->
no_arp();
688 vr_interface_req encoder;
691 std::vector<int32_t> cross_connect_idx_list;
694 encoder.set_h_op(op);
695 if (op == sandesh_op::DEL) {
698 encode_len = encoder.WriteBinary((uint8_t *)buf, buf_len, &error);
700 assert(encode_len <= buf_len);
707 encoder.set_vifr_qos_map_index(qos_config->
id());
709 encoder.set_vifr_qos_map_index(-1);
713 flags |= VIF_FLAG_ETREE_ROOT;
721 flags |= VIF_FLAG_DROP_NEW_FLOWS;
724 flags |= VIF_FLAG_DHCP_ENABLED;
727 flags |= VIF_FLAG_L2_ENABLED;
730 flags |= VIF_FLAG_NO_ARP_PROXY;
734 VIF_FLAG_HBS_RIGHT:VIF_FLAG_HBS_LEFT;
737 flags |= VIF_FLAG_UNKNOWN_UC_FLOOD;
740 flags |= VIF_FLAG_MAC_LEARN;
743 flags |= VIF_FLAG_MAC_PROXY;
746 flags |= VIF_FLAG_IGMP_ENABLED;
749 flags |= VIF_FLAG_MAC_IP_LEARNING;
753 encoder.set_vifr_type(VIF_TYPE_VIRTUAL_VLAN);
760 encoder.set_vifr_vlan_id(0);
761 encoder.set_vifr_ovlan_id(0);
768 encoder.set_vifr_parent_vif_idx(parent->
interface_id());
772 encoder.set_vifr_type(VIF_TYPE_VIRTUAL);
776 encoder.set_vifr_type(VIF_TYPE_HOST);
782 cross_connect_idx_list.push_back(xconnect->
os_index_);
787 encoder.set_vifr_cross_connect_idx(cross_connect_idx_list);
790 std::vector<int8_t> intf_mac((int8_t *)mac,
791 (int8_t *)mac + mac.
size());
792 encoder.set_vifr_mac(intf_mac);
798 std::vector<int8_t>
mac;
799 mac.insert(mac.begin(), (
const int8_t *)
smac(),
801 for (std::set<MacAddress>::iterator it =
aap_mac_list_.begin();
803 mac.insert(mac.end(), (
const int8_t *)(*it),
804 (
const int8_t *)(*it) + (*it).size());
806 encoder.set_vifr_src_mac(mac);
807 flags |= VIF_FLAG_MIRROR_NOTAG;
821 std::vector<int32_t> fat_flow_protocol_port_list;
822 std::vector<uint64_t> fat_flow_src_prefix_h_list;
823 std::vector<uint64_t> fat_flow_src_prefix_l_list;
824 std::vector<int8_t> fat_flow_src_prefix_mask_list;
825 std::vector<int8_t> fat_flow_src_aggregate_plen_list;
826 std::vector<uint64_t> fat_flow_dst_prefix_h_list;
827 std::vector<uint64_t> fat_flow_dst_prefix_l_list;
828 std::vector<int8_t> fat_flow_dst_prefix_mask_list;
829 std::vector<int8_t> fat_flow_dst_aggregate_plen_list;
832 for (VmInterface::FatFlowEntrySet::const_iterator it =
836 fat_flow_protocol_port_list.push_back(
841 fat_flow_src_prefix_l_list.push_back(0);
842 fat_flow_src_prefix_h_list.push_back(0);
843 fat_flow_src_prefix_mask_list.push_back(0);
844 fat_flow_src_aggregate_plen_list.push_back(0);
845 fat_flow_dst_prefix_l_list.push_back(0);
846 fat_flow_dst_prefix_h_list.push_back(0);
847 fat_flow_dst_prefix_mask_list.push_back(0);
848 fat_flow_dst_aggregate_plen_list.push_back(0);
849 }
else if ((it->prefix_aggregate ==
851 (it->prefix_aggregate ==
853 (it->prefix_aggregate ==
855 fat_flow_protocol_port_list.push_back(
860 fat_flow_src_prefix_l_list.push_back(
861 (uint64_t) htonl(it->src_prefix.to_v4().to_ulong()));
862 fat_flow_src_prefix_h_list.push_back(0);
863 fat_flow_src_prefix_mask_list.push_back(it->src_prefix_mask);
864 fat_flow_src_aggregate_plen_list.push_back(it->src_aggregate_plen);
865 fat_flow_dst_prefix_l_list.push_back(
866 (uint64_t) htonl(it->dst_prefix.to_v4().to_ulong()));
867 fat_flow_dst_prefix_h_list.push_back(0);
868 fat_flow_dst_prefix_mask_list.push_back(it->dst_prefix_mask);
869 fat_flow_dst_aggregate_plen_list.push_back(it->dst_aggregate_plen);
871 fat_flow_protocol_port_list.push_back(
878 fat_flow_src_prefix_h_list.push_back(0);
879 fat_flow_src_prefix_l_list.push_back(0);
880 fat_flow_src_prefix_mask_list.push_back(0);
881 fat_flow_src_aggregate_plen_list.push_back(0);
884 fat_flow_src_prefix_h_list.push_back(tmp_ip6[0]);
885 fat_flow_src_prefix_l_list.push_back(tmp_ip6[1]);
886 fat_flow_src_prefix_mask_list.push_back(
887 it->src_prefix_mask);
888 fat_flow_src_aggregate_plen_list.push_back(
889 it->src_aggregate_plen);
893 fat_flow_dst_prefix_h_list.push_back(0);
894 fat_flow_dst_prefix_l_list.push_back(0);
895 fat_flow_dst_prefix_mask_list.push_back(0);
896 fat_flow_dst_aggregate_plen_list.push_back(0);
899 fat_flow_dst_prefix_h_list.push_back(tmp_ip6[0]);
900 fat_flow_dst_prefix_l_list.push_back(tmp_ip6[1]);
901 fat_flow_dst_prefix_mask_list.push_back(it->dst_prefix_mask);
902 fat_flow_dst_aggregate_plen_list.push_back(
903 it->dst_aggregate_plen);
907 encoder.set_vifr_fat_flow_protocol_port(
908 fat_flow_protocol_port_list);
909 encoder.set_vifr_fat_flow_src_prefix_h(
910 fat_flow_src_prefix_h_list);
911 encoder.set_vifr_fat_flow_src_prefix_l(
912 fat_flow_src_prefix_l_list);
913 encoder.set_vifr_fat_flow_src_prefix_mask(
914 fat_flow_src_prefix_mask_list);
915 encoder.set_vifr_fat_flow_src_aggregate_plen(
916 fat_flow_src_aggregate_plen_list);
917 encoder.set_vifr_fat_flow_dst_prefix_h(
918 fat_flow_dst_prefix_h_list);
919 encoder.set_vifr_fat_flow_dst_prefix_l(
920 fat_flow_dst_prefix_l_list);
921 encoder.set_vifr_fat_flow_dst_prefix_mask(
922 fat_flow_dst_prefix_mask_list);
923 encoder.set_vifr_fat_flow_dst_aggregate_plen(
924 fat_flow_dst_aggregate_plen_list);
926 encoder.set_vifr_fat_flow_exclude_ip_list
928 encoder.set_vifr_fat_flow_exclude_ip6_u_list
930 encoder.set_vifr_fat_flow_exclude_ip6_l_list
932 encoder.set_vifr_fat_flow_exclude_ip6_plen_list
939 encoder.set_vifr_pbb_mac(
pbb_mac);
940 encoder.set_vifr_isid(
isid_);
949 encoder.set_vifr_ip6_u(data[0]);
950 encoder.set_vifr_ip6_l(data[1]);
957 encoder.set_vifr_type(VIF_TYPE_PHYSICAL);
958 flags |= VIF_FLAG_L3_ENABLED;
959 flags |= VIF_FLAG_L2_ENABLED;
961 flags |= VIF_FLAG_VHOST_PHYS;
967 flags |= VIF_FLAG_PROMISCOUS;
970 flags |= VIF_FLAG_NATIVE_VLAN_TAG;
971 flags |= VIF_FLAG_FAB_GW_MODE;
976 std::vector<int16_t> nic_queue_list;
977 for (std::set<uint16_t>::const_iterator it =
980 nic_queue_list.push_back(*it);
982 encoder.set_vifr_hw_queues(nic_queue_list);
989 encoder.set_vifr_type(VIF_TYPE_GATEWAY);
992 encoder.set_vifr_type(VIF_TYPE_XEN_LL_HOST);
995 encoder.set_vifr_type(VIF_TYPE_HOST);
1000 cross_connect_idx_list.push_back(xconnect->
os_index_);
1004 encoder.set_vifr_cross_connect_idx(cross_connect_idx_list);
1007 encoder.set_vifr_type(VIF_TYPE_HOST);
1010 flags |= VIF_FLAG_L3_ENABLED;
1011 flags |= VIF_FLAG_L2_ENABLED;
1016 encoder.set_vifr_type(VIF_TYPE_AGENT);
1017 flags |= VIF_FLAG_L3_ENABLED;
1025 flags |= VIF_FLAG_L3_ENABLED;
1027 flags |= VIF_FLAG_POLICY_ENABLED;
1033 flags |= VIF_FLAG_MIRROR_TX;
1035 flags |= VIF_FLAG_MIRROR_RX;
1037 flags |= VIF_FLAG_MIRROR_RX;
1038 flags |= VIF_FLAG_MIRROR_TX;
1040 encoder.set_vifr_mir_id(idx);
1044 if (vrf && vrf->
vn()) {
1045 const std::string &vn_name = vrf->
vn()->
GetName() ;
1047 std::vector<int8_t> srcdata;
1049 srcdata.push_back(vn_name.size());
1050 srcdata.insert(srcdata.end(), vn_name.begin(),
1053 srcdata.push_back(0x0);
1054 encoder.set_vifr_in_mirror_md(srcdata);
1056 std::vector<int8_t> destdata;
1058 destdata.push_back(vn_name.size());
1059 destdata.insert(destdata.end(), vn_name.begin(),
1062 destdata.push_back(0x0);
1063 encoder.set_vifr_out_mirror_md(destdata);
1068 flags |= VIF_FLAG_SERVICE_IF;
1072 encoder.set_vifr_mac(std::vector<int8_t>((
const int8_t *)
mac(),
1073 (
const int8_t *)
mac() +
mac().size()));
1077 encoder.set_vifr_transport(VIF_TRANSPORT_ETH);
1082 encoder.set_vifr_transport(VIF_TRANSPORT_SOCKET);
1087 encoder.set_vifr_transport(VIF_TRANSPORT_PMD);
1094 encoder.set_vifr_flags(flags);
1096 encoder.set_vifr_vrf(vrf_id);
1099 encoder.set_vifr_rid(0);
1101 encoder.set_vifr_mtu(0);
1105 encoder.set_vifr_ip(htonl(
ip_));
1112 std::vector<int8_t> raw_guid(os_guid.size(), 0);
1113 memcpy(raw_guid.data(), &os_guid, os_guid.size());
1115 encoder.set_vifr_if_guid(raw_guid);
1119 encode_len = encoder.WriteBinary((uint8_t *)buf, buf_len, &error);
1121 assert(encode_len <= buf_len);
1126 KSyncIntfInfo &info)
const {
1130 if (op == sandesh_op::ADD) {
1131 info.set_operation(
"ADD/CHANGE");
1133 info.set_operation(
"DELETE");
1136 if (op == sandesh_op::ADD) {
1146 std::vector<KSyncIntfFatFlowInfo> fat_flows;
1147 for (VmInterface::FatFlowEntrySet::const_iterator it =
1150 KSyncIntfFatFlowInfo info;
1151 info.set_protocol(it->protocol);
1152 info.set_port(it->port);
1153 info.set_ignore_address(it->ignore_address);
1154 fat_flows.push_back(info);
1156 info.set_fat_flows(fat_flows);
1157 info.set_fat_flow_v4_exclude_list
1159 info.set_fat_flow_v6_exclude_upper_list
1161 info.set_fat_flow_v6_exclude_lower_list
1163 info.set_fat_flow_v6_exclude_plen_list
1173 return Encode(sandesh_op::ADD, buf, buf_len);
1180 return Encode(sandesh_op::DEL, buf, buf_len);
1184 return AddMsg(buf, buf_len);
1210 switch (intf->
type()) {
1251 vmi_type, intf->
transport()) ==
false) {
1262 vm_intf->
parent() == NULL) {
1282 data->set_drop_new_flows(
"Enable");
1284 data->set_drop_new_flows(
"Disable");
1288 data->set_dhcp_service(
"Enable");
1290 data->set_dhcp_service(
"Disable");
1297 data->set_has_service_vlan(
"Enable");
1299 data->set_has_service_vlan(
"Disable");
1307 data->set_health_check(
"Active");
1309 data->set_health_check(
"Inactive");
1313 data->set_ipv4_active(
"Active");
1315 data->set_ipv4_active(
"Inactive");
1319 data->set_layer3_forwarding(
"Enable");
1321 data->set_layer3_forwarding(
"Disable");
1325 data->set_l2_active(
"Active");
1327 data->set_l2_active(
"Inactive");
1331 data->set_metadata_l2_active(
"Active");
1333 data->set_metadata_l2_active(
"Inactive");
1338 data->set_metadata_ip_active(
"Active");
1340 data->set_metadata_ip_active(
"Inactive");
1344 data->set_bridging(
"Enable");
1346 data->set_l2_active(
"Disable");
1355 data->set_policy_enabled(
"Enable");
1357 data->set_policy_enabled(
"Disable");
1365 data->set_persistent(
"Enable");
1367 data->set_persistent(
"Disable");
1371 data->set_no_arp(
"Enable");
1373 data->set_no_arp(
"Disable");
1379 data->set_flood_unknown_unicast(
"Enable");
1381 data->set_flood_unknown_unicast(
"Disable");
1385 data->set_learning(
"Enable");
1387 data->set_learning(
"Disable");
1390 data->set_isid(
isid_);
1395 data->set_etree_leaf(
"Enable");
1397 data->set_etree_leaf(
"Disable");
1401 data->set_pbb_interface(
"Enable");
1403 data->set_pbb_interface(
"Disable");
1407 data->set_igmp_enable(
"Enable");
1409 data->set_igmp_enable(
"Disable");
1413 data->set_mac_ip_learning_enable(
"Enable");
1415 data->set_mac_ip_learning_enable(
"Disable");
1420 KSyncItfResp *resp =
static_cast<KSyncItfResp *
> (sresp);
1422 KSyncItfSandeshData data;
1424 std::vector<KSyncItfSandeshData> &list =
1425 const_cast<std::vector<KSyncItfSandeshData>&
>(resp->get_KSyncitf_list());
1426 list.push_back(data);
1431 void KSyncItfReq::HandleRequest()
const {
1433 sand->DoKsyncSandesh(sand);
void BuildFatFlowExcludeList(FatFlowExcludeList *list) const
Interface * xconnect() const
#define KSYNC_TRACE(obj, parent,...)
#define VIF_FAT_FLOW_ENCODE_AGGR_PROTO_PORT(prefix_aggr, ignore_addr, protocol, port)
bool pbb_interface() const
PhysicalInterface::EncapType encap_type_
const MacAddress & vm_mac() const
const AgentQosConfig * qos_config() const
bool HasServiceVlan() const
void RegisterDb(DBTableBase *table)
InetInterface::SubType sub_type_
virtual void SetErrno(int err)
uint16_t rx_vlan_id() const
VmInterface::DeviceType vmi_device_type_
std::vector< uint16_t > fat_flow_v6_exclude_plen_list_
DBTableBase * get_table() const
VmInterface::FatFlowList fat_flow_list_
VmInterface::DeviceType device_type() const
uint32_t os_index() const
InterfaceKSyncObject(KSync *parent)
std::vector< uint64_t > fat_flow_v4_exclude_list_
static const MacAddress & vrrp_mac()
Interface::Transport transport() const
VmInterface::ProxyArpMode proxy_arp_mode_
bool pbb_gateway_mode() const
virtual KSyncEntry * UnresolvedReference()
bool KSyncEntrySandesh(Sandesh *resp)
ProxyArpMode proxy_arp_mode() const
const std::set< uint16_t > & nic_queue_list() const
VmInterface::HbsIntfType hbs_intf_type() const
bool has_service_vlan() const
InterfaceTable * interface_table() const
boost::optional< InterfaceOsParams::IfGuid > os_guid_
virtual bool IsLess(const KSyncEntry &rhs) const
KSyncDBObject * GetObject() const
bool mac_ip_learning_enable_
const string & GetName() const
const MacAddress & mac() const
virtual KSyncEntry * Alloc(const KSyncEntry *entry, uint32_t index)
int Encode(sandesh_op::type op, char *buf, int buf_len)
Ip4Address loopback_ip() const
Ip4Address ip_addr() const
const MacAddress & mac() const
const NextHop * flow_key_nh() const
bool learning_enabled() const
uint8_t vhostuser_mode() const
virtual KSyncEntry * DBToKSyncEntry(const DBEntry *e)
std::string ToString() const
virtual ~InterfaceKSyncObject()
bool server_gateway_mode() const
uint16_t tx_vlan_id() const
std::vector< uint64_t > fat_flow_v6_exclude_upper_list_
bool flood_unknown_unicast_
const MacAddress & smac() const
static const uint8_t kInvalidIndex
bool metadata_l2_active() const
VrfEntry * FindVrfFromId(size_t index)
std::vector< KSyncEntryPtr > xconnect_list_
bool dhcp_enabled_v6() const
static const uint32_t kInvalidVlanId
bool flood_unknown_unicast() const
MirrorKSyncObject * mirror_ksync_obj() const
const std::string GetAnalyzer() const
KSyncEntryPtr qos_config_
InterfaceKSyncObject * ksync_obj_
bool metadata_ip_active() const
boost::intrusive_ptr< KSyncEntry > KSyncEntryPtr
VmInterface::FatFlowExcludeList fat_flow_exclude_list_
AllowedAddressPairSet list_
const MacAddress & pbb_mac() const
class boost::shared_ptr< AgentKsyncSandesh > AgentKsyncSandeshPtr
bool layer3_forwarding() const
void set_test_mode(bool test_mode)
bool dhcp_enabled() const
uint32_t GetPbbVrf() const
bool policy_enabled() const
void Ip6AddressToU64Array(const Ip6Address &addr, uint64_t *arr, int size)
Interface::MirrorDirection mirror_direction() const
virtual std::string ToString() const
AgentParam * params() const
const uint32_t vrf_id() const
KSyncEntry * GetReference(const KSyncEntry *key)
std::string display_name_
PhysicalInterface::SubType subtype_
uint32_t multicast_vrf_id_
virtual ~InterfaceKSyncEntry()
EncapType encap_type() const
VmInterface::HbsIntfType hbs_intf_type_
virtual int DeleteMsg(char *buf, int buf_len)
const FatFlowList & fat_flow_list() const
VrfTable * vrf_table() const
InterfaceKSyncEntry(InterfaceKSyncObject *obj, const InterfaceKSyncEntry *entry, uint32_t index)
const Ip4Address & primary_ip_addr() const
virtual bool Sync(DBEntry *e)
std::vector< uint64_t > fat_flow_v6_exclude_lower_list_
PhysicalInterface::EncapType encap_type() const
VmInterface::VmiType vmi_type() const
DBFilterResp DBEntryFilter(const DBEntry *e, const KSyncDBEntry *k)
static const uint32_t kInvalidIndex
const Ip6Address & primary_ip6_addr() const
virtual int ChangeMsg(char *buf, int buf_len)
bool igmp_enabled() const
static const uint32_t kInvalidIndex
bool IsValidOsIndex(size_t os_index, Interface::Type type, uint16_t vlan_id, VmInterface::VmiType vmi_type, Interface::Transport transport)
std::set< MacAddress > aap_mac_list_
Interface::MirrorDirection mirror_direction_
const Ip4Address & ip_addr() const
const string & GetName() const
VrfEntry * forwarding_vrf() const
bool isVmwareVcenterMode() const
VmInterface::VmiType vmi_type_
boost::uuids::uuid IfGuid
bool mac_ip_learning_enable() const
uint32_t GetIdx(std::string analyzer_name)
void SetKsyncItfSandeshData(KSyncItfSandeshData *data) const
const std::string & display_name() const
boost::optional< InterfaceOsParams::IfGuid > os_guid() const
uint32_t interface_id() const
InterfaceList parent_list() const
const Interface * parent() const
const AllowedAddressPairList & allowed_address_pair_list() const
void FillObjectLog(sandesh_op::type op, KSyncIntfInfo &info) const
virtual int AddMsg(char *buf, int buf_len)
bool is_hc_active() const
virtual int VrResponseMsgHandler(vr_response *resp)=0
bool drop_new_flows() const
Interface::Transport transport_