什么是(PF_INET,SOCK_PACKET)的正确替代品

时间:2011-05-19 14:50:49

标签: linux sockets kernel obsolete

我有一项任务要消除

<app> uses obsolete (PF_INET,SOCK_PACKET)

来自用户空间客户端的警告。 如果这种用途已经过时;什么是正确的,类似的替代这项任务?

编辑:这里有误导性的信息。

2 个答案:

答案 0 :(得分:2)

检查man 7 packetman 7 ip以获取更多信息,但它看起来像您需要的是

socket(PF_PACKET, SOCK_RAW, <protocol>)

"For compatibility with Linux 2.0, the obsolete socket(PF_INET,
SOCK_RAW, protocol) syntax is still supported to open a
packet(7) socket.  This is deprecated and should be replaced by
socket(PF_PACKET, SOCK_RAW, protocol) instead.  The main
difference is the new sockaddr_ll address structure for generic
link layer information instead of sockaddr_pkt." - ip(7)

虽然我不知道可能需要进行哪些其他更改。

答案 1 :(得分:0)

问题是库函数调用套接字(AF_INET,SOCK_PACKET,htons(0x0806)),而不是应用程序本身。