+/*
+ * Simple test program
+ */
+
+#include "dns-transp-common.h"
+
+#include <stdio.h>
+#include <inttypes.h>
+
#define NMYLABELS 3
static const char *const mylabels[NMYLABELS]={"z","example","com"};
static const char prefix[]="PREFIX ";
static const char suffix[]=" SUFFIX";
static uint8_t packet[100];
-static struct dnsbitenc enc;
+static struct dnsdomainenc enc;
+static struct dnsdomaindec dec;
int main(int argc, const char **argv) {
- const char **argv_save=
+ dnsdomaindec_globalinit();
+
+ const char **argv_save=argv;
memcpy(packet+sizeof(packet)-sizeof(suffix), suffix, sizeof(suffix));
- dnsbitenc_start(&enc, packet+sizeof(prefix),
- sizeof(packet)-sizeof(prefix)-sizeof(suffix));
+ dnsdomainenc_start(&enc, packet+sizeof(prefix),
+ sizeof(packet)-sizeof(prefix)-sizeof(suffix),
+ NMYLABELS,mylabels);
for (;;) {
const char *arg = *++argv;
if (!strcmp(arg,"b")) {
- uint32_t val=strtoul(*++argv,0,0);
int bits=atoi(*++argv);
- dnsbitenc_addbits(&enc,val,bits);
+ uint32_t val=strtoul(*++argv,0,0);
+ dnsdomainenc_addbits(&enc,val,bits);
} else if (!strcmp(arg,"w")) {
uint32_t val=strtoul(*++argv,0,0);
- dnsbitenc_addu32(&enc,val);
+ dnsdomainenc_addu32(&enc,val);
} else if (!strcmp(arg,"r")) {
const char *rest=*++argv;
int l=strlen(rest);
- int nofit=dnsbitenc_restbytes(&enc,rest,l);
+ int nofit=dnsdomainenc_restbytes(&enc,(const uint8_t*)rest,l);
printf("FIT %.*s|%.*s\n",l-nofit,rest,nofit,rest+l-nofit);
break;
} else {
abort();
}
}
- const uint8_t *encoded=dnsbitenc_getresult(&enc);
- const uint8_t *pktbegin=encoded-sizeof(prefix);
+ uint8_t *encoded=dnsdomainenc_getresult(&enc);
+ uint8_t *pktbegin=encoded-sizeof(prefix);
memcpy(pktbegin,prefix,sizeof(prefix));
const uint8_t *pr;
printf("%02x",*pr);
printf("\n");
- uint8_t domainend;
- int r=dnsbitdec_start(&dec, pktbegin, packet+sizeof(packet),
- pktbegin+sizeof(prefix), NMYLABELS,mylabels,
- &domainend);
+ const uint8_t *domainend;
+ int r=dnsdomaindec_start(&dec, pktbegin, packet+sizeof(packet),
+ pktbegin+sizeof(prefix), NMYLABELS,mylabels,
+ &domainend);
if (r) {
printf("DEC ERROR %d\n",r);
return 0;
for (;;) {
const char *arg = *++argv;
if (!strcmp(arg,"b")) {
- ++argv;
int bits=atoi(*++argv);
- uint32_t
-
- if (nofit)
-
- } else
-
- const int c0=*arg++;
- switch (c0) {
- case 'b':
-
+ ++argv;
+ uint32_t val=dnsdomaindec_getbits(&dec,bits);
+ printf("b %d 0x%"PRIx32, bits, val);
+ } else if (!strcmp(arg,"w")) {
+ uint32_t val=dnsdomaindec_getu32(&dec);
+ printf("w 0x%"PRIx32, val);
+ } else if (!strcmp(arg,"r")) {
+ uint8_t rbuf[MAX_DOMAIN_BYTES];
+ int l=dnsdomaindec_restbytes(&dec,rbuf);
+ printf("r %.*s",l,rbuf);
+ } else {
+ abort();
+ }
+ }
+}