2 static const char *const mylabels[NMYLABELS]={"z","example","com"};
3 static const char prefix[]="PREFIX ";
4 static const char suffix[]=" SUFFIX";
5 static uint8_t packet[100];
7 static struct dnsbitenc enc;
9 int main(int argc, const char **argv) {
10 const char **argv_save=
11 memcpy(packet+sizeof(packet)-sizeof(suffix), suffix, sizeof(suffix));
12 dnsbitenc_start(&enc, packet+sizeof(prefix),
13 sizeof(packet)-sizeof(prefix)-sizeof(suffix));
15 const char *arg = *++argv;
16 if (!strcmp(arg,"b")) {
17 uint32_t val=strtoul(*++argv,0,0);
18 int bits=atoi(*++argv);
19 dnsbitenc_addbits(&enc,val,bits);
20 } else if (!strcmp(arg,"w")) {
21 uint32_t val=strtoul(*++argv,0,0);
22 dnsbitenc_addu32(&enc,val);
23 } else if (!strcmp(arg,"r")) {
24 const char *rest=*++argv;
26 int nofit=dnsbitenc_restbytes(&enc,rest,l);
27 printf("FIT %.*s|%.*s\n",l-nofit,rest,nofit,rest+l-nofit);
33 const uint8_t *encoded=dnsbitenc_getresult(&enc);
34 const uint8_t *pktbegin=encoded-sizeof(prefix);
35 memcpy(pktbegin,prefix,sizeof(prefix));
38 for (pr=pktbegin; pr<packet+sizeof(packet); pr++)
43 int r=dnsbitdec_start(&dec, pktbegin, packet+sizeof(packet),
44 pktbegin+sizeof(prefix), NMYLABELS,mylabels,
47 printf("DEC ERROR %d\n",r);
52 const char *arg = *++argv;
53 if (!strcmp(arg,"b")) {
55 int bits=atoi(*++argv);