Contiki 3.x
static-routing.c
1 /*
2  * static-routing.c
3  *
4  * Created on: Oct 12, 2010
5  * Author: dogan
6  */
7 
8 #include "static-routing.h"
9 
10 #if !defined (CONTIKI_TARGET_MINIMAL_NET) /* Any other targets will be added here (&& ! defined (OTHER))*/
11 
12 #define DEBUG 0
13 #if DEBUG
14 #include <stdio.h>
15 #define PRINTF(...) printf(__VA_ARGS__)
16 #define PRINT6ADDR(addr) PRINTF(" %02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x ", ((uint8_t *)addr)[0], ((uint8_t *)addr)[1], ((uint8_t *)addr)[2], ((uint8_t *)addr)[3], ((uint8_t *)addr)[4], ((uint8_t *)addr)[5], ((uint8_t *)addr)[6], ((uint8_t *)addr)[7], ((uint8_t *)addr)[8], ((uint8_t *)addr)[9], ((uint8_t *)addr)[10], ((uint8_t *)addr)[11], ((uint8_t *)addr)[12], ((uint8_t *)addr)[13], ((uint8_t *)addr)[14], ((uint8_t *)addr)[15])
17 #define PRINTLLADDR(lladdr) PRINTF(" %02x:%02x:%02x:%02x:%02x:%02x ",(lladdr)->addr[0], (lladdr)->addr[1], (lladdr)->addr[2], (lladdr)->addr[3],(lladdr)->addr[4], (lladdr)->addr[5])
18 #else
19 #define PRINTF(...)
20 #define PRINT6ADDR(addr)
21 #define PRINTLLADDR(addr)
22 #endif
23 
24 
25 #if !UIP_CONF_IPV6_RPL
26 #include "contiki-net.h"
27 #include "sys/node-id.h"
28 
29 void set_global_address(void)
30 {
31  uip_ipaddr_t ipaddr;
32 
33  uip_ip6addr(&ipaddr, 0xaaaa, 0, 0, 0, 0, 0, 0, 0);
35  uip_ds6_addr_add(&ipaddr, 0, ADDR_AUTOCONF);
36 }
37 
38 void configure_routing(void)
39 {
40  PRINTF("configure_routing\n");
41 
42  if (node_id < 10) { /*COOJA*/
43  /*Go to desktop machine over border router*/
44  ADD_ROUTE(DESKTOP_MACHINE_ID, COOJA_BORDER_ROUTER_ID);
45  } else { /*SKY*/
46  if (node_id < 20) { /*First hops (ids between 10-20)*/
47  /*Go to desktop machine over border router*/
48  ADD_ROUTE(DESKTOP_MACHINE_ID, BORDER_ROUTER_ID);
49  }
50 
51  switch(node_id) {
52  case 12:
53  ADD_ROUTE(22, 22); /*Go to next hop over the local address of next hop*/
54  break;
55  case 13:
56  ADD_ROUTE(23, 23); /*Go to next hop over the local address of next hop*/
57  break;
58 
59  case 22:
60  ADD_ROUTE(0, 12); /*Go to desktop machine over the corresponding first hop*/
61  break;
62  case 23:
63  ADD_ROUTE(0, 13); /*Go to desktop machine over the corresponding first hop*/
64  break;
65  default:
66  break;
67  }
68  }
69 }
70 #endif /*!UIP_CONF_IPV6_RPL*/
71 #endif /*CONTIKI_TARGET_MINIMAL_NET*/
CCIF uip_lladdr_t uip_lladdr
Host L2 address.
Definition: uip6.c:115
void uip_ds6_set_addr_iid(uip_ipaddr_t *ipaddr, uip_lladdr_t *lladdr)
set the last 64 bits of an IP address based on the MAC address
Definition: uip-ds6.c:535
#define uip_ip6addr(addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7)
Construct an IPv6 address from eight 16-bit words.
Definition: uip.h:969