“IP_TRANSPARENT”未在此范围内声明

Posted

技术标签:

【中文标题】“IP_TRANSPARENT”未在此范围内声明【英文标题】:"IP_TRANSPARENT" was not declared in this scope 【发布时间】:2013-01-25 19:00:06 【问题描述】:

我尝试使用 IP_TRANSPARENT 套接字选项。但是我得到“IP_TRANSPARENT”没有在这个范围内声明。如果我直接在代码中使用它的代码(19),我会得到绑定错误:“无效参数”。我应该重新编译我的内核来支持这个选项吗?如果是这样,我使用内核 2.6.32。我在内核参数界面中找不到任何选项。

有什么想法吗?

谢谢,

【问题讨论】:

【参考方案1】:

如果 C 库的头文件没有定义值 19,则使用值 19 是可以的,这不是导致它返回 -EINVAL 的原因。

但是需要启用一些内核选项才能使其正常工作。引用文档(在内核源代码中,Documentation/networking/tproxy.txt):

此功能将类似 Linux 2.2 的透明代理支持添加到当前 内核。要使用它,请启用 NETFILTER_TPROXY、套接字匹配和 内核配置中的 TPROXY 目标。您也需要策略路由, 所以一定要启用它。

您可以在该文档中找到更多信息,或在此处在线阅读:http://www.mjmwired.net/kernel/Documentation/networking/tproxy.txt

【讨论】:

以上是关于“IP_TRANSPARENT”未在此范围内声明的主要内容,如果未能解决你的问题,请参考以下文章

Python C API:T_INT 未在此范围内声明

错误:未在此范围内声明“对象”

qrand 未在此范围内声明

未在此范围内声明 CvSVM 错误

C++ Win API 函数'未在此范围内声明'

C++ 错误:未在此范围内声明类/对象