I believe the problem exists here;
PHP Code:
$ip=sprintf("%u",ip2long($vbulletin->GPC['ip']));
$cidrmask = ((pow(2,$vbulletin->GPC['cidr']) -1) << (32 - $vbulletin->GPC['cidr'])); //nb only works with ipv4. for ipv6 changes need to be made.
$ip = $ip & $cidrmask;
Specifically with the last statement, and only when $ip is implicitly cast to a float(?). What happens is any ban above 127.255.255.255 results in PHP returning a maximum of 2147483647 not allowing anyone to ban anything above that range.