问题标签 [netlink]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 为什么路由表中的路由项(通过 netlink 套接字获取)没有网络掩码信息?
我正在编写一个程序来找出哪个网络接口最适合连接到指定的目标地址。
现在,我可以通过netlink
套接字 API 获取路由表,但其中似乎没有网络掩码信息。我阅读了 的手册rtnetlink
,在所有rtattr
项目中,没有网络掩码信息,只是RTA_DST
, RTA_SRC
, RTA_GATEWAY
... 定义。
那么,如何查看路由表中的网络掩码信息呢?就像我们在route -n
输出中看到的一样。
非常感谢。
matlab - Mathematica 和 matlab 与 NetLink 的交互以及它们之间的数据交换
我在mathematica中使用了以下代码来调用matlab
我想从mathematica 中获取matlab 工作区变量“a”并将其转换为mathematica 矩阵。我怎么能用netlink做到这一点?
c - Linux 运营商检测通知
Linux 中是否有用于获取网络接口运营商更改通知的接口?我知道可以使用 SIOCETHTOOL 轮询接口,但想知道是否有任何方法可以获得通知或任何阻塞呼叫会在运营商检测更改时返回?
linux - Netlink 套接字和 libnl - nl_recvmsgs_default 返回 -16 (EBUSY)
我正在尝试编写一些基本的内核模块 - 使用 netlink 套接字(用户端的 libnl)进行用户空间程序通信。用户空间程序向内核发送消息并期待回复。不幸的是,接收回复失败,返回值为 -16 (EBUSY)。
有趣的是,当我直接从 netlink 套接字接收数据时,使用标准系统调用recv
on nl_socket_get_fd(sock)
,一切正常!
有谁知道为什么会这样?
这是用户空间代码(parse_cb 是一个不会被调用的回调):
这是用户空间程序发送的消息的内核端回调(这个被正确调用):
这是'send_to_daemon'函数:
linux-kernel - Netlink:从内核发送给用户 - EAGAIN 和 ENOBUFS
我在将 netlink 消息从内核模块发送到用户空间守护进程时遇到了很多麻烦。他们随机失败。在内核方面,用户端的genlmsg_unicast
失败(函数来自)失败,这是由系统调用失败引起的。EAGAIN
nl_recvmsgs_default
libnl
NLE_NOMEM
recvmsg
ENOBUFS
Netlink 消息很小,最大有效负载大小约为 300B。
这是从内核发送消息的代码:
我完全不知道为什么会发生这种情况,因此我的项目将无法正常工作!我真的希望有人可以帮助我。
c++ - 你如何使用 libnl nl_sock?
上面的代码总是无法编译并出现以下错误:/home/micah/Documents/C++/Socket_fun/Socket_fun/src/main.cpp|5|error: 'sock' does not name a type
我从 libnl 示例中得到了这个,因为它不起作用,我想知道,正确的方法是什么?
c++ - netlink 消息的频率
我正在使用 inet_diag 模块和 libpcap 来获取访问我使用 libpcap 捕获的 url 的用户的 uid。由于每秒可能捕获许多 url,我想知道是否有限制每秒应该发送多少 netlink msg,以及是否应该缓存并偶尔刷新,或者每次捕获 url 时愉快地发送 msg。
python - Python Linux Netlink 接收缓冲区
socket.recv()
当我从 NETLINK_ROUTE 套接字创建尝试时,如果我不接收所有可用数据,似乎未接收到的数据丢失了。
例如:
如果 I sock.recv(100)
,它将返回 100 个字节,但 +2900 个其他字节消失了。做另一个sock.recv()
将返回下一个 nlmsghdr (如果是多部分消息)或阻止等待数据。
我可以sock.recv(X, socket.MSG_PEEK)
读取 X 个字节而不会丢失数据;但是当这样做时,读取的数据当然不会从 recv 缓冲区中弹出。
我认为任何未读取的数据都会保留在缓冲区中,直到读取。我究竟做错了什么?我宁愿不只是“猜测”有多少数据可用......
linux - 如何将套接字 netlink 与新的 netlink 系列一起使用
我在使用带有新的 netlink 系列的 netlink 套接字时遇到了一些问题……尤其是在组中。我在内核空间中使用netlink_broadcast
ornlmsg_multicast
方法向用户空间发送消息。例如,我有一个带有 defs 的标题:
以及一个打开套接字并绑定到 netlink 地址的进程:
顽固地在内核空间中调用:
recv_cb
当进程从用户空间发送消息时调用的回调在哪里。
现在我尝试通过以下方式向用户空间发送消息:
只有当 1 为 1 时,我才能正确读取该过程中的消息NL_MYGRP
。我无法找出问题所在......所有 netlink 系列都在其中指定linux/netlink.h
并且数字 20 不存在,所以我认为它可以用来指定我的新家庭。怎么了?谢谢你们。
matlab - 在 Mathematica 中使用 .NETLink 调用 Matlab 时出错
我之前使用以下代码从MATHEMATICA调用MATLAB没有任何问题
但现在我有这样的错误:
CreateCOMObject::netexcptn:“发生 .NET 异常:!(TraditionalForm`\”System.Runtime.InteropServices.COMException (0x800401F3):无效的类字符串(来自 HRESULT 的异常:0x800401F3 (CO_E_CLASSSTRING))\\n 在 System.RuntimeType。 GetTypeFromProgIDImpl(String progID, String server, Boolean throwOnError)\\n 在 Wolfram.NETLink.Internal.COM.COMUtilities.createCOMObject(String clsIDOrProgID)\\n 在 Wolfram.NETLink.Internal.CallPacketHandler.createCOM(KernelLinkImpl ml)\") 。”
我在 Win 7 x64 上安装了 .net framework 4。它是.Net 框架错误吗?