aboutsummaryrefslogtreecommitdiff
path: root/parsetype.c
diff options
context:
space:
mode:
authorHenryk Plötz <henryk@ploetzli.ch>2014-10-03 19:58:52 +0200
committerHenryk Plötz <henryk@ploetzli.ch>2014-10-03 19:58:52 +0200
commit0e5b2871ca6456b01d4bf037a6e68badf1ff1a41 (patch)
tree97b95b74c9618d85da9aa9451a55a819cd7b1c2e /parsetype.c
downloadtinydnssec-0e5b2871ca6456b01d4bf037a6e68badf1ff1a41.tar.gz
tinydnssec-0e5b2871ca6456b01d4bf037a6e68badf1ff1a41.tar.bz2
Initial commit of djbdns-1.05.tar.gz
Source was http://cr.yp.to/djbdns/djbdns-1.05.tar.gz, SHA1 2efdb3a039d0c548f40936aa9cb30829e0ce8c3d
Diffstat (limited to 'parsetype.c')
-rw-r--r--parsetype.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/parsetype.c b/parsetype.c
new file mode 100644
index 0000000..167aaa4
--- /dev/null
+++ b/parsetype.c
@@ -0,0 +1,31 @@
+#include "scan.h"
+#include "byte.h"
+#include "case.h"
+#include "dns.h"
+#include "uint16.h"
+#include "parsetype.h"
+
+int parsetype(char *s,char type[2])
+{
+ unsigned long u;
+
+ if (!s[scan_ulong(s,&u)]) uint16_pack_big(type,u);
+ else if (case_equals(s,"any")) byte_copy(type,2,DNS_T_ANY);
+ else if (case_equals(s,"a")) byte_copy(type,2,DNS_T_A);
+ else if (case_equals(s,"ns")) byte_copy(type,2,DNS_T_NS);
+ else if (case_equals(s,"mx")) byte_copy(type,2,DNS_T_MX);
+ else if (case_equals(s,"ptr")) byte_copy(type,2,DNS_T_PTR);
+ else if (case_equals(s,"txt")) byte_copy(type,2,DNS_T_TXT);
+ else if (case_equals(s,"cname")) byte_copy(type,2,DNS_T_CNAME);
+ else if (case_equals(s,"soa")) byte_copy(type,2,DNS_T_SOA);
+ else if (case_equals(s,"hinfo")) byte_copy(type,2,DNS_T_HINFO);
+ else if (case_equals(s,"rp")) byte_copy(type,2,DNS_T_RP);
+ else if (case_equals(s,"sig")) byte_copy(type,2,DNS_T_SIG);
+ else if (case_equals(s,"key")) byte_copy(type,2,DNS_T_KEY);
+ else if (case_equals(s,"aaaa")) byte_copy(type,2,DNS_T_AAAA);
+ else if (case_equals(s,"axfr")) byte_copy(type,2,DNS_T_AXFR);
+ else
+ return 0;
+
+ return 1;
+}