参考此page
上的Netfilter挂钩代码要检查的端口声明为:
/* Port we want to drop packets on */
static const uint16_t port = 25;
比较如下:
return (tcph->dest == port) ? NF_DROP : NF_ACCEPT;
如果变量端口的类型为int32,我们如何将其转换为uint16_t,以便可以根据tcph-> dest进行检查。
感谢。
答案 0 :(得分:1)
TCP端口只有16位宽,因此如果您的port
- 变量包含0..65535范围之外的任何内容,则无论如何都会出错。此外,您应使用ntohs
来说明字节差异。
所以我建议像:
BUG_ON(port < 0 || port > 65535);
return (ntohs(tcph->dest) == (u16)port) ? NF_DROP : NF_ACCEPT;
答案 1 :(得分:0)
为什么要拥有端口int32
?端口必须是uint16_t。大于16 bit
的值是错误的。