1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-28 16:01:18 +01:00

* added loopback and all nodes multicast address automatically to interface according to RFC 2581

This commit is contained in:
mlenders 2011-06-22 19:19:37 +02:00
parent 8de7bd7662
commit a4f673ec96
3 changed files with 16 additions and 6 deletions

View File

@ -221,7 +221,7 @@ 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){
void ipv6_set_loaddr(ipv6_addr_t *ipaddr){
ipaddr->uint16[0] = 0;
ipaddr->uint16[1] = 0;
ipaddr->uint16[2] = 0;

View File

@ -141,7 +141,7 @@ uint8_t ipv6_is_router(void);
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_loaddr(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);

View File

@ -35,7 +35,7 @@ unsigned int ip_process_pid;
unsigned int nd_nbr_cache_rem_pid = 0;
iface_t iface;
ipv6_addr_t loaddr;
ipv6_addr_t lladdr;
ieee_802154_long_t laddr;
mutex_t buf_mutex;
@ -930,6 +930,7 @@ lowpan_context_t * lowpan_context_num_lookup(uint8_t num){
}
void sixlowpan_init(transceiver_type_t trans, uint8_t r_addr){
ipv6_addr_t tmp;
/* init mac-layer and radio transceiver */
vtimer_init();
sixlowmac_init(trans);
@ -942,10 +943,19 @@ void sixlowpan_init(transceiver_type_t trans, uint8_t r_addr){
mutex_init(&buf_mutex);
/* init link-local address */
ipv6_set_ll_prefix(&loaddr);
ipv6_set_ll_prefix(&lladdr);
memcpy(&(loaddr.uint8[8]), &(iface.laddr.uint8[0]), 8);
ipv6_iface_add_addr(&loaddr, ADDR_STATE_PREFERRED, 0, 0,
memcpy(&(lladdr.uint8[8]), &(iface.laddr.uint8[0]), 8);
ipv6_iface_add_addr(&lladdr, ADDR_STATE_PREFERRED, 0, 0,
ADDR_TYPE_LINK_LOCAL);
ipv6_set_loaddr(&tmp);
ipv6_iface_add_addr(&tmp, ADDR_STATE_PREFERRED, 0, 0,
ADDR_TYPE_LOOPBACK);
ipv6_set_all_nds_mcast_addr(&tmp);
ipv6_iface_add_addr(&tmp, ADDR_STATE_PREFERRED, 0, 0,
ADDR_TYPE_LOOPBACK);
ipv6_iface_add_addr(&lladdr, ADDR_STATE_PREFERRED, 0, 0,
ADDR_CONFIGURED_AUTO);
ip_process_pid = thread_create(ip_process_buf, IP_PROCESS_STACKSIZE,
PRIORITY_MAIN-1, CREATE_STACKTEST,