10 Star 1 Fork 5

src-openEuler/libnfnetlink

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
add-test-case-and-enable-in-rpmbuild.patch 2.61 KB
一键复制 编辑 原始数据 按行查看 历史
xingwei 提交于 2023-09-19 19:53 +08:00 . enable DT check
From be875657f0fcaa2f87658a07c9de9fefb7f74f29 Mon Sep 17 00:00:00 2001
From: liubo <liubo335@huawei.com>
Date: Mon, 13 Mar 2023 19:58:35 +0800
Subject: [PATCH] add test case and enable in rpmbuild
---
utils/Makefile.in | 2 ++
utils/iftest.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 50 insertions(+), 1 deletion(-)
diff --git a/utils/Makefile.in b/utils/Makefile.in
index d0c62f6..5bd6d2a 100644
--- a/utils/Makefile.in
+++ b/utils/Makefile.in
@@ -402,8 +402,10 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
+ETHNAME=$(shell cat /proc/net/dev | awk '/[0-9]+/{print $$1,$$2}'| sed 's/://' | sort -k2rn | head -n1 | awk '{print $$1}' )
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ ./iftest $(ETHNAME)
check: check-am
all-am: Makefile
installdirs:
diff --git a/utils/iftest.c b/utils/iftest.c
index 02f5807..b0cf819 100644
--- a/utils/iftest.c
+++ b/utils/iftest.c
@@ -5,15 +5,19 @@
#include <string.h>
#include <errno.h>
#include <net/if.h>
+#include <linux/netfilter/nfnetlink.h>
+#include <libnfnetlink/linux_nfnetlink.h>
#include <libnfnetlink/libnfnetlink.h>
int main(int argc, char *argv[])
{
int idx;
struct nlif_handle *h;
+ struct nfnl_handle *nf;
+ struct nfnl_subsys_handle *nsh;
char name[IFNAMSIZ];
- unsigned int flags;
+ unsigned int flags,bf;
if (argc != 2) {
fprintf(stderr, "Usage: %s <interface>\n", argv[0]);
@@ -48,5 +52,48 @@ int main(int argc, char *argv[])
flags & IFF_UP ? "UP" : "DOWN");
nlif_close(h);
+
+ nf = nfnl_open();
+
+ bf = nfnl_rcvbufsiz(nf,NFNL_BUFFSIZE/2);
+ if(bf != NFNL_BUFFSIZE){
+ printf("set the socket buffer size fail.\n");
+ }
+
+ nsh = nfnl_subsys_open(nf,NFNL_SUBSYS_CTNETLINK,5,0);
+
+ if(nfnl_callback_unregister(nsh,16)!=-1){
+ fprintf(stderr,"test ungister nfnl callback Anomalies failure\n");
+ }
+ if(nfnl_callback_unregister(nsh,0)==-1){
+ fprintf(stderr,"Cannot get unregister nfnl callback for device `%s'\n", argv[1]);
+ }
+
+ struct nfqnl_msg_config_params {
+ __be32 copy_range;
+ __u8 copy_mode;
+ } __attribute__ ((packed));
+
+ union {
+ char buf[NFNL_HEADER_LEN
+ +NFA_LENGTH(sizeof(struct nfqnl_msg_config_params))];
+ struct nlmsghdr nmh;
+ } u;
+ struct nfqnl_msg_config_params params;
+ nfnl_fill_hdr(nsh, &u.nmh, 0, 0, 0,
+ 0, NLM_F_REQUEST|NLM_F_ACK);
+
+ params.copy_range = 0xffff;
+ params.copy_mode = 2;
+ nfnl_addattr_l(&u.nmh, sizeof(u), 2, &params,
+ sizeof(params));
+
+ if(nfnl_handle_packet(nf,(char *)&u.nmh, u.nmh.nlmsg_len)<0){
+ printf("nfnl handle packet function failure\n");
+ }
+
+ nfnl_subsys_close(nsh);
+ nfnl_close(nf);
+
return EXIT_SUCCESS;
}
--
2.33.0
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/src-openeuler/libnfnetlink.git
git@gitee.com:src-openeuler/libnfnetlink.git
src-openeuler
libnfnetlink
libnfnetlink
master

搜索帮助