QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1720|回复: 1

用ioctl函数枚举并配置网卡的问题...

[复制链接]
发表于 2004-4-9 20:21:37 | 显示全部楼层 |阅读模式
用ioctl函数枚举并配置网卡的问题...
郁闷了,搞了几天都没弄明白
我的程序现在要枚举系统中所有的网卡,并且配置ip地址、掩码等
1、首先是在枚举网络接口的问题
我的机器中存在lo,eth0,但是情况比较特殊,网卡没有经过任何配置,只是有驱动并认出了网卡
ioctl(fd,SIOCGIFCONF,&stIfconf)成功返回,但是没有查找到任何接口
我手头上只有busybox的ifconfig代码,经过分析,busybox也是一样,只不过它额外读取/proc/net/dev获得网络接口,这个问题解决,只是想不明白,为什么ioctl无法返回这些接口?加入没有/proc,如何获得接口呢??

2、通过/proc获得接口名称以后,ioctl设置ip地址失败,错误号码是EINVAL
我的代码是这样的,省略了其他代码,经过测试,其他应该没有问题
iRes=ioctl(fd,SIOCGIFFLAGS,&stTemp);//获取旧的标志
stTemp.ifr_flags =iFlags | IFF_UP;//up加上UP标志
iRes=ioctl(fd,SIOCSIFFLAGS,&stTemp);设置标志
iRes=ioctl(fd,SIOCSIFADDR,&stTemp);设置地址
...后面还有配置掩码之类的,但是执行设置地址时出错了
但是,我先用ifconfig程序设置地址,然后把网卡down掉,在用我的程序,旧可以通过,可是我跟踪了ifconfig,它好像也只是先调用SIOCSIFADDR,然后SIOCGIFFLAGS,没什么特殊的操作在,郁闷。。。
 楼主| 发表于 2004-4-12 09:30:08 | 显示全部楼层

...

...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 14:02 , Processed in 0.049369 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表