ошибка при проверке isPublicIp для проверки IP в scala
Я пытаюсь написать функцию в scala, которая может определять, является ли IP частным IP, ложным для всех остальных. Не могу найти подходящую библиотеку для этого, поэтому я вручную проверяю разные диапазоны IP, как показано ниже:
def isPrivateIp(ip: String) = {
val privateIPs = List ((2130706432L, 4278190080L), // [127.0.0.0 -> 255.0.0.0]
(3232235520L, 4294901760L), // [192.168.0.0 -> 255.255.0.0]
(2886729728L, 4293918720L), // [172.16.0.0 -> 255.240.0.0]
(167772160L, 4278190080L), // [10.0.0.0 -> 255.0.0.0]
(1681915904L, 1686110207L)) // [100.64.0.0 -> 100.127.255.255]
var res = false
val longIP = IPv4ToLong (ip)
for((a, b) <- privateIPs) {
if ((longIP & b) == a) {
res = true
}
}
res
}
Этот метод, кажется, подходит для всех первых 4 диапазонов IP-адресов, определенных списком "privateIPs", но, похоже, не работает для 5-го диапазона из 100. IP-адреса, где вместо того, чтобы отмечать как истинные, он отмечает как ложные.
Может ли кто-нибудь помочь мне с этой ошибкой здесь? Есть ли лучшая библиотека для обнаружения общедоступных IP-адресов scala?
Спасибо.