Вот как-то так для статиков заводил:
Код:
...
List<Integer> ipResourceCategoryIds = wsServ.ipResourceCategoryIds( inetServ.getDeviceId(), inetServ.getInterfaceId(), inetServ.getTypeId() );
List<IpResourceNet> rangeList = wsResource.freeIpResourceNetList( ipResourceCategoryIds, null, inetServ.getDateFrom(), inetServ.getDateTo(), 30, Integer.MAX_VALUE );
...
byte[] b = new byte[4];
// Получаем ip в b ....
...
boolean freeIpFound = false;
for( IpResourceNet range: rangeList ) {
if( freeIpFound ) {
continue;
}
if( range.inNet( b ) ) {
inetServ.setIpResourceId( range.getIpResourceId() );
print( " found free ip resource" );
inetServ.setAddressFrom( range.getSubnet() );
inetServ.setAddressTo( range.getMaxIp() );
freeIpFound = true;
}
}
if( !freeIpFound ) {
print( " ERROR! free ip from resource not found for " + ip );
return false;
}
int serviceId = wsServ.inetServUpdate( inetServ, new ArrayList<InetServOption>(), false, false, 0 );
...
для вас, если это статика с одним ip должна быть маска /32
Код:
List<IpResourceNet> rangeList = wsResource.freeIpResourceNetList( ipResourceCategoryIds, null, inetServ.getDateFrom(), inetServ.getDateTo(), 32, Integer.MAX_VALUE );