0
我的问题是,当我用PF_PACKET进行收听时,我也收到了我的信箱发送的信息包,这是不受欢迎的。如何将raw_socket绑定到kernelspace中的特定接口?
err_create = sock_create(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL), sock);
代替ETH_P_ALL,我尝试了ETH_P_IP,但后来我只将包发送到我的主机。所以我的想法是将套接字绑定到一个接口。 'sockaddr_ll'我可以定义ifindex。但是我没有找到函数来获取我的接口的索引。ioctl在kernelspace中不起作用。
..
memset(&my_addr, 0, sizeof(struct sockaddr_ll));
my_addr.sll_family = PF_PACKET;
my_addr.sll_protocol = htons(ETH_P_ALL);
// my_addr.sll_ifindex = 2; //I tried different numbers.. but then I got no packets
err_bind = sock->ops->bind(sock, (struct sockaddr_ll *)&my_addr, sizeof(my_addr));
任何帮助,将不胜感激