当前位置: 技术问答>linux和unix
依然是内核里没有in_ntoa的问题,没办法了阿...
来源: 互联网 发布时间:2016-08-18
本文导语: 内核态肯定是不能用inet_ntoa了,问题是2.6的内核里也没有in_ntoa这个(起码比较新的都没有,只保留了in_aton)。 于是我想到去把老的内核里in_ntoa这个函数给抄进来,但是抄进来以后不管PRINTK到文件里还是在QT界面里显...
内核态肯定是不能用inet_ntoa了,问题是2.6的内核里也没有in_ntoa这个(起码比较新的都没有,只保留了in_aton)。
于是我想到去把老的内核里in_ntoa这个函数给抄进来,但是抄进来以后不管PRINTK到文件里还是在QT界面里显示都是乱码的。没办法阿,谁有解决之法阿。。。。。。。。。
kernel 2.5.0:
char *in_ntoa(__u32 in)
{
static char buff[18];
char *p;
p = (char *) ∈
sprintf(buff, "%d.%d.%d.%d",
(p[0] & 255), (p[1] & 255), (p[2] & 255), (p[3] & 255));
return(buff);
}
于是我想到去把老的内核里in_ntoa这个函数给抄进来,但是抄进来以后不管PRINTK到文件里还是在QT界面里显示都是乱码的。没办法阿,谁有解决之法阿。。。。。。。。。
kernel 2.5.0:
char *in_ntoa(__u32 in)
{
static char buff[18];
char *p;
p = (char *) ∈
sprintf(buff, "%d.%d.%d.%d",
(p[0] & 255), (p[1] & 255), (p[2] & 255), (p[3] & 255));
return(buff);
}
|
struct sockaddr_in sin;
- printk(KERN_NOTICE "Looking up port of RPC %d/%d on %sn",
- program, version, in_ntoa(servaddr));
+ printk(KERN_NOTICE "Looking up port of RPC %d/%d on %u.%u.%u.%un",
+ program, version, NIPQUAD(servaddr));
set_sockaddr(&sin, servaddr, 0);
- printk(KERN_NOTICE "Looking up port of RPC %d/%d on %sn",
- program, version, in_ntoa(servaddr));
+ printk(KERN_NOTICE "Looking up port of RPC %d/%d on %u.%u.%u.%un",
+ program, version, NIPQUAD(servaddr));
set_sockaddr(&sin, servaddr, 0);