# ICMPPacket

  ICMPメッセージを含むパケット。

  ICMPメッセージのフォーマットはICMPタイプによって異なりま す。そのため特定のICMPタイプのパケットにしか存在しないフィー ルドがあります。存在しないフィールドにアクセスしようとす ると例外が発生します。

  どのICMPタイプに対しても有効なフィールドは type, code, cksum です。

## スーパークラス:

  `IPPacket`

## メソッド:

`icmp_cksum`

  ICMPチェックサムを返します。

`icmp_code`

  ICMPコードを返します。

`icmp_data`

  ICMP_ECHO/ICMP_ECHOREPLYメッセージのデータ部分を `String`として返します。

`icmp_gwaddr`

  ICMP_REDIRECTメッセージのゲートウェイアドレスを `IPAddress`として返します。

`icmp_id`

  識別子を返します。

`icmp_ip`

  元のIPデータグラムを`IPPacket`として返します。

`icmp_lifetime`

  ICMP_ROUTERADVERTメッセージの有効時間を返します。

`icmp_nextmtu`

  ICMP_UNREACH_NEEDFRAGメッセージの Next Hop MTU を返しま す。(参照: rfc1191)

`icmp_num_addrs`

  ICMP_ROUTERADVERTメッセージのアドレス数を返します。

`icmp_otime`
`icmp_rtime`
`icmp_ttime`

  ICMP_TSTAMP/ICMP_TSTAMPREPLYメッセージのタイムス タンプを`Time`として返します。

`icmp_pptr`

  ICMP_PARAMPROBメッセージのエラーポインタを返します。

`icmp_radv(nth)`

  ICMP_ROUTERADVERTメッセージのnth番目のアドレ スエントリを返します。返り値は `[address, preference]`なる2要素の配列です。

`icmp_seq`

  シーケンス番号を返します。

`icmp_seqle`

  リトルエンディアンとして読みとったシーケンス番号を返し ます。

  多くの`ping`コマンドの実装はシーケンス番 号をホストバイトオーダーで書き込みます。したがって、 リトルエンディアンのホストから送信されたICMPメッセー ジのシーケンス番号はリトルエンディアンになっている可 能性があります。

`icmp_type`

  ICMPタイプを返します。

`icmp_typestr`

  ICMPタイプを表す文字列を返します。(例: "echo reply")

`icmp_wpa`

  ICMP_ROUTERADVERTメッセージのアドレスエントリ長(単位: 32-bit word)を返します。

fukusima@goto.info.waseda.ac.jp