Added new neighbor-table module, a centralized place where to store all data about neighbors, indexed by link-layer address. Meant for use in other Contiki modules such as rpl, ds6, ds6-route, phase, neighbor-info.
Make phase module use neighbor-table.
Make DS6 neighbors use neighbor-table, and move all DS6 neighbor management from uip-ds6 to a new uip-ds6-neighbor module.
Make uip-ds6-route use neighbor table. Instead of storing a global list of routing entries that contain both the next hop and the destination, we have a separate list of reachable destination for each neighbor in the global table.
Make RPL use neighbor tables. RPL locks the neighbor used as preferred parent.
Moved ETX management from neighbor-info to rpl-of-etx. Avoids conversions between different fixed point representations, and simplifies neighbor management. Makes more clear how default-ETX and noack-ETX actually affect the rank. Removed neighbor-info and neighbor-attr.
Removed now unused per-module neighbor table size configs. Use NEIGHBOR_CONF_MAX_NEIGHBORS instead.
Port apps, examples, platforms and tools so they use the new neighbor and route API.
Fix naming issues and includes in uip-ds6-nbr.h
Added and updated debugging printouts and reformatted code to make it a little easier to read.
Added function prototypes to a number of functions with void arguments
Defensive programming: check for the argument being NULL.
Added a function rpl_get_parent_link_metric() for obtaining the link metric of a given parent
Fixed a bunch of compiler warnings
Added a function uip_ds6_nbr_num() for getting the number of neighbors
Bugfix: don't set the parent if the dag is NULL
Implement forwarding error handling: if a packet changes direction, we set the FWD_ERR flag. If we see the FWD_ERR flag, we drop the route that we sent it to. If we are the root node, we also initiate a global repair.
Poor man's loop reparation: reset the DIO timer and hope the neighbor learns a better route.
Loop detection via DAO: if we get a DAO from a parent, that parent thinks we are its parent. We poison it and recalulate our parents.
Make sure our parent's IP address isn't NULL.