Merge branch 'contiki' into osd

ico
Harald Pichler 2014-12-07 15:24:00 +01:00
commit a02be51f08
274 changed files with 1159 additions and 1285 deletions

View File

@ -14,10 +14,6 @@ ifeq ($(TARGET),)
endif
endif
ifeq ($(UIP_CONF_IPV6),1)
CFLAGS += -DUIP_CONF_IPV6=1
endif
ifeq ($(DEFINES),)
-include Makefile.$(TARGET).defines
ifneq ($(DEFINES),)
@ -67,6 +63,43 @@ CFLAGS += -DCONTIKI=1 -DCONTIKI_TARGET_$(TARGET_UPPERCASE)=1
MODULES += core/sys core/dev core/lib
# Include IPv6, IPv4, and/or Rime
HAS_STACK = 0
ifeq ($(CONTIKI_WITH_IPV4),1)
HAS_STACK = 1
CFLAGS += -DNETSTACK_CONF_WITH_IPV4=1
MODULES += core/net/ipv4 core/net/ip
endif
ifeq ($(CONTIKI_WITH_RIME),1)
HAS_STACK = 1
CFLAGS += -DNETSTACK_CONF_WITH_RIME=1
MODULES += core/net/rime
endif
# Make IPv6 the default stack
ifeq ($(HAS_STACK),0)
ifneq ($(CONTIKI_WITH_IPV6),0)
CONTIKI_WITH_IPV6 = 1
endif
endif
ifeq ($(CONTIKI_WITH_IPV6),1)
CFLAGS += -DNETSTACK_CONF_WITH_IPV6=1
ifneq ($(CONTIKI_WITH_RPL),0)
CONTIKI_WITH_RPL = 1
endif
MODULES += core/net/ipv6 core/net/ip
endif
ifeq ($(CONTIKI_WITH_RPL),1)
CFLAGS += -DUIP_CONF_IPV6_RPL=1
MODULES += core/net/rpl
else
CFLAGS += -DUIP_CONF_IPV6_RPL=0
endif
CONTIKI_SOURCEFILES += $(CONTIKIFILES)
CONTIKIDIRS += ${addprefix $(CONTIKI)/core/,dev lib net net/llsec net/mac net/rime \

View File

@ -67,7 +67,7 @@
/* direct access into the buffer */
#define UIP_IP_BUF ((struct uip_ip_hdr *)&uip_buf[UIP_LLH_LEN])
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#define UIP_UDP_BUF ((struct uip_udp_hdr *)&uip_buf[uip_l2_l3_hdr_len])
#else
#define UIP_UDP_BUF ((struct uip_udp_hdr *)&uip_buf[UIP_LLH_LEN + UIP_IPH_LEN])

View File

@ -51,7 +51,7 @@ struct powertrace_sniff_stats {
uint32_t num_input, num_output;
uint32_t input_txtime, input_rxtime;
uint32_t output_txtime, output_rxtime;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uint16_t proto; /* includes proto + possibly flags */
#endif
uint16_t channel;
@ -135,7 +135,7 @@ powertrace_print(char *str)
for(s = list_head(stats_list); s != NULL; s = list_item_next(s)) {
#if ! UIP_CONF_IPV6
#if ! NETSTACK_CONF_WITH_IPV6
printf("%s %lu SP %d.%d %lu %u %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu (channel %d radio %d.%02d%% / %d.%02d%%)\n",
str, clock_time(), linkaddr_node_addr.u8[0], linkaddr_node_addr.u8[1], seqno,
s->channel,
@ -249,7 +249,7 @@ add_packet_stats(int input_or_output)
put it on the list. */
for(s = list_head(stats_list); s != NULL; s = list_item_next(s)) {
if(s->channel == packetbuf_attr(PACKETBUF_ATTR_CHANNEL)
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
&& s->proto == packetbuf_attr(PACKETBUF_ATTR_NETWORK_ID)
#endif
) {
@ -262,7 +262,7 @@ add_packet_stats(int input_or_output)
if(s != NULL) {
memset(s, 0, sizeof(struct powertrace_sniff_stats));
s->channel = packetbuf_attr(PACKETBUF_ATTR_CHANNEL);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
s->proto = packetbuf_attr(PACKETBUF_ATTR_NETWORK_ID);
#endif
list_add(stats_list, s);
@ -283,7 +283,7 @@ output_sniffer(int mac_status)
add_packet_stats(OUTPUT);
}
/*---------------------------------------------------------------------------*/
#if ! UIP_CONF_IPV6
#if ! NETSTACK_CONF_WITH_IPV6
static void
sniffprint(char *prefix, int seqno)
{

View File

@ -379,3 +379,5 @@ PROCESS_THREAD(servreg_hack_process, ev, data)
PROCESS_END();
}
/*---------------------------------------------------------------------------*/
/** @} */

View File

@ -1,19 +1,35 @@
shell_src = shell.c shell-reboot.c \
shell-vars.c shell-ps.c shell-rime.c shell-sendtest.c \
shell_src = shell.c shell-reboot.c shell-vars.c shell-ps.c \
shell-blink.c shell-text.c shell-time.c \
shell-file.c shell-netfile.c shell-run.c \
shell-rime-ping.c shell-rime-sniff.c shell-rime-netcmd.c \
shell-rime-debug.c shell-rime-debug-runicast.c shell-coffee.c \
shell-wget.c shell-httpd.c shell-irc.c \
shell-file.c shell-run.c \
shell-coffee.c \
shell-power.c \
shell-tcpsend.c shell-udpsend.c shell-ping.c shell-netstat.c \
shell-rime-sendcmd.c shell-download.c shell-rime-neighbors.c \
shell-rime-unicast.c \
shell-base64.c \
shell-netperf.c shell-memdebug.c \
shell-powertrace.c shell-collect-view.c shell-crc.c
shell-memdebug.c \
shell-powertrace.c shell-crc.c
shell_dsc = shell-dsc.c
ifeq ($(CONTIKI_WITH_RIME),1)
shell_src += shell-rime.c shell-sendtest.c shell-netfile.c \
shell-rime-ping.c shell-rime-sniff.c shell-rime-netcmd.c \
shell-rime-debug.c shell-rime-debug-runicast.c \
shell-rime-sendcmd.c shell-download.c shell-rime-neighbors.c \
shell-rime-unicast.c shell-netperf.c \
shell-collect-view.c
APPS += collect-view
include $(CONTIKI)/apps/collect-view/Makefile.collect-view
endif
ifeq ($(CONTIKI_WITH_IPV4),1)
SHELL_WITH_IP = 1
endif
ifeq ($(CONTIKI_WITH_IPV6),1)
SHELL_WITH_IP = 1
endif
ifeq ($(SHELL_WITH_IP),1)
shell_src += shell-wget.c shell-httpd.c shell-irc.c \
shell-tcpsend.c shell-udpsend.c shell-ping.c shell-netstat.c
APPS += webserver
include $(CONTIKI)/apps/webserver/Makefile.webserver
ifndef PLATFORM_BUILD
@ -38,13 +54,11 @@ ifndef PLATFORM_BUILD
override telnet_src = telnet.c
endif
endif
APPS += powertrace
include $(CONTIKI)/apps/powertrace/Makefile.powertrace
APPS += collect-view
include $(CONTIKI)/apps/collect-view/Makefile.collect-view
ifeq ($(TARGET),sky)
shell_src += shell-sky.c shell-exec.c
endif

View File

@ -62,7 +62,7 @@ static unsigned char running;
/*---------------------------------------------------------------------------*/
static void
send_ping(uip_ipaddr_t *dest_addr)
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
{
static uint16_t count;
UIP_IP_BUF->vtc = 0x60;
@ -92,7 +92,7 @@ send_ping(uip_ipaddr_t *dest_addr)
tcpip_ipv6_output();
}
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
{
static uint16_t ipid = 0;
static uint16_t seqno = 0;
@ -128,7 +128,7 @@ send_ping(uip_ipaddr_t *dest_addr)
tcpip_output();
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(shell_ping_process, ev, data)
{

View File

@ -64,7 +64,7 @@ webserver_log_file(uip_ipaddr_t *requester, char *file)
{
/* Print out IP address of requesting host. */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#if WEBSERVER_CONF_ADDRESSES
char buf[48];
uint8_t j;
@ -78,7 +78,7 @@ webserver_log_file(uip_ipaddr_t *requester, char *file)
char buf[20];
sprintf(buf, "%d.%d.%d.%d: ", requester->u8[0], requester->u8[1],
requester->u8[2], requester->u8[3]);
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
//log_message(buf, file);
printf("%s%s\n", buf, file);
}

View File

@ -157,7 +157,7 @@ make_tcp_stats(void *arg)
struct httpd_state *s = (struct httpd_state *)arg;
conn = &uip_conns[s->u.count];
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
char buf[48];
httpd_sprint_ip6(conn->ripaddr, buf);
return snprintf((char *)uip_appdata, uip_mss(),
@ -184,7 +184,7 @@ make_tcp_stats(void *arg)
conn->timer,
(uip_outstanding(conn))? '*':' ',
(uip_stopped(conn))? '!':' ');
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
}
/*---------------------------------------------------------------------------*/
static
@ -226,7 +226,7 @@ PT_THREAD(processes(struct httpd_state *s, char *ptr))
}
PSOCK_END(&s->sout);
}
#if WEBSERVER_CONF_STATUSPAGE && UIP_CONF_IPV6
#if WEBSERVER_CONF_STATUSPAGE && NETSTACK_CONF_WITH_IPV6
/* These cgi's are invoked by the status.shtml page in /apps/webserver/httpd-fs.
* To keep the webserver build small that 160 byte page is not present in the
* default httpd-fsdata.c file. Run the PERL script /../../tools/makefsdata from the
@ -357,7 +357,7 @@ httpd_cgi_add(struct httpd_cgi_call *c)
}
}
/*---------------------------------------------------------------------------*/
#if WEBSERVER_CONF_STATUSPAGE && UIP_CONF_IPV6
#if WEBSERVER_CONF_STATUSPAGE && NETSTACK_CONF_WITH_IPV6
static const char adrs_name[] HTTPD_STRING_ATTR = "addresses";
static const char nbrs_name[] HTTPD_STRING_ATTR = "neighbors";
static const char rtes_name[] HTTPD_STRING_ATTR = "routes";
@ -365,7 +365,7 @@ static const char rtes_name[] HTTPD_STRING_ATTR = "routes";
HTTPD_CGI_CALL(file, file_name, file_stats);
HTTPD_CGI_CALL(tcp, tcp_name, tcp_stats);
HTTPD_CGI_CALL(proc, proc_name, processes);
#if WEBSERVER_CONF_STATUSPAGE && UIP_CONF_IPV6
#if WEBSERVER_CONF_STATUSPAGE && NETSTACK_CONF_WITH_IPV6
HTTPD_CGI_CALL(adrs, adrs_name, addresses);
HTTPD_CGI_CALL(nbrs, nbrs_name, neighbors);
HTTPD_CGI_CALL(rtes, rtes_name, routes);
@ -377,7 +377,7 @@ httpd_cgi_init(void)
httpd_cgi_add(&file);
httpd_cgi_add(&tcp);
httpd_cgi_add(&proc);
#if WEBSERVER_CONF_STATUSPAGE && UIP_CONF_IPV6
#if WEBSERVER_CONF_STATUSPAGE && NETSTACK_CONF_WITH_IPV6
httpd_cgi_add(&adrs);
httpd_cgi_add(&nbrs);
httpd_cgi_add(&rtes);

View File

@ -342,7 +342,7 @@ httpd_init(void)
memb_init(&conns);
httpd_cgi_init();
}
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/*---------------------------------------------------------------------------*/
uint8_t
httpd_sprint_ip6(uip_ip6addr_t addr, char * result)
@ -374,5 +374,5 @@ httpd_sprint_ip6(uip_ip6addr_t addr, char * result)
*result=0;
return (result - starting);
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/*---------------------------------------------------------------------------*/

View File

@ -59,8 +59,8 @@ struct httpd_state {
void httpd_init(void);
void httpd_appcall(void *state);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uint8_t httpd_sprint_ip6(uip_ip6addr_t addr, char * result);
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
#endif /* HTTPD_H_ */

View File

@ -67,7 +67,7 @@ webserver_log_file(uip_ipaddr_t *requester, char *file)
#if LOG_CONF_ENABLED
/* Print out IP address of requesting host. */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
char buf[48];
uint8_t j;
j=httpd_sprint_ip6((uip_ip6addr_t)*requester, buf);
@ -76,7 +76,7 @@ webserver_log_file(uip_ipaddr_t *requester, char *file)
char buf[20];
sprintf(buf, "%d.%d.%d.%d: ", requester->u8[0], requester->u8[1],
requester->u8[2], requester->u8[3]);
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
log_message(buf, file);
#endif /* LOG_CONF_ENABLED */

View File

@ -123,11 +123,11 @@
* project-specific configuration to save memory.
*/
/* UIP_CONF_IPV6 specifies whether or not IPv6 should be used. If IPv6
/* NETSTACK_CONF_WITH_IPV6 specifies whether or not IPv6 should be used. If IPv6
is not used, IPv4 is used instead. */
#ifndef UIP_CONF_IPV6
#define UIP_CONF_IPV6 0
#endif /* UIP_CONF_IPV6 */
#ifndef NETSTACK_CONF_WITH_IPV6
#define NETSTACK_CONF_WITH_IPV6 0
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* UIP_CONF_BUFFER_SIZE specifies how much memory should be reserved
for the uIP packet buffer. This sets an upper bound on the largest

View File

@ -45,10 +45,10 @@
#include "net/ip/uip-udp-packet.h"
#include "net/ip/simple-udp.h"
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#include "net/ipv6/uip-icmp6.h"
#include "net/ipv6/uip-ds6.h"
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
#include "net/ip/resolv.h"

View File

@ -96,7 +96,6 @@ slip_set_input_callback(void (*c)(void))
/* slip_send: forward (IPv4) packets with {UIP_FW_NETIF(..., slip_send)}
* was used in slip-bridge.c
*/
//#if WITH_UIP
uint8_t
slip_send(void)
{
@ -125,7 +124,6 @@ slip_send(void)
return UIP_FW_OK;
}
//#endif /* WITH_UIP */
/*---------------------------------------------------------------------------*/
uint8_t
slip_write(const void *_ptr, int len)
@ -264,7 +262,7 @@ PROCESS_THREAD(slip_process, ev, data)
/* Move packet from rxbuf to buffer provided by uIP. */
uip_len = slip_poll_handler(&uip_buf[UIP_LLH_LEN],
UIP_BUFSIZE - UIP_LLH_LEN);
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
if(uip_len == 4 && strncmp((char*)&uip_buf[UIP_LLH_LEN], "?IPA", 4) == 0) {
char buf[8];
memcpy(&buf[0], "=IPA", 4);
@ -298,7 +296,7 @@ PROCESS_THREAD(slip_process, ev, data)
uip_len = 0;
SLIP_STATISTICS(slip_ip_drop++);
}
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
if(uip_len > 0) {
if(input_callback) {
input_callback();
@ -309,7 +307,7 @@ PROCESS_THREAD(slip_process, ev, data)
tcpip_input();
#endif
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
}
PROCESS_END();

View File

@ -151,8 +151,13 @@ mmem_free(struct mmem *m)
void
mmem_init(void)
{
static int inited = 0;
if(inited) {
return;
}
list_init(mmemlist);
avail_memory = MMEM_SIZE;
inited = 1;
}
/*---------------------------------------------------------------------------*/

View File

@ -185,7 +185,7 @@ strcasecmp(const char *s1, const char *s2)
#define DNS_TYPE_ANY 255
#define DNS_TYPE_NSEC 47
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#define NATIVE_DNS_TYPE DNS_TYPE_AAAA /* IPv6 */
#else
#define NATIVE_DNS_TYPE DNS_TYPE_A /* IPv4 */
@ -227,19 +227,16 @@ struct dns_hdr {
uint16_t numextrarr;
};
#define RESOLV_ENCODE_INDEX(i) (uip_htons(i+1))
#define RESOLV_DECODE_INDEX(i) (unsigned char)(uip_ntohs(i-1))
/** These default values for the DNS server are Google's public DNS:
* <https://developers.google.com/speed/public-dns/docs/using>
*/
static uip_ipaddr_t resolv_default_dns_server =
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
{ { 0x20, 0x01, 0x48, 0x60, 0x48, 0x60, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88 } };
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
{ { 8, 8, 8, 8 } };
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/** \internal The DNS answer message structure. */
struct dns_answer {
@ -249,7 +246,7 @@ struct dns_answer {
uint16_t class;
uint16_t ttl[2];
uint16_t len;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uint8_t ipaddr[16];
#else
uint8_t ipaddr[4];
@ -264,6 +261,7 @@ struct namemap {
#define STATE_DONE 4
uint8_t state;
uint8_t tmr;
uint16_t id;
uint8_t retries;
uint8_t seqno;
#if RESOLV_SUPPORTS_RECORD_EXPIRATION
@ -315,13 +313,13 @@ enum {
static uint8_t mdns_state;
static const uip_ipaddr_t resolv_mdns_addr =
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
{ { 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb } };
#include "net/ipv6/uip-ds6.h"
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
{ { 224, 0, 0, 251 } };
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
static int mdns_needs_host_announce;
PROCESS(mdns_probe_process, "mDNS probe");
@ -506,9 +504,7 @@ start_name_collision_check(clock_time_t after)
static unsigned char *
mdns_write_announce_records(unsigned char *queryptr, uint8_t *count)
{
struct dns_answer *ans;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uint8_t i;
for(i = 0; i < UIP_DS6_ADDR_NB; ++i) {
@ -524,7 +520,6 @@ mdns_write_announce_records(unsigned char *queryptr, uint8_t *count)
*queryptr++ = 0xc0;
*queryptr++ = sizeof(struct dns_hdr);
}
ans = (struct dns_answer *)queryptr;
*queryptr++ = (uint8_t) ((NATIVE_DNS_TYPE) >> 8);
*queryptr++ = (uint8_t) ((NATIVE_DNS_TYPE));
@ -545,7 +540,9 @@ mdns_write_announce_records(unsigned char *queryptr, uint8_t *count)
++(*count);
}
}
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
struct dns_answer *ans;
queryptr = encode_name(queryptr, resolv_hostname);
ans = (struct dns_answer *)queryptr;
ans->type = UIP_HTONS(NATIVE_DNS_TYPE);
@ -556,7 +553,7 @@ mdns_write_announce_records(unsigned char *queryptr, uint8_t *count)
uip_gethostaddr((uip_ipaddr_t *) ans->ipaddr);
queryptr = (unsigned char *)ans + sizeof(*ans);
++(*count);
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
return queryptr;
}
/*---------------------------------------------------------------------------*/
@ -585,17 +582,17 @@ mdns_prep_host_announce_packet(void)
0x00,
0x04,
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
0x00,
0x00,
0x00,
0x08,
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
0x40,
0x00,
0x00,
0x00,
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
}
};
@ -603,8 +600,6 @@ mdns_prep_host_announce_packet(void)
uint8_t total_answers = 0;
struct dns_answer *ans;
/* Be aware that, unless `ARCH_DOESNT_NEED_ALIGNED_STRUCTS` is set,
* writing directly to the uint16_t members of this struct is an error. */
struct dns_hdr *hdr = (struct dns_hdr *)uip_appdata;
@ -703,7 +698,8 @@ check_entries(void)
}
hdr = (struct dns_hdr *)uip_appdata;
memset(hdr, 0, sizeof(struct dns_hdr));
hdr->id = RESOLV_ENCODE_INDEX(i);
hdr->id = random_rand();
namemapptr->id = hdr->id;
#if RESOLV_CONF_SUPPORTS_MDNS
if(!namemapptr->is_mdns || namemapptr->is_probe) {
hdr->flags1 = DNS_FLAG1_RD;
@ -903,10 +899,13 @@ newdata(void)
} else
#endif /* RESOLV_CONF_SUPPORTS_MDNS */
{
/* The ID in the DNS header should be our entry into the name table. */
i = RESOLV_DECODE_INDEX(hdr->id);
namemapptr = &names[i];
for(i = 0; i < RESOLV_ENTRIES; ++i) {
namemapptr = &names[i];
if(namemapptr->state == STATE_ASKING &&
namemapptr->id == hdr->id) {
break;
}
}
if(i >= RESOLV_ENTRIES || i < 0 || namemapptr->state != STATE_ASKING) {
PRINTF("resolver: DNS response has bad ID (%04X) \n", uip_ntohs(hdr->id));
@ -1141,7 +1140,7 @@ PROCESS_THREAD(resolv_process, ev, data)
PRINTF("resolver: Supports MDNS.\n");
uip_udp_bind(resolv_conn, UIP_HTONS(MDNS_PORT));
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uip_ds6_maddr_add(&resolv_mdns_addr);
#else
/* TODO: Is there anything we need to do here for IPv4 multicast? */
@ -1200,6 +1199,16 @@ PROCESS_THREAD(resolv_process, ev, data)
PROCESS_END();
}
/*---------------------------------------------------------------------------*/
static void
init(void)
{
static uint8_t initialized = 0;
if(!initialized) {
process_start(&resolv_process, NULL);
initialized = 1;
}
}
/*---------------------------------------------------------------------------*/
#if RESOLV_AUTO_REMOVE_TRAILING_DOTS
static const char *
remove_trailing_dots(const char *name) {
@ -1233,6 +1242,8 @@ resolv_query(const char *name)
register struct namemap *nameptr = 0;
init();
lseq = lseqi = 0;
/* Remove trailing dots, if present. */
@ -1316,12 +1327,12 @@ resolv_lookup(const char *name, uip_ipaddr_t ** ipaddr)
#if UIP_CONF_LOOPBACK_INTERFACE
if(strcmp(name, "localhost")) {
static uip_ipaddr_t loopback =
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } };
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
{ { 127, 0, 0, 1 } };
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
if(ipaddr) {
*ipaddr = &loopback;
}
@ -1369,7 +1380,8 @@ resolv_lookup(const char *name, uip_ipaddr_t ** ipaddr)
#if VERBOSE_DEBUG
switch (ret) {
case RESOLV_STATUS_CACHED:{
case RESOLV_STATUS_CACHED:
if(ipaddr) {
PRINTF("resolver: Found \"%s\" in cache.\n", name);
const uip_ipaddr_t *addr = *ipaddr;
@ -1428,7 +1440,7 @@ resolv_found(char *name, uip_ipaddr_t * ipaddr)
#if RESOLV_CONF_SUPPORTS_MDNS
if(strncasecmp(resolv_hostname, name, strlen(resolv_hostname)) == 0 &&
ipaddr
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
&& !uip_ds6_is_my_addr(ipaddr)
#else
&& uip_ipaddr_cmp(&uip_hostaddr, ipaddr) != 0

View File

@ -44,7 +44,7 @@
/**
* \defgroup simple-udp
* \defgroup simple-udp A simple UDP API
*
* The default Contiki UDP API is difficult to use. The simple-udp
* module provides a significantly simpler API.

View File

@ -42,7 +42,7 @@
#include "net/ip/uip-split.h"
#include "net/ip/uip-packetqueue.h"
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#include "net/ipv6/uip-nd6.h"
#include "net/ipv6/uip-ds6.h"
#endif
@ -80,7 +80,7 @@ process_event_t tcpip_icmp6_event;
/* Periodic check of active connections. */
static struct etimer periodic;
#if UIP_CONF_IPV6 && UIP_CONF_IPV6_REASSEMBLY
#if NETSTACK_CONF_WITH_IPV6 && UIP_CONF_IPV6_REASSEMBLY
/* Timer for reassembly. */
extern struct etimer uip_reass_timer;
#endif
@ -107,7 +107,7 @@ enum {
};
/* Called on IP packet output. */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
static uint8_t (* outputfunc)(const uip_lladdr_t *a);
@ -194,7 +194,7 @@ packet_input(void)
#if UIP_CONF_TCP_SPLIT
uip_split_output();
#else /* UIP_CONF_TCP_SPLIT */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
tcpip_ipv6_output();
#else
PRINTF("tcpip packet_input forward output len %d\n", uip_len);
@ -213,7 +213,7 @@ packet_input(void)
#if UIP_CONF_TCP_SPLIT
uip_split_output();
#else /* UIP_CONF_TCP_SPLIT */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
tcpip_ipv6_output();
#else
PRINTF("tcpip packet_input output len %d\n", uip_len);
@ -331,11 +331,11 @@ udp_broadcast_new(uint16_t port, void *appstate)
uip_ipaddr_t addr;
struct uip_udp_conn *conn;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uip_create_linklocal_allnodes_mcast(&addr);
#else
uip_ipaddr(&addr, 255,255,255,255);
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
conn = udp_new(&addr, port, appstate);
if(conn != NULL) {
udp_bind(conn, port);
@ -434,7 +434,7 @@ eventhandler(process_event_t ev, process_data_t data)
connections. */
etimer_restart(&periodic);
uip_periodic(i);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
tcpip_ipv6_output();
#else
if(uip_len > 0) {
@ -442,7 +442,7 @@ eventhandler(process_event_t ev, process_data_t data)
tcpip_output();
PRINTF("tcpip_output after periodic len %d\n", uip_len);
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
}
}
#endif /* UIP_TCP */
@ -451,7 +451,7 @@ eventhandler(process_event_t ev, process_data_t data)
#endif /* UIP_CONF_IP_FORWARD */
}
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#if UIP_CONF_IPV6_REASSEMBLY
/*
* check the timer for reassembly
@ -483,7 +483,7 @@ eventhandler(process_event_t ev, process_data_t data)
uip_ds6_periodic();
tcpip_ipv6_output();
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
}
break;
@ -491,14 +491,14 @@ eventhandler(process_event_t ev, process_data_t data)
case TCP_POLL:
if(data != NULL) {
uip_poll_conn(data);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
tcpip_ipv6_output();
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
if(uip_len > 0) {
PRINTF("tcpip_output from tcp poll len %d\n", uip_len);
tcpip_output();
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* Start the periodic polling, if it isn't already active. */
start_periodic_tcp_timer();
}
@ -508,7 +508,7 @@ eventhandler(process_event_t ev, process_data_t data)
case UDP_POLL:
if(data != NULL) {
uip_udp_periodic_conn(data);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
tcpip_ipv6_output();
#else
if(uip_len > 0) {
@ -530,12 +530,12 @@ tcpip_input(void)
{
process_post_synch(&tcpip_process, PACKET_INPUT, NULL);
uip_len = 0;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uip_ext_len = 0;
#endif /*UIP_CONF_IPV6*/
#endif /*NETSTACK_CONF_WITH_IPV6*/
}
/*---------------------------------------------------------------------------*/
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
void
tcpip_ipv6_output(void)
{
@ -616,7 +616,7 @@ tcpip_ipv6_output(void)
rpl_repair_root(instance->instance_id);
}
#endif /* UIP_CONF_RPL */
#endif /* UIP_CONF_IPV6_RPL */
uip_ds6_route_rm(route);
/* We don't have a nexthop to send the packet to, so we drop
@ -729,7 +729,7 @@ tcpip_ipv6_output(void)
uip_len = 0;
uip_ext_len = 0;
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/*---------------------------------------------------------------------------*/
#if UIP_UDP
void
@ -818,7 +818,7 @@ PROCESS_THREAD(tcpip_process, ev, data)
UIP_FALLBACK_INTERFACE.init();
#endif
/* initialize RPL if configured for using RPL */
#if UIP_CONF_IPV6 && UIP_CONF_IPV6_RPL
#if NETSTACK_CONF_WITH_IPV6 && UIP_CONF_IPV6_RPL
rpl_init();
#endif /* UIP_CONF_IPV6_RPL */

View File

@ -340,7 +340,7 @@ CCIF void tcpip_input(void);
* \brief Output packet to layer 2
* The eventual parameter is the MAC address of the destination.
*/
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uint8_t tcpip_output(const uip_lladdr_t *);
void tcpip_set_outputfunc(uint8_t (* f)(const uip_lladdr_t *));
#else
@ -351,7 +351,7 @@ void tcpip_set_outputfunc(uint8_t (* f)(void));
/**
* \brief This function does address resolution and then calls tcpip_output
*/
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
void tcpip_ipv6_output(void);
#endif

View File

@ -47,7 +47,7 @@ uip_debug_ipaddr_print(const uip_ipaddr_t *addr)
printf("(NULL IP addr)");
return;
}
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uint16_t a;
unsigned int i;
int f;
@ -66,9 +66,9 @@ uip_debug_ipaddr_print(const uip_ipaddr_t *addr)
PRINTA("%x", a);
}
}
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
PRINTA("%u.%u.%u.%u", addr->u8[0], addr->u8[1], addr->u8[2], addr->u8[3]);
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
}
/*---------------------------------------------------------------------------*/
void

View File

@ -73,33 +73,33 @@ uip_split_output(void)
/* Create the first packet. This is done by altering the length
field of the IP header and updating the checksums. */
uip_len = len1 + UIP_TCPIP_HLEN;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/* For IPv6, the IP length field does not include the IPv6 IP header
length. */
BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
BUF->len[0] = uip_len >> 8;
BUF->len[1] = uip_len & 0xff;
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* Recalculate the TCP checksum. */
BUF->tcpchksum = 0;
BUF->tcpchksum = ~(uip_tcpchksum());
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
/* Recalculate the IP checksum. */
BUF->ipchksum = 0;
BUF->ipchksum = ~(uip_ipchksum());
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* Transmit the first packet. */
/* uip_fw_output();*/
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
tcpip_ipv6_output();
#else
tcpip_output();
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* Now, create the second packet. To do this, it is not enough to
just alter the length field, but we must also update the TCP
@ -107,15 +107,15 @@ uip_split_output(void)
memory. This place is detemined by the length of the first
packet (len1). */
uip_len = len2 + UIP_TCPIP_HLEN;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/* For IPv6, the IP length field does not include the IPv6 IP header
length. */
BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
BUF->len[0] = uip_len >> 8;
BUF->len[1] = uip_len & 0xff;
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* uip_appdata += len1;*/
memcpy(uip_appdata, (uint8_t *)uip_appdata + len1, len2);
@ -130,29 +130,29 @@ uip_split_output(void)
BUF->tcpchksum = 0;
BUF->tcpchksum = ~(uip_tcpchksum());
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
/* Recalculate the IP checksum. */
BUF->ipchksum = 0;
BUF->ipchksum = ~(uip_ipchksum());
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* Transmit the second packet. */
/* uip_fw_output();*/
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
tcpip_ipv6_output();
#else
tcpip_output();
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
return;
}
#endif /* UIP_TCP */
/* uip_fw_output();*/
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
tcpip_ipv6_output();
#else
tcpip_output();
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
}
/*-----------------------------------------------------------------------------*/

View File

@ -66,7 +66,7 @@ uip_udp_packet_send(struct uip_udp_conn *c, const void *data, int len)
}
#endif /* UIP_IPV6_MULTICAST */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
tcpip_ipv6_output();
#else
if(uip_len > 0) {

View File

@ -53,12 +53,12 @@
#define UIP_H_
/* Header sizes. */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#define UIP_IPH_LEN 40
#define UIP_FRAGH_LEN 8
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
#define UIP_IPH_LEN 20 /* Size of IP header */
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
#define UIP_UDPH_LEN 8 /* Size of UDP header */
#define UIP_TCPH_LEN 20 /* Size of TCP header */
@ -75,7 +75,7 @@
+ IP header */
#define UIP_LLIPH_LEN (UIP_LLH_LEN + UIP_IPH_LEN) /* size of L2
+ IP header */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/**
* The sums below are quite used in ND. When used for uip_buf, we
* include link layer length when used for uip_len, we do not, hence
@ -86,7 +86,7 @@
#define uip_l2_l3_icmp_hdr_len (UIP_LLH_LEN + UIP_IPH_LEN + uip_ext_len + UIP_ICMPH_LEN)
#define uip_l3_hdr_len (UIP_IPH_LEN + uip_ext_len)
#define uip_l3_icmp_hdr_len (UIP_IPH_LEN + uip_ext_len + UIP_ICMPH_LEN)
#endif /*UIP_CONF_IPV6*/
#endif /*NETSTACK_CONF_WITH_IPV6*/
#include "net/ip/uipopt.h"
@ -108,11 +108,11 @@ typedef union uip_ip6addr_t {
uint16_t u16[8];
} uip_ip6addr_t;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
typedef uip_ip6addr_t uip_ipaddr_t;
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
typedef uip_ip4addr_t uip_ipaddr_t;
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/*---------------------------------------------------------------------------*/
@ -1056,11 +1056,11 @@ struct uip_udp_conn *uip_udp_new(const uip_ipaddr_t *ripaddr, uint16_t rport);
(addr1)->u16[1] == (addr2)->u16[1])
#define uip_ip6addr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0)
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#define uip_ipaddr_cmp(addr1, addr2) uip_ip6addr_cmp(addr1, addr2)
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
#define uip_ipaddr_cmp(addr1, addr2) uip_ip4addr_cmp(addr1, addr2)
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/**
* Compare two IP addresses with netmasks
@ -1494,13 +1494,13 @@ struct uip_stats {
checksum. */
} udp; /**< UDP statistics. */
#endif /* UIP_UDP */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
struct {
uip_stats_t drop; /**< Number of dropped ND6 packets. */
uip_stats_t recv; /**< Number of recived ND6 packets */
uip_stats_t sent; /**< Number of sent ND6 packets */
} nd6;
#endif /*UIP_CONF_IPV6*/
#endif /*NETSTACK_CONF_WITH_IPV6*/
};
@ -1610,7 +1610,7 @@ void uip_process(uint8_t flag);
/* The TCP and IP headers. */
struct uip_tcpip_hdr {
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/* IPv6 header. */
uint8_t vtc,
tcflow;
@ -1618,7 +1618,7 @@ struct uip_tcpip_hdr {
uint8_t len[2];
uint8_t proto, ttl;
uip_ip6addr_t srcipaddr, destipaddr;
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
/* IPv4 header. */
uint8_t vhl,
tos,
@ -1629,7 +1629,7 @@ struct uip_tcpip_hdr {
proto;
uint16_t ipchksum;
uip_ipaddr_t srcipaddr, destipaddr;
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* TCP header. */
uint16_t srcport,
@ -1646,7 +1646,7 @@ struct uip_tcpip_hdr {
/* The ICMP and IP headers. */
struct uip_icmpip_hdr {
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/* IPv6 header. */
uint8_t vtc,
tcf;
@ -1654,7 +1654,7 @@ struct uip_icmpip_hdr {
uint8_t len[2];
uint8_t proto, ttl;
uip_ip6addr_t srcipaddr, destipaddr;
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
/* IPv4 header. */
uint8_t vhl,
tos,
@ -1665,21 +1665,21 @@ struct uip_icmpip_hdr {
proto;
uint16_t ipchksum;
uip_ipaddr_t srcipaddr, destipaddr;
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* ICMP header. */
uint8_t type, icode;
uint16_t icmpchksum;
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
uint16_t id, seqno;
uint8_t payload[1];
#endif /* !UIP_CONF_IPV6 */
#endif /* !NETSTACK_CONF_WITH_IPV6 */
};
/* The UDP and IP headers. */
struct uip_udpip_hdr {
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/* IPv6 header. */
uint8_t vtc,
tcf;
@ -1687,7 +1687,7 @@ struct uip_udpip_hdr {
uint8_t len[2];
uint8_t proto, ttl;
uip_ip6addr_t srcipaddr, destipaddr;
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
/* IP header. */
uint8_t vhl,
tos,
@ -1698,7 +1698,7 @@ struct uip_udpip_hdr {
proto;
uint16_t ipchksum;
uip_ipaddr_t srcipaddr, destipaddr;
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* UDP header. */
uint16_t srcport,
@ -1714,7 +1714,7 @@ struct uip_udpip_hdr {
*/
/* The IP header */
struct uip_ip_hdr {
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/* IPV6 header */
uint8_t vtc;
uint8_t tcflow;
@ -1722,7 +1722,7 @@ struct uip_ip_hdr {
uint8_t len[2];
uint8_t proto, ttl;
uip_ip6addr_t srcipaddr, destipaddr;
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
/* IPV4 header */
uint8_t vhl,
tos,
@ -1733,7 +1733,7 @@ struct uip_ip_hdr {
proto;
uint16_t ipchksum;
uip_ipaddr_t srcipaddr, destipaddr;
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
};
@ -1842,9 +1842,9 @@ struct uip_tcp_hdr {
struct uip_icmp_hdr {
uint8_t type, icode;
uint16_t icmpchksum;
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
uint16_t id, seqno;
#endif /* !UIP_CONF_IPV6 */
#endif /* !NETSTACK_CONF_WITH_IPV6 */
};
@ -1880,7 +1880,7 @@ struct uip_udp_hdr {
#define UIP_PROTO_ICMP6 58
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/** @{ */
/** \brief extension headers types */
#define UIP_PROTO_HBHO 0
@ -1917,7 +1917,7 @@ struct uip_udp_hdr {
/** @} */
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
#if UIP_FIXEDADDR
@ -1937,7 +1937,7 @@ CCIF extern uip_lladdr_t uip_lladdr;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/** Length of the link local prefix */
#define UIP_LLPREF_LEN 10
@ -2162,7 +2162,7 @@ CCIF extern uip_lladdr_t uip_lladdr;
(((a)->u8[14]) == ((b)->u8[14])) && \
(((a)->u8[15]) == ((b)->u8[15])))
#endif /*UIP_CONF_IPV6*/
#endif /*NETSTACK_CONF_WITH_IPV6*/
/**
* Calculate the Internet checksum over a buffer.

View File

@ -41,7 +41,7 @@
#include "net/ip/uip-debug.h"
/*-----------------------------------------------------------------------------------*/
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
int
uiplib_ip6addrconv(const char *addrstr, uip_ip6addr_t *ipaddr)
{
@ -103,7 +103,7 @@ uiplib_ip6addrconv(const char *addrstr, uip_ip6addr_t *ipaddr)
return 1;
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/*-----------------------------------------------------------------------------------*/
/* Parse a IPv4-address from a string. Returns the number of characters read
* for the address. */

View File

@ -67,11 +67,11 @@
* \retval 0 If the IP address could not be parsed.
* \retval Non-zero If the IP address was parsed.
*/
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#define uiplib_ipaddrconv uiplib_ip6addrconv
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
#define uiplib_ipaddrconv uiplib_ip4addrconv
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
CCIF int uiplib_ip4addrconv(const char *addrstr, uip_ip4addr_t *addr);
CCIF int uiplib_ip6addrconv(const char *addrstr, uip_ip6addr_t *addr);

View File

@ -282,9 +282,9 @@ void uip_log(char *msg);
/** The maximum transmission unit at the IP Layer*/
#define UIP_LINK_MTU 1280
#ifndef UIP_CONF_IPV6
#ifndef NETSTACK_CONF_WITH_IPV6
/** Do we use IPv6 or not (default: no) */
#define UIP_CONF_IPV6 0
#define NETSTACK_CONF_WITH_IPV6 0
#endif
#ifndef UIP_CONF_IPV6_QUEUE_PKT
@ -351,7 +351,7 @@ void uip_log(char *msg);
#ifdef UIP_CONF_UDP_CHECKSUMS
#define UIP_UDP_CHECKSUMS (UIP_CONF_UDP_CHECKSUMS)
#else
#define UIP_UDP_CHECKSUMS (UIP_CONF_IPV6)
#define UIP_UDP_CHECKSUMS (NETSTACK_CONF_WITH_IPV6)
#endif
/**

View File

@ -35,6 +35,8 @@
#include "ip64-conf.h"
#include "lib/random.h"
#include <string.h>
#ifdef IP64_ADDRMAP_CONF_ENTRIES
@ -173,10 +175,8 @@ ip64_addrmap_lookup_port(uint16_t mapped_port, uint8_t protocol)
static void
increase_mapped_port(void)
{
mapped_port++;
if(mapped_port >= LAST_MAPPED_PORT) {
mapped_port = FIRST_MAPPED_PORT;
}
mapped_port = (random_rand() % (LAST_MAPPED_PORT - FIRST_MAPPED_PORT)) +
FIRST_MAPPED_PORT;
}
/*---------------------------------------------------------------------------*/
struct ip64_addrmap_entry *

View File

@ -34,7 +34,7 @@
#include "net/ipv4/uip-fw.h"
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
PROCESS(uip_fw_process, "IP forwarding");
@ -51,4 +51,4 @@ PROCESS_THREAD(uip_fw_process, ev, data)
}
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */

View File

@ -75,15 +75,15 @@
#include "net/ipv4/uip_arp.h"
#include "net/ip/uip_arch.h"
#if !UIP_CONF_IPV6 /* If UIP_CONF_IPV6 is defined, we compile the
#if !NETSTACK_CONF_WITH_IPV6 /* If NETSTACK_CONF_WITH_IPV6 is defined, we compile the
uip6.c file instead of this one. Therefore
this #ifndef removes the entire compilation
output of the uip.c file */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#include "net/ipv4/uip-neighbor.h"
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
#include <string.h>
@ -106,12 +106,12 @@ uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask;
#endif /* UIP_FIXEDADDR */
const uip_ipaddr_t uip_broadcast_addr =
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
{ { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } };
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
{ { 0xff, 0xff, 0xff, 0xff } };
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
const uip_ipaddr_t uip_all_zeroes_addr = { { 0x0, /* rest is 0 */ } };
#if UIP_FIXEDETHADDR
@ -322,11 +322,11 @@ upper_layer_chksum(uint8_t proto)
uint16_t upper_layer_len;
uint16_t sum;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
upper_layer_len = (((uint16_t)(BUF->len[0]) << 8) + BUF->len[1]);
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
upper_layer_len = (((uint16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN;
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* First sum pseudoheader. */
@ -342,14 +342,14 @@ upper_layer_chksum(uint8_t proto)
return (sum == 0) ? 0xffff : uip_htons(sum);
}
/*---------------------------------------------------------------------------*/
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uint16_t
uip_icmp6chksum(void)
{
return upper_layer_chksum(UIP_PROTO_ICMP6);
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/*---------------------------------------------------------------------------*/
uint16_t
uip_tcpchksum(void)
@ -529,7 +529,7 @@ uip_listen(uint16_t port)
/*---------------------------------------------------------------------------*/
/* XXX: IP fragment reassembly: not well-tested. */
#if UIP_REASSEMBLY && !UIP_CONF_IPV6
#if UIP_REASSEMBLY && !NETSTACK_CONF_WITH_IPV6
#define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN)
static uint8_t uip_reassbuf[UIP_REASS_BUFSIZE];
static uint8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)];
@ -828,7 +828,7 @@ uip_process(uint8_t flag)
/* Start of IP input header processing code. */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/* Check validity of the IP header. */
if((BUF->vtc & 0xf0) != 0x60) { /* IP version and header length. */
UIP_STAT(++uip_stat.ip.drop);
@ -836,7 +836,7 @@ uip_process(uint8_t flag)
UIP_LOG("ipv6: invalid version.");
goto drop;
}
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
/* Check validity of the IP header. */
if(BUF->vhl != 0x45) { /* IP version and header length. */
UIP_STAT(++uip_stat.ip.drop);
@ -844,7 +844,7 @@ uip_process(uint8_t flag)
UIP_LOG("ip: invalid version or header length.");
goto drop;
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/* Check the size of the packet. If the size reported to us in
uip_len is smaller the size reported in the IP header, we assume
@ -855,7 +855,7 @@ uip_process(uint8_t flag)
if((BUF->len[0] << 8) + BUF->len[1] <= uip_len) {
uip_len = (BUF->len[0] << 8) + BUF->len[1];
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uip_len += 40; /* The length reported in the IPv6 header is the
length of the payload that follows the
header. However, uIP uses the uip_len variable
@ -865,13 +865,13 @@ uip_process(uint8_t flag)
contains the length of the entire packet. But
for IPv6 we need to add the size of the IPv6
header (40 bytes). */
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
} else {
UIP_LOG("ip: packet shorter than reported in IP header.");
goto drop;
}
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
/* Check the fragment flag. */
if((BUF->ipoffset[0] & 0x3f) != 0 ||
BUF->ipoffset[1] != 0) {
@ -887,13 +887,13 @@ uip_process(uint8_t flag)
goto drop;
#endif /* UIP_REASSEMBLY */
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
if(uip_ipaddr_cmp(&uip_hostaddr, &uip_all_zeroes_addr)) {
/* If we are configured to use ping IP address configuration and
hasn't been assigned an IP address yet, we accept all ICMP
packets. */
#if UIP_PINGADDRCONF && !UIP_CONF_IPV6
#if UIP_PINGADDRCONF && !NETSTACK_CONF_WITH_IPV6
if(BUF->proto == UIP_PROTO_ICMP) {
UIP_LOG("ip: possible ping config packet received.");
goto icmp_input;
@ -924,12 +924,12 @@ uip_process(uint8_t flag)
#endif /* UIP_BROADCAST */
/* Check if the packet is destined for our IP address. */
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
if(!uip_ipaddr_cmp(&BUF->destipaddr, &uip_hostaddr)) {
UIP_STAT(++uip_stat.ip.drop);
goto drop;
}
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
/* For IPv6, packet reception is a little trickier as we need to
make sure that we listen to certain multicast addresses (all
hosts multicast address, and the solicited-node multicast
@ -940,10 +940,10 @@ uip_process(uint8_t flag)
UIP_STAT(++uip_stat.ip.drop);
goto drop;
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
}
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header
checksum. */
UIP_STAT(++uip_stat.ip.drop);
@ -951,7 +951,7 @@ uip_process(uint8_t flag)
UIP_LOG("ip: bad checksum.");
goto drop;
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
#if UIP_TCP
if(BUF->proto == UIP_PROTO_TCP) { /* Check for TCP packet. If so,
@ -967,7 +967,7 @@ uip_process(uint8_t flag)
}
#endif /* UIP_UDP */
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
/* ICMPv4 processing code follows. */
if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from
here. */
@ -1018,7 +1018,7 @@ uip_process(uint8_t flag)
goto ip_send_nolen;
/* End of IPv4 input header processing code. */
#else /* !UIP_CONF_IPV6 */
#else /* !NETSTACK_CONF_WITH_IPV6 */
/* This is IPv6 ICMPv6 processing code. */
DEBUG_PRINTF("icmp6_input: length %d\n", uip_len);
@ -1086,7 +1086,7 @@ uip_process(uint8_t flag)
/* End of IPv6 ICMP processing. */
#endif /* !UIP_CONF_IPV6 */
#endif /* !NETSTACK_CONF_WITH_IPV6 */
#if UIP_UDP
/* UDP input processing. */
@ -1137,7 +1137,7 @@ uip_process(uint8_t flag)
}
UIP_LOG("udp: no matching connection found");
UIP_STAT(++uip_stat.udp.drop);
#if UIP_CONF_ICMP_DEST_UNREACH && !UIP_CONF_IPV6
#if UIP_CONF_ICMP_DEST_UNREACH && !NETSTACK_CONF_WITH_IPV6
/* Copy fields from packet header into payload of this ICMP packet. */
memcpy(&(ICMPBUF->payload[0]), ICMPBUF, UIP_IPH_LEN + 8);
@ -1183,15 +1183,15 @@ uip_process(uint8_t flag)
}
uip_len = uip_slen + UIP_IPUDPH_LEN;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/* For IPv6, the IP length field does not include the IPv6 IP header
length. */
BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
BUF->len[0] = (uip_len >> 8);
BUF->len[1] = (uip_len & 0xff);
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
BUF->ttl = uip_udp_conn->ttl;
BUF->proto = UIP_PROTO_UDP;
@ -1894,15 +1894,15 @@ uip_process(uint8_t flag)
tcp_send_noconn:
BUF->ttl = UIP_TTL;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/* For IPv6, the IP length field does not include the IPv6 IP header
length. */
BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
BUF->len[0] = (uip_len >> 8);
BUF->len[1] = (uip_len & 0xff);
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
BUF->urgp[0] = BUF->urgp[1] = 0;
@ -1912,11 +1912,11 @@ uip_process(uint8_t flag)
#endif
ip_send_nolen:
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
BUF->vtc = 0x60;
BUF->tcflow = 0x00;
BUF->flow = 0x00;
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
BUF->vhl = 0x45;
BUF->tos = 0;
BUF->ipoffset[0] = BUF->ipoffset[1] = 0;
@ -1927,11 +1927,11 @@ uip_process(uint8_t flag)
BUF->ipchksum = 0;
BUF->ipchksum = ~(uip_ipchksum());
DEBUG_PRINTF("uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum());
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
UIP_STAT(++uip_stat.tcp.sent);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
send:
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
DEBUG_PRINTF("Sending packet with length %d (%d)\n", uip_len,
(BUF->len[0] << 8) | BUF->len[1]);
@ -1973,6 +1973,6 @@ uip_send(const void *data, int len)
}
}
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/** @}*/

View File

@ -67,7 +67,6 @@
#define VERBOSE_PRINT_SEED(...)
#endif
#if UIP_CONF_IPV6
/*---------------------------------------------------------------------------*/
/* Data Representation */
/*---------------------------------------------------------------------------*/
@ -1448,5 +1447,3 @@ const struct uip_mcast6_driver roll_tm_driver = {
in,
};
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */

View File

@ -52,7 +52,6 @@
#define DEBUG DEBUG_NONE
#include "net/ip/uip-debug.h"
#if UIP_CONF_IPV6
/*---------------------------------------------------------------------------*/
/* Macros */
/*---------------------------------------------------------------------------*/
@ -207,5 +206,3 @@ const struct uip_mcast6_driver smrf_driver = {
in,
};
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */

View File

@ -45,7 +45,6 @@
#include <stdint.h>
#include <string.h>
#if UIP_CONF_IPV6
/*---------------------------------------------------------------------------*/
/* Size of the multicast routing table */
#ifdef UIP_MCAST6_ROUTE_CONF_ROUTES
@ -129,5 +128,3 @@ uip_mcast6_route_init()
list_init(mcast_route_list);
}
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */

View File

@ -69,8 +69,6 @@
#include "net/ipv6/sicslowpan.h"
#include "net/netstack.h"
#if UIP_CONF_IPV6
#include <stdio.h>
#define DEBUG DEBUG_NONE
@ -1929,4 +1927,3 @@ const struct network_driver sicslowpan_driver = {
};
/*--------------------------------------------------------------------*/
/** @} */
#endif /* UIP_CONF_IPV6 */

View File

@ -201,12 +201,25 @@ uip_ds6_link_neighbor_callback(int status, int numtx)
LINK_NEIGHBOR_CALLBACK(dest, status, numtx);
#if UIP_DS6_LL_NUD
/* From RFC4861, page 72, last paragraph of section 7.3.3:
*
* "In some cases, link-specific information may indicate that a path to
* a neighbor has failed (e.g., the resetting of a virtual circuit). In
* such cases, link-specific information may be used to purge Neighbor
* Cache entries before the Neighbor Unreachability Detection would do
* so. However, link-specific information MUST NOT be used to confirm
* the reachability of a neighbor; such information does not provide
* end-to-end confirmation between neighboring IP layers."
*
* However, we assume that receiving a link layer ack ensures the delivery
* of the transmitted packed to the IP stack of the neighbour. This is a
* fair assumption and allows battery powered nodes save some battery by
* not re-testing the state of a neighbour periodically if it
* acknowledges link packets. */
if(status == MAC_TX_OK) {
uip_ds6_nbr_t *nbr;
nbr = uip_ds6_nbr_ll_lookup((uip_lladdr_t *)dest);
if(nbr != NULL &&
(nbr->state == NBR_STALE || nbr->state == NBR_DELAY ||
nbr->state == NBR_PROBE)) {
if(nbr != NULL && nbr->state != NBR_INCOMPLETE) {
nbr->state = NBR_REACHABLE;
stimer_set(&nbr->reachable, UIP_ND6_REACHABLE_TIME / 1000);
PRINTF("uip-ds6-neighbor : received a link layer ACK : ");
@ -227,10 +240,32 @@ uip_ds6_neighbor_periodic(void)
switch(nbr->state) {
case NBR_REACHABLE:
if(stimer_expired(&nbr->reachable)) {
#if UIP_CONF_IPV6_RPL
/* when a neighbor leave it's REACHABLE state and is a default router,
instead of going to STALE state it enters DELAY state in order to
force a NUD on it. Otherwise, if there is no upward traffic, the
node never knows if the default router is still reachable. This
mimics the 6LoWPAN-ND behavior.
*/
if(uip_ds6_defrt_lookup(&nbr->ipaddr) != NULL) {
PRINTF("REACHABLE: defrt moving to DELAY (");
PRINT6ADDR(&nbr->ipaddr);
PRINTF(")\n");
nbr->state = NBR_DELAY;
stimer_set(&nbr->reachable, UIP_ND6_DELAY_FIRST_PROBE_TIME);
nbr->nscount = 0;
} else {
PRINTF("REACHABLE: moving to STALE (");
PRINT6ADDR(&nbr->ipaddr);
PRINTF(")\n");
nbr->state = NBR_STALE;
}
#else /* UIP_CONF_IPV6_RPL */
PRINTF("REACHABLE: moving to STALE (");
PRINT6ADDR(&nbr->ipaddr);
PRINTF(")\n");
nbr->state = NBR_STALE;
#endif /* UIP_CONF_IPV6_RPL */
}
break;
#if UIP_ND6_SEND_NA

View File

@ -36,8 +36,6 @@
#include "lib/memb.h"
#include "net/nbr-table.h"
#if UIP_CONF_IPV6
#include <string.h>
/* The nbr_routes holds a neighbor table to be able to maintain
@ -216,6 +214,10 @@ uip_ds6_route_lookup(uip_ipaddr_t *addr)
uip_ipaddr_prefixcmp(addr, &r->ipaddr, r->length)) {
longestmatch = r->length;
found_route = r;
/* check if total match - e.g. all 128 bits do match */
if(longestmatch == 128) {
break;
}
}
}
@ -229,13 +231,14 @@ uip_ds6_route_lookup(uip_ipaddr_t *addr)
PRINTF("uip-ds6-route: No route found\n");
}
if(found_route != NULL) {
/* If we found a route, we put it at the end of the routeslist
if(found_route != NULL && found_route != list_head(routelist)) {
/* If we found a route, we put it at the start of the routeslist
list. The list is ordered by how recently we looked them up:
the least recently used route will be at the start of the
list. */
the least recently used route will be at the end of the
list - for fast lookups (assuming multiple packets to the same node). */
list_remove(routelist, found_route);
list_add(routelist, found_route);
list_push(routelist, found_route);
}
return found_route;
@ -282,7 +285,7 @@ uip_ds6_route_add(uip_ipaddr_t *ipaddr, uint8_t length,
least recently used route is the first route on the list. */
uip_ds6_route_t *oldest;
oldest = uip_ds6_route_head();
oldest = list_tail(routelist); /* uip_ds6_route_head(); */
PRINTF("uip_ds6_route_add: dropping route to ");
PRINT6ADDR(&oldest->ipaddr);
PRINTF("\n");
@ -328,7 +331,9 @@ uip_ds6_route_add(uip_ipaddr_t *ipaddr, uint8_t length,
return NULL;
}
list_add(routelist, r);
/* add new routes first - assuming that there is a reason to add this
and that there is a packet coming soon. */
list_push(routelist, r);
nbrr = memb_alloc(&neighborroutememb);
if(nbrr == NULL) {
@ -386,7 +391,7 @@ uip_ds6_route_rm(uip_ds6_route_t *route)
PRINT6ADDR(&route->ipaddr);
PRINTF("\n");
/* Remove the neighbor from the route list */
/* Remove the route from the route list */
list_remove(routelist, route);
/* Find the corresponding neighbor_route and remove it. */
@ -624,5 +629,3 @@ uip_ds6_defrt_periodic(void)
}
}
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */

View File

@ -50,8 +50,6 @@
#include "net/ipv6/uip-ds6.h"
#include "net/ip/uip-packetqueue.h"
#if UIP_CONF_IPV6
#define DEBUG DEBUG_NONE
#include "net/ip/uip-debug.h"
@ -188,12 +186,12 @@ uip_ds6_periodic(void)
uip_ds6_neighbor_periodic();
#if UIP_CONF_ROUTER & UIP_ND6_SEND_RA
#if UIP_CONF_ROUTER && UIP_ND6_SEND_RA
/* Periodic RA sending */
if(stimer_expired(&uip_ds6_timer_ra) && (uip_len == 0)) {
uip_ds6_send_ra_periodic();
}
#endif /* UIP_CONF_ROUTER & UIP_ND6_SEND_RA */
#endif /* UIP_CONF_ROUTER && UIP_ND6_SEND_RA */
etimer_reset(&uip_ds6_timer_periodic);
return;
}
@ -704,6 +702,5 @@ uip_ds6_compute_reachable_time(void)
UIP_ND6_MIN_RANDOM_FACTOR(uip_ds6_if.base_reachable_time));
}
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */
/** @}*/

View File

@ -68,8 +68,6 @@
#include "rpl/rpl.h"
#endif /* UIP_CONF_IPV6_RPL */
#if UIP_CONF_IPV6
/** \brief temporary IP address */
static uip_ipaddr_t tmp_ipaddr;
@ -421,4 +419,3 @@ uip_icmp6_init()
}
/*---------------------------------------------------------------------------*/
/** @} */
#endif /* UIP_CONF_IPV6 */

View File

@ -112,7 +112,7 @@ typedef struct uip_icmp6_error{
* \brief Send an icmpv6 error message
* \param type type of the error message
* \param code of the error message
* \param type 32 bit parameter of the error message, semantic depends on error
* \param param 32 bit parameter of the error message, semantic depends on error
*/
void
uip_icmp6_error_output(uint8_t type, uint8_t code, uint32_t param);

View File

@ -74,7 +74,6 @@
#include "net/ipv6/uip-ds6.h"
#include "lib/random.h"
#if UIP_CONF_IPV6
/*------------------------------------------------------------------*/
#define DEBUG 0
#include "net/ip/uip-debug.h"
@ -1036,4 +1035,3 @@ uip_nd6_init()
}
/*---------------------------------------------------------------------------*/
/** @} */
#endif /* UIP_CONF_IPV6 */

View File

@ -80,7 +80,6 @@
#include <string.h>
#if UIP_CONF_IPV6
/*---------------------------------------------------------------------------*/
/* For Debug, logging, statistics */
/*---------------------------------------------------------------------------*/
@ -1207,7 +1206,11 @@ uip_process(uint8_t flag)
}
#if UIP_CONF_IPV6_RPL
rpl_update_header_empty();
if(rpl_update_header_empty()) {
/* Packet can not be forwarded */
PRINTF("RPL Forward Option Error\n");
goto drop;
}
#endif /* UIP_CONF_IPV6_RPL */
UIP_IP_BUF->ttl = UIP_IP_BUF->ttl - 1;
@ -2333,4 +2336,3 @@ uip_send(const void *data, int len)
}
/*---------------------------------------------------------------------------*/
/** @} */
#endif /* UIP_CONF_IPV6 */

View File

@ -87,7 +87,7 @@ anti_replay_was_replayed(struct anti_replay_info *info)
received_counter = anti_replay_get_counter();
if(linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER), &linkaddr_null)) {
if(packetbuf_holds_broadcast()) {
/* broadcast */
if(received_counter <= info->last_broadcast_counter) {
return 1;

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, Fraunhofer Heinrich-Hertz-Institut.
* Copyright (c) 2010, Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -26,6 +26,8 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* This file is part of the Contiki operating system.
*
*/
/**
@ -78,6 +80,12 @@ struct hdr {
uint8_t len;
};
/*---------------------------------------------------------------------------*/
static int
hdr_length(void)
{
return DECORATED_FRAMER.length() + sizeof(struct hdr);
}
/*---------------------------------------------------------------------------*/
static int
create(void)
@ -172,6 +180,7 @@ parse(void)
}
/*---------------------------------------------------------------------------*/
const struct framer contikimac_framer = {
hdr_length,
create,
create_and_secure,
parse

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, Fraunhofer Heinrich-Hertz-Institut.
* Copyright (c) 2010, Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -26,6 +26,8 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* This file is part of the Contiki operating system.
*
*/
/**

View File

@ -522,7 +522,7 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr,
/* If NETSTACK_CONF_BRIDGE_MODE is set, assume PACKETBUF_ADDR_SENDER is already set. */
packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &linkaddr_node_addr);
#endif
if(linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER), &linkaddr_null)) {
if(packetbuf_holds_broadcast()) {
is_broadcast = 1;
PRINTDEBUG("contikimac: send broadcast\n");
@ -530,7 +530,7 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr,
return MAC_TX_COLLISION;
}
} else {
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
PRINTDEBUG("contikimac: send unicast to %02x%02x:%02x%02x:%02x%02x:%02x%02x\n",
packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[0],
packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[1],
@ -540,11 +540,11 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr,
packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[5],
packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[6],
packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[7]);
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
PRINTDEBUG("contikimac: send unicast to %u.%u\n",
packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[0],
packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[1]);
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
}
is_reliable = packetbuf_attr(PACKETBUF_ATTR_RELIABLE) ||
packetbuf_attr(PACKETBUF_ATTR_ERELIABLE);
@ -878,8 +878,7 @@ input_packet(void)
packetbuf_totlen() > 0 &&
(linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER),
&linkaddr_node_addr) ||
linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER),
&linkaddr_null))) {
packetbuf_holds_broadcast())) {
/* This is a regular packet that is destined to us or to the
broadcast address. */

View File

@ -433,11 +433,11 @@ send_packet(void)
/* If NETSTACK_CONF_BRIDGE_MODE is set, assume PACKETBUF_ADDR_SENDER is already set. */
packetbuf_set_addr(PACKETBUF_ADDR_SENDER, &linkaddr_node_addr);
#endif
if(linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER), &linkaddr_null)) {
if(packetbuf_holds_broadcast()) {
is_broadcast = 1;
PRINTDEBUG("cxmac: send broadcast\n");
} else {
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
PRINTDEBUG("cxmac: send unicast to %02x%02x:%02x%02x:%02x%02x:%02x%02x\n",
packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[0],
packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[1],
@ -451,7 +451,7 @@ send_packet(void)
PRINTDEBUG("cxmac: send unicast to %u.%u\n",
packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[0],
packetbuf_addr(PACKETBUF_ADDR_RECEIVER)->u8[1]);
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
}
/* is_reliable = packetbuf_attr(PACKETBUF_ATTR_RELIABLE) ||
packetbuf_attr(PACKETBUF_ATTR_ERELIABLE);*/

View File

@ -104,7 +104,7 @@ create_frame(int type, int do_create)
/* Build the FCF. */
params.fcf.frame_type = packetbuf_attr(PACKETBUF_ATTR_FRAME_TYPE);
params.fcf.frame_pending = packetbuf_attr(PACKETBUF_ATTR_PENDING);
if(linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER), &linkaddr_null)) {
if(packetbuf_holds_broadcast()) {
params.fcf.ack_required = 0;
} else {
params.fcf.ack_required = packetbuf_attr(PACKETBUF_ATTR_MAC_ACK);
@ -159,11 +159,7 @@ create_frame(int type, int do_create)
}
params.dest_pid = mac_dst_pan_id;
/*
* If the output address is NULL in the Rime buf, then it is broadcast
* on the 802.15.4 network.
*/
if(linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER), &linkaddr_null)) {
if(packetbuf_holds_broadcast()) {
/* Broadcast requires short address mode. */
params.fcf.dest_addr_mode = FRAME802154_SHORTADDRMODE;
params.dest_addr[0] = 0xFF;

View File

@ -132,8 +132,7 @@ send_one_packet(mac_callback_t sent, void *ptr)
NETSTACK_RADIO.prepare(packetbuf_hdrptr(), packetbuf_totlen());
is_broadcast = linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER),
&linkaddr_null);
is_broadcast = packetbuf_holds_broadcast();
if(NETSTACK_RADIO.receiving_packet() ||
(!is_broadcast && NETSTACK_RADIO.pending_packet())) {
@ -282,8 +281,7 @@ packet_input(void)
#if NULLRDC_ADDRESS_FILTER
} else if(!linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER),
&linkaddr_node_addr) &&
!linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER),
&linkaddr_null)) {
!packetbuf_holds_broadcast()) {
PRINTF("nullrdc: not for us\n");
#endif /* NULLRDC_ADDRESS_FILTER */
} else {

View File

@ -123,11 +123,7 @@ send_packet(mac_callback_t sent, void *ptr)
params.fcf.src_addr_mode = FRAME802154_LONGADDRMODE;
params.dest_pid = mac_dst_pan_id;
/*
* If the output address is NULL in the Rime buf, then it is broadcast
* on the 802.15.4 network.
*/
if(linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER), &linkaddr_null)) {
if(packetbuf_holds_broadcast()) {
/* Broadcast requires short address mode. */
params.fcf.dest_addr_mode = FRAME802154_SHORTADDRMODE;
params.dest_addr[0] = 0xFF;

View File

@ -320,4 +320,11 @@ packetbuf_addr(uint8_t type)
}
/*---------------------------------------------------------------------------*/
#endif /* PACKETBUF_CONF_ATTRS_INLINE */
int
packetbuf_holds_broadcast(void)
{
return linkaddr_cmp(&packetbuf_addrs[PACKETBUF_ADDR_RECEIVER - PACKETBUF_ADDR_FIRST].addr, &linkaddr_null);
}
/*---------------------------------------------------------------------------*/
/** @} */

View File

@ -453,6 +453,12 @@ int packetbuf_set_addr(uint8_t type, const linkaddr_t *addr);
const linkaddr_t *packetbuf_addr(uint8_t type);
#endif /* PACKETBUF_CONF_ATTRS_INLINE */
/**
* \brief Checks whether the current packet is a broadcast.
* \retval 0 iff current packet is not a broadcast
*/
int packetbuf_holds_broadcast(void);
void packetbuf_attr_clear(void);
void packetbuf_attr_copyto(struct packetbuf_attr *attrs,

View File

@ -48,8 +48,7 @@
#include "net/rime/collect.h"
#include "net/rime/collect-neighbor.h"
#include "net/rime/collect-link-estimate.h"
#include "net/packetqueue.h"
#include "net/rime/packetqueue.h"
#include "dev/radio-sensor.h"

View File

@ -63,7 +63,7 @@
#include "net/rime/runicast.h"
#include "net/rime/neighbor-discovery.h"
#include "net/rime/collect-neighbor.h"
#include "net/packetqueue.h"
#include "net/rime/packetqueue.h"
#include "sys/ctimer.h"
#include "lib/list.h"

View File

@ -43,7 +43,7 @@
*/
#include "sys/ctimer.h"
#include "net/packetqueue.h"
#include "net/rime/packetqueue.h"
/*---------------------------------------------------------------------------*/
void

View File

@ -59,7 +59,6 @@
#define DEBUG DEBUG_NONE
#include "net/ip/uip-debug.h"
#if UIP_CONF_IPV6
/*---------------------------------------------------------------------------*/
extern rpl_of_t RPL_OF;
static rpl_of_t * const objective_functions[] = {&RPL_OF};
@ -93,6 +92,13 @@ rpl_dag_init(void)
nbr_table_register(rpl_parents, (nbr_table_callback *)nbr_callback);
}
/*---------------------------------------------------------------------------*/
rpl_parent_t *
rpl_get_parent(uip_lladdr_t *addr)
{
rpl_parent_t *p = nbr_table_get_from_lladdr(rpl_parents, (linkaddr_t *)addr);
return p;
}
/*---------------------------------------------------------------------------*/
rpl_rank_t
rpl_get_parent_rank(uip_lladdr_t *addr)
{
@ -513,6 +519,7 @@ rpl_free_instance(rpl_instance_t *instance)
ctimer_stop(&instance->dio_timer);
ctimer_stop(&instance->dao_timer);
ctimer_stop(&instance->dao_lifetime_timer);
if(default_instance == instance) {
default_instance = NULL;
@ -1311,5 +1318,4 @@ rpl_lock_parent(rpl_parent_t *p)
nbr_table_lock(rpl_parents, p);
}
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */
/** @} */

View File

@ -48,6 +48,7 @@
#include "net/ip/tcpip.h"
#include "net/ipv6/uip-ds6.h"
#include "net/rpl/rpl-private.h"
#include "net/packetbuf.h"
#define DEBUG DEBUG_NONE
#include "net/ip/uip-debug.h"
@ -64,7 +65,6 @@
#define UIP_EXT_HDR_OPT_PADN_BUF ((struct uip_ext_hdr_opt_padn *)&uip_buf[uip_l2_l3_hdr_len + uip_ext_opt_offset])
#define UIP_EXT_HDR_OPT_RPL_BUF ((struct uip_ext_hdr_opt_rpl *)&uip_buf[uip_l2_l3_hdr_len + uip_ext_opt_offset])
/*---------------------------------------------------------------------------*/
#if UIP_CONF_IPV6
int
rpl_verify_header(int uip_ext_opt_offset)
{
@ -105,19 +105,12 @@ rpl_verify_header(int uip_ext_opt_offset)
route = uip_ds6_route_lookup(&UIP_IP_BUF->destipaddr);
if(route != NULL) {
uip_ds6_route_rm(route);
/* If we are the root and just needed to remove a DAO route,
chances are that the network needs to be repaired. The
rpl_repair_root() function will cause a global repair if we
happen to be the root node of the dag. */
PRINTF("RPL: initiate global repair\n");
rpl_repair_root(instance->instance_id);
}
/* Remove the forwarding error flag and return 0 to let the packet
be forwarded again. */
UIP_EXT_HDR_OPT_RPL_BUF->flags &= ~RPL_HDR_OPT_FWD_ERR;
return 0;
RPL_STAT(rpl_stats.forward_errors++);
/* Trigger DAO retransmission */
rpl_reset_dio_timer(instance);
/* drop the packet as it is not routable */
return 1;
}
if(!instance->current_dag->joined) {
@ -145,10 +138,9 @@ rpl_verify_header(int uip_ext_opt_offset)
sender_closer);
if(UIP_EXT_HDR_OPT_RPL_BUF->flags & RPL_HDR_OPT_RANK_ERR) {
PRINTF("RPL: Rank error signalled in RPL option!\n");
/* We should try to repair it, not implemented for the moment */
/* Packet must be dropped and dio trickle timer reset, see RFC6550 - 11.2.2.2 */
rpl_reset_dio_timer(instance);
/* Forward the packet anyway. */
return 0;
return 1;
}
PRINTF("RPL: Single error tolerated\n");
UIP_EXT_HDR_OPT_RPL_BUF->flags |= RPL_HDR_OPT_RANK_ERR;
@ -183,12 +175,13 @@ set_rpl_opt(unsigned uip_ext_opt_offset)
}
}
/*---------------------------------------------------------------------------*/
void
int
rpl_update_header_empty(void)
{
rpl_instance_t *instance;
int uip_ext_opt_offset;
int last_uip_ext_len;
rpl_parent_t *parent;
last_uip_ext_len = uip_ext_len;
uip_ext_len = 0;
@ -211,12 +204,12 @@ rpl_update_header_empty(void)
if(UIP_EXT_HDR_OPT_RPL_BUF->opt_len != RPL_HDR_OPT_LEN) {
PRINTF("RPL: RPL Hop-by-hop option has wrong length\n");
uip_ext_len = last_uip_ext_len;
return;
return 0;
}
instance = rpl_get_instance(UIP_EXT_HDR_OPT_RPL_BUF->instance);
if(instance == NULL || !instance->used || !instance->current_dag->joined) {
PRINTF("RPL: Unable to add hop-by-hop extension header: incorrect instance\n");
return;
return 0;
}
break;
default:
@ -224,11 +217,11 @@ rpl_update_header_empty(void)
if(uip_len + RPL_HOP_BY_HOP_LEN > UIP_BUFSIZE) {
PRINTF("RPL: Packet too long: impossible to add hop-by-hop option\n");
uip_ext_len = last_uip_ext_len;
return;
return 0;
}
set_rpl_opt(uip_ext_opt_offset);
uip_ext_len = last_uip_ext_len + RPL_HOP_BY_HOP_LEN;
return;
return 0;
}
switch(UIP_EXT_HDR_OPT_BUF->type) {
@ -244,6 +237,15 @@ rpl_update_header_empty(void)
if(uip_ds6_route_lookup(&UIP_IP_BUF->destipaddr) == NULL) {
UIP_EXT_HDR_OPT_RPL_BUF->flags |= RPL_HDR_OPT_FWD_ERR;
PRINTF("RPL forwarding error\n");
/* We should send back the packet to the originating parent,
but it is not feasible yet, so we send a No-Path DAO instead */
PRINTF("RPL generate No-Path DAO\n");
parent = rpl_get_parent((uip_lladdr_t *)packetbuf_addr(PACKETBUF_ADDR_SENDER));
if(parent != NULL) {
dao_output_target(parent, &UIP_IP_BUF->destipaddr, RPL_ZERO_LIFETIME);
}
/* Drop packet */
return 1;
}
} else {
/* Set the down extension flag correctly as described in Section
@ -262,11 +264,11 @@ rpl_update_header_empty(void)
}
uip_ext_len = last_uip_ext_len;
return;
return 0;
default:
PRINTF("RPL: Multi Hop-by-hop options not implemented\n");
uip_ext_len = last_uip_ext_len;
return;
return 0;
}
}
/*---------------------------------------------------------------------------*/
@ -375,6 +377,5 @@ rpl_insert_header(void)
}
}
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */
/** @}*/

View File

@ -61,7 +61,6 @@
#include "net/ip/uip-debug.h"
#if UIP_CONF_IPV6
/*---------------------------------------------------------------------------*/
#define RPL_DIO_GROUNDED 0x80
#define RPL_DIO_MOP_SHIFT 3
@ -958,6 +957,5 @@ rpl_icmp6_register_handlers()
uip_icmp6_register_input_handler(&dao_ack_handler);
}
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */
/** @}*/

View File

@ -47,8 +47,6 @@
#include "lib/random.h"
#include "sys/ctimer.h"
#if UIP_CONF_IPV6
#define DEBUG DEBUG_NONE
#include "net/ip/uip-debug.h"
@ -325,6 +323,5 @@ rpl_cancel_dao(rpl_instance_t *instance)
ctimer_stop(&instance->dao_lifetime_timer);
}
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */
/** @}*/

View File

@ -55,8 +55,6 @@
#include <limits.h>
#include <string.h>
#if UIP_CONF_IPV6
#if RPL_CONF_STATS
rpl_stats_t rpl_stats;
#endif
@ -316,6 +314,5 @@ rpl_init(void)
RPL_OF.reset(NULL);
}
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */
/** @}*/

View File

@ -240,13 +240,14 @@ int rpl_repair_root(uint8_t instance_id);
int rpl_set_default_route(rpl_instance_t *instance, uip_ipaddr_t *from);
rpl_dag_t *rpl_get_any_dag(void);
rpl_instance_t *rpl_get_instance(uint8_t instance_id);
void rpl_update_header_empty(void);
int rpl_update_header_empty(void);
int rpl_update_header_final(uip_ipaddr_t *addr);
int rpl_verify_header(int);
void rpl_insert_header(void);
void rpl_remove_header(void);
uint8_t rpl_invert_header(void);
uip_ipaddr_t *rpl_get_parent_ipaddr(rpl_parent_t *nbr);
rpl_parent_t *rpl_get_parent(uip_lladdr_t *addr);
rpl_rank_t rpl_get_parent_rank(uip_lladdr_t *addr);
uint16_t rpl_get_parent_link_metric(const uip_lladdr_t *addr);
void rpl_dag_init(void);

View File

@ -51,7 +51,7 @@ CONTIKI_SOURCEFILES += $(CTK) ctk-conio.c petsciiconv.c cfs-posix-dir.c \
$(CONTIKI_TARGET_SOURCEFILES) $(CONTIKI_CPU_SOURCEFILES) \
$(ETHERNET_SOURCEFILES)
MODULES += core/ctk core/net/ip core/net/ipv4 core/net/ipv6
MODULES += core/ctk
# Set target-specific variable values
${addprefix $(OBJECTDIR)/,${call oname, $(ETHERNET_SOURCEFILES)}}: ASFLAGS += -D DYN_DRV=0

View File

@ -2,4 +2,5 @@ CONTIKI_PROJECT = ethconfig
all: $(CONTIKI_PROJECT)
CONTIKI = ../../..
CONTIKI_WITH_IPV4 = 1
include $(CONTIKI)/Makefile.include

View File

@ -2,4 +2,5 @@ CONTIKI_PROJECT = ipconfig
all: $(CONTIKI_PROJECT)
CONTIKI = ../../..
CONTIKI_WITH_IPV4 = 1
include $(CONTIKI)/Makefile.include

View File

@ -59,12 +59,12 @@ pollhandler(void)
uip_len = ethernet_poll();
if(uip_len > 0) {
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
if(BUF->type == uip_htons(UIP_ETHTYPE_IPV6)) {
uip_neighbor_add(&IPBUF->srcipaddr, &BUF->src);
tcpip_input();
} else
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
if(BUF->type == uip_htons(UIP_ETHTYPE_IP)) {
uip_len -= sizeof(struct uip_eth_hdr);
tcpip_input();

View File

@ -76,7 +76,7 @@ CFLAGSNO = -I. -I$(CONTIKI)/core -I$(CONTIKI_CPU) -I$(CONTIKI_CPU)/loader \
-I$(CONTIKI_CPU)/dbg-io \
-I$(CONTIKI)/platform/$(TARGET) \
${addprefix -I,$(APPDIRS)} \
-DWITH_UIP -DWITH_ASCII -DMCK=$(MCK) \
-DWITH_ASCII -DMCK=$(MCK) \
-Wall $(ARCH_FLAGS) -g -D SUBTARGET=$(SUBTARGET)
CFLAGS += $(CFLAGSNO) -O -DRUN_AS_SYSTEM -DROM_RUN

View File

@ -117,12 +117,12 @@ PROCESS_THREAD(usb_eth_process, ev , data)
uip_len = sizeof(recv_data) - recv_buffer.left;
/* printf("Received: %d bytes\n", uip_len); */
memcpy(uip_buf, recv_data, uip_len);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
if(BUF->type == uip_htons(UIP_ETHTYPE_IPV6)) {
uip_neighbor_add(&IPBUF->srcipaddr, &BUF->src);
tcpip_input();
} else
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
if(BUF->type == uip_htons(UIP_ETHTYPE_IP)) {
uip_len -= sizeof(struct uip_eth_hdr);
tcpip_input();

View File

@ -75,7 +75,7 @@ CFLAGSNO = -I. -I$(CONTIKI)/core -I$(CONTIKI_CPU) -I$(CONTIKI_CPU)/loader \
-I$(CONTIKI_CPU)/dbg-io \
-I$(CONTIKI)/platform/$(TARGET) \
${addprefix -I,$(APPDIRS)} \
-DWITH_UIP -DWITH_ASCII -DMCK=$(MCK) \
-DWITH_ASCII -DMCK=$(MCK) \
-Wall $(ARCH_FLAGS) -g -D SUBTARGET=$(SUBTARGET)
CFLAGS += $(CFLAGSNO) -O -DRUN_AS_SYSTEM -DROM_RUN

View File

@ -101,6 +101,7 @@ CFLAGSNO = -Wall -mmcu=$(MCU) -gdwarf-2 -fno-strict-aliasing \
-I. -I$(CONTIKI)/core -I$(CONTIKI_CPU) $(USB_INCLUDES) \
$(CONTIKI_PLAT_DEFS)
CFLAGS += $(CFLAGSNO) -O$(OPTI)
ASFLAGS += -mmcu=$(MCU)
ifndef BOOTLOADER_START
BOOTLOADER_START = 0x1F800
endif

View File

@ -72,7 +72,7 @@
#include <avr/interrupt.h>
/* Two tick counters avoid a software divide when CLOCK_SECOND is not a power of two. */
#if CLOCK_SECOND && (CLOCK_SECOND - 1)
#if CLOCK_SECOND & (CLOCK_SECOND - 1)
#define TWO_COUNTERS 1
#endif

View File

@ -426,11 +426,7 @@ sicslowmac_dataRequest(void)
params.fcf.srcAddrMode = LONGADDRMODE;
params.dest_pid = ieee15_4ManagerAddress.get_dst_panid();
/*
* If the output address is NULL in the Rime buf, then it is broadcast
* on the 802.15.4 network.
*/
if(linkaddr_cmp(packetbuf_addr(PACKETBUF_ADDR_RECEIVER), &linkaddr_null) ) {
if(packetbuf_holds_broadcast()) {
/* Broadcast requires short address mode. */
params.fcf.destAddrMode = SHORTADDRMODE;
params.dest_pid = BROADCASTPANDID;

View File

@ -35,9 +35,9 @@ endef
### Banking Guesswork:
### Examples outside examples/sensinode do not specify banking.
### We automatically turn it on if its unspecified and if we are building with
### UIP_CONF_IPV6
### CONTIKI_WITH_IPV6
ifndef HAVE_BANKING
ifeq ($(UIP_CONF_IPV6),1)
ifeq ($(CONTIKI_WITH_IPV6),1)
HAVE_BANKING=1
else
HAVE_BANKING=0

View File

@ -51,9 +51,9 @@ endif
### Banking Guesswork:
### Generic examples do not specify banking.
### We automatically turn it on if its unspecified and if we are building with
### UIP_CONF_IPV6
### CONTIKI_WITH_IPV6
ifndef HAVE_BANKING
ifeq ($(UIP_CONF_IPV6),1)
ifeq ($(CONTIKI_WITH_IPV6),1)
HAVE_BANKING=1
else
HAVE_BANKING=0

View File

@ -57,7 +57,7 @@ slip_arch_writeb(unsigned char c)
*
*/
/*---------------------------------------------------------------------------*/
#if WITH_UIP
#if NETSTACK_CONF_WITH_IPV4
int
putchar(int c)
{
@ -83,7 +83,7 @@ putchar(int c)
return c;
}
#endif
#endif /* NETSTACK_CONF_WITH_IPV4 */
/*---------------------------------------------------------------------------*/
/**
* Initalize the RS232 port and the SLIP driver.

View File

@ -100,8 +100,8 @@ uart0_writeb(unsigned char c)
#endif /* TX_WITH_INTERRUPT */
}
/*---------------------------------------------------------------------------*/
#if ! WITH_UIP /* If WITH_UIP is defined, putchar() is defined by the SLIP driver */
#endif /* ! WITH_UIP */
#if ! NETSTACK_CONF_WITH_IPV4 /* If NETSTACK_CONF_WITH_IPV4 is defined, putchar() is defined by the SLIP driver */
#endif /* ! NETSTACK_CONF_WITH_IPV4 */
/*---------------------------------------------------------------------------*/
/**
* Initalize the RS232 port.

View File

@ -97,8 +97,8 @@ uart1_writeb(unsigned char c)
#endif /* TX_WITH_INTERRUPT */
}
/*---------------------------------------------------------------------------*/
#if ! WITH_UIP /* If WITH_UIP is defined, putchar() is defined by the SLIP driver */
#endif /* ! WITH_UIP */
#if ! NETSTACK_CONF_WITH_IPV4 /* If NETSTACK_CONF_WITH_IPV4 is defined, putchar() is defined by the SLIP driver */
#endif /* ! NETSTACK_CONF_WITH_IPV4 */
/*---------------------------------------------------------------------------*/
/**
* Initalize the RS232 port.

View File

@ -49,7 +49,7 @@ slip_arch_writeb(unsigned char c)
*
*/
/*---------------------------------------------------------------------------*/
#if WITH_UIP
#if NETSTACK_CONF_WITH_IPV4
int
putchar(int c)
{
@ -75,7 +75,7 @@ putchar(int c)
return c;
}
#endif
#endif /* NETSTACK_CONF_WITH_IPV4 */
/*---------------------------------------------------------------------------*/
/**
* Initalize the RS232 port and the SLIP driver.

View File

@ -49,7 +49,7 @@ slip_arch_writeb(unsigned char c)
*
*/
/*---------------------------------------------------------------------------*/
#if WITH_UIP
#if NETSTACK_CONF_WITH_IPV4
int
putchar(int c)
{
@ -75,7 +75,7 @@ putchar(int c)
return c;
}
#endif
#endif /* NETSTACK_CONF_WITH_IPV4 */
/*---------------------------------------------------------------------------*/
/**
* Initalize the RS232 port and the SLIP driver.

View File

@ -34,11 +34,11 @@
#include "net/ip/uip.h"
#include "net/ip/uipopt.h"
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#include "tapdev6.h"
#else
#include "tapdev.h"
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
#include "tapdev-drv.h"
@ -48,7 +48,7 @@
PROCESS(tapdev_process, "TAP driver");
/*---------------------------------------------------------------------------*/
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
uint8_t
tapdev_output(void)
{
@ -64,16 +64,16 @@ pollhandler(void)
uip_len = tapdev_poll();
if(uip_len > 0) {
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
if(BUF->type == uip_htons(UIP_ETHTYPE_IPV6)) {
tcpip_input();
} else
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
if(BUF->type == uip_htons(UIP_ETHTYPE_IP)) {
uip_len -= sizeof(struct uip_eth_hdr);
tcpip_input();
} else if(BUF->type == uip_htons(UIP_ETHTYPE_ARP)) {
#if !UIP_CONF_IPV6 //math
#if !NETSTACK_CONF_WITH_IPV6 //math
uip_arp_arpin();
/* If the above function invocation resulted in data that
should be sent out on the network, the global variable
@ -95,7 +95,7 @@ PROCESS_THREAD(tapdev_process, ev, data)
PROCESS_BEGIN();
tapdev_init();
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
tcpip_set_outputfunc(tapdev_output);
#else
tcpip_set_outputfunc(tapdev_send);

View File

@ -36,7 +36,7 @@
#include "net/ip/uip.h"
#include "net/ip/uipopt.h"
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
#include <fcntl.h>
#include <stdlib.h>
@ -204,4 +204,4 @@ tapdev_exit(void)
}
/*---------------------------------------------------------------------------*/
#endif /* !UIP_CONF_IPV6 */
#endif /* !NETSTACK_CONF_WITH_IPV6 */

View File

@ -36,7 +36,7 @@
#include "net/ip/uip.h"
#include "net/ip/uipopt.h"
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#include <fcntl.h>
#include <stdlib.h>
@ -419,4 +419,4 @@ tapdev_exit(void)
}
/*---------------------------------------------------------------------------*/
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */

View File

@ -64,7 +64,7 @@
PROCESS(wpcap_process, "WinPcap driver");
/*---------------------------------------------------------------------------*/
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
uint8_t
wpcap_output(void)
{
@ -73,7 +73,7 @@ wpcap_output(void)
return 0;
}
#endif /* !UIP_CONF_IPV6 */
#endif /* !NETSTACK_CONF_WITH_IPV6 */
/*---------------------------------------------------------------------------*/
static void
pollhandler(void)
@ -83,16 +83,16 @@ pollhandler(void)
uip_len = wpcap_poll();
if(uip_len > 0) {
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
if(BUF->type == uip_htons(UIP_ETHTYPE_IPV6)) {
// printf("wpcap poll calls tcpip");
tcpip_input();
} else
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
if(BUF->type == uip_htons(UIP_ETHTYPE_IP)) {
uip_len -= sizeof(struct uip_eth_hdr);
tcpip_input();
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
} else if(BUF->type == uip_htons(UIP_ETHTYPE_ARP)) {
uip_arp_arpin(); //math
/* If the above function invocation resulted in data that
@ -101,7 +101,7 @@ pollhandler(void)
if(uip_len > 0) {
wpcap_send();
}
#endif /* !UIP_CONF_IPV6 */
#endif /* !NETSTACK_CONF_WITH_IPV6 */
} else {
uip_len = 0;
}
@ -125,16 +125,16 @@ pollhandler(void)
tcpip_input();
} else
goto bail;
#elif UIP_CONF_IPV6
#elif NETSTACK_CONF_WITH_IPV6
if(BUF->type == uip_htons(UIP_ETHTYPE_IPV6)) {
tcpip_input();
} else
goto bail;
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
if(BUF->type == uip_htons(UIP_ETHTYPE_IP)) {
uip_len -= sizeof(struct uip_eth_hdr);
tcpip_input();
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
} else if(BUF->type == uip_htons(UIP_ETHTYPE_ARP)) {
uip_arp_arpin(); //math
/* If the above function invocation resulted in data that
@ -143,7 +143,7 @@ pollhandler(void)
if(uip_len > 0) {
wfall_send();
}
#endif /* !UIP_CONF_IPV6 */
#endif /* !NETSTACK_CONF_WITH_IPV6 */
} else {
bail:
uip_len = 0;
@ -161,13 +161,13 @@ PROCESS_THREAD(wpcap_process, ev, data)
wpcap_init();
#if !UIP_CONF_IPV6
#if !NETSTACK_CONF_WITH_IPV6
tcpip_set_outputfunc(wpcap_output);
#else
#if !FALLBACK_HAS_ETHERNET_HEADERS
tcpip_set_outputfunc(wpcap_send);
#endif
#endif /* !UIP_CONF_IPV6 */
#endif /* !NETSTACK_CONF_WITH_IPV6 */
process_poll(&wpcap_process);

View File

@ -68,7 +68,7 @@
#define FALLBACK_HAS_ETHERNET_HEADERS 1
#endif
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#include <ws2tcpip.h>
struct in6_addr addr6;
char addr6str[64];
@ -122,7 +122,7 @@ sprint_ip6addr(struct in6_addr addr, char * result)
return (result - starting);
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
#ifdef __CYGWIN__
@ -158,7 +158,7 @@ static struct pcap *pcap;
/* uip_lladdr is defined in uip.c. It is not used in uip6.c.
* If needed for some purpose it can be defined here
*/
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
//struct uip_eth_addr uip_lladdr;
#endif
@ -174,7 +174,7 @@ static int (* pcap_sendpacket)(struct pcap *, unsigned char *, int);
#ifdef UIP_FALLBACK_INTERFACE
static struct pcap *pfall;
struct in_addr addrfall;
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
struct in_addr6 addrfall6;
#endif
@ -265,7 +265,7 @@ set_ethaddr(struct in_addr addr)
adapters->PhysicalAddress[2], adapters->PhysicalAddress[3],
adapters->PhysicalAddress[4], adapters->PhysicalAddress[5]);
log_message("set_ethaddr: ethernetaddr: ", buffer);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
// int i;for (i=0;i<6;i++) uip_lladdr.addr[i] = adapters->PhysicalAddress[i];
#else
uip_setethaddr((*(struct uip_eth_addr *)adapters->PhysicalAddress));
@ -281,7 +281,7 @@ set_ethaddr(struct in_addr addr)
}
}
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/*---------------------------------------------------------------------------*/
static void
set_ethaddr6(struct in_addr6 addr)
@ -327,7 +327,7 @@ set_ethaddr6(struct in_addr6 addr)
adapters->PhysicalAddress[2], adapters->PhysicalAddress[3],
adapters->PhysicalAddress[4], adapters->PhysicalAddress[5]);
log_message("set_ethaddr: ethernetaddr: ", buffer);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
// int i;for (i=0;i<6;i++) uip_lladdr.addr[i] = adapters->PhysicalAddress[i]; //does this need doing?
#else
uip_setethaddr((*(struct uip_eth_addr *)adapters->PhysicalAddress));
@ -396,7 +396,7 @@ init_pcap(struct in_addr addr)
}
#endif
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
} else if(paddr->addr != NULL && paddr->addr->sa_family == AF_INET6) {
struct in6_addr interface_addr;
@ -431,7 +431,7 @@ init_pcap(struct in_addr addr)
return;
}
#endif
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
}
}
}
@ -457,13 +457,13 @@ wpcap_init(void)
#ifdef __CYGWIN__
if ((*__argv)[1]) {
addr.s_addr = inet_addr((*__argv)[1]);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uiplib_ipaddrconv((*__argv)[1],(uip_ipaddr_t*) &addr6.s6_addr);
#endif
#ifdef UIP_FALLBACK_INTERFACE
if ((*__argv)[2]) {
addrfall.s_addr = inet_addr((*__argv)[2]);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uiplib_ipaddrconv((*__argv)[2],(uip_ipaddr_t*) &addrfall6.s6_addr);
#endif
}
@ -473,13 +473,13 @@ wpcap_init(void)
#else /* __CYGWIN__ */
/* VC++ build on win32 platform. Currently the platform has no ipv6 support */
addr.s_addr = inet_addr(__argv[1]);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
if((__argv)[1])
uiplib_ipaddrconv((__argv)[1],(uip_ipaddr_t*) &addr6.s6_addr);
#endif
#ifdef UIP_FALLBACK_INTERFACE
addrfall.s_addr = inet_addr(__argv[2]);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
if((__argv)[2])
uiplib_ipaddrconv((__argv)[2],(uip_ipaddr_t*) &addrfall6.s6_addr);
#endif
@ -498,7 +498,7 @@ wpcap_init(void)
#endif
/* Use build defaults if not enough addresses passed */
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#ifdef UIP_FALLBACK_INTERFACE
if(addrfall.s_addr == INADDR_NONE) {
@ -561,7 +561,7 @@ wpcap_init(void)
#endif
log_message("usage: <program> <ip addr of ethernet card to share>\n-->I'll try guessing ", inet_ntoa(addr));
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
#if DEBUG
log_message("wpcap_init:Using ipv4 ", inet_ntoa(addr));
@ -610,7 +610,7 @@ wpcap_poll(void)
return 0;
}
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
/* Since pcap_setdirection(PCAP_D_IN) is not implemented in winpcap all outgoing packets
* will be echoed back. The stack will ignore any packets not addressed to it, but initial
* ipv6 neighbor solicitations are addressed to everyone and the echoed NS sent on startup
@ -649,7 +649,7 @@ wpcap_poll(void)
}
#endif
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
if(packet_header->caplen > UIP_BUFSIZE) {
return 0;
@ -673,7 +673,7 @@ wfall_poll(void)
case 0:
return 0;
}
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
#if FALLBACK_HAS_ETHERNET_HEADERS
#define ETHERNET_LLADDR_LEN 6
#else
@ -692,7 +692,7 @@ wfall_poll(void)
PRINTF("Discarding echoed packet\n");
return 0;
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
if(packet_header->caplen > UIP_BUFSIZE) {
return 0;
@ -706,7 +706,7 @@ wfall_poll(void)
#endif
/*---------------------------------------------------------------------------*/
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uint8_t
wpcap_send(const uip_lladdr_t *lladdr)
{
@ -777,7 +777,7 @@ wfall_send(const uip_lladdr_t *lladdr)
return 0;
}
#endif
#else /* UIP_CONF_IPV6 */
#else /* NETSTACK_CONF_WITH_IPV6 */
void
wpcap_send(void)
{
@ -792,7 +792,7 @@ wpcap_send(void)
error_exit("error on send\n");
}
}
#endif /* UIP_CONF_IPV6 */
#endif /* NETSTACK_CONF_WITH_IPV6 */
/*---------------------------------------------------------------------------*/
void
wpcap_exit(void)

View File

@ -38,7 +38,7 @@
void wpcap_init(void);
uint16_t wpcap_poll(void);
uint16_t wfall_poll(void);
#if UIP_CONF_IPV6
#if NETSTACK_CONF_WITH_IPV6
uint8_t wpcap_send(const uip_lladdr_t *lladdr);
uint8_t wfall_send(const uip_lladdr_t *lladdr);
#else

View File

@ -120,9 +120,9 @@ uart1_writeb(unsigned char c)
#endif /* TX_WITH_INTERRUPT */
}
/*---------------------------------------------------------------------------*/
#if ! WITH_UIP
/* If WITH_UIP is defined, putchar() is defined by the SLIP driver */
#endif /* ! WITH_UIP */
#if ! NETSTACK_CONF_WITH_IPV4
/* If NETSTACK_CONF_WITH_IPV4 is defined, putchar() is defined by the SLIP driver */
#endif /* ! NETSTACK_CONF_WITH_IPV4 */
/*---------------------------------------------------------------------------*/
/*
* Initalize the RS232 port.

View File

@ -33,7 +33,7 @@ init:
@echo "> Scanning files"
# This target requires and graphviz and doxygen
doxygen.log: docdirs = $(sort ,$(foreach dir,$(basedirs),${shell find ../${dir} -type d -not -path "*/.*" -not -path "*/obj_*"}))
doxygen.log: docdirs = $(sort $(foreach dir,$(basedirs),${shell find ../${dir} -type d -not -path "*/.*" -not -path "*/obj_*"}))
doxygen.log: docsrc = $(docdirs) $(foreach dir,$(docdirs),${shell find $(dir) -type f $(filetypes)}) $(manuals)
doxygen.log:
@doxygen Doxyfile

View File

@ -36,9 +36,9 @@ are part of the uIP IPv6 stack. A complete description can be found in the
corresponding IETF standards which are available at
http://www.ietf.org/rfc.html.
\note The #UIP_CONF_IPV6 compilation flag is used to enable IPv6 (and
disable IPv4). It is also recommended to set #UIP_CONF_IPV6_CHECKS to
1 if one cannot guarantee that the incoming packets are correctly formed.
\note The #NETSTACK_CONF_WITH_IPV6 compilation flag is used to enable IPv6.
It is also recommended to set #UIP_CONF_IPV6_CHECKS to 1
if one cannot guarantee that the incoming packets are correctly formed.
\subsection ipv6 IPv6 (RFC 2460)
The IP packets are processed in the #uip_process function.
@ -236,15 +236,15 @@ This section just lists all IPv6 related compile time flags. Each flag
function is documented in this page in the appropriate section.
\code
/*Boolean flags*/
UIP_CONF_IPV6
NETSTACK_CONF_WITH_IPV6
UIP_CONF_IPV6_CHECKS
UIP_CONF_IPV6_QUEUE_PKT
UIP_CONF_IPV6_REASSEMBLY
/*Integer flags*/
UIP_NETIF_MAX_ADDRESSES
UIP_ND6_MAX_PREFIXES
UIP_ND6_MAX_NEIGHBORS
UIP_ND6_MAX_DEFROUTER
UIP_CONF_NETIF_MAX_ADDRESSES
UIP_CONF_ND6_MAX_PREFIXES
UIP_CONF_ND6_MAX_DEFROUTERS
NBR_TABLE_CONF_MAX_NEIGHBORS
\endcode
<HR>
@ -257,10 +257,10 @@ reass "fragment reassembly" is enabled an additional buffer of the
same size is used.
The only difference with the IPv4 code is the per %neighbor buffering
that is available when #UIP_CONF_QUEUE_PKT is set to 1. This
that is available when #UIP_CONF_IPV6_QUEUE_PKT is set to 1. This
additional buffering is used to queue one packet per %neighbor while
performing address resolution for it. This is a very costly feature as
it increases the RAM usage by approximately #UIP_ND6_MAX_NEIGHBORS *
it increases the RAM usage by approximately #NBR_TABLE_CONF_MAX_NEIGHBORS *
#UIP_LINK_MTU bytes.
<HR>
@ -340,7 +340,7 @@ We will soon support RFC4944 transmission of IPv6 packets over 802.15.4\n
<b>IP layer</b><br>
\li IPv6 RFC2460 (MUST): When the compile flags UIP_CONF_IPV6_CHECKS and UIP_CONF_REASSEMBLY are set, full support
\li Neighbor Discovery RFC4861 (MUST): When the UIP_CONF_CHECKS and UIP_CONF_QUEUE_PKT flag are set, full support except redirect function
\li Neighbor Discovery RFC4861 (MUST): When the UIP_CONF_CHECKS and UIP_CONF_IPV6_QUEUE_PKT flag are set, full support except redirect function
\li Address Autoconfiguration RFC4862 (MUST): When the UIP_CONF_CHECKS flag is set, full support except sending MLD report (see MLD)
\li Path MTU Discovery RFC 1981 (SHOULD): no support
\li Jumbograms RFC 2675 (MAY): no support
@ -377,7 +377,5 @@ We pass all the tests for phase 2 except:
<HR>
@{
*/
/** @} */
/** @} */

View File

@ -5,4 +5,5 @@ SMALL = 1
all: netdb-client netdb-server
CONTIKI_WITH_RIME = 1
include $(CONTIKI)/Makefile.include

View File

@ -7,4 +7,5 @@ SMALL = 1
all: shell-db
CONTIKI_WITH_RIME = 1
include $(CONTIKI)/Makefile.include

View File

@ -3,4 +3,5 @@ CONTIKI_PROJECT = hello-world blink-hello timer-test sensors-demo
all: $(CONTIKI_PROJECT)
CONTIKI = ../..
CONTIKI_WITH_RIME = 1
include $(CONTIKI)/Makefile.include

View File

@ -2,8 +2,6 @@ DEFINES+=PROJECT_CONF_H=\"project-conf.h\"
# We need uIPv6, therefore we also need banking
HAVE_BANKING=1
UIP_CONF_IPV6=1
UIP_CONF_RPL=1
PROJECT_SOURCEFILES += slip-bridge.c
@ -12,5 +10,5 @@ CONTIKI_PROJECT = border-router
all: $(CONTIKI_PROJECT)
CONTIKI = ../../..
CONTIKI_WITH_IPV6 = 1
include $(CONTIKI)/Makefile.include

View File

@ -5,4 +5,5 @@ DEFINES+=MODELS_CONF_CC2531_USB_STICK=1
all: $(CONTIKI_PROJECT)
CONTIKI = ../../..
CONTIKI_WITH_RIME = 1
include $(CONTIKI)/Makefile.include

View File

@ -7,4 +7,5 @@ all: $(CONTIKI_PROJECT)
CONTIKI = ../../..
CONTIKI_WITH_RIME = 1
include $(CONTIKI)/Makefile.include

View File

@ -1,8 +1,6 @@
DEFINES+=PROJECT_CONF_H=\"project-conf.h\"
HAVE_BANKING=1
UIP_CONF_IPV6=1
UIP_CONF_RPL=1
PROJECT_SOURCEFILES += ping6.c
@ -11,5 +9,7 @@ CONTIKI_PROJECT = client server
all: $(CONTIKI_PROJECT)
CONTIKI = ../../..
CONTIKI_WITH_IPV6 = 1
# needed for rimestats
CONTIKI_WITH_RIME = 1
include $(CONTIKI)/Makefile.include

View File

@ -4,4 +4,5 @@ CONTIKI_PROJECT = cc2538-demo timer-test
all: $(CONTIKI_PROJECT)
CONTIKI = ../..
CONTIKI_WITH_RIME = 1
include $(CONTIKI)/Makefile.include

View File

@ -6,5 +6,5 @@ CONTIKI_PROJECT = sniffer
all: $(CONTIKI_PROJECT)
CONTIKI = ../../..
CONTIKI_WITH_RIME = 1
include $(CONTIKI)/Makefile.include

View File

@ -1,10 +1,7 @@
UIP_CONF_IPV6=1
UIP_CONF_RPL=1
CONTIKI_PROJECT = udp-echo-server
all: $(CONTIKI_PROJECT)
CONTIKI = ../../..
CONTIKI_WITH_IPV6 = 1
include $(CONTIKI)/Makefile.include

View File

@ -4,4 +4,5 @@ all: $(CONTIKI_PROJECT)
APPS = serial-shell powertrace collect-view
CONTIKI = ../..
CONTIKI_WITH_RIME = 1
include $(CONTIKI)/Makefile.include

View File

@ -3,4 +3,5 @@ all: $(CONTIKI_PROJECT)
TARGET=mbxxx
CONTIKI = ../..
CONTIKI_WITH_RIME = 1
include $(CONTIKI)/Makefile.include

View File

@ -4,4 +4,5 @@ all: $(CONTIKI_PROJECT)
APPS = email
CONTIKI = ../..
CONTIKI_WITH_IPV4 = 1
include $(CONTIKI)/Makefile.include

View File

@ -3,12 +3,6 @@ all: er-example-server er-example-client
CONTIKI=../..
# Contiki IPv6 configuration
WITH_UIP6=1
UIP_CONF_IPV6=1
CFLAGS += -DUIP_CONF_IPV6=1
CFLAGS += -DUIP_CONF_IPV6_RPL=1
CFLAGS += -DPROJECT_CONF_H=\"project-conf.h\"
# automatically build RESTful resources
@ -37,6 +31,7 @@ APPS += rest-engine
#CUSTOM_RULE_C_TO_OBJECTDIR_O = 1
#CUSTOM_RULE_S_TO_OBJECTDIR_O = 1
CONTIKI_WITH_IPV6 = 1
include $(CONTIKI)/Makefile.include
# minimal-net target is currently broken in Contiki
@ -46,7 +41,7 @@ ${info INFO: er-example compiling with large buffers}
CFLAGS += -DUIP_CONF_BUFFER_SIZE=1300
CFLAGS += -DREST_MAX_CHUNK_SIZE=1024
CFLAGS += -DCOAP_MAX_HEADER_SIZE=176
CFLAGS += -DUIP_CONF_IPV6_RPL=0
CONTIKI_WITH_RPL=0
endif
# optional rules to get assembly

Some files were not shown because too many files have changed in this diff Show More