ireader / sdk

portable system call(aio/socket/thread/process/lock/event/pipe)
MIT License
419 stars 235 forks source link

network_getmac linux #37

Open Ghazigq opened 1 year ago

Ghazigq commented 1 year ago

linux下的network_getmac返回的mac地址,是否可以更改冒号作为分隔符而非"-",这样可以跟windows保持一致

ireader commented 1 year ago

说反了?windows是‘-’分割,linux是'-'分割?

Ghazigq commented 1 year ago

没说反呀,sysnetconfig文件中,windows就是冒号,linux是-号

    #if !defined(OS_MAC)
    static int network_getmac(const struct ifaddrs *ifaddr, const char* ifname, char hwaddr[20])
    {
        const struct ifaddrs *ifa = NULL;
        struct sockaddr_ll *macaddr = NULL;

        for(ifa = ifaddr; ifa; ifa = ifa->ifa_next)
        {
            if(0 == strcmp(ifa->ifa_name, ifname) 
                && AF_PACKET == ifa->ifa_addr->sa_family
                && ifa->ifa_addr )
            {
                macaddr = (struct sockaddr_ll*)ifa->ifa_addr;
                sprintf(hwaddr, "%02X-%02X-%02X-%02X-%02X-%02X",
                    (unsigned int)(macaddr->sll_addr[0]),
                    (unsigned int)(macaddr->sll_addr[1]),
                    (unsigned int)(macaddr->sll_addr[2]),
                    (unsigned int)(macaddr->sll_addr[3]),
                    (unsigned int)(macaddr->sll_addr[4]),
                    (unsigned int)(macaddr->sll_addr[5]));
                return 0;
            }
        }
        return -1;
    }
#endif
ireader commented 1 year ago

是的,可以修改为跟系统一致。

Ghazigq commented 1 year ago

还有个编译问题

else if (pAdapter->FirstGatewayAddress && AF_INET6 == AF_INET == pAdapter->FirstGatewayAddress->Address.lpSockaddr->sa_family)
                inet_ntop(AF_INET6, &((struct sockaddr_in6*)pAdapter->FirstGatewayAddress->Address.lpSockaddr)->sin6_addr, gateway, sizeof(gateway));