]> git.meshlink.io Git - catta/blobdiff - avahi-core/dns.c
* rename all limit defs so that they end with _MAX
[catta] / avahi-core / dns.c
index 941247031ad9b529a44b6312b6309e5fd72c91bf..8c8b42bcbb56317ef0cefd4ee36bfd9f379afdab 100644 (file)
@@ -41,7 +41,7 @@ AvahiDnsPacket* avahi_dns_packet_new(unsigned mtu) {
     size_t max_size;
 
     if (mtu <= 0)
-        max_size = AVAHI_DNS_PACKET_MAX_SIZE;
+        max_size = AVAHI_DNS_PACKET_SIZE_MAX;
     else if (mtu >= AVAHI_DNS_PACKET_EXTRA_SIZE)
         max_size = mtu - AVAHI_DNS_PACKET_EXTRA_SIZE;
     else
@@ -165,7 +165,6 @@ uint8_t* avahi_dns_packet_append_name(AvahiDnsPacket *p, const char *name) {
         const char *pname;
         char label[64], *u;
         
-
         /* Check whether we can compress this name. */
 
         if (p->name_table && (prev = avahi_hashmap_lookup(p->name_table, name))) {
@@ -177,11 +176,12 @@ uint8_t* avahi_dns_packet_append_name(AvahiDnsPacket *p, const char *name) {
             assert(idx < p->size);
 
             if (idx < 0x4000) {
-                uint16_t *t;
-                if (!(t = (uint16_t*) avahi_dns_packet_extend(p, sizeof(uint16_t))))
+                uint8_t *t;
+                if (!(t = (uint8_t*) avahi_dns_packet_extend(p, sizeof(uint16_t))))
                     return NULL;
 
-                *t = htons((0xC000 | idx));
+               t[0] = (uint8_t) ((0xC000 | idx) >> 8);
+               t[1] = (uint8_t) idx;
                 return saved_ptr;
             }
         }
@@ -223,7 +223,8 @@ uint8_t* avahi_dns_packet_append_uint16(AvahiDnsPacket *p, uint16_t v) {
     if (!(d = avahi_dns_packet_extend(p, sizeof(uint16_t))))
         return NULL;
     
-    *((uint16_t*) d) = htons(v);
+    d[0] = (uint8_t) (v >> 8);
+    d[1] = (uint8_t) v;
     return d;
 }
 
@@ -234,7 +235,10 @@ uint8_t *avahi_dns_packet_append_uint32(AvahiDnsPacket *p, uint32_t v) {
     if (!(d = avahi_dns_packet_extend(p, sizeof(uint32_t))))
         return NULL;
     
-    *((uint32_t*) d) = htonl(v);
+    d[0] = (uint8_t) (v >> 24);
+    d[1] = (uint8_t) (v >> 16);
+    d[2] = (uint8_t) (v >> 8);
+    d[3] = (uint8_t) v;
 
     return d;
 }
@@ -366,7 +370,7 @@ static int consume_labels(AvahiDnsPacket *p, unsigned idx, char *ret_name, size_
             } else
                 first_label = 0;
 
-            if (!(avahi_escape_label(AVAHI_DNS_PACKET_DATA(p) + idx, n, &ret_name, &l)))
+            if (!(avahi_escape_label((char*) AVAHI_DNS_PACKET_DATA(p) + idx, n, &ret_name, &l)))
                 return -1;
 
             idx += n;
@@ -401,26 +405,32 @@ int avahi_dns_packet_consume_name(AvahiDnsPacket *p, char *ret_name, size_t l) {
 }
 
 int avahi_dns_packet_consume_uint16(AvahiDnsPacket *p, uint16_t *ret_v) {
+    uint8_t *d;
+
     assert(p);
     assert(ret_v);
 
     if (p->rindex + sizeof(uint16_t) > p->size)
         return -1;
 
-    *ret_v = ntohs(*((uint16_t*) (AVAHI_DNS_PACKET_DATA(p) + p->rindex)));
+    d = (uint8_t*) (AVAHI_DNS_PACKET_DATA(p) + p->rindex);
+    *ret_v = (d[0] << 8) | d[1];
     p->rindex += sizeof(uint16_t);
 
     return 0;
 }
 
 int avahi_dns_packet_consume_uint32(AvahiDnsPacket *p, uint32_t *ret_v) {
+    uint8_t* d;
+
     assert(p);
     assert(ret_v);
 
     if (p->rindex + sizeof(uint32_t) > p->size)
         return -1;
 
-    *ret_v = ntohl(*((uint32_t*) (AVAHI_DNS_PACKET_DATA(p) + p->rindex)));
+    d = (uint8_t*) (AVAHI_DNS_PACKET_DATA(p) + p->rindex);
+    *ret_v = (d[0] << 24) | (d[1] << 16) | (d[2] << 8) | d[3];
     p->rindex += sizeof(uint32_t);
     
     return 0;
@@ -519,6 +529,7 @@ AvahiRecord* avahi_dns_packet_consume_record(AvahiDnsPacket *p, int *ret_cache_f
     switch (type) {
         case AVAHI_DNS_TYPE_PTR:
         case AVAHI_DNS_TYPE_CNAME:
+        case AVAHI_DNS_TYPE_NS:
 
 /*             avahi_log_debug("ptr"); */
             
@@ -678,8 +689,9 @@ uint8_t* avahi_dns_packet_append_record(AvahiDnsPacket *p, AvahiRecord *r, int c
     switch (r->key->type) {
         
         case AVAHI_DNS_TYPE_PTR:
-        case AVAHI_DNS_TYPE_CNAME :
-
+        case AVAHI_DNS_TYPE_CNAME:
+        case AVAHI_DNS_TYPE_NS:
+            
             if (!(avahi_dns_packet_append_name(p, r->data.ptr.name)))
                 goto fail;
             
@@ -750,7 +762,8 @@ uint8_t* avahi_dns_packet_append_record(AvahiDnsPacket *p, AvahiRecord *r, int c
 
 /*     avahi_log_debug("appended %u", size); */
 
-    * (uint16_t*) l = htons((uint16_t) size);
+    l[0] = (uint8_t) ((uint16_t) size >> 8);
+    l[1] = (uint8_t) ((uint16_t) size);
     
     return t;