我正在使用free-electrons.com在内核源代码中导航。 我想知道下面的代码片段中的IFF_PROMISC是什么。我可以看到它被定义为
#define IFF_PROMISC IFF_PROMISC
在Linux / include / uapi / linux / if.h,我应该看到类似于 #define IFF_PROMISC (unsigned long)12 //0xC的内容。请解释这种定义的含义以及哪些位将由该句子上方的预处理器替换。
static int __dev_set_promiscuity(struct net_device *dev, int inc, bool notify)
{
unsigned int old_flags = dev->flags;
kuid_t uid;
kgid_t gid;
ASSERT_RTNL();
dev->flags |= IFF_PROMISC;
dev->promiscuity += inc;
答案 0 :(得分:1)
IFF_PROMISC
的值在enum net_device_flags
中设置,该include/uapi/linux/if.h
位于同一文件#define
中。它就在您推荐的include/uapi/linux/if.h
行之前。
如果查看文件enum net_device_flags {
/* */
/* Many other values - too I removed for brevity */
IFF_NOARP = 1<<7, /* sysfs */
IFF_PROMISC = 1<<8, /* sysfs */
IFF_ALLMULTI = 1<<9, /* sysfs */
/* Many other values - too I removed for brevity */
/* */
};
,您可以看到:
#define
然后#define IFF_PROMISC IFF_PROMISC
跟随:
{{1}}