Compiling examples/er-rest-example for the avr-raven gives:
integer overflow in expression [-Woverflow]
On the AVR int is 16 bit and some calculations may overflow.
This happens for example with multiplications involving
CLOCK_SECOND where all the operands are of type int.
Casting one of the operands to clock_time_t forces
the arithmetic to clock_time_t without increasing the size
of the program (the calculation is performed at compile time).
In the newest version of contiki, the function uip_nd6_ns_input() is obsolete.
ns_input function is defined static to be restrictively used in uip-nd6.c file, so removing the obsolete function requires moving the function description to the new function
No need to do the unspecified address twice.
#if UIP_ND6_DEF_MAXDADNS > 0
if(uip_is_addr_unspecified(&UIP_IP_BUF->srcipaddr)) {
/* DAD CASE */
..........
#else /* UIP_ND6_DEF_MAXDADNS > 0 */
if(uip_is_addr_unspecified(&UIP_IP_BUF->srcipaddr)) {
/* DAD CASE */
goto discard;
#endif /* UIP_ND6_DEF_MAXDADNS > 0 */
this logic will bring confusion, especially if you analyze the other ND functions (NUD, address resolution) .
The while loops waiting ACK_WAIT_TIME and AFTER_ACK_DETECTED_WAIT_TIME
cause infinite loop under the cooja-ip64 platform. This is because
RTIMER_NOW(), rtimer_arch_now(), has been changed not to call
cooja_mt_yield() in it since rtimer was reimplemented as a higher
resolution timer.
In order to avoid the infinite loop, cooja_mt_yield() needs to be
called inside the while loops under the platform as well as the cooja
platform.
this PR to update uip-ds.h comments, this small change is made to ease the track of Tables implementation places
remove definition of UIP_CONF_DS6_ROUTE_NBU
retire 2 old macros DS6_NBR_NBU, DS6_ROUTE_NBU
Update uip-ds6.h
Update contiki-conf.h
Update contiki-conf.h
Update contiki-conf.h
fix doxygen comment
Update uip-ds6.h
When it goes to the default label in the switch statement of
rpl_remove_header(), UIP_EXT_BUF does not always point to an IPv6 extension
header. "Move to next header" process should be done only in case of
UIP_PROTO_DESTO. Otherwise, it returns with doing nothing.
Fix these build errors, which are generated if DEBUG is set to 1:
../../core/net/llsec/noncoresec/noncoresec.c: In function 'parse':
../../core/net/llsec/noncoresec/noncoresec.c:198:54: error: expected ')' before 'PRIu32'
PRINTF("noncoresec: received unauthentic frame %"PRIu32"\n",
^
../../core/net/llsec/noncoresec/noncoresec.c:88:28: note: in definition of macro 'PRINTF'
#define PRINTF(...) printf(__VA_ARGS__)
^
../../core/net/llsec/noncoresec/noncoresec.c:198:12: warning: spurious trailing '%' in format [-Wformat=]
PRINTF("noncoresec: received unauthentic frame %"PRIu32"\n",
^
../../core/net/llsec/noncoresec/noncoresec.c:88:28: note: in definition of macro 'PRINTF'
#define PRINTF(...) printf(__VA_ARGS__)
^
../../core/net/llsec/noncoresec/noncoresec.c:198:12: warning: spurious trailing '%' in format [-Wformat=]
PRINTF("noncoresec: received unauthentic frame %"PRIu32"\n",
^
../../core/net/llsec/noncoresec/noncoresec.c:88:28: note: in definition of macro 'PRINTF'
#define PRINTF(...) printf(__VA_ARGS__)
^
../../core/net/llsec/noncoresec/noncoresec.c:231:54: error: expected ')' before 'PRIu32'
PRINTF("noncoresec: received replayed frame %"PRIu32"\n",
^
../../core/net/llsec/noncoresec/noncoresec.c:88:28: note: in definition of macro 'PRINTF'
#define PRINTF(...) printf(__VA_ARGS__)
^
../../core/net/llsec/noncoresec/noncoresec.c:231:15: warning: spurious trailing '%' in format [-Wformat=]
PRINTF("noncoresec: received replayed frame %"PRIu32"\n",
^
../../core/net/llsec/noncoresec/noncoresec.c:88:28: note: in definition of macro 'PRINTF'
#define PRINTF(...) printf(__VA_ARGS__)
^
../../core/net/llsec/noncoresec/noncoresec.c:231:15: warning: spurious trailing '%' in format [-Wformat=]
PRINTF("noncoresec: received replayed frame %"PRIu32"\n",
^
../../core/net/llsec/noncoresec/noncoresec.c:88:28: note: in definition of macro 'PRINTF'
#define PRINTF(...) printf(__VA_ARGS__)
^
PRIu32 is not defined, so replace it with a standard format directive.
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
When an UDP packet too big to fit in the uIP packet buffer is to be sent, the part fitting in the uIP buffer is copied to it (so no buffer overflow occurs) but uIP actually sends a packet of the original size therefore a buffer over-read occurs.
This modification makes uIP discard the UDP packets that do not fit in the uIP packet buffer.
According to RFC 2460 the length field of the Hop-by-Hop options header
should use a 8-octet unit (multiple of 8 byte).
In a normal configuration the RPL_HOP_BY_HOP_LEN define is 8, so the
current implementation works, but if RPL_HOP_BY_HOP_LEN is a multiple
of 8 the length is not calculated correctly.