]> git.karo-electronics.de Git - mdnsd.git/commitdiff
Add QTYPE_TXT, make the "my"-macro safer.
authorSimon Budig <simon@budig.de>
Thu, 22 Jan 2009 22:49:32 +0000 (23:49 +0100)
committerOle Reinhardt <ole.reinhardt@kernelconcepts.de>
Sun, 28 Apr 2013 23:01:33 +0000 (01:01 +0200)
1035.c
1035.h

diff --git a/1035.c b/1035.c
index b067ea12c6572f8ac75394cd5c68873fd7cf3e0f..0ed72a23178cb45918e9e0fe3e69a503dc5fe216 100644 (file)
--- a/1035.c
+++ b/1035.c
@@ -1,5 +1,6 @@
-#include "1035.h"
 #include <string.h> 
+#include <stdio.h> 
+#include "1035.h"
 
 unsigned short int net2short(unsigned char **bufp)
 {
@@ -241,7 +242,7 @@ void message_parse(struct message *m, unsigned char *packet)
     if(packet == 0 || m == 0) return;
 
     // keep all our mem in one (aligned) block for easy freeing
-    #define my(x,y) while(m->_len&7) m->_len++; (void*)x = (void*)(m->_packet + m->_len); m->_len += y;
+    #define my(x,y,t) while(m->_len&7) m->_len++; (x) = (t *) (m->_packet + m->_len); m->_len += (sizeof (t) * (y));
 
     // header stuff bit crap
     m->_buf = buf = packet;
@@ -265,7 +266,7 @@ void message_parse(struct message *m, unsigned char *packet)
     if(m->_len + (sizeof(struct resource) * m->arcount) > MAX_PACKET_LEN - 8) { m->arcount = 0; return; }
 
     // process questions
-    my(m->qd, sizeof(struct question) * m->qdcount);
+    my(m->qd, m->qdcount, struct question);
     for(i=0; i < m->qdcount; i++)
     {
         _label(m, &buf, &(m->qd[i].name));
@@ -274,9 +275,9 @@ void message_parse(struct message *m, unsigned char *packet)
     }
 
     // process rrs
-    my(m->an, sizeof(struct resource) * m->ancount);
-    my(m->ns, sizeof(struct resource) * m->nscount);
-    my(m->ar, sizeof(struct resource) * m->arcount);
+    my(m->an, m->ancount, struct resource);
+    my(m->ns, m->nscount, struct resource);
+    my(m->ar, m->arcount, struct resource);
     if(_rrparse(m,m->an,m->ancount,&buf)) return;
     if(_rrparse(m,m->ns,m->nscount,&buf)) return;
     if(_rrparse(m,m->ar,m->arcount,&buf)) return;
diff --git a/1035.h b/1035.h
index 41a2d339f771a1adbbc311fb6fd7da0a8522a060..3b205ab7671fccebd615875f8590e2d4f193e8bf 100644 (file)
--- a/1035.h
+++ b/1035.h
@@ -18,6 +18,7 @@ struct question
 #define QTYPE_NS 2
 #define QTYPE_CNAME 5
 #define QTYPE_PTR 12
+#define QTYPE_TXT 16
 #define QTYPE_SRV 33
 
 struct resource
@@ -48,7 +49,7 @@ struct message
     // internal variables
     unsigned char *_buf, *_labels[20];
     int _len, _label;
-    
+
     // packet acts as padding, easier mem management
     unsigned char _packet[MAX_PACKET_LEN];
 };