`
cloudtech
  • 浏览: 4605942 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Netlink中常用宏定义

 
阅读更多

在linux/netlink.h中定义了一些方便对消息进行处理的宏,这些宏包括:

#define NLMSG_ALIGNTO 4 #define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )

宏NLMSG_ALIGN(len)用于得到不小于len且字节对齐的最小数值。

#define NLMSG_LENGTH(len) ((len)+NLMSG_ALIGN(sizeof(struct nlmsghdr)))

宏NLMSG_LENGTH(len)用于计算数据部分长度为len时实际的消息长度。它一般用于分配消息缓存。

#define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))

宏NLMSG_SPACE(len)返回不小于NLMSG_LENGTH(len)且字节对齐的最小数值,它也用于分配消息缓存。

#define NLMSG_DATA(nlh) ((void*)(((char*)nlh) + NLMSG_LENGTH(0)))

宏NLMSG_DATA(nlh)用于取得消息的数据部分的首地址,设置和读取消息数据部分时需要使用该宏。

#define NLMSG_NEXT(nlh,len) ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len), / (struct nlmsghdr*)(((char*)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))

宏NLMSG_NEXT(nlh,len)用于得到下一个消息的首地址,同时len也减少为剩余消息的总长度,该宏一般在一个消息被分成几个部分发送或接收时使用。

#define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) && / (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) && / (nlh)->nlmsg_len <= (len))

宏NLMSG_OK(nlh,len)用于判断消息是否有len这么长。

#define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))

宏NLMSG_PAYLOAD(nlh,len)用于返回payload的长度。

函数close用于关闭打开的netlink socket。

分享到:
评论

相关推荐

    netlink.pdf

    netlink socket编程why & how netlink socekt是一种用于在内核态和用户态进程之间进行数据传输的特殊的IPC。它通过为内核模块提 ...socket在内核头文件include/linux/netlink.h中定义自己的协议类型。

    netlink文档资料收集

    netlink文档资料收集 netlink文档资料收集 netlink文档资料收集

    linux中与内核通信的Netlink机制

    本文主要介绍linux中内核态与用户态通信的netlink机制。介绍了netlink的程序流程,特点,和具体实现代码

    如何使用netlink获取网关MAC地址

    重点针对跨三层转发交换路由的情况下,如何通过netlink获取gateway的二层地址,将netlink的使用接口话,C语言编写

    linux netlink 示例代码

    netlink提供了一种很好很强大的的用户与内核之间的通讯机制,本文通过静态的新增一个netlink协议类型,并使用这个新的netlink类型实现用户态和内核态的双向通讯,对linux的netlink通讯方式有了一个初步的认识。...

    Linux 用户空间使用Netlink监听uevent

    Linux 用户空间使用Netlink监听uevent,不是原理介绍,而是实战demo

    Netlink监听usb设备的插拔

    参考网络资料,整理出来的使用netlink的说明。用在linux系统下实时获得usb设备的状态的改变。

    netlink实现usb热插拔

    linux下netlink机制实现usb热插拔事件并获取诸如厂商编号、协议号等获取相关信息,在不采用udev机制的情况下,可以参考的一种实现方式

    netlink增加路由

    通过netlink增加路由条目,测试环境ubuntu 10

    linux netlink

    通过netlink检测设备热插拔, gcc -o netlink_test.c netlink编译

    Linux 用户态与内核态的交互――netlink 篇

    netlink 套接字实现的,例如iprote2网络管理工具,它与内核的交互就全部使用了netlink,著名的内核包过滤框架Netfilter在与用户空间的通读,也在最新版本中改变为netlink,无疑,它将是Linux用户态与内核态交流的...

    netlink用户端代码

    linux2.6.X以上用的netlink用户端代码

    Linux中netlink工信机制详解

    关于网络设备中netlink通信机制详解,主要为代码主题的实现

    netlink-源码.rar

    netlink-源码.rar

    netlink介绍

    关于netlink的入门简介,将实例分为一些独立的部分进行讲解。

    内核和用户空间通信—netlink源码

    新的协议类型的选值不能和当前内核中已经定义的netlink协议类型重复。定义了基于该协议类型的消息类型,内核根据接收到消息的不同类型,进行不同的处理:IMP2_U_PID和IMP2_CLOSE分别为请求和关闭。IMP2_K_MSG代表...

    netlink socket programming

    netlink socket programming howto

    吉利G-Netlink 1.4.1.ipa

    吉利G-Netlink 1.4.1.ipa

Global site tag (gtag.js) - Google Analytics