用户态操作netlink socket 用户态创建netlink socket的基本过程和操作其他socket的API一模一样,区别就2点: 1、netlink有自己的地址; 2、netlink接收到的消息带一个netlink自己的消息头; 用户态创建、销毁socket的过程: 1、用socket函数创建,socket(PF_NETLINK, SOCK_DGRAM, NETLINK_XXX);第一个参数必须是PF_NE...
通过Netlink socket,用户空间的进程可以向内核发送请求,获取内核的状态信息,或者向内核发送命令,控制内核的行为。 使用Netlink socket与内核模块通信的步骤如下: 创建Netlink socket:在用户空间中,使用socket系统调用创建一个Netlink socket。可以使用PF_NETLINK作为socket的协议族,NETLINK_GENERIC作为socket的类型。 绑定...
PF_NETLINK类型建立的socket, 检测USB口 摘自:https://blog.csdn.net/wandersky0822/article/details/110202371 通过使用PF_NETLINK类型建立的socket, 确实能检测到USB口的变化,这个东西太好了,做U盘自动检测,自动挂载就靠它了。 眼前豁然开朗 当插入U盘时,打印如下信息: add@/devices/pci0000:00/0000:00:15.0/...
经过分析普通socket创建过程可以引申到netlink socket的创建,上文分析了普通socket协议族是AF_INET,其创建函数为inet_creat,在/include/linux/socket.h中查看Netlink的协议族并寻找其注册时对应的创建函数netlink_create。 #defineAF_NETLINK 16staticconststructnet_proto_familynetlink_family_ops={ .family = PF_N...
PF_NETLINK sockets(Netlink Socket):支持 Kernel Space 和 User Space 之间的通信,常用于网络管理和网络监测等场景,例如:获取内核中的网络信息、配置内核的网络参数、监控网络状态等。 PF_UNIX sockets(UNIX socket):用于 Unix-like 系统中的多进程之间通信。
sock->ops = &netlink_ops设置AF_NETLINK协议族的函数集,sk_alloc分配sock对象,其传入参数指定协议族、内存分配方式等,查看netlink_ops结构,其中定义了Netlink socket在不同情况下的的操作,使得内核模块可以通过Netlink协议与用户空间完成通信。 staticconststructproto_opsnetlink_ops={.family = PF_NETLINK,.own...
PF_NETLINK类型建立的socket, 检测USB口 通过使用PF_NETLINK类型建立的socket, 确实能检测到USB口的变化,这个东西太好了,做U盘自动检测,自动挂载就靠它了。 眼前豁然开朗 当插入U盘时,打印如下信息: add@/devices/pci0000:00/0000:00:15.0/0000:03:00.0/usb3/3-2...
PF_PACKET sockets(Packet Socket):基于 Device Driver(设备驱动),支持对底层数据包的捕获和注入,常用于网络安全、网络监测等场景,例如:网络嗅探、协议分析、数据包过滤等。 PF_NETLINK sockets(Netlink Socket):支持 Kernel Space 和 User Space 之间的通信,常用于网络管理和网络监测等场景,例如:获取内核中的网络信...
Netlink Socket主要用于内核与用户空间之间的异步通信。你可以根据具体需求定义不同的协议类型(protocol type),以便在内核和用户空间之间进行特定数据的交换。 2. 了解Linux 5.10内核对Netlink Socket的支持情况 Linux 5.10内核对Netlink Socket提供了全面的支持。你可以使用标准的socket API来创建、绑定、发送和接收Netli...
在BSD TCP/IP的协议栈实现中,有一种特殊的socket叫做Routing socket.它的地址族为AF_ROUTE, 协议族为PF_ROUTE, socket类型为SOCK_RAW. 这种Routing socket是用户态进程用来向内核中的路由表增加或者删除路由信息用的。在Linux系统中,netlink socket通过协议类型NETLINK_ROUTE实现了与Routing socket相同的功能,可以说...