2008-10-14 12:01:52 +02:00
|
|
|
This example features a simple webserver running on top of the IPv6
|
|
|
|
contiki stack.
|
|
|
|
|
|
|
|
For this example to run properly the UIP_CONF_TCP compilation flag
|
|
|
|
must be set to 1 in the contiki-conf.h file of the platform.
|
|
|
|
|
2012-05-28 16:01:34 +02:00
|
|
|
By default contiki ipv6 nodes are configured with the low-power RPL
|
|
|
|
protocol and direct outgoing packets through the RPL parent to a mesh
|
|
|
|
border router. Access to the webserver thus requires at least one other
|
|
|
|
node to as the RPL root. The Makefile changes the default to no RPL for
|
|
|
|
the minimal-net target. Override the RPL choice with
|
|
|
|
$make TARGET=minimal-net UIP_CONF_RPL=1
|
|
|
|
$make TARGET=any-other UIP_CONF_RPL=0
|
|
|
|
The RPL mesh border router can be configured with this webserver using the
|
|
|
|
/examples/ipv6/rpl-border-router/ example.
|
|
|
|
|
|
|
|
If you are using the minimal-net platform without RPL you can access the
|
|
|
|
webserver through the link local address by appending the interface descriptor
|
|
|
|
shown at launch, e.g.
|
|
|
|
wget http://[fe80::296:98ff:fe00:0232%tap0] (linux)
|
|
|
|
ping http://[fe80::206:98ff:fe00:0202%nnnn] (Windows)
|
|
|
|
The lower 64 bits are derived from the ethernet EUI-48 "mac address" in uip6.c:
|
|
|
|
uip_lladdr_t uip_lladdr = {{0x00,0x06,0x98,0x00,0x02,0x32}};
|
|
|
|
|
|
|
|
The ipv6 prefix can be hard-coded in the build or assigned through a
|
|
|
|
host router advertisement. If hard-coded just assign the prefix to the
|
|
|
|
interface:
|
|
|
|
sudo ip -6 address add fdfd::1/64 dev tap0 (linux)
|
|
|
|
netsh commands or the interface GUI (Windows)
|
|
|
|
|
|
|
|
On linux you can set up router advertisements as follows:
|
2008-10-14 12:01:52 +02:00
|
|
|
- First do 'ifconfig tap0 inet6 3ffe:0501:ffff:0100:0206:98ff:fe00:0231'
|
|
|
|
or 'ip -6 address add 3ffe:0501:ffff:0100:0206:98ff:fe00:0231' dev tap0.
|
|
|
|
- You might need to add a route 'ip -6 route add
|
|
|
|
aaaa:0000:0000:0000:0206:98ff:fe00:0232/64 dev tap0'
|
|
|
|
- Then configure a global address by sending a router advertisement (RA)
|
|
|
|
with a prefix option. You can use radvd for example to generate such a
|
|
|
|
packet.
|
2008-10-15 10:55:25 +02:00
|
|
|
Note: You should set the preferred and valid lifetime to reasonable
|
|
|
|
value to avoid clock wrap-around. E.g.:
|
|
|
|
AdvPreferredLifetime 400;
|
|
|
|
AdvValidLifetime 600;
|
2008-10-14 12:01:52 +02:00
|
|
|
Assume the prefix in the RA is:
|
|
|
|
3ffe:0501:ffff:0100:0000:0000:0000:0000/64.
|
|
|
|
and that the resulting address created by the contiki stack is:
|
|
|
|
3ffe:0501:ffff:0100:0206:98ff:fe00:0232
|
|
|
|
- Finally you can use 'wget http://[3ffe:0501:ffff:0100:0206:98ff:fe00:0232]'
|
|
|
|
to get the web page (index.html file)
|
2012-05-28 16:01:34 +02:00
|
|
|
|
|
|
|
See the wiki page for more details -
|
|
|
|
http://www.sics.se/contiki/wiki/index.php/Setting_up_Wireshark_on_a_Loopback_Interface
|
|
|
|
|
|
|
|
The default webserver and content is in /apps/webserver/...
|
2011-07-24 17:59:28 +02:00
|
|
|
Change that using e.g.
|
2011-07-25 21:08:49 +02:00
|
|
|
$make clean
|
2011-07-24 17:59:28 +02:00
|
|
|
$make WITH_WEBSERVER=webserver-nano
|
2011-07-25 21:08:49 +02:00
|
|
|
$make TARGET=redbee-econotag WITH_WEBSERVER=webserver-nano
|
|
|
|
$make TARGET=avr-raven WITH_WEBSERVER=raven-webserver
|
|
|
|
|
2012-05-28 16:01:34 +02:00
|
|
|
******** Make clean before switching make options! **********
|