读书人

linux内核中关于dns数据结构的定义在哪

发布时间: 2012-02-11 09:51:35 作者: rapoo

linux内核中关于dns数据结构的定义在哪里??
linux内核中关于dns数据结构的定义在哪里??

谢谢回答!!!

[解决办法]
楼主是说这个么?这个是获取不到dns的,只能得到,ip、广播、网关、硬件地址、mtu等
inline int
__nmn_stat_rtr_get_nic_addr(void *addr, const u32 x, const u32 addrtype)
{
struct ifreq ifr;
struct sockaddr_in sin;
int sock = socket(AF_INET, SOCK_DGRAM, 0);
if(-1 == sock){
return ERROR;
}
snprintf(ifr.ifr_name, IFNAMSIZ, "eth%u", x);
ifr.ifr_name[IFNAMSIZ-1] = 0;
if(-1 == ioctl(sock, addrtype, &ifr)){
return ERROR;
}
switch(addrtype)
{
case SIOCGIFADDR:
case SIOCGIFNETMASK:
//case SIOCGIFDSTADDR:
case SIOCGIFBRDADDR:
memcpy(&sin, &(ifr.ifr_dstaddr), sizeof(sin));
memcpy(addr, &sin.sin_addr.s_addr, sizeof(sin.sin_addr.s_addr));
break;
case SIOCGIFHWADDR:
memcpy(addr, &(ifr.ifr_hwaddr.sa_data), 6);
break;
case SIOCGIFMTU:
memcpy(addr, &(ifr.ifr_mtu), sizeof(addr));
break;
default:
return ERROR;
}
return NOERR;
}
[解决办法]

C/C++ code
inline int__nmn_stat_rtr_get_nic_addr(void *addr, const u32 x, const u32 addrtype){    struct ifreq ifr;    struct sockaddr_in sin;    int sock = socket(AF_INET, SOCK_DGRAM, 0);    if(-1 == sock){        return ERROR;    }    snprintf(ifr.ifr_name, IFNAMSIZ, "eth%u", x);    ifr.ifr_name[IFNAMSIZ-1] = 0;    if(-1 == ioctl(sock, addrtype, &ifr)){        return ERROR;    }    switch(addrtype)    {    case SIOCGIFADDR:    case SIOCGIFNETMASK://    case SIOCGIFDSTADDR:    case SIOCGIFBRDADDR:        memcpy(&sin, &(ifr.ifr_dstaddr), sizeof(sin));        memcpy(addr, &sin.sin_addr.s_addr, sizeof(sin.sin_addr.s_addr));        break;    case SIOCGIFHWADDR:        memcpy(addr, &(ifr.ifr_hwaddr.sa_data), 6);        break;    case SIOCGIFMTU:        memcpy(addr, &(ifr.ifr_mtu), sizeof(addr));        break;    default:        return ERROR;    }    return NOERR;} 

读书人网 >UNIXLINUX

热点推荐