by shigemk2

当面は技術的なことしか書かない

java-ipv6をScalaで使ってみる

github.com

stackoverflow.com

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あんまりわかってないね。