local record iplib
	enum protocol
		"IPv6"
		"IPv4"
	end
	record ip_t
		addr : string
		packed : string
		proto : protocol
		zone : string
	end

	new_ip : function (string, protocol) : ip_t
	commonPrefixLength : function (ip_t, ip_t) : integer
	parse_cidr : function (string) : ip_t, integer
	match : function (ip_t, ip_t, integer) : boolean
	is_ip : function (any) : boolean
	truncate : function (ip_t, integer) : ip_t
end
return iplib