Skip to content

Instantly share code, notes, and snippets.

@Habbie
Created April 26, 2013 11:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Habbie/5466795 to your computer and use it in GitHub Desktop.
Save Habbie/5466795 to your computer and use it in GitHub Desktop.
Index: pdns/qtype.hh
===================================================================
--- pdns/qtype.hh (revision 2708)
+++ pdns/qtype.hh (working copy)
@@ -82,12 +82,53 @@
TLSA=52, SPF=99, TSIG=250, AXFR=252, IXFR=251, ANY=255, URL=256, MBOXFW=257, CURL=258, ADDR=259, DLV=32769} types;
typedef pair<string,uint16_t> namenum;
static vector<namenum> names;
+
private:
+ static class _init {
+ public:
+ _init()
+ {
+ #define qtype_insert(a,b) names.push_back(make_pair(string(a), b))
+ qtype_insert("A",1);
+ qtype_insert("NS",2);
+ qtype_insert("CNAME",5);
+ qtype_insert("SOA",6);
+ qtype_insert("MR",9);
+ qtype_insert("PTR",12);
+ qtype_insert("HINFO",13);
+ qtype_insert("MX",15);
+ qtype_insert("TXT",16);
+ qtype_insert("RP",17);
+ qtype_insert("AFSDB", 18);
+ qtype_insert("SIG",24);
+ qtype_insert("KEY",25);
+ qtype_insert("AAAA",28);
+ qtype_insert("LOC",29);
+ qtype_insert("SRV",33);
+ qtype_insert("CERT", 37);
+ qtype_insert("A6",38);
+ qtype_insert("NAPTR",35);
+ qtype_insert("DS", 43);
+ qtype_insert("SSHFP", 44);
+ qtype_insert("RRSIG", 46);
+ qtype_insert("NSEC", 47);
+ qtype_insert("DNSKEY", 48);
+ qtype_insert("NSEC3", 50);
+ qtype_insert("NSEC3PARAM", 51);
+ qtype_insert("TLSA",52);
+ qtype_insert("SPF",99);
+ qtype_insert("IXFR",251);
+ qtype_insert("AXFR",252);
+ qtype_insert("ANY",255);
+ qtype_insert("URL",256);
+ qtype_insert("MBOXFW",257);
+ qtype_insert("CURL",258);
+ qtype_insert("ADDR",259);
+ qtype_insert("DLV",32769);
+ }
+ } _initializer;
+
uint16_t code;
- void insert(const char *p, int n);
-
- static pthread_mutex_t uninitlock;
- static bool uninit;
};
struct QClass
Index: pdns/qtype.cc
===================================================================
--- pdns/qtype.cc (revision 2708)
+++ pdns/qtype.cc (working copy)
@@ -28,59 +28,21 @@
#include "lock.hh"
-pthread_mutex_t QType::uninitlock = PTHREAD_MUTEX_INITIALIZER;
-bool QType::uninit=true;
vector<QType::namenum> QType::names;
+// Init names
+QType::_init QType::_initializer;
- void QType::insert(const char *p, int n)
- {
- names.push_back(make_pair(string(p),n));
- }
QType::QType()
{
- Lock l(&uninitlock);
- if(uninit)
- {
- uninit=false;
- insert("A",1);
- insert("NS",2);
- insert("CNAME",5);
- insert("SOA",6);
- insert("MR",9);
- insert("PTR",12);
- insert("HINFO",13);
- insert("MX",15);
- insert("TXT",16);
- insert("RP",17);
- insert("AFSDB", 18);
- insert("SIG",24);
- insert("KEY",25);
- insert("AAAA",28);
- insert("LOC",29);
- insert("SRV",33);
- insert("CERT", 37);
- insert("A6",38);
- insert("NAPTR",35);
- insert("DS", 43);
- insert("SSHFP", 44);
- insert("RRSIG", 46);
- insert("NSEC", 47);
- insert("DNSKEY", 48);
- insert("NSEC3", 50);
- insert("NSEC3PARAM", 51);
- insert("TLSA",52);
- insert("SPF",99);
- insert("IXFR",251);
- insert("AXFR",252);
- insert("ANY",255);
- insert("URL",256);
- insert("MBOXFW",257);
- insert("CURL",258);
- insert("ADDR",259);
- insert("DLV",32769);
- }
}
uint16_t QType::getCode() const
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment