class NetAddr::Mask32

Mask32 represents a 32-bit netmask.

def cmp(other)

* -1 if this Mask128 is smaller in capacity
* 0 if the two are equal
* 1 if this Mask128 is larger in capacity
cmp compares equality with another Mask32. Return:
def cmp(other)
	if (!other.kind_of?(Mask32))
		raise ArgumentError, "Expected an Mask32 object for 'other' but got a #{other.class}."
	end
	if (self.prefix_len < other.prefix_len)
		return 1
	elsif (self.prefix_len > other.prefix_len)
		return -1
	end
	return 0
end

def extended()

extended returns the Mask32 in extended format (eg. x.x.x.x)
def extended()
	Util.int_to_IPv4(@mask)
end

def initialize(prefix_len)

Throws ValidationError on error.
Create a Mask32 from an Integer prefix length. Valid values are 0-32.
def initialize(prefix_len)
	if (!prefix_len.kind_of?(Integer))
		raise ValidationError, "Expected an Integer for 'prefix_len' but got a #{prefix_len.class}."
	elsif ( (prefix_len < 0) || (prefix_len > 32) )
		raise ValidationError, "#{prefix_len} must be in the range of 0-32."
	end
	@prefix_len = prefix_len
	@mask = NetAddr::F32 ^ (NetAddr::F32 >> @prefix_len)
end

def len()

len returns the number of IP addresses in this network. It will always return 0 for /0 networks.
def len()
	if (self.prefix_len == 0)
		return 0
	end
	return (self.mask ^ NetAddr::F32) + 1 # bit flip the netmask and add 1
end

def to_s()

to_s returns the Mask32 as a String
def to_s()
	return "/#{@prefix_len}"
end