Как получить все пакеты IPv6 (TCP, UDP, ICMP, ...) I, например, на интерфейсе lo
. Я отправляю ICMP-пакеты с командой ping6 ::1
, но ни один из них не получен.Получить все пакеты IPv6
Спасибо
#include <linux/if_ether.h>
#include <error.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <netinet/in.h>
#include <netinet/ip6.h>
#include <string.h>
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int main() {
int socket_fd;
char buffer[1480];
struct sockaddr_in6 sin6;
struct sockaddr sin;
socket_fd = socket(AF_INET6, SOCK_RAW, IPPROTO_RAW);
setsockopt(socket_fd , SOL_SOCKET , SO_BINDTODEVICE , "lo" , strlen("lo")+ 1);
if (socket_fd < 0) {
perror("Failed to create socket");
}
ssize_t data_size;
// Why am I unable to receve any data?
data_size = recvfrom(socket_fd, buffer, 1480, 0, &sin, (socklen_t *) &sin);
return 0;
}
Он связан по интерфейсу 'lo'; 'setsockopt (socket_fd, SOL_SOCKET, SO_BINDTODEVICE," lo ", strlen (" lo ") + 1);' – camabeh