updated core to 1.2.4, fixed pico_device init bug

This commit is contained in:
Joseph Henry
2017-05-04 15:33:33 -07:00
parent 890e32e88b
commit 307d164938
143 changed files with 14284 additions and 4176 deletions

View File

@@ -81,48 +81,47 @@ namespace ZeroTier {
std::sort(tap->_ips.begin(),tap->_ips.end());
if(ip.isV4())
{
tap->picodev = new struct pico_device;
struct pico_ip4 ipaddr, netmask;
ipaddr.addr = *((uint32_t *)ip.rawIpData());
netmask.addr = *((uint32_t *)ip.netmask().rawIpData());
tap->picodev->send = pico_eth_send; // tx
tap->picodev->poll = pico_eth_poll; // rx
tap->picodev->mtu = tap->_mtu;
tap->picodev->tap = tap;
uint8_t mac[PICO_SIZE_ETH];
tap->_mac.copyTo(mac, PICO_SIZE_ETH);
// DEBUG_ATTN("mac = %s", tap->_mac.toString().c_str());
tap->picodev.send = pico_eth_send; // tx
tap->picodev.poll = pico_eth_poll; // rx
DEBUG_INFO("tap->picodev.poll = %p", tap->picodev.poll);
tap->picodev.mtu = tap->_mtu;
tap->picodev.tap = tap;
if(pico_device_init(&(tap->picodev), "p4", mac) != 0) {
if(pico_device_init(tap->picodev, "p4", mac) != 0) {
DEBUG_ERROR("dev init failed");
delete tap->picodev;
return false;
}
pico_ipv4_link_add(&(tap->picodev), ipaddr, netmask);
pico_ipv4_link_add(tap->picodev, ipaddr, netmask);
DEBUG_INFO("addr = %s", ip.toString().c_str());
return true;
}
if(ip.isV6())
{
struct pico_ip6 ipaddr, netmask;
char ipv6_str[INET6_ADDRSTRLEN], nm_str[INET6_ADDRSTRLEN];
inet_ntop(AF_INET6, ip.rawIpData(), ipv6_str, INET6_ADDRSTRLEN);
inet_ntop(AF_INET6, ip.netmask().rawIpData(), nm_str, INET6_ADDRSTRLEN);
DEBUG_ERROR("ipv6_str = %s", ipv6_str);
DEBUG_ERROR("nm_str = %s", nm_str);
tap->picodev6 = new struct pico_device;
struct pico_ip6 ipaddr, netmask;
pico_string_to_ipv6(ipv6_str, ipaddr.addr);
pico_string_to_ipv6(nm_str, netmask.addr);
pico_ipv6_link_add(&(tap->picodev6), ipaddr, netmask);
tap->picodev6.send = pico_eth_send; // tx
tap->picodev6.poll = pico_eth_poll; // rx
tap->picodev6.tap = tap;
tap->picodev6->send = pico_eth_send; // tx
tap->picodev6->poll = pico_eth_poll; // rx
tap->picodev6->mtu = tap->_mtu;
tap->picodev6->tap = tap;
uint8_t mac[PICO_SIZE_ETH];
tap->_mac.copyTo(mac, PICO_SIZE_ETH);
//mac[3]=9;
//mac[0]='b';
// DEBUG_ATTN("mac = %s", tap->_mac.toString().c_str());
if(pico_device_init(&(tap->picodev6), "p6", mac) != 0) {
if(pico_device_init(tap->picodev6, "p6", mac) != 0) {
DEBUG_ERROR("dev init failed");
delete tap->picodev6;
return false;
}
pico_ipv6_link_add(tap->picodev6, ipaddr, netmask);
DEBUG_INFO("addr6 = %s", ip.toString().c_str());
return true;
}