JavaのSubnetUtilsがIPv6に対応していないので、どうしたものかと思ったら、java-ipv6なるライブラリがあることを知る。 READMEを見るとインストールはMavenしか書かれていないので、sbtだとどうかな~とか思いつつ、build.sbtには以下のように書く。
libraryDependencies += "com.googlecode.java-ipv6" % "java-ipv6" % "0.16"
あとはREADMEを読みつつ、JavaコードをScalaコードに翻訳する。
こちらは、特定のIPアドレスがプレフィックス表示つきIPv6の中に含まれているかどうかを確認するコード。
import com.googlecode.ipv6._ import com.googlecode.ipv6.IPv6Network import com.googlecode.ipv6.IPv6NetworkMask import com.googlecode.ipv6.IPv6AddressRange import com.googlecode.ipv6.IPv6Address val strangeNetwork = IPv6Network.fromString("fe80::226:2dff:fefa:cd1f/43") val range = IPv6AddressRange.fromFirstAndLast(IPv6Address.fromString(strangeNetwork.getFirst().toString), IPv6Address.fromString(strangeNetwork.getLast().toString)) println(range.contains(IPv6Address.fromString("fe80::226:2dff:fefa:dcba"))) // true println(range.contains(IPv6Address.fromString("fe81::226:2dff:fefa:dcba"))) // false
IPv6あんまりわかってないね。