mirror of
https://github.com/oliverschmidt/contiki.git
synced 2024-08-15 00:29:02 +00:00
.. | ||
Makefile | ||
Makefile.target | ||
README | ||
webserver6.c |
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. 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: - 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. Note: You should set the preferred and valid lifetime to reasonable value to avoid clock wrap-around. E.g.: AdvPreferredLifetime 400; AdvValidLifetime 600; 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) 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/... Change that using e.g. $make clean $make WITH_WEBSERVER=webserver-nano $make TARGET=redbee-econotag WITH_WEBSERVER=webserver-nano $make TARGET=avr-raven WITH_WEBSERVER=raven-webserver ******** Make clean before switching make options! **********