From fe464025c110a22d3d578e904bd38f37a88b33c0 Mon Sep 17 00:00:00 2001 From: mlenders Date: Wed, 22 Jun 2011 11:57:17 +0200 Subject: [PATCH] [sys/net/sixlowpan/sixlowip.h sys/net/sixlowpan/sixlowip.c] * added loopback address generation features --- sys/net/sixlowpan/sixlowip.c | 13 ++++++++++++- sys/net/sixlowpan/sixlowip.h | 6 ++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/sys/net/sixlowpan/sixlowip.c b/sys/net/sixlowpan/sixlowip.c index b00d2b8775..d725e2f4b7 100644 --- a/sys/net/sixlowpan/sixlowip.c +++ b/sys/net/sixlowpan/sixlowip.c @@ -65,7 +65,7 @@ void sixlowpan_send(ipv6_addr_t *addr, uint8_t *payload, uint16_t p_len){ void ipv6_process(void){ msg m; msg_init_queue(msg_queue, IP_PKT_RECV_BUF_SIZE); - + while(1){ msg_receive(&m); @@ -208,6 +208,17 @@ void ipv6_set_all_nds_mcast_addr(ipv6_addr_t *ipaddr){ ipaddr->uint16[7] = HTONS(0x0001); } +void ipv6_set_lpback_addr(ipv6_addr_t *ipaddr){ + ipaddr->uint16[0] = 0; + ipaddr->uint16[1] = 0; + ipaddr->uint16[2] = 0; + ipaddr->uint16[3] = 0; + ipaddr->uint16[4] = 0; + ipaddr->uint16[5] = 0; + ipaddr->uint16[6] = 0; + ipaddr->uint16[7] = HTONS(0x0001); +} + void ipv6_get_saddr(ipv6_addr_t *src, ipv6_addr_t *dst){ /* try to find best match if dest is not mcast or link local */ int8_t itmp = -1; diff --git a/sys/net/sixlowpan/sixlowip.h b/sys/net/sixlowpan/sixlowip.h index 8923e84387..9e285d7ddb 100644 --- a/sys/net/sixlowpan/sixlowip.h +++ b/sys/net/sixlowpan/sixlowip.h @@ -56,8 +56,9 @@ extern double start; #define ADDR_TYPE_MULTICAST 2 #define ADDR_TYPE_ANYCAST 3 #define ADDR_TYPE_SOL_NODE_MCAST 4 -#define ADDR_TYPE_LINK_LOCAL 5 -#define ADDR_TYPE_GLOBAL 6 +#define ADDR_TYPE_LOOPBACK 5 +#define ADDR_TYPE_LINK_LOCAL 6 +#define ADDR_TYPE_GLOBAL 7 /* dispatch types */ #define DISPATCH_TYPE_IPV6 0x41 #define DISPATCH_TYPE_LOWPAN_HC1 0x42 @@ -138,6 +139,7 @@ uint8_t * get_payload_buf(uint8_t ext_len); void ipv6_set_ll_prefix(ipv6_addr_t *ipaddr); void ipv6_set_all_rtrs_mcast_addr(ipv6_addr_t *ipaddr); void ipv6_set_all_nds_mcast_addr(ipv6_addr_t *ipaddr); +void ipv6_set_lpback_addr(ipv6_addr_t *ipaddr); void ipv6_set_sol_node_mcast_addr(ipv6_addr_t *addr_in, ipv6_addr_t *addr_out); void sixlowpan_bootstrapping(void); void sixlowpan_send(ipv6_addr_t *addr, uint8_t *payload, uint16_t p_len);