宏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。

NLMSG_ALIGN相关推荐

  1. linux 内核与用户空间通信之netlink使用方法

    Linux中的进程间通信机制源自于Unix平台上的进程通信机制.Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的Syste ...

  2. Netlink 介绍(译)

    原文地址:http://people.redhat.com/nhorman/papers/netlink.pdf 译文: 1 介绍 在Linux和Unix的众多发行版中的网络配置功能, 都是编程者事后 ...

  3. 用户空间与内核空间数据交换的方式(9)------netlink【转】

    转自:http://www.cnblogs.com/hoys/archive/2011/04/10/2011722.html Netlink 是一种特殊的 socket,它是 Linux 所特有的,类 ...

  4. netlink怎么读_内核交互 netlink,检测部分进程死亡和启动。

    和内核交互netlink netlink 内核和用户进程交互 用户空间用的是socket,内核空间用的是内部API和一个模块. 向下兼容. 面向数据包的应用.即SOCK_RAW and SOCK_DG ...

  5. Linux网络设备描述符,Linux

    转载:http://blog.csdn.net/firo_baidu/article/details/6145231 放假回家的第一天,呵呵. 缅怀Stevens大师. 最好的参考资料: 1.师从互联 ...

  6. linux 内核空间 sy,在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysf...

    级别: 初级 燚 杨 (), 计算机科学硕士 2006 年 2 月 16 日 本系列文章包括两篇,它们文详细地介绍了 Linux 系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数.模块参数 ...

  7. af_netlink_2、netlink简介

    Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink ...

  8. Linux 用户态与内核态的交互——netlink 篇

    [size=4]Linux 用户态与内核态的交互 --netlink 篇[/size] 作者:Kendo 2006-9-3 这是一篇学习笔记,主要是对<Linux 系统内核空间与用户空间通信的实 ...

  9. netlink的内核实现原理

    注:      当用户态进程发送数据时,调用sendmsg实现,其调用内核netlink_sendmsg函数完成,新建了sk_buff,然后给其cb私有缓存中保存了源地址信息,然后把数据拷贝到sk_b ...

最新文章

  1. map赋值给另一个map_Java学习(十六): Lambda操作Map
  2. MobileNet_v2
  3. LinuxMint(Ubuntu)安装文泉驿家族黑体字
  4. MongoDB创建索引
  5. 得推家政派单系统源码 v1.0
  6. springboot中mongodb自定义类型转换器
  7. Mysql调试存储过程最简单的方法
  8. 《Spring揭秘》学习部分总结
  9. 小白如何快速入门数学建模
  10. 笔记本无法打开摄像头
  11. 【VSCode】设置代码格式化插件Beautify
  12. STEPN 新手入门及进阶
  13. @Idempotent注解限制同一时刻的访问间隔
  14. Windows程序设计-剪贴板
  15. 2022年底了,你们公司还好吗?我这里不太好
  16. 51单片机 YF-S201水流量检测传感器的使用
  17. go语言工作目录都有什么?GOPATH下的目录结构
  18. wps 无法保存html数据,WPS2012保存网页内容怎么用
  19. Tableau绘制漏斗图、甘特图、瀑布图、镶边面积图、阴影坡度图
  20. android yuy2,Android使用USB摄像头拍照yuy2转jpeg

热门文章

  1. android 手机号码去重,微信电话本和qq通讯录有什么不同?微信电话本常见问题汇总...
  2. Maltego 学习与使用
  3. 骑行318、 2016.7.18
  4. 目前最经典有效的“阅读方法”——SQ3R阅读法
  5. DOS死机客星,能打破程序死循环,按住Ctrl +Esc即可使死掉的程序立即返回到Dos Shell
  6. 树莓派3B qt+mplayer制作音乐播放器(10)
  7. css实现从左到右渐变色
  8. 图神经网络-图与图学习笔记-1
  9. oracle设行宽 每次,解决每次从cmd进入sqlplus,都得重新设置pagesize、linesize的问题...
  10. 【Babylon提升】重写相机控制器,实现仿地图操作