Mein Problem ist, wenn ich mit PF_PACKET höre, bekomme ich auch die Pakete, die meine Box sendet und was unerwünscht ist.Wie bindet man einen raw_socket an eine bestimmte Schnittstelle im Kernelspace?
Statt ETH_P_ALL habe ich versucht ETH_P_IP, aber dann bekomme ich nur Pakete an meinen Host gesendet. Meine Idee war also, den Socket an eine Schnittstelle zu binden. Mit 'sockaddr_ll' kann ich den ifindex definieren. Aber ich habe keine Funktion gefunden, um den Index meiner Schnittstelle zu erhalten. Ioctl funktioniert nicht im 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));
Jede Hilfe