私がしたいこと:ユーザースペースにレイヤー2プロトコルを実装します。
したがって、Linux 2.6.32でpcapを使用して、パケットをスニッフィングしています。
...
struct pcap_t *pcap_h = pcap_open_live("wlan0", BUFSIZ, 1, 0, errbuf);
...
while (1) {
int ret = pcap_loop(pcap_h, -1, newpkt_callback, NULL);
...
}
...
これはすべてのパケットで問題なく機能します。しかし、pcapを使用して、ether_headとIPヘッダーのないパケットを送信すると、次のようになります。
const char pkt[] = "WHATEVER";
nsent = pcap_sendpacket(pcap_h, (const u_char *)pkt, len);
...
ローカルホストでのみパケットをスニッフィングでき、同じプログラムを実行している他のラップトップではスニッフィングできません。それで、質問は「どうすればwlanでether_headなしでメッセージをブロードキャストできますか?」です。任意のポインタをいただければ幸いです。