11 #if defined(HAVE_ASSERT_H) && !defined(assert)
20 #ifdef HAVE_ARPA_INET_H
21 #include <arpa/inet.h>
33 # define DEBUG DEBUG_PRINT
35 #include "net/uip-debug.h"
52 "EMRG",
"ALRT",
"CRIT",
"WARN",
"NOTE",
"INFO",
"DEBG"
61 tmp = localtime(&now);
62 return strftime(s, len,
"%b %d %H:%M:%S", tmp);
70 return snprintf(s, len,
"%u.%03u",
93 strnlen(
const char *s,
size_t maxlen) {
95 while(*s++ && n < maxlen)
103 unsigned char *result,
unsigned int buflen,
int encode_always ) {
104 const unsigned char hex[] =
"0123456789ABCDEF";
105 unsigned int cnt = 0;
106 assert(data || len == 0);
108 if (buflen == 0 || len == 0)
112 if (!encode_always && isprint(*data)) {
118 if (cnt+4 < buflen) {
121 *result++ = hex[(*data & 0xf0) >> 4];
122 *result++ = hex[*data & 0x0f];
136 #define min(a,b) ((a) < (b) ? (a) : (b))
141 #ifdef HAVE_ARPA_INET_H
142 const void *addrptr = NULL;
144 unsigned char *p = buf;
146 switch (addr->
addr.
sa.sa_family) {
148 addrptr = &addr->
addr.
sin.sin_addr;
149 port = ntohs(addr->
addr.
sin.sin_port);
157 addrptr = &addr->
addr.
sin6.sin6_addr;
158 port = ntohs(addr->
addr.
sin6.sin6_port);
162 memcpy(buf,
"(unknown address type)",
min(22, len));
166 if (inet_ntop(addr->
addr.
sa.sa_family, addrptr, (
char *)p, len) == 0) {
167 perror(
"coap_print_addr");
171 p += strnlen((
char *)p, len);
173 if (addr->
addr.
sa.sa_family == AF_INET6) {
180 p += snprintf((
char *)p, buf + len - p + 1,
":%d", port);
182 return buf + len - p;
185 unsigned char *p = buf;
188 const unsigned char hex[] =
"0123456789ABCDEF";
195 for (i=0; i < 8; i += 4) {
196 *p++ = hex[(addr->
addr.u16[i] & 0xf000) >> 24];
197 *p++ = hex[(addr->
addr.u16[i] & 0x0f00) >> 16];
198 *p++ = hex[(addr->
addr.u16[i] & 0x00f0) >> 8];
199 *p++ = hex[(addr->
addr.u16[i] & 0x000f)];
204 # warning "IPv4 network addresses will not be included in debug output"
209 if (buf + len - p < 6)
213 p += snprintf((
char *)p, buf + len - p + 1,
":%d", uip_htons(addr->port));
218 return buf + len - p;
221 # warning "inet_ntop() not available, network addresses will not be included in debug output"
231 int encode = 0, have_options = 0;
265 buf,
sizeof(buf), encode ))
276 buf,
sizeof(buf), 0 );
287 unsigned char buf[80];
289 PRINTF(
"v:%d t:%d oc:%d c:%d id:%u",
294 if (pdu->
hdr->optcnt) {
304 buf,
sizeof(buf), 0))
305 PRINTF(
" %d:%s", opt_iter.
type, buf);
312 buf,
sizeof(buf), 0 );
313 PRINTF(
" d:%s", buf);
336 fprintf(log_fd,
"%s ", timebuf);
339 fprintf(log_fd,
"%s ",
loglevels[level]);
341 va_start(ap, format);
342 vfprintf(log_fd, format, ap);
358 PRINTF(
"%s ", timebuf);
363 va_start(ap, format);