12 #include <sandesh/sandesh_types.h>
13 #include <sandesh/common/vns_types.h>
14 #include <vnc_cfg_types.h>
16 #include <boost/bind.hpp>
75 for (
unsigned int i = 0; i <
subnets_.size(); i++) {
101 "virtual-network-network-ipam",
"network-ipam");
102 if (ipam_node == NULL) {
104 "> does not have Ipam link");
119 autogen::VirtualNetworkNetworkIpam *vnni =
120 static_cast<autogen::VirtualNetworkNetworkIpam *
> (node->
GetObject());
124 const autogen::VnSubnetsType &subnets_type = vnni->data();
125 for (
unsigned int i = 0; i < subnets_type.ipam_subnets.size(); ++i) {
126 Subnet subnet(subnets_type.ipam_subnets[i].subnet.ip_prefix,
127 subnets_type.ipam_subnets[i].subnet.ip_prefix_len);
128 subnets.push_back(subnet);
130 std::sort(subnets.begin(), subnets.end());
136 Subnets::iterator it_old = old_nets.begin();
137 Subnets::iterator it_new = new_nets.begin();
138 while (it_old != old_nets.end() && it_new != new_nets.end()) {
139 if (*it_old < *it_new) {
141 it_old->MarkDelete();
145 }
else if (*it_new < *it_old) {
158 for (; it_old != old_nets.end(); ++it_old) {
159 it_old->MarkDelete();
165 for (; it_new != new_nets.end(); ++it_new) {
185 :
DnsConfig(node->name()), virtual_dns_(NULL) {
191 for (VnniList::iterator it =
vnni_list_.begin();
213 autogen::IpamType new_rec;
245 for (IpamConfig::VnniList::iterator it =
vnni_list_.begin();
247 Subnets &subnets = (*it)->GetSubnets();
248 for (
unsigned int i = 0; i < subnets.size(); i++) {
258 autogen::NetworkIpam *ipam =
259 static_cast<autogen::NetworkIpam *
>(node->
GetObject());
301 rec_.external_visible =
false;
302 rec_.reverse_resolution =
false;
331 for (VirtualDnsConfig::IpamList::iterator iter =
ipams_.begin();
332 iter !=
ipams_.end(); ++iter) {
333 (*iter)->virtual_dns_ = NULL;
335 for (VirtualDnsConfig::VDnsRec::iterator it =
338 (*it)->virt_dns_ = NULL;
339 (*it)->ClearNotified();
373 autogen::VirtualDnsType &data) {
377 autogen::VirtualDns *dns =
378 static_cast<autogen::VirtualDns *
>(node->
GetObject());
388 for (IpamList::iterator ipam_iter =
ipams_.begin();
389 ipam_iter !=
ipams_.end(); ++ipam_iter) {
392 for (IpamConfig::VnniList::iterator vnni_it = vnni.begin();
393 vnni_it != vnni.end(); ++vnni_it) {
394 Subnets &subnets = (*vnni_it)->GetSubnets();
395 for (
unsigned int i = 0; i < subnets.size(); i++) {
396 if (subnets[i].Contains(addr)) {
422 rec_.dynamic_records_from_client ==
old_rec_.dynamic_records_from_client &&
424 rec_.default_ttl_seconds ==
old_rec_.default_ttl_seconds &&
427 rec_.reverse_resolution ==
old_rec_.reverse_resolution &&
428 rec_.soa_record.negative_cache_ttl_seconds ==
old_rec_.soa_record.negative_cache_ttl_seconds)
435 rec.dns_name =
rec_.domain_name;
436 rec.dns_dyn_rec =
rec_.dynamic_records_from_client;
437 rec.dns_order =
rec_.record_order;
438 rec.dns_ttl =
rec_.default_ttl_seconds;
439 rec.dns_next =
rec_.next_virtual_DNS;
440 rec.installed = (
IsNotified() ?
"true" :
"false");
441 rec.floating_ip_record =
rec_.floating_ip_record;
442 rec.external_visible = (
rec_.external_visible ?
"yes" :
"no");
443 rec.reverse_resolution = (
rec_.reverse_resolution ?
"yes" :
"no");
445 rec.negative_cache_ttl_seconds =
rec_.soa_record.negative_cache_ttl_seconds;
449 VirtualDnsTraceData rec;
461 std::string name(
rec_.next_virtual_DNS);
467 return rec_.dynamic_records_from_client;
489 const std::string &vdns_name,
491 :
DnsConfig(name), rec_(item), virt_dns_(NULL),
570 "virtual-DNS-virtual-DNS-record");
571 if (vdns_node == NULL) {
573 "> does not have virtual DNS link");
600 DNS_CONFIGURATION_LOG(
601 g_vns_constants.CategoryNames.find(Category::DNSAGENT)->second,
602 SandeshLevel::SYS_ERR,
"Invalid PTR Name",
629 autogen::VirtualDnsType data;
630 data.dynamic_records_from_client =
false;
631 data.default_ttl_seconds = 0;
632 data.soa_record.negative_cache_ttl_seconds = 0;
649 autogen::VirtualDnsRecord *rec =
650 static_cast<autogen::VirtualDnsRecord *
>(node->
GetObject());
654 autogen::VirtualDnsRecordType rec_data = rec->data();
657 item.
name = rec_data.record_name;
658 item.
data = rec_data.record_data;
659 item.
ttl = rec_data.record_ttl_seconds;
660 item.
priority = rec_data.record_mx_preference;
670 rec.rec_class =
"IN";
674 rec.source =
"Config";
676 rec.source =
"Agent";
678 rec.installed =
"true";
680 rec.installed =
"false";
686 VirtualDnsRecordTraceData rec;
688 std::string dns_name;
708 if (!it->second || it->second->GetVirtualDns())
continue;
709 if (it->second->virtual_dns_name_ == vdns->
GetName()) {
710 it->second->virt_dns_ = vdns;
739 autogen::GlobalQosConfig *qos =
740 static_cast<autogen::GlobalQosConfig *
>(node->
GetObject());
743 const autogen::ControlTrafficDscpType &dscp = qos->control_traffic_dscp();
std::pair< std::string, VirtualDnsRecordConfig * > DataPair
void VirtualDnsTrace(VirtualDnsTraceData &rec)
static DataMap virt_dns_rec_config_
static void AssociateIpamVdns(VirtualDnsConfig *vdns)
static ZoneCallback VdnsZoneCallback
void Trace(const std::string &ev)
void OnChange(IFMapNode *node)
void OnChange(IFMapNode *node)
void OnChange(IFMapNode *node)
static VirtualDnsRecordConfig * Find(std::string name)
IpamConfig(IFMapNode *node)
void DelRecord(VirtualDnsRecordConfig *record)
bool GetObject(IFMapNode *node, autogen::VirtualDnsType &data)
void OnChange(IFMapNode *node)
GlobalQosConfig(IFMapNode *node)
boost::asio::ip::address IpAddress
VirtualDnsConfig * virtual_dns_
static Callback VdnsCallback
std::string GetViewName() const
VDnsRec virtual_dns_records_
VirtualDnsConfig * virt_dns_
void ClearNotified() const
bool UpdateVdns(IFMapNode *node)
static const std::string EventString[]
VirtualDnsConfig * GetVirtualDns()
static void SetDscpValue(uint8_t value)
boost::function< void(const DnsConfig *, DnsConfig::DnsConfigEvent)> Callback
static VnniConfig * Find(std::string name)
void SetDscpValue(uint8_t value)
IFMapNode * FindTarget(IFMapNode *node, std::string link_name)
static GlobalQosConfig * Find(const std::string &name)
static DataMap vnni_config_
std::set< VnniConfig * > VnniList
const std::string & GetName() const
bool IsReverseResolutionEnabled() const
std::pair< std::string, VnniConfig * > DataPair
void OnAdd(IFMapNode *node=NULL)
static GlobalQosConfig * singleton_
void Add(VirtualDnsConfig *vdns)
std::map< std::string, IpamConfig * > DataMap
static void RemoveSpecialChars(std::string &name)
bool DynamicUpdatesEnabled() const
static VirtualDnsConfig * Find(std::string name)
static DataMap virt_dns_config_
static void UpdateVirtualDns(VirtualDnsConfig *vdns)
bool IsErrorLogged() const
void VirtualDnsRecordTrace(VirtualDnsRecordTraceData &rec)
VnniConfig(IFMapNode *node)
static DataMap ipam_config_
void AddVnni(VnniConfig *vnni)
static IpamConfig * Find(std::string name)
std::vector< Subnet > Subnets
void OnChange(IFMapNode *node)
std::string GetDomainName() const
static bool IsIP(const std::string &name, IpAddress &addr)
#define DNS_TRACE(Obj,...)
static Callback VdnsRecordCallback
autogen::VirtualDnsType GetVDns() const
void DelIpam(IpamConfig *ipam)
std::pair< std::string, IpamConfig * > DataPair
void OnAdd(IFMapNode *node)
static DnsConfigManager * GetDnsConfigManager()
~VirtualDnsRecordConfig()
void AddIpam(IpamConfig *ipam)
const std::string & name() const
bool GetObject(IFMapNode *node, autogen::IpamType &data)
static uint16_t DnsClass(const std::string &cl)
const VnniList & GetVnniList() const
std::string GetViewName() const
std::string virtual_dns_name_
bool HasChanged(DnsItem &rhs)
void AddRecord(VirtualDnsRecordConfig *record)
IFMapObject * GetObject()
std::map< std::string, VirtualDnsRecordConfig * > DataMap
bool GetSubnet(const IpAddress &addr, Subnet &subnet) const
void FindSubnets(IFMapNode *node, Subnets &subnets)
autogen::VirtualDnsType rec_
static bool GetAddrFromPtrName(std::string &ptr_name, IpAddress &mask)
bool NotifySubnets(Subnets &old_nets, Subnets &new_nets, VirtualDnsConfig *vdns)
bool GetObject(IFMapNode *node, DnsItem &item)
std::pair< std::string, VirtualDnsConfig * > DataPair
void Trace(const std::string &ev)
void Trace(const std::string &ev)
void OnAdd(IFMapNode *node)
std::map< std::string, VirtualDnsConfig * > DataMap
std::string GetNextDns() const
VirtualDnsConfig(IFMapNode *node)
void DelVnni(VnniConfig *vnni)
void Notify(DnsConfig::DnsConfigEvent ev)
std::map< std::string, VnniConfig * > DataMap
void UpdateIpam(IFMapNode *node)
autogen::VirtualDnsType GetVDns() const
static uint16_t DnsType(const std::string &tp)
static XmppServer * GetXmppServer()
bool OnlyTtlChange(DnsItem &rhs)
VirtualDnsRecordConfig(IFMapNode *node)
autogen::VirtualDnsType old_rec_
void NotifyPendingDnsRecords()
void OnAdd(IFMapNode *node)
boost::function< void(const Subnet &, const VirtualDnsConfig *, DnsConfig::DnsConfigEvent)> ZoneCallback
std::string & GetVirtualDnsName()
void OnAdd(IFMapNode *node)