linux ioctl函数

函数原型

int ioctl(int d, int request, ...);

ioctl()函数操纵底层设备的参数特殊文件。

函数参数说明

int ioctl(int d, int request, ...);
第一个参数必须是一个打开的文件描述。
第二个参数是设备相关的请求代码
第三个参数是一个无类型的指针的内存。指针类型依赖第二个参数。

ioctl函数 第二个参数 与 第三个参数 指针类型的对应关系表
这里写图片描述

ifconf 结构体

struct ifconf  {
    int ifc_len;            /* 缓冲区大小    */
    union {
        char *ifcu_buf;
        struct ifreq *ifcu_req;
    } ifc_ifcu;
};
#define ifc_buf ifc_ifcu.ifcu_buf       /* 缓冲区地址    */
#define ifc_req ifc_ifcu.ifcu_req       /* ifreq的地址 */

ifreq 结构体

struct ifreq {
#define IFHWADDRLEN 6 //6个字节的硬件地址,即MAC
        union {
                char ifrn_name[IFNAMESIZ];//网络接口名称
        } ifr_ifrn;
        union {
                struct sockaddr ifru_addr;//本地IP地址
                struct sockaddr ifru_dstaddr;//目标IP地址
                struct sockaddr ifru_broadaddr;//广播IP地址
                struct sockaddr ifru_netmask;//本地子网掩码地址
                struct sockaddr ifru_hwaddr;//本地MAC地址
                short ifru_flags;//网络接口标记
                int ifru_ivalue;//不同的请求含义不同
                struct ifmap ifru_map;//网卡地址映射
                int ifru_mtu;//最大传输单元
                char ifru_slave[IFNAMSIZ];//占位符
                char ifru_newname[IFNAMSIZE];//新名称
                void __user* ifru_data;//用户数据
                struct if_settings ifru_settings;//设备协议设置
        } ifr_ifru;
}
#define ifr_name ifr_ifrn.ifrn_name;//接口名称
#define ifr_hwaddr ifr_ifru.ifru_hwaddr;//MAC
#define ifr_addr ifr_ifru.ifru_addr;//本地IP
#define ifr_dstaddr ifr_ifru.dstaddr;//目标IP
#define ifr_broadaddr ifr_ifru.broadaddr;//广播IP
#define ifr_netmask ifr_ifru.ifru_netmask;//子网掩码
#define ifr_flags ifr_ifru.ifru_flags;//标志
#define ifr_metric ifr_ifru.ifru_ivalue;//接口侧度
#define ifr_mtu ifr_ifru.ifru_mtu;//最大传输单元
#define ifr_map ifr_ifru.ifru_map;//设备地址映射
#define ifr_slave ifr_ifru.ifru_slave;//副设备
#define ifr_data ifr_ifru.ifru_data;//接口使用
#define ifr_ifrindex ifr_ifru.ifru_ivalue;//网络接口序号
#define ifr_bandwidth ifr_ifru.ifru_ivalue;//连接带宽
#define ifr_qlen ifr_ifru.ifru_ivalue;//传输单元长度
#define ifr_newname ifr_ifru.ifru_newname;//新名称 
#define ifr_seeting ifr_ifru.ifru_settings;//设备协议设置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值