【问题标题】:netlink on ClearOS 7.3 issue关于 ClearOS 7.3 问题的 netlink
【发布时间】:2017-09-21 10:25:13
【问题描述】:

我正在尝试在 ClearOS 7.3 64 位上执行简单程序

#include <sys/socket.h>
#include <linux/netlink.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>

int main()
{
    int flags =0;
    int bus = NETLINK_NETFILTER;

    int sock_fd = socket(AF_NETLINK, SOCK_RAW | flags, bus);
    if(sock_fd<0)
    {
        printf("\nsocket failed with error no = %d and error msg = %s\n",
                                errno, strerror(errno));

        return -1;
    }

    printf("\nOP completed successfully..!\n");
    return 0;
}

我收到以下错误:

套接字失败,错误号 = 93,错误消息 = 协议不 支持

我的操作系统详细信息是:

  • ClearOS 7.3.0 版(最终版)
  • Linux 3.10.0-514.26.2.v7.x86_64 #1 SMP 2017 年 7 月 5 日星期三 10:37:54 MDT x86_64 x86_64 x86_64 GNU/Linux

请帮忙。

【问题讨论】:

    标签: netfilter netlink clearos


    【解决方案1】:

    为我工作。

    NETLINK_NETFILTER 协议由nfnetlink 模块注册。

    在我的例子中,内核会自动注册模块,因为这段代码使用它,但如果你没有,请尝试手动插入:

    $ sudo modprobe nfnetlink
    

    然后尝试再次打开套接字。

    【讨论】:

    • 太棒了。有效。你能帮我理解背后的理论吗?我想,一旦程序被调用,它应该自动加载 nfnetlink 模块。此问题专门发生在 ClearOS 版本 7.3.0(最终版)
    • 对不起,但我真的不知道它取决于什么。我想你的内核编译时有一些标志会阻止模块出于安全目的自动加载或类似的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2022-06-13
    • 2016-09-01
    • 2021-11-29
    相关资源
    最近更新 更多