我正在寻找将连接套接字的端口和 IP 收集到网络内核扩展 (NKE) 中的套接字过滤器。
我试图sf_bind, sf_connect_in, sf_connect_out
在struct sflt_filter
.
在sf_bind(void *cookie,socket_t so,const struct sockaddr *to)
回调中。它为to
参数指定“套接字的本地地址将绑定到”所以我使用了代码:
printf("Local port:<%u> and IP<%04X>",
ntohs(((struct sockaddr_in *)to)->sin_port),
ntohs(((struct sockaddr_in*)to)->sin_addr.s_addr));
有时 IP 和端口都是空的,有时会出现两者之一。
在相同的回调和其他回调中,我尝试过使用代码:
unsigned char szAddrStr[256];
struct sockaddr_in addrLcl;
sock_getsockname(so, (struct sockaddr *)&addrLcl, sizeof(addrLcl));
inet_ntop(AF_INET, &addrLcl.sin_addr, (char *)szAddrStr, sizeof(szAddrStr));
printf("IP String <%s> Port Hex:<%X>", szAddrStr, ntohs(addrLcl.sin_port));
但是这段代码总是将 IP 和端口设为空。
有人知道吗?或其他方式得到它?提前致谢。