Restored Contiki compatibility with non-C99 compilers.
(and compilers without non-standard extensions like void pointer arithmetic)
This commit is contained in:
parent
3a486d3954
commit
8fa9767d47
|
@ -75,7 +75,6 @@
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdbool.h>
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#ifndef NULL
|
#ifndef NULL
|
||||||
|
@ -206,18 +205,13 @@ struct dns_hdr {
|
||||||
/** These default values for the DNS server are Google's public DNS:
|
/** These default values for the DNS server are Google's public DNS:
|
||||||
* <https://developers.google.com/speed/public-dns/docs/using>
|
* <https://developers.google.com/speed/public-dns/docs/using>
|
||||||
*/
|
*/
|
||||||
|
static uip_ipaddr_t resolv_default_dns_server =
|
||||||
#if UIP_CONF_IPV6
|
#if UIP_CONF_IPV6
|
||||||
static uip_ipaddr_t resolv_default_dns_server = {
|
{ { 0x20, 0x01, 0x48, 0x60, 0x48, 0x60, 0x00, 0x00,
|
||||||
.u8 = {
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88 } };
|
||||||
0x20, 0x01, 0x48, 0x60,
|
#else /* UIP_CONF_IPV6 */
|
||||||
0x48, 0x60, 0x00, 0x00,
|
{ { 8, 8, 8, 8 } };
|
||||||
0x00, 0x00, 0x00, 0x00,
|
#endif /* UIP_CONF_IPV6 */
|
||||||
0x00, 0x00, 0x88, 0x88,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
static uip_ipaddr_t resolv_default_dns_server = {.u8 = {8, 8, 8, 8} };
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** \internal The DNS answer message structure. */
|
/** \internal The DNS answer message structure. */
|
||||||
struct dns_answer {
|
struct dns_answer {
|
||||||
|
@ -294,22 +288,15 @@ enum {
|
||||||
|
|
||||||
static uint8_t mdns_state;
|
static uint8_t mdns_state;
|
||||||
|
|
||||||
|
static const uip_ipaddr_t resolv_mdns_addr =
|
||||||
#if UIP_CONF_IPV6
|
#if UIP_CONF_IPV6
|
||||||
|
{ { 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb } };
|
||||||
#include "net/uip-ds6.h"
|
#include "net/uip-ds6.h"
|
||||||
static const uip_ipaddr_t resolv_mdns_addr = {
|
|
||||||
.u8 = {
|
|
||||||
0xff, 0x02, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xfb,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
#else /* UIP_CONF_IPV6 */
|
#else /* UIP_CONF_IPV6 */
|
||||||
static const uip_ipaddr_t resolv_mdns_addr = {
|
{ { 224, 0, 0, 251 } };
|
||||||
.u8 = {224, 0, 0, 251}
|
#endif /* UIP_CONF_IPV6 */
|
||||||
};
|
static int mdns_needs_host_announce;
|
||||||
#endif /* !UIP_CONF_IPV6 */
|
|
||||||
static bool mdns_needs_host_announce;
|
|
||||||
|
|
||||||
PROCESS(mdns_probe_process, "mDNS probe");
|
PROCESS(mdns_probe_process, "mDNS probe");
|
||||||
#endif /* RESOLV_CONF_SUPPORTS_MDNS */
|
#endif /* RESOLV_CONF_SUPPORTS_MDNS */
|
||||||
|
@ -317,12 +304,12 @@ PROCESS(mdns_probe_process, "mDNS probe");
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/** \internal
|
/** \internal
|
||||||
* \brief Decodes a DNS name from the DNS format into the given string.
|
* \brief Decodes a DNS name from the DNS format into the given string.
|
||||||
* \return True upon success, False if the size of the name would be too large.
|
* \return 1 upon success, 0 if the size of the name would be too large.
|
||||||
*
|
*
|
||||||
* \note `dest` must point to a buffer with at least
|
* \note `dest` must point to a buffer with at least
|
||||||
* `RESOLV_CONF_MAX_DOMAIN_NAME_SIZE+1` bytes large.
|
* `RESOLV_CONF_MAX_DOMAIN_NAME_SIZE+1` bytes large.
|
||||||
*/
|
*/
|
||||||
static bool
|
static int
|
||||||
decode_name(const unsigned char *query, char *dest,
|
decode_name(const unsigned char *query, char *dest,
|
||||||
const unsigned char *packet)
|
const unsigned char *packet)
|
||||||
{
|
{
|
||||||
|
@ -351,7 +338,7 @@ decode_name(const unsigned char *query, char *dest,
|
||||||
|
|
||||||
if(!--len) {
|
if(!--len) {
|
||||||
*dest = 0;
|
*dest = 0;
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,14 +359,14 @@ decode_name(const unsigned char *query, char *dest,
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/** \internal
|
/** \internal
|
||||||
*/
|
*/
|
||||||
static bool
|
static int
|
||||||
dns_name_isequal(const unsigned char *queryptr, const char *name,
|
dns_name_isequal(const unsigned char *queryptr, const char *name,
|
||||||
const unsigned char *packet)
|
const unsigned char *packet)
|
||||||
{
|
{
|
||||||
unsigned char n = *queryptr++;
|
unsigned char n = *queryptr++;
|
||||||
|
|
||||||
if(*name == 0)
|
if(*name == 0)
|
||||||
return false;
|
return 0;
|
||||||
|
|
||||||
while(n) {
|
while(n) {
|
||||||
if(n & 0xc0) {
|
if(n & 0xc0) {
|
||||||
|
@ -389,18 +376,18 @@ dns_name_isequal(const unsigned char *queryptr, const char *name,
|
||||||
|
|
||||||
for(; n; n--) {
|
for(; n; n--) {
|
||||||
if(!*name) {
|
if(!*name) {
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tolower(*name++) != tolower(*queryptr++)) {
|
if(tolower(*name++) != tolower(*queryptr++)) {
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
n = *queryptr++;
|
n = *queryptr++;
|
||||||
|
|
||||||
if((n != 0) && (*name++ != '.')) {
|
if((n != 0) && (*name++ != '.')) {
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -479,7 +466,7 @@ encode_name(unsigned char *query, const char *nameptr)
|
||||||
static void
|
static void
|
||||||
mdns_announce_requested(void)
|
mdns_announce_requested(void)
|
||||||
{
|
{
|
||||||
mdns_needs_host_announce = true;
|
mdns_needs_host_announce = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
@ -689,7 +676,7 @@ check_entries(void)
|
||||||
hdr->flags1 = DNS_FLAG1_RD;
|
hdr->flags1 = DNS_FLAG1_RD;
|
||||||
#endif
|
#endif
|
||||||
hdr->numquestions = UIP_HTONS(1);
|
hdr->numquestions = UIP_HTONS(1);
|
||||||
query = uip_appdata + sizeof(*hdr);
|
query = (char *)uip_appdata + sizeof(*hdr);
|
||||||
query = encode_name(query, namemapptr->name);
|
query = encode_name(query, namemapptr->name);
|
||||||
#if RESOLV_CONF_SUPPORTS_MDNS
|
#if RESOLV_CONF_SUPPORTS_MDNS
|
||||||
if(namemapptr->is_probe) {
|
if(namemapptr->is_probe) {
|
||||||
|
@ -726,8 +713,7 @@ check_entries(void)
|
||||||
uip_udp_packet_sendto(resolv_conn,
|
uip_udp_packet_sendto(resolv_conn,
|
||||||
uip_appdata,
|
uip_appdata,
|
||||||
(query - (uint8_t *) uip_appdata),
|
(query - (uint8_t *) uip_appdata),
|
||||||
&resolv_mdns_addr, UIP_HTONS(MDNS_PORT)
|
&resolv_mdns_addr, UIP_HTONS(MDNS_PORT));
|
||||||
);
|
|
||||||
|
|
||||||
PRINTF("resolver: (i=%d) Sent MDNS request for \"%s\".\n", i,
|
PRINTF("resolver: (i=%d) Sent MDNS request for \"%s\".\n", i,
|
||||||
namemapptr->name);
|
namemapptr->name);
|
||||||
|
@ -735,8 +721,7 @@ check_entries(void)
|
||||||
uip_udp_packet_sendto(resolv_conn,
|
uip_udp_packet_sendto(resolv_conn,
|
||||||
uip_appdata,
|
uip_appdata,
|
||||||
(query - (uint8_t *) uip_appdata),
|
(query - (uint8_t *) uip_appdata),
|
||||||
&resolv_default_dns_server, UIP_HTONS(DNS_PORT)
|
&resolv_default_dns_server, UIP_HTONS(DNS_PORT));
|
||||||
);
|
|
||||||
|
|
||||||
PRINTF("resolver: (i=%d) Sent DNS request for \"%s\".\n", i,
|
PRINTF("resolver: (i=%d) Sent DNS request for \"%s\".\n", i,
|
||||||
namemapptr->name);
|
namemapptr->name);
|
||||||
|
@ -745,8 +730,7 @@ check_entries(void)
|
||||||
uip_udp_packet_sendto(resolv_conn,
|
uip_udp_packet_sendto(resolv_conn,
|
||||||
uip_appdata,
|
uip_appdata,
|
||||||
(query - (uint8_t *) uip_appdata),
|
(query - (uint8_t *) uip_appdata),
|
||||||
&resolv_default_dns_server, UIP_HTONS(DNS_PORT)
|
&resolv_default_dns_server, UIP_HTONS(DNS_PORT));
|
||||||
);
|
|
||||||
PRINTF("resolver: (i=%d) Sent DNS request for \"%s\".\n", i,
|
PRINTF("resolver: (i=%d) Sent DNS request for \"%s\".\n", i,
|
||||||
namemapptr->name);
|
namemapptr->name);
|
||||||
#endif
|
#endif
|
||||||
|
@ -942,8 +926,7 @@ newdata(void)
|
||||||
debug_name, uip_ntohs(ans->type),
|
debug_name, uip_ntohs(ans->type),
|
||||||
uip_ntohs(ans->class) & 0x7FFF,
|
uip_ntohs(ans->class) & 0x7FFF,
|
||||||
(int)((uint32_t) uip_ntohs(ans->ttl[0]) << 16) | (uint32_t)
|
(int)((uint32_t) uip_ntohs(ans->ttl[0]) << 16) | (uint32_t)
|
||||||
uip_ntohs(ans->ttl[1]), uip_ntohs(ans->len)
|
uip_ntohs(ans->ttl[1]), uip_ntohs(ans->len));
|
||||||
);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Check the class and length of the answer to make sure
|
/* Check the class and length of the answer to make sure
|
||||||
|
@ -1175,8 +1158,7 @@ PROCESS_THREAD(resolv_process, ev, data)
|
||||||
|
|
||||||
uip_udp_packet_sendto(resolv_conn,
|
uip_udp_packet_sendto(resolv_conn,
|
||||||
uip_appdata,
|
uip_appdata,
|
||||||
len, &resolv_mdns_addr, UIP_HTONS(MDNS_PORT)
|
len, &resolv_mdns_addr, UIP_HTONS(MDNS_PORT));
|
||||||
);
|
|
||||||
|
|
||||||
mdns_needs_host_announce = 0;
|
mdns_needs_host_announce = 0;
|
||||||
|
|
||||||
|
@ -1324,20 +1306,13 @@ resolv_lookup(const char *name, uip_ipaddr_t ** ipaddr)
|
||||||
|
|
||||||
#if UIP_CONF_LOOPBACK_INTERFACE
|
#if UIP_CONF_LOOPBACK_INTERFACE
|
||||||
if(strcmp(name, "localhost")) {
|
if(strcmp(name, "localhost")) {
|
||||||
|
static uip_ipaddr_t loopback =
|
||||||
#if UIP_CONF_IPV6
|
#if UIP_CONF_IPV6
|
||||||
static uip_ipaddr_t loopback = {
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
.u8 = {
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } };
|
||||||
0x00, 0x00, 0x00, 0x00,
|
#else /* UIP_CONF_IPV6 */
|
||||||
0x00, 0x00, 0x00, 0x00,
|
{ { 127, 0, 0, 1 } };
|
||||||
0x00, 0x00, 0x00, 0x00,
|
#endif /* UIP_CONF_IPV6 */
|
||||||
0x00, 0x00, 0x00, 0x01,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
static uip_ipaddr_t loopback = {
|
|
||||||
.u8 = {127, 0, 0, 1}
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
if(ipaddr) {
|
if(ipaddr) {
|
||||||
*ipaddr = &loopback;
|
*ipaddr = &loopback;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue