куска списка:
89.104.64.0/19
89.104.76.0/24
89.104.80.0/21
89.111.128.0/18
89.111.128.0/24
89.111.130.0/24
89.111.132.0/23
89.111.135.0/24
89.111.144.0/20
89.111.144.0/22
89.111.160.0/20
89.111.164.0/24
Необходимо оставить в списке подсети с наибольшим охватом адресов. А все мелкие подсетки вхолящие в состав более крупной подсети исключить
Например тут должны остаться подсети:
89.104.64.0/19 (89.104.64.1 - 89.104.95.254)
89.111.128.0/18 (89.111.128.1 - 89.111.191.254)
Но не всегда это так очевидно. Как проще сделать такую проверку? Может есть готовые решения?
https://github.com/asenci/ipcalc/blob/master/cmd/overlap.go
https://github.com/asenci/ipcalc/blob/master/cmd/supernet.go
ParseCIDR разбивает строку подсети на адрес и сеть, полученный адрес и проверяем на вхождение функцией Contains Я делал так
Сортировку по маске еще можно наверное сделать, чтобы сразу отбросить более частные вхождения в крупные сети.
Обсуждают сегодня