Ich möchte Pakete mit packet_mmap für hohe Paketübertragungsrate senden. Ich schaffte es Pakete mit Paket Buchse im Raw-Modus zu senden, die zu diesem Zweck I L2, L3 angelegt und etc in Puffern und esWie sende ich ein SOCK_DGRAM-Paket mit packet_mmap, ohne mich um die MAC-Adresse zu kümmern?
sendto(fd_socket, NULL, 0, 0, NULL, sizeof(struct sockaddr_ll));
jedoch mit schicken, ich will nicht mit Ziel-MAC-Adresse stören . Also wandte ich mich stattdessen Dgram zu. Wenn ich sendto verwenden möchte, gibt es ein Argument für die Ziel-MAC-Adresse. Auch wenn dies nicht das, was ist denn ich wollte in Bezug auf die nicht mit arp Cache betroffen sind und die Angabe Ziel der MAC-Adresse:
sendto(fd_socket, NULL, 0, 0, (struct sockaddr *) ps_sockaddr, sizeof(struct sockaddr_ll));
Allerdings fand ich, dass Sende auch mit Paket Buchse verwendet werden darf. http://man7.org/linux/man-pages/man7/packet.7.html Daher füllte ich den Puffer mit IP-Header und so weiter. In diesem Fall gibt send null zurück, da nichts gefunden wird, was gesendet wird, was etwas anderes als Null ist, wenn ein Fehler bei der Übertragung des Pakets vorliegt.
Gibt es eine Möglichkeit, packet_mmap zu verwenden, ohne sich um die L2-Adresse kümmern zu müssen?
Danke für die Antwort. Ich kam zu der gleichen Schlussfolgerung, dass es keine Möglichkeit gibt, die Ziel-MAC-Adresse während der Verwendung von Packet-Socket kostenlos vom Kernel zu erhalten. Wie für den rohen Sockel, nicht wirklich. Ich wollte die Kernel-Bypass-Methode verwenden, die mit dem Linux-Kernel mitgeliefert wird, um einen höheren Durchsatz als bei herkömmlichen Sockets zu erreichen. – Mass