ioctl 操作

函数说明请见函数库中ioctl说明

与网络相关的请求可以划分为6类:

  • 套接字操作
  • 文件操作
  • 接口操作
  • ARP高速缓存操作
  • 路由表操作
  • 流系统

套接字操作

  • SIOCATMARK
    如果本套接字的读指针当前位于带外标记,那就通过第三个参数指向的整数返回一个非0值,否则返回一个0值。
  • SIOCGPGRP
    通过由第三个参数指向的整数返回本套接字的进程ID或进程组ID,该ID指定针对本套接字的SIGIO或SIGURG信号的接收进程。 本请求和fcntl的F_GETOWN命令等效
  • SIOCSPGRP
    把本套接字的进程ID或进程组ID设置成由第三个参数指向的整数, 该ID指定针对本套接字的SIGIO或SIGURG信号的接收进程。 本请求和fcntl的F_SETOWN命令等效。

文件操作

  • FIONBIO
    根据ioctl第三个参数指向一个0值或者非0值,可清除或设置本套接字的非阻塞式I/O标志。 本请求和 O_NONBLOCK文件状态标志等效。 可以通过fcntl的F_SETFL命令清除或者设置该标志。

  • FIOASYNC
    根据ioctl的第三个参数指向一个0值或者非0值, 可清除或设置针对本套接字的信号驱动异步I/O标志,它决定是否收取针对本套接字的异步IO信号(SIGIO)。本请求和O_ASYNC 文件状态标志等效, 可以通过fcntl 的F_SETFL 命令清除或者设置该标志。

  • FIONREAD
    通过有ioctl的第三个参数指向的整数返回当前在本套接字接收缓冲区的字节数。

  • FIOSETOWN
    对于套接字和SIGCSPGRP等效

  • FIOGETOWN
    对于套接字和SIGCSPGRP等效

接口配置

从内核获取配置在系统中的所有接口一般是处理网络接口程序的初始化步骤之一。

  • SIOCGIFCONF
    获取所有接口信息,存储到ifconf结构中
  • SIOCGIFINDEX
    获取接口索引
  • SIOCGIFCOUNT
    获取接口设备数量
  • SIOCGIFTXQLEN
    获取tx queue长度
  • SIOCSIFTXQLEN
    设置tx queue长度
  • SIOCGIFMTU
    在ifr_mtu成员中返回mtu
  • SIOCGIFHWADDR 注意兼容,不是所有系统都支持
    在ifr_hwaddr 成员中返回mac地址
  • SIOCGIFADDR
    在ifr_addr成员中返回单播地址
  • SIOCSIFADDR
    用ifr_addr成员设置接口地址
  • SIOCGIFFLAGS
    在ifr_flags成员中返回接口标志。 这些标志的名字格式为IFF_xxx, 在< net/if.h > 头文件中定义。
  • SIOCSIFFLAGS
    用ifr_flags成员设置接口标志
  • SIOCGIFDSTADDR
    在ifr_dstaddr成员中返回点到点地址
  • SIOCSIFFDSTADDR
    用ifr_dstaddr成员设置点到点地址
  • SIOCGIFBRDADDR
    在ifr_broadaddr成员中返回广播地址
  • SIOCSIFBRDADDR
    用ifr_broadaddr成员设置广播地址
  • SIOCGIFNETMASK
    在ifr_addr 成员中返回子网掩码
  • SIOCSIFNETMASK
    用ifr_addr 成员设置子网掩码
  • SIOCGIFMETRIC
    在ifr_metric成员中返回接口测度。
  • SIOCSIFMETRIC
    用ifr_metric成员设置接口测度。

get_ifi_info 函数 见 《Tcp/IP 网络通信》 网络设备中的get_ifi_info

Arp高速缓存

  • SIOCSARP
    把一个新表项加入到ARP高速缓存,或者修改一个已经存在的表项。
  • SIOCDARP
    从ARP高速缓存中删除一个表项
  • SIOCGARP
    从ARP高速缓存中获取一个表项,调用者指定ip地址,相应的硬件地址随标志一起返回。

路由表操作

  • SIOCADDRT
    往路由表中添加一个表项
  • SIOCDELRT
    从路由表中删除一个表项
文档更新时间: 2021-03-01 22:47   作者:周国强