recv 関数を使用してソケットからデータを読み取っていますが、ICMP 宛先到達不能パケットを受信するとエラーが発生し続けます。どこに問題があるのか本当にわかりません。ソケットをさまざまなオプションに設定しようとしましたが、どれもうまくいきませんでした。私はRAWソケットを使用しています。
これが私のsetsockoptです:
setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&optval, sizeof(optval))
optval は 1 に設定されています
ここに私のrecvがあります:
// read response from socket
if ((len = recv(sock, buffer, BUFFER_MAX, 0)) == -1)
fprintf(stderr,"Error with reading data - %d\n",errno);
BUFFER_MAX は 65536 として定義されています
誰かが同様の問題に遭遇したことがある場合は、ICMP dest を受信しようとすると常に errno コード 90 があることを説明してください。到達不能パケット?ECHO応答は正常に機能します。