/*---------------------------------------------------------------------------*/ void ip64_init(void) { int i; uint8_t state; uip_ipaddr(&ipv4_broadcast_addr, 255,255,255,255); ip64_hostaddr_configured = 0; PRINTF("ip64_init\n"); IP64_ETH_DRIVER.init(); #if IP64_CONF_DHCP ip64_ipv4_dhcp_init(); #endif /* IP64_CONF_DHCP */ /* Specify an IPv6 address for local communication to the host. We'll just pick the first one we find in our list. */ for(i = 0; i < UIP_DS6_ADDR_NB; i++) { state = uip_ds6_if.addr_list[i].state; PRINTF("i %d used %d\n", i, uip_ds6_if.addr_list[i].isused); if(uip_ds6_if.addr_list[i].isused && (state == ADDR_TENTATIVE || state == ADDR_PREFERRED)) { ip64_set_ipv6_address(&uip_ds6_if.addr_list[i].ipaddr); break; } } }
void cetic_6lbr_init_finalize(void) { #if CETIC_6LBR_WITH_RPL if(rpl_fast_startup) { cetic_6lbr_start_dodag_root(); } else { cetic_6lbr_start_delayed_dodag_root(1); } #endif #if CETIC_6LBR_WITH_IP64 if((nvm_data.global_flags & CETIC_GLOBAL_IP64) != 0) { LOG6LBR_INFO("Starting IP64\n"); ip64_eth_addr_set((struct ip64_eth_addr *)eth_mac_addr); if((nvm_data.eth_ip64_flags & CETIC_6LBR_IP64_RFC6052_PREFIX) != 0) { uip_ip6addr_t ip64_prefix = {{ 0, 0x64, 0xff, 0x9b, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; ip64_addr_set_prefix(&ip64_prefix, 96); } ip64_init(); if((nvm_data.eth_ip64_flags & CETIC_6LBR_IP64_DHCP) == 0) { memcpy(ð_ip64_addr, nvm_data.eth_ip64_addr, sizeof(nvm_data.eth_ip64_addr)); memcpy(ð_ip64_netmask, nvm_data.eth_ip64_netmask, sizeof(nvm_data.eth_ip64_netmask)); memcpy(ð_ip64_gateway, nvm_data.eth_ip64_gateway, sizeof(nvm_data.eth_ip64_gateway)); ip64_set_ipv4_address(ð_ip64_addr, ð_ip64_netmask); ip64_set_draddr(ð_ip64_gateway); LOG6LBR_4ADDR(INFO, ð_ip64_addr, "IPv4 address : "); } else { ip64_ipv4_dhcp_init(); } } #endif #if RESOLV_CONF_SUPPORTS_MDNS if((nvm_data.global_flags & CETIC_GLOBAL_MDNS) != 0) { LOG6LBR_INFO("Starting MDNS\n"); process_start(&resolv_process, NULL); resolv_set_hostname((char *)nvm_data.dns_host_name); #if RESOLV_CONF_SUPPORTS_DNS_SD if((nvm_data.dns_flags & CETIC_6LBR_DNS_DNS_SD) != 0) { resolv_add_service("_6lbr._tcp", "", nvm_data.webserver_port); } #endif } #endif LOG6LBR_INFO("Starting as " CETIC_6LBR_MODE "\n"); #if CONTIKI_TARGET_NATIVE cetic_6lbr_save_ip(); #endif }