OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DnsManager Class Reference

#include <dns_mgr.h>

Collaboration diagram for DnsManager:

Classes

struct  PendingList
 

Public Types

typedef std::map< uint16_t,
PendingList
PendingListMap
 
typedef std::pair< uint16_t,
PendingList
PendingListPair
 
typedef std::map< uint16_t,
PendingList
DeportedPendingListMap
 
typedef std::pair< uint16_t,
PendingList
DeportedPendingListPair
 

Public Member Functions

 DnsManager ()
 
virtual ~DnsManager ()
 
void Initialize (DB *config_db, DBGraph *config_graph, const std::string &named_config_dir, const std::string &named_config_file, const std::string &named_log_file, const std::string &rndc_config_file, const std::string &rndc_secret, const std::string &named_max_cache_size, const uint16_t named_max_retransmissions, const uint16_t named_retransmission_interval)
 
void Shutdown ()
 
void DnsView (const DnsConfig *config, DnsConfig::DnsConfigEvent ev)
 
void DnsPtrZone (const Subnet &subnet, const VirtualDnsConfig *vdns, DnsConfig::DnsConfigEvent ev)
 
void DnsRecord (const DnsConfig *config, DnsConfig::DnsConfigEvent ev)
 
void HandleUpdateResponse (uint8_t *pkt, std::size_t length)
 
DnsConfigManagerGetConfigManager ()
 
bool SendUpdate (BindUtil::Operation op, const std::string &view, const std::string &zone, DnsItems &items)
 
void SendRetransmit (uint16_t xid, BindUtil::Operation op, const std::string &view, const std::string &zone, DnsItems &items, uint32_t retranmit_count)
 
void UpdateAll ()
 
void StartEndofConfigTimer ()
 
void BindEventHandler (BindStatus::Event ev)
 
template<typename ConfigType >
void ProcessConfig (IFMapNodeProxy *proxy, const std::string &name, DnsConfigManager::EventType event)
 
void ProcessAgentUpdate (BindUtil::Operation event, const std::string &name, const std::string &vdns_name, const DnsItem &item)
 
bool IsBindStatusUp ()
 
void set_config_manager (ConfigClientManager *config_manager)
 
ConfigClientManagerget_config_manager ()
 
bool IsEndOfConfig ()
 
PendingListMap GetDeportedPendingListMap ()
 
void ClearDeportedPendingList ()
 
void NotifyThrottledDnsRecords ()
 
void DnsConfigMsgHandler (const std::string &key, const std::string &context) const
 
void VdnsRecordsMsgHandler (const std::string &key, const std::string &context, bool show_all=false) const
 
void BindPendingMsgHandler (const std::string &key, const std::string &context) const
 
void VdnsServersMsgHandler (const std::string &key, const std::string &context) const
 
void MakeSandeshPageReq (PageReqData *req, VirtualDnsConfig::DataMap &vdns, VirtualDnsConfig::DataMap::iterator vdns_it, VirtualDnsConfig::DataMap::iterator vdns_iter, const std::string &key, const std::string &req_name) const
 

Static Public Attributes

static const int max_records_per_sandesh = 100
 
static const int kEndOfConfigCheckTime = 1000
 
static const uint16_t kMaxRetransmitCount = 6
 
static const uint16_t kPendingRecordReScheduleTime = 1000
 
static const uint16_t kNamedLoWaterMark = 8192
 
static const uint16_t kNamedHiWaterMark = 32768
 
static const uint16_t kMaxIndexAllocator = 65535
 

Private Member Functions

bool SendRecordUpdate (BindUtil::Operation op, const VirtualDnsRecordConfig *config)
 
bool PendingDone (uint16_t xid)
 
bool ResendRecordsinBatch ()
 
bool AddPendingList (uint16_t xid, const std::string &view, const std::string &zone, const DnsItems &items, BindUtil::Operation op)
 
void UpdatePendingList (const std::string &view, const std::string &zone, const DnsItems &items)
 
void DeletePendingList (uint16_t xid)
 
void ClearPendingList ()
 
void PendingListViewDelete (const VirtualDnsConfig *config)
 
bool CheckZoneDelete (ZoneList &zones, PendingList &pend)
 
void PendingListZoneDelete (const Subnet &subnet, const VirtualDnsConfig *config)
 
void StartPendingTimer (int)
 
void CancelPendingTimer ()
 
bool PendingTimerExpiry ()
 
void CancelEndofConfigTimer ()
 
bool EndofConfigTimerExpiry ()
 
void NotifyAllDnsRecords (const VirtualDnsConfig *config, DnsConfig::DnsConfigEvent ev)
 
void NotifyReverseDnsRecords (const VirtualDnsConfig *config, DnsConfig::DnsConfigEvent ev, bool notify)
 
uint16_t GetTransId ()
 
void ResetTransId (uint16_t)
 
bool CheckName (std::string rec_name, std::string name)
 
 DISALLOW_COPY_AND_ASSIGN (DnsManager)
 

Private Attributes

tbb::mutex mutex_
 
BindStatus bind_status_
 
DnsConfigManager config_mgr_
 
ConfigClientManagerconfig_client_manager_
 
PendingListMap pending_map_
 
DeportedPendingListMap dp_pending_map_
 
Timerpending_timer_
 
Timerend_of_config_check_timer_
 
bool end_of_config_
 
uint32_t record_send_count_
 
uint16_t named_max_retransmissions_
 
uint16_t named_retransmission_interval_
 
uint16_t named_lo_watermark_
 
uint16_t named_hi_watermark_
 
bool named_send_throttled_
 
WorkQueue< uint16_t > pending_done_queue_
 
IndexAllocator idx_
 

Static Private Attributes

static uint16_t g_trans_id_
 

Friends

class DnsBindTest
 
class DnsManagerTest
 

Detailed Description

Definition at line 20 of file dns_mgr.h.

Member Typedef Documentation

typedef std::map<uint16_t, PendingList> DnsManager::DeportedPendingListMap

Definition at line 52 of file dns_mgr.h.

typedef std::pair<uint16_t, PendingList> DnsManager::DeportedPendingListPair

Definition at line 53 of file dns_mgr.h.

typedef std::map<uint16_t, PendingList> DnsManager::PendingListMap

Definition at line 49 of file dns_mgr.h.

typedef std::pair<uint16_t, PendingList> DnsManager::PendingListPair

Definition at line 50 of file dns_mgr.h.

Constructor & Destructor Documentation

DnsManager::DnsManager ( )

Definition at line 14 of file dns_mgr.cc.

Here is the call graph for this function:

DnsManager::~DnsManager ( )
virtual

Definition at line 83 of file dns_mgr.cc.

Here is the call graph for this function:

Member Function Documentation

bool DnsManager::AddPendingList ( uint16_t  xid,
const std::string &  view,
const std::string &  zone,
const DnsItems items,
BindUtil::Operation  op 
)
private

Definition at line 532 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::BindEventHandler ( BindStatus::Event  ev)

Definition at line 731 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::BindPendingMsgHandler ( const std::string &  key,
const std::string &  context 
) const

Definition at line 1130 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::CancelEndofConfigTimer ( )
private

Definition at line 766 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::CancelPendingTimer ( )
private

Definition at line 634 of file dns_mgr.cc.

Here is the call graph for this function:

bool DnsManager::CheckName ( std::string  rec_name,
std::string  name 
)
inlineprivate

Definition at line 719 of file dns_mgr.cc.

Here is the call graph for this function:

bool DnsManager::CheckZoneDelete ( ZoneList zones,
PendingList pend 
)
private

Definition at line 601 of file dns_mgr.cc.

void DnsManager::ClearDeportedPendingList ( )
inline

Definition at line 99 of file dns_mgr.h.

void DnsManager::ClearPendingList ( )
private

Definition at line 584 of file dns_mgr.cc.

void DnsManager::DeletePendingList ( uint16_t  xid)
private

Definition at line 569 of file dns_mgr.cc.

Here is the call graph for this function:

DnsManager::DISALLOW_COPY_AND_ASSIGN ( DnsManager  )
private
void DnsManager::DnsConfigMsgHandler ( const std::string &  key,
const std::string &  context 
) const

Definition at line 922 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::DnsPtrZone ( const Subnet subnet,
const VirtualDnsConfig vdns,
DnsConfig::DnsConfigEvent  ev 
)

Definition at line 206 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::DnsRecord ( const DnsConfig config,
DnsConfig::DnsConfigEvent  ev 
)

Definition at line 237 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::DnsView ( const DnsConfig config,
DnsConfig::DnsConfigEvent  ev 
)

Definition at line 160 of file dns_mgr.cc.

Here is the call graph for this function:

bool DnsManager::EndofConfigTimerExpiry ( )
private

Definition at line 770 of file dns_mgr.cc.

Here is the call graph for this function:

ConfigClientManager* DnsManager::get_config_manager ( )
inline

Definition at line 92 of file dns_mgr.h.

DnsConfigManager& DnsManager::GetConfigManager ( )
inline

Definition at line 72 of file dns_mgr.h.

PendingListMap DnsManager::GetDeportedPendingListMap ( )
inline

Definition at line 98 of file dns_mgr.h.

uint16_t DnsManager::GetTransId ( )
inlineprivate

Definition at line 711 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::HandleUpdateResponse ( uint8_t *  pkt,
std::size_t  length 
)

Definition at line 458 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::Initialize ( DB config_db,
DBGraph config_graph,
const std::string &  named_config_dir,
const std::string &  named_config_file,
const std::string &  named_log_file,
const std::string &  rndc_config_file,
const std::string &  rndc_secret,
const std::string &  named_max_cache_size,
const uint16_t  named_max_retransmissions,
const uint16_t  named_retransmission_interval 
)

Definition at line 66 of file dns_mgr.cc.

Here is the call graph for this function:

bool DnsManager::IsBindStatusUp ( )
inline

Definition at line 87 of file dns_mgr.h.

Here is the call graph for this function:

bool DnsManager::IsEndOfConfig ( )
inline

Definition at line 93 of file dns_mgr.h.

Here is the call graph for this function:

void DnsManager::MakeSandeshPageReq ( PageReqData *  req,
VirtualDnsConfig::DataMap vdns,
VirtualDnsConfig::DataMap::iterator  vdns_it,
VirtualDnsConfig::DataMap::iterator  vdns_iter,
const std::string &  key,
const std::string &  req_name 
) const

Definition at line 797 of file dns_mgr.cc.

void DnsManager::NotifyAllDnsRecords ( const VirtualDnsConfig config,
DnsConfig::DnsConfigEvent  ev 
)
private

Definition at line 669 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::NotifyReverseDnsRecords ( const VirtualDnsConfig config,
DnsConfig::DnsConfigEvent  ev,
bool  notify 
)
private

Definition at line 688 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::NotifyThrottledDnsRecords ( )

Definition at line 642 of file dns_mgr.cc.

Here is the call graph for this function:

bool DnsManager::PendingDone ( uint16_t  xid)
private

Definition at line 476 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::PendingListViewDelete ( const VirtualDnsConfig config)
private

Definition at line 589 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::PendingListZoneDelete ( const Subnet subnet,
const VirtualDnsConfig config 
)
private

Definition at line 610 of file dns_mgr.cc.

Here is the call graph for this function:

bool DnsManager::PendingTimerExpiry ( )
private

Definition at line 638 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::ProcessAgentUpdate ( BindUtil::Operation  event,
const std::string &  name,
const std::string &  vdns_name,
const DnsItem item 
)

Definition at line 128 of file dns_mgr.cc.

Here is the call graph for this function:

template<typename ConfigType >
void DnsManager::ProcessConfig ( IFMapNodeProxy proxy,
const std::string &  name,
DnsConfigManager::EventType  event 
)

Definition at line 98 of file dns_mgr.cc.

Here is the call graph for this function:

bool DnsManager::ResendRecordsinBatch ( )
private

Definition at line 481 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::ResetTransId ( uint16_t  xid)
inlineprivate

Definition at line 715 of file dns_mgr.cc.

Here is the call graph for this function:

bool DnsManager::SendRecordUpdate ( BindUtil::Operation  op,
const VirtualDnsRecordConfig config 
)
private

Definition at line 281 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::SendRetransmit ( uint16_t  xid,
BindUtil::Operation  op,
const std::string &  view,
const std::string &  zone,
DnsItems items,
uint32_t  retranmit_count 
)

Definition at line 400 of file dns_mgr.cc.

Here is the call graph for this function:

bool DnsManager::SendUpdate ( BindUtil::Operation  op,
const std::string &  view,
const std::string &  zone,
DnsItems items 
)

Definition at line 384 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::set_config_manager ( ConfigClientManager config_manager)
inline

Definition at line 89 of file dns_mgr.h.

void DnsManager::Shutdown ( )

Definition at line 91 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::StartEndofConfigTimer ( )

Definition at line 759 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::StartPendingTimer ( int  msec)
private

Definition at line 627 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::UpdateAll ( )

Definition at line 416 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::UpdatePendingList ( const std::string &  view,
const std::string &  zone,
const DnsItems items 
)
private

Definition at line 553 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::VdnsRecordsMsgHandler ( const std::string &  key,
const std::string &  context,
bool  show_all = false 
) const

Definition at line 1004 of file dns_mgr.cc.

Here is the call graph for this function:

void DnsManager::VdnsServersMsgHandler ( const std::string &  key,
const std::string &  context 
) const

Definition at line 845 of file dns_mgr.cc.

Here is the call graph for this function:

Friends And Related Function Documentation

friend class DnsBindTest
friend

Definition at line 108 of file dns_mgr.h.

friend class DnsManagerTest
friend

Definition at line 109 of file dns_mgr.h.

Member Data Documentation

BindStatus DnsManager::bind_status_
private

Definition at line 144 of file dns_mgr.h.

ConfigClientManager* DnsManager::config_client_manager_
private

Definition at line 146 of file dns_mgr.h.

DnsConfigManager DnsManager::config_mgr_
private

Definition at line 145 of file dns_mgr.h.

DeportedPendingListMap DnsManager::dp_pending_map_
private

Definition at line 149 of file dns_mgr.h.

bool DnsManager::end_of_config_
private

Definition at line 152 of file dns_mgr.h.

Timer* DnsManager::end_of_config_check_timer_
private

Definition at line 151 of file dns_mgr.h.

uint16_t DnsManager::g_trans_id_
staticprivate

Definition at line 147 of file dns_mgr.h.

IndexAllocator DnsManager::idx_
private

Definition at line 160 of file dns_mgr.h.

const int DnsManager::kEndOfConfigCheckTime = 1000
static

Definition at line 23 of file dns_mgr.h.

const uint16_t DnsManager::kMaxIndexAllocator = 65535
static

Definition at line 28 of file dns_mgr.h.

const uint16_t DnsManager::kMaxRetransmitCount = 6
static

Definition at line 24 of file dns_mgr.h.

const uint16_t DnsManager::kNamedHiWaterMark = 32768
static

Definition at line 27 of file dns_mgr.h.

const uint16_t DnsManager::kNamedLoWaterMark = 8192
static

Definition at line 26 of file dns_mgr.h.

const uint16_t DnsManager::kPendingRecordReScheduleTime = 1000
static

Definition at line 25 of file dns_mgr.h.

const int DnsManager::max_records_per_sandesh = 100
static

Definition at line 22 of file dns_mgr.h.

tbb::mutex DnsManager::mutex_
private

Definition at line 143 of file dns_mgr.h.

uint16_t DnsManager::named_hi_watermark_
private

Definition at line 157 of file dns_mgr.h.

uint16_t DnsManager::named_lo_watermark_
private

Definition at line 156 of file dns_mgr.h.

uint16_t DnsManager::named_max_retransmissions_
private

Definition at line 154 of file dns_mgr.h.

uint16_t DnsManager::named_retransmission_interval_
private

Definition at line 155 of file dns_mgr.h.

bool DnsManager::named_send_throttled_
private

Definition at line 158 of file dns_mgr.h.

WorkQueue<uint16_t> DnsManager::pending_done_queue_
private

Definition at line 159 of file dns_mgr.h.

PendingListMap DnsManager::pending_map_
private

Definition at line 148 of file dns_mgr.h.

Timer* DnsManager::pending_timer_
private

Definition at line 150 of file dns_mgr.h.

uint32_t DnsManager::record_send_count_
private

Definition at line 153 of file dns_mgr.h.


The documentation for this class was generated from the following files: