netlink消息
netlink消息是由头部和payload组成的字节流。这个字节流只能通过NLSG_*宏来获取。(TO DO:这个宏的具体说明)
注意:如果在一个字节流中有多条消息。(第一条消息和接下来的消息的头部的flag要设置为NLM_F_MULTI。最后一个消息类型设置为数NKMSG_DONE。
头部的数据结构
struct nlmsghdr {
__u32 nlmsg_len;
__u16 nlmsg_type;
__u16 nlmsg_flags;
__u32 nlmsg_seq;
__u32 nlmsg_pid;
}
头部总共5个域。
其中类型字段有三个标准的类型,
NLMSG_NOOP消息会被忽略。
NLMSG_ERROR消息是错误的消息,它的payload会包含nlmsgerr结构体。
NLMSG_DONE消息表示多个消息的结束。
recvmsgs会根据消息的类型来调用相关的回调函数。