updated core to 1.2.4, fixed pico_device init bug
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user