1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
/*
* Dibbler - a portable DHCPv6
*
* authors: Adrien CLERC, Bahattin DEMIRPLAK, Gatant ELEOUET
* Mickal GURIN, Lionel GUILMIN, Laurline PROVOST
* from ENSEEIHT, Toulouse, France
*
* released under GNU GPL v2 licence
*
* $Id: DNSUpdate.h,v 1.8 2006-10-04 21:43:56 thomson Exp $
*
*/
#ifdef WIN32
#include <winsock2.h>
#endif
#include "poslib.h"
/* used in config. file */
enum DnsUpdateModeCfg {
DNSUPDATE_MODE_NONE = 0,
DNSUPDATE_MODE_PTR = 1,
DNSUPDATE_MODE_BOTH = 2
};
/* return values of method run*/
enum DnsUpdateResult {
DNSUPDATE_SUCCESS=0,
DNSUPDATE_ERROR=1,
DNSUPDATE_CONNFAIL=2,
DNSUPDATE_SRVNOTAUTH=3,
DNSUPDATE_SKIP=4
};
/* used in DNSUpdate constructor */
enum DnsUpdateMode {
DNSUPDATE_PTR=1,
DNSUPDATE_PTR_CLEANUP=2,
DNSUPDATE_AAAA=3,
DNSUPDATE_AAAA_CLEANUP=4
};
class DNSUpdate {
private:
DnsMessage *message;
_addr server;
char* hostname;
char* hostip;
domainname* zoneroot;
char* ttl;
DnsUpdateMode updateMode;
void splitHostDomain(string fqdnName);
void createSOAMsg();
void addinMsg_newPTR();
void addinMsg_newAAAA();
void addinMsg_delOldRR();
void deleteAAAARecordFromRRSet();
void deletePTRRecordFromRRSet();
bool DnsRR_avail(DnsMessage *msg, DnsRR& RemoteDnsRR);
DnsRR* get_oldDnsRR();
void sendMsg();
public:
DNSUpdate(string dns_address, string zonename, string hostname, string hostip,
DnsUpdateMode updateMode);
~DNSUpdate();
DnsUpdateResult run();
void showResult(int result);
};
|