1

Debian Etch にインストールされているソケットオプションを使用してTCP接続のMTUを読み取ろうとしています(かなり古いですが、現在のところ変更することはできません)。IP_MTU
man 7 ip

SYNOPSIS
       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <netinet/ip.h> /* superset of previous */
[CUT]
IP_MTU Retrieve the current known path MTU of the current socket.
Only valid when the socket has been  connected.  Returns  an integer.  
Only valid as a getsockopt(2).

問題は、上記のソケットオプションが、マニュアルページで指定されたインクルードファイルのいずれにも存在しないことです。(したがって、私のコードはコンパイルされていません;))
代わりに<linux/in.h>grepあなたの友達です)で定義されていることがわかりました。ソースコードに
追加しようとする<linux/in.h>と、あらゆる種類の複数の定義/再宣言のコンパイルエラーが発生します。上記のパラメータがヘッダーにない理由と問題を解決する方法を知っている人はいますか? セルジオ
に感謝します

4

1 に答える 1

1

答えは:答えはないと思います。Red Hat Enterprise Linux ASリリース4(Nahant Update 8)を実行していますが、まったく同じ問題が発生します。

  • man 7 ipは、MTUを照会できると言っています
  • grep -Re IP_MTU / usr / include / *は、マクロがlinux/in.hにのみ存在することを示します
  • linux / in.hを使用できない、または大量のエラーが発生する

したがって、実行する必要があるのは、MTU検出を設定し、常にMTUを微調整し、大きすぎるものを送信しようとしたときにカーネルがシャットダウンするのを監視することによる回避策だけだと思います。それが私がやろうとしていることです。

于 2013-07-11T15:00:00.637 に答える