Я пытаюсь проанализировать файл pcap, включая различные типы сетевых пакетов (некоторые из них отмечены как VLAN, а некоторые нет), используя #include. вот мой код до сих пор:Как получить теги VLAN с помощью libpcap и C?
pcap_t *pcap;
const unsigned char *packet;
char errbuf[PCAP_ERRBUF_SIZE];
struct pcap_pkthdr header;
pcap = pcap_open_offline(argv[0], errbuf);
if (pcap == NULL)
{
fprintf(stderr, "error reading pcap file: %s\n", errbuf);
exit(1);
}
while ((packet = pcap_next(pcap, &header)) != NULL)
{
struct ip_header *ip;
unsigned int IP_header_length;
packet += sizeof(struct ether_header);
capture_len -= sizeof(struct ether_header);
ip = (struct ip_header*) packet;
IP_header_length = ip->vhl * 4; /* ip_hl is in 4-byte words */
char *sinfo = strdup(inet_ntoa(ip->src));
char *dinfo = strdup(inet_ntoa(ip->dst));
printf ("%s<-__->%s\n", sinfo ,dinfo);
free (sinfo);
free (dinfo);
}
Там должно быть где-то в коде, чтобы проверить VLAN и перепрыгивать через них correctly.How я должен различать VLAN пакеты из не-VLANS?
Благодарю за хорошо отформатированный вопрос, я не уверен, однако, если вы спрашиваете «как лучше организовать этот код» или вы спрашиваете «как я могу принести теги VLAN, использующие 'libpcap' ', и если да, ориентируетесь ли вы на 802.1q и ISL? –
Большое спасибо. Я изменил вопрос. Да, я действительно хочу видеть только IP-заголовок. – mazkopolo