为什么我会收到" RTMGRP_LINK未声明的"即使" rtnetlink.h"已经包括了?

时间:2014-07-14 09:01:48

标签: linux kernel-module netlink

我编写了一个内核模块,我想将接口上/下通知发送到用户空间程序。我已将消息组指定为RTMGRP_LINK,并且还包含linux/rtnetlink.h头文件。但是当我编译模块时,我收到以下错误:

abc.c: In function âevent_handlerâ:
abc.c:63: error: âRTMGRP_LINKâ undeclared (first use in this function)
abc.c:63: error: (Each undeclared identifier is reported only once
abc.c:63: error: for each function it appears in.)

有人能说明为什么吗?

1 个答案:

答案 0 :(得分:1)

浏览linux/rtnetlink.h标题后。我观察到RTMGRP_LINK是在#ifndef __KERNEL__下定义的,这意味着它只能由用户空间程序使用。对于内核模块RTNLGRP_LINK应该用于使用NETLINK_ROUTE系列的Netlink套接字进行通信。