Erlang で発信 UDP パケットの「ポートに到達できない」エラーを検出する方法を探しているので、トランスポート層のエラーをアプリケーションに積極的に報告できます。つまり、パケットが宛先に到達していないことを上位層に報告するために、ICMP タイプ 3 パケットをキャプチャしたいと考えています。
現在、私は2つのアプローチについて知っています:
- 文書化されていない を使用し
gen_udp:connect/3
ます。ただし、これには、新しい宛先ペア address:port ごとに新しいソケットを開く必要があるようです。利点は、これには特権が必要ないことです。 - raw ソケットを開くには、setuid ヘルパーまたは機能のいずれかを必要とするgen_icmpを使用します。
不足している他のバリアントはありますか?