異なるタイプのネットワークパケットを含むpcapファイルを解析しようとしています(いくつかはVLANとタグ付けされていて、いくつかは#includeを使用していません)。 ここに私のコードは、これまでのところです:libpcapとCを使用してVLANタグを取得するにはどうすればよいですか?
は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をチェックして、私は非VLANからVLANパケットを区別する必要がありますcorrectly.Howそれらの上にジャンプするコードのどこかに存在する必要がありますか?
が必要な場合は、あなただけでなく、フォーマットされた質問をありがとうあなたがまたはあなたは私がフェッチんか」を求めている「最高のこのコードを整理する方法を」求めているならば、私はしかし、わかりませんよ'libpcap'を使ってVLANタグを作成し、そうであれば、802.1qとISLの両方をターゲットにしていますか? –
ありがとうございました。私は質問を変更しました。はい、私が本当に見たいのはちょうどIPヘッダーです。 – mazkopolo