forked from mruby/mruby
-
Notifications
You must be signed in to change notification settings - Fork 4
ipaddr
tsahara-iij edited this page Sep 25, 2012
·
4 revisions
IPAddr クラスは "IP address" と言いつつプレフィクスを表す。
引数にバイト列をとり、AF を自動判別するメソッド群は、バイト列の長さが 4 または 16 ではない場合に unsupported address family (ArgumentError) 例外を発生する。この処理は共通化すべきだろう。
String クラスのバイト列にはマスクの適用などの処理は行えない。したがってそのような処理が必要な際には Fixnum の Array 表現に変換することとする。
#mask のマスク表現は後回し。基本的にプレフィクス長しか使わない。
与えられた文字列が、与えられたプレフィクス長のもとで、ネットワークアドレスまたはブロードキャストアドレスであるかを判断したい。
- IPAddr.pton(Integer, String) => String(バイト列) を C で実装する
- IPAddr.new その他を .rb で実装する。そして IPAddr#bytes => Array of Fixnum というアクセサを用意しておく。
- << htons ip6_arpa ip6_int ipv4_compat ipv4_compat? ipv4_mapped ipv4_mapped? native ntohs to_i to_range ~
- 全般的に、mapped/compatible アドレスのことは考慮しない
- reverse succ