12 : agent_(agent), interface_tree_(), interface_tree_mutex_(),
14 timer_last_visited_(
""),
16 (*(agent->event_manager())->io_service(),
37 string cfg_name = it->first;
39 InterfaceMap::iterator prev = it;
103 const VmEntry *vm = intf_->vm();
104 const string &vm_name = GetVmName();
105 if (!vm_name.empty()) {
106 uve->set_vm_name(vm_name);
108 if (intf_->vn() != NULL) {
109 uve->set_virtual_network(intf_->vn()->GetName());
110 uve->set_vn_uuid(to_string(intf_->vn()->GetUuid()));
112 uve->set_virtual_network(
"");
115 uve->set_vm_uuid(to_string(vm->
GetUuid()));
117 uve->set_vm_uuid(
"");
123 const VmEntry *vm = intf_->vm();
124 const string &vm_name = GetVmName();
125 if (!vm_name.empty()) {
126 uve->set_vm_name(vm_name);
128 if (intf_->vn() != NULL) {
129 uve->set_virtual_network(intf_->vn()->GetName());
131 uve->set_virtual_network(
"");
134 uve->set_vm_uuid(to_string(vm->
GetUuid()));
136 uve->set_vm_uuid(
"");
141 UveVMInterfaceAgent *s_intf)
const {
142 s_intf->set_name(name);
144 s_intf->set_ip_address(intf_->primary_ip_addr().to_string());
145 s_intf->set_mac_address(intf_->vm_mac().ToString());
146 s_intf->set_ip6_address(intf_->primary_ip6_addr().to_string());
147 s_intf->set_ip6_active(intf_->ipv6_active());
148 s_intf->set_is_health_check_active(intf_->is_hc_active());
149 s_intf->set_tx_vlan(intf_->tx_vlan_id());
150 s_intf->set_rx_vlan(intf_->rx_vlan_id());
151 s_intf->set_vhostuser_mode(intf_->vhostuser_mode());
152 if (intf_->GetAnalyzer().empty()) {
153 s_intf->set_port_mirror_enabled(
false);
155 s_intf->set_port_mirror_enabled(
true);
157 const Interface *parent = intf_->parent();
161 s_intf->set_parent_interface(p_vmi->
cfg_name());
163 s_intf->set_parent_interface(parent->
name());
167 vector<VmFloatingIPAgent> uve_fip_list;
170 intf_->floating_ip_list();
171 VmInterface::FloatingIpSet::const_iterator it =
172 fip_list.
list_.begin();
173 while(it != fip_list.
list_.end()) {
181 VmFloatingIPAgent uve_fip;
183 uve_fip.set_virtual_network(ip.
vn_.get()->GetName());
184 uve_fip_list.push_back(uve_fip);
189 s_intf->set_floating_ips(uve_fip_list);
191 vector<VmHealthCheckInstance> uve_hc_list;
193 intf_->hc_instance_set();
194 VmInterface::HealthCheckInstanceSet::const_iterator hc_it =
196 while (hc_it != hc_list.end()) {
203 VmHealthCheckInstance uve_inst;
204 uve_inst.set_name(svc->
name());
205 uve_inst.set_uuid(to_string(svc->
uuid()));
206 uve_inst.set_status(inst->
active() ?
"Active" :
"InActive");
207 uve_inst.set_is_running(inst->
IsRunning());
208 uve_hc_list.push_back(uve_inst);
210 s_intf->set_health_check_instance_list(uve_hc_list);
212 s_intf->set_label(intf_->label());
213 s_intf->set_ip4_active(intf_->ipv4_active());
214 s_intf->set_l2_active(intf_->l2_active());
215 s_intf->set_active(intf_->IsUveActive());
216 s_intf->set_admin_state(intf_->admin_state());
218 s_intf->set_uuid(to_string(intf_->vmi_cfg_uuid()));
220 if (GetVmInterfaceGateway(intf_, gw)) {
221 s_intf->set_gateway(gw);
224 std::vector<std::string> fixed_ip4_list;
226 s_intf->set_fixed_ip4_list(fixed_ip4_list);
228 std::vector<std::string> fixed_ip6_list;
230 s_intf->set_fixed_ip6_list(fixed_ip6_list);
232 s_intf->set_hbf_intf_type(
"left");
234 s_intf->set_hbf_intf_type(
"right");
236 s_intf->set_hbf_intf_type(
"mgmt");
243 port_bitmap_.Reset();
244 prev_fip_tree_.clear();
247 security_policy_stats_map_.clear();
249 ace_stats_changed_ =
false;
258 if (local_tagset_.size() != 0) {
260 intf_->CopyTagIdList(&new_tag_list);
261 if (local_tagset_ != new_tag_list) {
264 local_tagset_.clear();
270 (uint8_t proto, uint16_t sport, uint16_t dport) {
271 tbb::mutex::scoped_lock lock(mutex_);
274 if (deleted_ && !renewed_) {
277 port_bitmap_.AddPort(proto, sport, dport);
281 (
const vector<VmFloatingIPStats> &list)
const {
282 if (list != uve_stats_.get_fip_agg_stats()) {
294 const vector<VnIpam> &list = vn->
GetVnIpam();
297 for (i = 0; i < list.size(); i++) {
298 if (list[i].IsSubnetMember(vm_addr))
301 if (i == list.size()) {
304 gw = list[i].default_gw.to_string();
309 UveVMInterfaceAgent uve;
310 uve.set_name(config_name);
311 uve.set_deleted(
true);
315 tags_uve.set_name(config_name);
316 tags_uve.set_deleted(
true);
320 s_uve.set_name(config_name);
321 s_uve.set_deleted(
true);
326 (
Agent *agent,
const string &name, VMITags *obj) {
327 bool changed =
false;
331 intf_->CopyTagIdList(&new_tag_list);
334 if ((!prev_tags_uve_.__isset.app) ||
335 (prev_tags_uve_.__isset.app && (prev_tags_uve_.get_app() !=
341 if ((!prev_tags_uve_.__isset.tier) ||
342 (prev_tags_uve_.__isset.tier && (prev_tags_uve_.get_tier() !=
344 obj->set_tier(tinfo.
tier);
345 prev_tags_uve_.set_tier(tinfo.
tier);
348 if ((!prev_tags_uve_.__isset.site) ||
349 (prev_tags_uve_.__isset.site && (prev_tags_uve_.get_site() !=
351 obj->set_site(tinfo.
site);
352 prev_tags_uve_.set_site(tinfo.
site);
355 if ((!prev_tags_uve_.__isset.deployment) ||
356 (prev_tags_uve_.__isset.deployment &&
357 (prev_tags_uve_.get_deployment() != tinfo.
deployment))) {
359 prev_tags_uve_.set_deployment(tinfo.
deployment);
362 if ((!prev_tags_uve_.__isset.labels) ||
363 (prev_tags_uve_.__isset.labels && (prev_tags_uve_.get_labels() !=
369 if ((!prev_tags_uve_.__isset.custom_tags) ||
370 (prev_tags_uve_.__isset.custom_tags &&
386 UveVMInterfaceAgentTrace::Send(uve);
390 UVEVMIStats::Send(uve);
394 UVEVMITags::Send(uve);
398 ENDPOINT_SECURITY_STATS_SEND_SANDESH(obj);
403 UveVMInterfaceAgent uve;
416 pair<InterfaceMap::iterator, bool> ret;
418 InterfaceMap::iterator it = ret.first;
431 VmInterface::FloatingIpSet::const_iterator old_it = old_list.begin();
432 while (old_it != old_list.end()) {
441 VmInterface::FloatingIpSet::const_iterator new_it = new_list.find(fip);
442 if (new_it == new_list.end()) {
447 VmInterface::FloatingIpSet::const_iterator fip_it = new_list.begin();
448 while (fip_it != new_list.end()) {
467 tbb::mutex::scoped_lock lock(entry->
mutex_);
488 if (vm_port == NULL) {
503 if (!state && vm_port->
cfg_name().empty()) {
546 (
const PortBucketBitmap &bmap)
const {
547 if (!uve_stats_.__isset.port_bucket_bmap) {
550 if (bmap != uve_stats_.get_port_bucket_bmap()) {
558 if (!uve_stats_.__isset.in_bw_usage) {
561 if (in_band != uve_stats_.get_in_bw_usage()) {
569 if (!uve_stats_.__isset.out_bw_usage) {
572 if (out_band != uve_stats_.get_out_bw_usage()) {
580 tbb::mutex::scoped_lock lock(mutex_);
583 if (deleted_ && !renewed_) {
595 (uint32_t ip,
const string &vn) {
598 FloatingIpSet::iterator fip_it = fip_tree_.find(key);
599 if (fip_it == fip_tree_.end()) {
602 return (*fip_it).get();
609 out_bytes_ += fip_info.
bytes_;
621 in_bytes_ += fip_info.
bytes_;
634 in_bytes_ += fip_info.
bytes_;
637 out_bytes_ += fip_info.
bytes_;
645 (vector<VmFloatingIPStats> &result,
646 vector<VmFloatingIPStats> &diff_list,
647 bool &diff_list_send) {
652 VmInterface::FloatingIpSet::const_iterator it =
653 fip_list.
list_.begin();
654 while(it != fip_list.
list_.end()) {
661 VmFloatingIPStats uve_fip;
662 VmFloatingIPStats diff_uve;
664 uve_fip.set_virtual_network(ip.
vn_.get()->GetName());
667 diff_uve.set_virtual_network(ip.
vn_.get()->GetName());
670 ip.
vn_.get()->GetName()));
671 FloatingIpSet::iterator fip_it = fip_tree_.find(key);
672 if (fip_it == fip_tree_.end()) {
673 SetStats(uve_fip, 0, 0, 0, 0);
674 SetDiffStats(diff_uve, 0, 0, 0, 0, diff_list_send);
679 FloatingIpSet::iterator prev_it = prev_fip_tree_.find(key);
680 if (prev_it == prev_fip_tree_.end()) {
685 ip.
vn_.get()->GetName(),
690 prev_fip_tree_.insert(prev_fip_ptr);
705 result.push_back(uve_fip);
706 diff_list.push_back(diff_uve);
715 (VmFloatingIPStats &fip, uint64_t in_bytes, uint64_t in_pkts,
716 uint64_t out_bytes, uint64_t out_pkts,
bool &diff_list_send)
const {
717 fip.set_in_bytes(in_bytes);
718 fip.set_in_pkts(in_pkts);
719 fip.set_out_bytes(out_bytes);
720 fip.set_out_pkts(out_pkts);
721 if ((in_bytes != 0) || (in_pkts != 0) || (out_bytes != 0) ||
723 diff_list_send =
true;
728 (VmFloatingIPStats &fip, uint64_t in_bytes, uint64_t in_pkts,
729 uint64_t out_bytes, uint64_t out_pkts)
const {
730 fip.set_in_bytes(in_bytes);
731 fip.set_in_pkts(in_pkts);
732 fip.set_out_bytes(out_bytes);
733 fip.set_out_pkts(out_pkts);
739 fip.
vn_.get()->GetName()));
740 FloatingIpSet::iterator it = fip_tree_.find(key);
741 if (it != fip_tree_.end()) {
744 fip_tree_.insert(key);
750 FloatingIpSet::iterator it = fip_tree_.find(key);
751 if (it != fip_tree_.end()) {
754 FloatingIpSet::iterator prev_it = prev_fip_tree_.find(key);
755 if (prev_it != prev_fip_tree_.end()) {
756 prev_fip_tree_.erase(prev_it);
761 (
const std::string &ace_uuid) {
763 ace_stats_changed_ =
true;
764 AceStatsSet::const_iterator it = ace_set_.find(key);
765 if (it != ace_set_.end()) {
770 ace_set_.insert(key);
787 ace_stats_changed_ =
true;
788 tbb::mutex::scoped_lock lock(mutex_);
795 SecurityPolicyStatsMap::iterator it = security_policy_stats_map_.
802 if (it != security_policy_stats_map_.end()) {
806 SecurityPolicyStatsSet::iterator ep_it = remote_ep_list.find(ep_key);
807 if (ep_it != remote_ep_list.end()) {
809 UpdateCounters(info, entry.get());
818 UpdateCounters(info, ep_key.get());
819 remote_ep_list.insert(ep_key);
822 UpdateCounters(info, ep_key.get());
825 remote_ep_list.insert(ep_key);
832 (
const std::string &name, VMIStats *s_intf) {
833 if (!ace_stats_changed_) {
836 std::vector<SgAclRuleStats> list;
837 AceStatsSet::iterator it = ace_set_.begin();
838 bool changed =
false;
840 while (it != ace_set_.end()) {
841 uint64_t diff_count = it->count - it->prev_count;
844 it->prev_count = it->count;
846 item.set_rule(it->ace_uuid);
847 item.set_count(diff_count);
848 list.push_back(item);
856 s_intf->set_name(name);
857 SetVMIStatsVnVm(s_intf);
858 s_intf->set_sg_rule_stats(list);
859 ace_stats_changed_ =
false;
867 tbb::mutex::scoped_lock lock(mutex_);
873 SecurityPolicyStatsMap::iterator it =
874 security_policy_stats_map_.find(info.
policy);
875 if (it == security_policy_stats_map_.end()) {
876 UpdateSecurityPolicyStatsInternal(info, stats.get());
879 stats_set.insert(stats);
885 std::pair<SecurityPolicyStatsSet::iterator,bool> ret =
886 stats_set.insert(stats);
889 UpdateSecurityPolicyStatsInternal(info, entry.get());
907 (
Agent *agent, EndpointSecurityStats *obj) {
908 std::map<std::string, EndpointStats> eps;
910 obj->set_name(intf_->cfg_name());
911 SecurityPolicyStatsMap::const_iterator it =
912 security_policy_stats_map_.begin();
913 while (it != security_policy_stats_map_.end()) {
914 std::vector<SecurityPolicyFlowStats> traffic_list;
917 value.set_workload(GetVmName());
918 FillSecurityPolicyList(agent, cont.
client_list, &value.client);
919 FillSecurityPolicyList(agent, cont.
server_list, &value.server);
920 eps.insert(make_pair(it->first, value));
928 std::vector<SecurityPolicyFlowStats> *olist) {
930 SecurityPolicyStatsSet::const_iterator sit = ilist.begin();
931 while (sit != ilist.end()) {
932 SecurityPolicyFlowStats item;
937 item.set_tier(tinfo.
tier);
938 item.set_site(tinfo.
site);
940 item.set_labels(tinfo.
labels);
945 item.set_remote_tier_id(tinfo.
tier);
946 item.set_remote_site_id(tinfo.
site);
947 item.set_remote_deployment_id(tinfo.
deployment);
948 item.set_remote_label_ids(tinfo.
labels);
951 item.set_remote_vn(entry->remote_vn);
952 item.set_local_vn(entry->local_vn);
953 item.set_action(entry->action);
954 item.set_added(entry->added - entry->prev_added);
955 item.set_deleted(entry->deleted - entry->prev_deleted);
956 item.set_active(entry->active);
957 item.set_in_bytes(entry->in_bytes - entry->prev_in_bytes);
958 item.set_in_pkts(entry->in_pkts - entry->prev_in_pkts);
959 item.set_out_bytes(entry->out_bytes - entry->prev_out_bytes);
960 item.set_out_pkts(entry->out_pkts - entry->prev_out_pkts);
961 olist->push_back(item);
963 entry->prev_in_bytes = entry->in_bytes;
964 entry->prev_in_pkts = entry->in_pkts;
965 entry->prev_out_bytes = entry->out_bytes;
966 entry->prev_out_pkts = entry->out_pkts;
967 entry->prev_added = entry->added;
968 entry->prev_deleted = entry->deleted;
977 vector<string> rule_list;
978 SecurityPolicyStatsMap::const_iterator it =
979 security_policy_stats_map_.begin();
980 while (it != security_policy_stats_map_.end()) {
981 rule_list.push_back(it->first);
984 obj->set_policy_rules(rule_list);
988 (
const TagList &list, vector<SandeshUveTagInfo> *rts)
const {
989 TagList::const_iterator it = list.begin();
990 while (it != list.end()) {
991 SandeshUveTagInfo tag_entry;
994 tag_entry.set_id(*it);
997 rts->push_back(tag_entry);
1004 vector<SandeshUveRemoteEndpoint> *olist)
const {
1005 SecurityPolicyStatsSet::const_iterator sit = ilist.begin();
1006 while (sit != ilist.end()) {
1007 SandeshUveRemoteEndpoint rep;
1011 rep.set_remote_vn(entry->remote_vn);
1012 rep.set_local_vn(entry->local_vn);
1013 rep.set_remote_prefix(entry->remote_prefix);
1015 vector<SandeshUveTagInfo> lts;
1016 BuildSandeshUveTagList(entry->local_tagset, <s);
1017 rep.set_local_tagset(lts);
1018 vector<SandeshUveTagInfo> rts;
1019 BuildSandeshUveTagList(entry->remote_tagset, &rts);
1020 rep.set_remote_tagset(rts);
1021 rep.set_added(entry->added);
1022 rep.set_deleted(entry->deleted);
1023 rep.set_active(entry->active);
1024 rep.set_dropped_short(entry->dropped_short);
1025 rep.set_in_bytes(entry->in_bytes);
1026 rep.set_in_pkts(entry->in_pkts);
1027 rep.set_out_bytes(entry->out_bytes);
1028 rep.set_out_pkts(entry->out_pkts);
1029 rep.set_prev_in_bytes(entry->prev_in_bytes);
1030 rep.set_prev_in_pkts(entry->prev_in_pkts);
1031 rep.set_prev_out_bytes(entry->prev_out_bytes);
1032 rep.set_prev_out_pkts(entry->prev_out_pkts);
1033 rep.set_action(entry->action);
1035 olist->push_back(rep);
1040 (InterfaceUveInfo *r)
const {
1041 r->set_name(intf_->cfg_name());
1043 vector<SandeshUveTagInfo> lts;
1044 BuildSandeshUveTagList(local_tagset_, <s);
1045 r->set_local_tagset(lts);
1047 vector<SandeshUvePolicyInfo> policy_list;
1048 SecurityPolicyStatsMap::const_iterator it =
1049 security_policy_stats_map_.begin();
1050 while (it != security_policy_stats_map_.end()) {
1051 SandeshUvePolicyInfo item;
1052 item.set_name(it->first);
1054 BuildInterfaceUveSecurityPolicyList(cont.
client_list,
1056 BuildInterfaceUveSecurityPolicyList(cont.
server_list,
1058 policy_list.push_back(item);
1061 r->set_policy_list(policy_list);
void SetStats(VmFloatingIPStats &fip, uint64_t in_bytes, uint64_t in_pkts, uint64_t out_bytes, uint64_t out_pkts) const
bool FrameTagsUveMsg(Agent *agent, const std::string &name, VMITags *uve)
std::vector< string > label_vector
void UpdatePortBitmap(uint8_t proto, uint16_t sport, uint16_t dport)
void UpdateInterfaceAceStats(const std::string &ace_uuid)
std::pair< std::string, EndpointStatsContainer > SecurityPolicyStatsPair
uint32_t incremental_interval() const
void SetVMIStatsVnVm(VMIStats *uve) const
const string & GetCfgName() const
The TaskScheduler keeps track of what tasks are currently schedulable. When a task is enqueued it is ...
const VmInterface * intf_
void set_expiry_time(int time)
DBState * GetState(DBTableBase *tbl_base, ListenerId listener) const
uint32_t default_interval() const
InterfaceMap interface_tree_
bool FipAggStatsChanged(const vector< VmFloatingIPStats > &list) const
HealthCheckService * service() const
static const std::string & GetTypeStr(uint32_t tag_type)
virtual ~InterfaceUveTable()
const std::string & TagName(uint32_t id)
SecurityPolicyStatsSet client_list
void UpdateSecurityPolicyStats(const EndpointStatsInfo &info)
AgentUveBase * uve() const
void SetState(DBTableBase *tbl_base, ListenerId listener, DBState *state)
DBTableBase::ListenerId intf_listener_id_
virtual bool IsRunning() const
static const uint32_t kUveCountPerTimer
void FillTagSetAndPolicyList(VMIStats *obj)
InterfaceTable * interface_table() const
void BuildTagIdsFromList(const TagList &tl, UveTagData *info) const
void DispatchVMITagsMsg(const VMITags &uve) const
tbb::mutex interface_tree_mutex_
void InterfaceAddHandler(const VmInterface *intf, const VmInterface::FloatingIpSet &old_list)
virtual void DispatchInterfaceObjectLog(EndpointSecurityStats *obj)
const boost::uuids::uuid & GetUuid() const
VmInterface::FloatingIpSet fip_list_
void BuildTagNamesFromList(const TagList &tl, UveTagData *info) const
TagTable * tag_table() const
void Unregister(ListenerId listener)
std::set< UveSecurityPolicyStatsPtr, PolicyCmp > SecurityPolicyStatsSet
InterfaceUveTable(Agent *agent, uint32_t default_intvl)
ListenerId Register(ChangeCallback callback, const std::string &name="unspecified")
void UpdateInterfaceFwPolicyStats(const FlowUveFwPolicyInfo &info)
void RemoveFloatingIp(const VmInterface::FloatingIp &fip)
SecurityPolicyStatsSet server_list
boost::shared_ptr< FloatingIp > FloatingIpPtr
void UpdateFloatingIpStats(const FipInfo &fip_info)
virtual void DispatchInterfaceMsg(const UveVMInterfaceAgent &uve)
virtual UveInterfaceEntryPtr Allocate(const VmInterface *vm)
void HandleVmiTagListChange(const std::string &name)
bool OutBandChanged(uint64_t out_band) const
bool InBandChanged(uint64_t in_band) const
void UpdateSecurityPolicyStatsInternal(const EndpointStatsInfo &info, UveSecurityPolicyStats *stats)
void SetDiffStats(VmFloatingIPStats &fip, uint64_t in_bytes, uint64_t in_pkts, uint64_t out_bytes, uint64_t out_pkts, bool &diff_list_send) const
std::pair< std::string, UveInterfaceEntryPtr > InterfacePair
void InterfaceNotify(DBTablePartBase *partition, DBEntryBase *e)
bool GetVmInterfaceGateway(const VmInterface *vm_intf, std::string &gw) const
std::set< HealthCheckInstanceBase * > HealthCheckInstanceSet
std::string remote_prefix
const std::vector< VnIpam > & GetVnIpam() const
const VnEntry * vn() const
SecurityPolicyStatsSet & ToList(bool client)
void UpdateCounters(const FlowUveFwPolicyInfo &info, UveSecurityPolicyStats *obj)
void AddFloatingIp(const VmInterface::FloatingIp &fip)
bool PortBitmapChanged(const PortBucketBitmap &bmap) const
bool FillFloatingIpStats(vector< VmFloatingIPStats > &result, vector< VmFloatingIPStats > &diff_list, bool &diff_list_send)
void FillEndpointStats(Agent *agent, EndpointSecurityStats *obj)
void SendInterfaceDeleteMsg(const std::string &config_name)
void FillSecurityPolicyList(Agent *agent, const SecurityPolicyStatsSet &ilist, std::vector< SecurityPolicyFlowStats > *ol)
std::vector< string > custom_tag_vector
void ClearState(DBTableBase *tbl_base, ListenerId listener)
virtual void DispatchVMIStatsMsg(const VMIStats &uve)
boost::asio::ip::address_v4 Ip4Address
void SetVnVmInfo(UveVMInterfaceAgent *uve) const
const Ip4Address & primary_ip_addr() const
const boost::uuids::uuid & uuid() const
const FloatingIpList & floating_ip_list() const
InterfaceUveTable::FloatingIp * FipEntry(uint32_t ip, const std::string &vn)
std::string timer_last_visited_
bool FrameInterfaceAceStatsMsg(const std::string &name, VMIStats *s_intf)
std::string remote_prefix_
const std::string & vm_name() const
void UpdateFloatingIpStats(const FipInfo &fip_info)
const std::string & name() const
void BuildSandeshUveTagList(const TagList &list, std::vector< SandeshUveTagInfo > *rts) const
void HandleTagListChange()
bool Start(int time, Handler handler, ErrorHandler error_handler=NULL)
const std::string & cfg_name() const
static const int kInvalidId
std::set< FloatingIp, FloatingIp > FloatingIpSet
void SendInterfaceMsg(const std::string &name, UveInterfaceEntry *entry)
boost::shared_ptr< UveInterfaceEntry > UveInterfaceEntryPtr
static const uint32_t kTagTypeBitShift
const std::string & name() const
void BuildInterfaceUveInfo(InterfaceUveInfo *r) const
void InterfaceDeleteHandler(const std::string &name)
boost::shared_ptr< UveSecurityPolicyStats > UveSecurityPolicyStatsPtr
bool Reschedule(int time)
virtual void SendInterfaceAceStats(const string &name, UveInterfaceEntry *entry)
void BuildInterfaceUveSecurityPolicyList(const SecurityPolicyStatsSet &ilist, std::vector< SandeshUveRemoteEndpoint > *olist) const
bool HasFloatingIp(Address::Family family) const
std::string GetVmName() const
bool FrameInterfaceMsg(const std::string &name, UveVMInterfaceAgent *s_intf) const
const VmEntry * vm() const
static bool DeleteTimer(Timer *Timer)
std::vector< int > TagList