c/c++;libnetfilter_队列和应用层数据包选择 我有一个使用库的C++程序,它设计用于Linux系统。

c/c++;libnetfilter_队列和应用层数据包选择 我有一个使用库的C++程序,它设计用于Linux系统。,c++,c,linux,networking,netfilter,C++,C,Linux,Networking,Netfilter,我只需要过滤应用层数据包(因此,数据包包括主机应用层的有效负载) 我知道如果不重建内核,使用iptables是不可能的。 因为我不能在最终的主机上做这件事,所以我正在从C++程序中工作。 我的目标是直接接受非应用层数据包并处理第7层数据包 我尝试使用该函数,如果发现错误(因此,我认为没有有效负载),则返回-1 ret = nfq_get_payload(tb, &data); if (ret < 0) { /* accept packet */ } else { /* proces

我只需要过滤应用层数据包(因此,数据包包括主机应用层的有效负载)

我知道如果不重建内核,使用iptables是不可能的。 因为我不能在最终的主机上做这件事,所以我正在从C++程序中工作。 我的目标是直接接受非应用层数据包并处理第7层数据包

我尝试使用该函数,如果发现错误(因此,我认为没有有效负载),则返回
-1

ret = nfq_get_payload(tb, &data);
if (ret < 0) { /* accept packet */ }
else { /* process packet */ }
然而,如果我试图打印
pkt_payload
变量,则它不符合预期结果


<如何解决?

这是C++问题。为什么它被标记为C?因为库也在处理C程序(有关更多信息,请参阅)。更改了帖子标题。
unsigned char* pkt_payload = (buffer + 12 + 64));