ioctl函数的SIOCGIFFLAGS和SIOCSIFFLAG
S是指socket,IO是指input/output,CG是指get,CS是指set,IFFLAGS是指interface flags,因此SIOCGIFFLAGS是获取接口标志的ioctl操作,SIOCSIFFLAGS是设置接口标志的ioctl操作。
SIOCGIFFLAGS会获取指定网络接口的标志。可以使用该标志来确定接口是否运行,是否支持广播、多播等功能,以及接口是否处于混杂模式。可以使用以下方式进行调用:
ioctl(socket_fd, SIOCGIFFLAGS, &ifr);
其中,socket_fd是已打开的套接字文件描述符,ifr是ifreq结构体类型的变量,该结构体包含了要操作的网络接口的名称。如果该操作成功,ifr结构体中的if_flags成员将包含接口的标志。SIOCSIFFLAGS会设置指定网络接口的标志。可以使用该标志来启用或禁用接口的某些功能,比如混杂模式。可以使用以下方式进行调用:
ioctl(socket_fd, SIOCSIFFLAGS, &ifr);
其中,socket_fd是已打开的套接字文件描述符,ifr是ifreq结构体类型的变量,该结构体包含了要操作的网络接口的名称和要设置的标志。如果该操作成功,接口的标志将被设置为if_flags成员中指定的值。