nes-proj/examples/webserver-ipv6
David Kopf e62f2c3977 Ensure MAXDADNS is defined in uip-ds6.h
Set no RPL as webserver6.minimal-net default and update README
2012-05-28 10:01:34 -04:00
..
Makefile Ensure MAXDADNS is defined in uip-ds6.h 2012-05-28 10:01:34 -04:00
Makefile.target replaced DEFAULT_TARGET with Makefile.target for specifying default target 2009-06-26 12:04:46 +00:00
README Ensure MAXDADNS is defined in uip-ds6.h 2012-05-28 10:01:34 -04:00
webserver6.c examples for uIPv6 2008-10-14 10:01:52 +00: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.

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! **********