Согласно CIDR-блокам IPv4 Ваши max supported
значения неверны:
При обычном использовании первый адрес в подсети, все двоичные нули в идентификаторе хоста,зарезервирован для обращения к самой сети, в то время как последний адрес, весь двоичный адрес в идентификаторе хоста, используется в качестве широковещательного адреса для сети;это уменьшает количество адресов, доступных для хостов, на 2.
Пакетный режим способен выполнять битовую маску и операции сдвига для вычисления требуемых значений и, таким образом, устраняет необходимость в разных таблицах.
:: Q:\Test\2018\05\31\SO_50615266.cmd
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
set num1=%1
set num2=%2
set /a ans=num1+num2
for /l %%L in (2,1,8) do (
set /a "Max=(1<<%%L)-2, Mask=32-%%L, OC4=254-Max"
If !Max! geq %ans% (
echo(## Calculated on %computername% by %username% at %date% %time:~0,8%
echo # Host Req # Mask # Netmask # Max Supported #
echo %ans% /!Mask! 255.255.255.!OC4! !Max!
echo(
Goto :Eof
)
)
Echo %ans% exceeds a class D net
Образец вывода:
> Q:\Test\2018\05\31\SO_50615266.cmd 1 1
## Calculated on HP-G1610 by LotPings at 2018-05-31 18:37:06,77
# Host Req # Mask # Netmask # Max Supported #
2 /30 255.255.255.252 2
> Q:\Test\2018\05\31\SO_50615266.cmd 14
## Calculated on HP-G1610 by LotPings at 2018-05-31 18:37:38
# Host Req # Mask # Netmask # Max Supported #
14 /28 255.255.255.240 14