Commit graph

123 commits

Author SHA1 Message Date
Robert Quattlebaum f145c17039 core/net/resolv: IPv6 and mDNS ("Bonjour") support. Major refactor.
This patch updates the DNS resolver to support IPv6 and introduces an
improved API for looking up DNS entries. This patch also adds optional
support for mDNS lookups and responses to the DNS resolver.

Here is a quick summary of the changes:

 * Added support for IPv6 lookups.
 * DNS queries now honor record expiration.
 * Added support for mDNS, compatible with "Bonjour".
 * Implemented a new lookup api, `resolv_lookup2()`, which provides
   more information about the state of the record(error, expired,
   looking-up, etc.).

About mDNS/Bonjour Support
--------------------------

This patch adds basic support for mDNS/Bonjour, which allows you to
refer to the name of a device instead of its IP address. This is
incredibly convenient for IPv6 addresses because they tend to be very
long and difficult to remember. It is especially important for
link-local IPv6 addresses, since not all programs support the '%'
notation for indicating a network interface (required on systems with
more than one network interface to disambiguate).

In other words, instead of typing in this:

 * `http://[fe80::58dc:d7ed:a644:628f%en1]/`

You can type this instead:

 * `http://contiki.local/`

Huge improvement, no?

The convenience extends beyond that: this mechanism can be used for
nodes to talk to each other based on their human-readable names instead
of their IPv6 addresses. So instead of a switch on
`aaaa::58dc:d7ed:a644:628f` triggering an actuator on
`aaaa::ed26:19c1:4bd2:f95b`, `light-switch.local` can trigger the
actuator on `living-room-lights.local`.

What you need to do to be able to look up `.local` names on your
workstation depends on a few factors:

 * Your machine needs to be able to send and receive multicast packets
   to and from the LoWPAN. You can do this easily with the Jackdaw
   firmware on an RZUSBStick. If you have a border router, you will need
   it to bridge the mDNS multicast packets across the border.

 * If you are using a Mac, you win. All Apple devices support mDNS
   lookups.

 * If you are using Windows, you can install Apple's Bonjour for Windows
   package. (This may be already installed on your machine if you have
   installed iTunes) After you install this you can easily do `.local`
   lookups.

 * If you are using a Unix machine, you can install Avahi.

The default hostname is set to `contiki.local.`. You can change the
hostname programmatically by calling `resolv_set_hostname()`. You can
change the default hostname by changing `CONTIKI_CONF_DEFAULT_HOSTNAME`.

You may disable mDNS support by setting `RESOLV_CONF_SUPPORTS_MDNS` to
`0`.

---------------------------------

core/net/resolv: `resolv_lookup2()` -> `resolv_lookup()`

Note that this patch should fix several `resolv_lookup()` bugs
that already existed. There were many cases where `resolv_lookup()`
was being called and the IP address ignored, but later code
assumed that the IP address had been fetched... ANYWAY, those
should be fixed now.

---------------------------------

examples/udp-ipv6: Updated client to use MDNS to lookup the server.

Also updated the Cooja regression test simulation.
2013-03-10 11:40:08 -07:00
Johannes Gilger 3877f361e4 Load Makefile.target for slip-radio
This loads Makefile.target into Makefile so we can check for TARGET==sky
when building this. Compilation for sky fails without it.

Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
2013-01-30 15:34:06 +01:00
George Oikonomou de251aeb85 We can now turn off example-provided putchars 2013-01-09 22:23:22 +00:00
Adam Dunkels 99f541e8fd Updated to the latest uip-ds6-route API 2012-11-27 23:04:34 +01:00
Adam Dunkels 5406dd8b18 Updated to use the new uip-ds6-route API 2012-11-27 23:04:34 +01:00
Adam Dunkels ec8c7e9be0 Cleanup of the node-id.h files. The node-id.h file contains
declarations of functions for setting and getting a node ID number, a
functionality that exists on many platforms. Since this functionality
was not considered part of the Contiki core, each platform defined its
own node-id.h file. This commit attempts to clean this up by
collecting the node-id.h into a core/sys/node-id.h file that replaces
the old node-id.h files from the platform directories.
2012-11-20 19:59:46 +01:00
Adam Dunkels 944537fccf Removed all old RCS tags in the Contiki source tree. Those RCS tags are not used any more, as we are now using git to manage the Contiki source tree 2012-10-26 15:54:49 +02:00
Joakim Eriksson 51b73127e9 * Simple JSON parser and generator.
* Simple HTTP webservice with support for both receiving and sending HTTP requests.
* json-ws example that optionally push sensor data to COSM over IPv6.
2012-06-12 16:42:16 +02:00
Niclas Finne f177284a73 Added option to specify the IPv6 prefix 2012-06-12 16:32:05 +02:00
Niclas Finne 16bb9295f3 Added configurable delay between slip packets to avoid losing data 2012-04-20 22:40:45 +02:00
Niclas Finne 28c62208cb Added check for illegal attributes in packet attribute serialization 2012-04-20 22:40:24 +02:00
Niclas Finne 1733f3b6bc Added command context. Patch by Joakim Eriksson 2012-04-20 22:31:37 +02:00
Joakim Eriksson 90e969344a added config for serializing attributes 2012-03-16 03:08:47 -07:00
Niclas Finne 9217c8b321 fixed compiler warning 2012-03-14 15:20:02 +01:00
Joakim Eriksson adff634b88 Merge branch 'master' of ssh://contiki.git.sourceforge.net/gitroot/contiki/contiki 2012-03-09 01:11:21 -08:00
Joakim Eriksson ae3ff57c39 replaced inet6 with inet for linux to get tunbridge working. 2012-03-09 01:09:56 -08:00
David Kopf 07f6e10c1c Add display options to border router web page, default now uses stack instead of static buffer.
Turn radio off until prefix is acquired.
2012-03-02 16:01:12 -05:00
Ilya Dmitrichenko b67e49051c Use __APPLE__ instead of __MACH__. 2012-03-02 15:15:46 -05:00
Ilya Dmitrichenko 7621bdfc77 Fixed ifconfig for Darwin 2012-03-02 15:15:45 -05:00
Ilya Dmitrichenko 70d3acf9af Fixed baudrate issue on Darwin. 2012-03-02 15:15:44 -05:00
David Kopf 7110075108 Make static buffer the default, add comments. 2012-03-06 09:10:12 -05:00
Niclas Finne 40c32990e3 Added missing arguments to usage information 2012-03-06 12:33:16 +01:00
Joakim Eriksson 417a2b691f increase uip buffer size for native border router 2012-02-23 13:59:39 -08:00
Niclas Finne 5fdcd6bc13 Fixed typo, added option to run without slip connection 2012-02-21 14:42:05 +01:00
Nicholas J Humfrey a561d20828 Converted u8_t to uint8_t and u16_t to uint16_t in the examples directory. 2012-02-21 08:33:25 -05:00
Niclas Finne 23a70177b2 Added option to connect to server instead of serial device 2012-02-21 11:05:52 +01:00
David Kopf 0327fe3020 Turn off RDC before SLIP prefix interchange. Disable SIN/SUT prints, leave off-route prints. 2012-02-11 15:15:00 -05:00
Niclas Finne aceb36c66b Replaced SELECT_CALLBACK with an API that supports multiple select callbacks 2012-01-19 17:52:01 +01:00
Adam Dunkels 8a89f90e3e Update to the newest RPL API 2012-01-18 06:12:24 -08:00
David Kopf b251619a2f Add wpcap for cygwin/Windows native border router 2012-01-08 13:37:56 -05:00
David Kopf 777cc88872 Add 921600 baud to slip options, fix compiler warnings 2012-01-08 13:33:40 -05:00
Joakim Eriksson 3d388760c3 added parsing of frame to get receiver address, etc 2012-01-08 02:27:37 -08:00
Niclas Finne 8b83ffec67 Added native-border-router and slip-radio 2012-01-01 09:29:33 +01:00
Joakim Eriksson 65163a9b57 Changed FRAMER to return negative values for error to allow 0 size headers. 2012-01-01 09:10:56 +01:00
Mariano Alvira 5247be27bf dio_intcurrent is now part of the instance struct 2011-12-09 11:15:33 -05:00
Nicolas Tsiftes d0ebeb409e Merge remote-tracking branch 'sf/master' into rpl-patch
Conflicts:
	core/net/tcpip.c
2011-12-08 15:26:11 +01:00
Nicolas Tsiftes 6177187954 Check the return value of udp_new. 2011-12-01 14:40:55 +01:00
Nicolas Tsiftes 2b1549bfe8 Continued merge with sf master 2011-11-21 15:25:13 +01:00
Nicolas Tsiftes 0e32956a63 Merge remote-tracking branch 'sf/master' into rpl-patch 2011-11-21 14:59:31 +01:00
Niclas Finne c273969400 Added missing include 2011-11-15 15:14:43 +01:00
David Kopf 899123a634 Use fixed font for neighbors and routes 2011-10-27 09:25:56 -04:00
Joakim Eriksson cf61e522a8 added powertrace to IPv6 including an example 2011-10-13 15:09:40 +02:00
Matthias Kovatsch 2522566b68 Added SMALL flag for border-router (exceeded sky memory) 2011-10-10 14:30:31 +02:00
Niclas Finne c46acc0a77 Updated for the latest version of httpd-simple in rpl-border-router 2011-09-06 00:25:20 +02:00
Niclas Finne c1b88afe48 Added safeguard to avoid copying too much data to filename 2011-09-06 00:19:31 +02:00
Adam Dunkels bfc314a037 Remove debug output to save space 2011-09-05 12:08:26 +02:00
Adam Dunkels a06cf93e4c Made the sky and z1 platform handling of PROJECT_CONF_H the same as the other platforms: the makefile should define PROJECT_CONF_H to be the name of the header file to include. This header file should #undef everything it #defines, as it is included after all the other configuration options in contiki-conf.h 2011-09-05 11:46:15 +02:00
Adam Dunkels 722b6e0b96 Print out sender IPv6 address when receiving data. When sending data, include a counter in the message. 2011-09-01 09:19:26 +02:00
Adam Dunkels 69d262af5b Merge branch 'master' of ssh://contiki.git.sourceforge.net/gitroot/contiki/contiki 2011-08-31 20:57:31 +02:00
Adam Dunkels 587ac9c501 Copyright headers 2011-08-31 20:54:57 +02:00