Can I use the pcap library to receive ipv6 packets?

I am trying to convert hping3 to hping6. hping3 uses the Pcap library to receive IPv4 packets. But I need to get IPv6 packets.

+4
source share
2 answers

It is possible. libpcap is able to catch anything on the wire.

+6
source

Example using ETHERTYPE_IPV6 :

 static u_int16_t ether_packet(u_char *args, const struct pcap_pkthdr *pkthdr, co nst u_char *p) { struct ether_header *eptr = (struct ether_header*)p; assert(pkthdr->caplen <= pkthdr->len); assert(pkthdr->caplen >= sizeof(struct ether_header)); return eptr->ether_type; } // This is the callback. assumes ethernet frame. static void pcap_callback(u_char *args,const struct pcap_pkthdr* pkthdr,const u_ char* p) { const u_int16_t type = ether_packet(args, pkthdr, p); switch (ntohs(type)) { case ETHERTYPE_IP: // handle IPv4 break; case ETHERTYPE_IPV6: // handle v6 break; } } 
+2
source

All Articles