txchxl 发表于 2014-12-12 12:36

求个NETLINK 编程事例,type 是NETLINK_NETFILTER的

新来的,不懂规矩,直接就开问了。
想用NETLINK_NETFILTER 和内核交互,用了libnetlink/libmnl/libnetfilter_queue三个库,然后编了libnetfilter_queue 给的util 下面的nfqnl_test.c,编出来后直接到nfq_unbind_pf 函数报错,error 22,参数无效,我进内核看了下,调用到
    err = nc->call(net->nfnl, skb, nlh, (const struct nlattr **)cda);
    if (err == -EAGAIN)
    {
      goto replay;
    }
    return err;
返回的err,有人知道是怎么回事吗?

镇水铁牛 发表于 2014-12-15 22:43

netlinik网上资料很多,内核也有例子,可参考scsi_netlink.c

Tinnal 发表于 2014-12-15 23:16

回复 1# txchxl

给你两个列子:
http://blog.chinaunix.net/uid-20788636-id-1841429.html
http://blog.csdn.net/arnoldlu/article/details/16827877

PS:要学会自己的google,找个例子还得上论坛去问,打字的时候都能找N个了。
   

txchxl 发表于 2014-12-29 16:13

奇怪为什么自带的netlink 16 api会报错~回复 2# 镇水铁牛


   

txchxl 发表于 2014-12-29 16:14

有看过,想知道NETLINK_NETFILTER 的err是怎么回事,因为用的是开源库,没改过代码回复 3# Tinnal


   

镇水铁牛 发表于 2014-12-29 22:51

貌似netlink 16已经被使用了,你可以用靠后的。

txchxl 发表于 2014-12-30 13:53

我知道被用了啊,我想写个和16接口交互的程序,自己写了发现没反应,用开源的lib库,结果报上面的错误~郁闷 回复 6# 镇水铁牛

humengez 发表于 2014-12-30 15:59

貌似只能使用自定义的NETLINK type,之前使用NETLINK_GENERIC都会报错,但是添加自定义的NETLINK type之后就可以顺利运行

txchxl 发表于 2014-12-30 16:06

还有这么奇葩的事?我是想把一些包传到NFQUEUE, 然后用NETFILTER 提供的API socket把包解析出来用,这么看来不太好实现。似乎只能用模块把skb 解析了。回复 8# humengez


   

txchxl 发表于 2014-12-30 16:07

上面写错了NETFILTER 是api 的12 接口,16是NETLINK_GENERIC
页: [1]
查看完整版本: 求个NETLINK 编程事例,type 是NETLINK_NETFILTER的