The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
TYPEMAP
IPTables::IPv4::Table	T_PTROBJ
IPTables::IPv6::Table	T_PTROBJ
const char *		T_PV
ipt_chainlabel		IPT_CLABEL
ip6t_chainlabel		IP6T_CLABEL
struct ipt_entry *	IPT_ENTRY
struct ip6t_entry *	IPT_ENTRY

INPUT
IPT_CLABEL
	if( SvPOK($arg) ) {
		char *temp;
		STRLEN len;
		temp = SvPV($arg, len);
		if (len > IPT_FUNCTION_MAXNAMELEN) {
			SET_ERRSTR(\"$var name too long\");
			XSRETURN(FALSE);
		}
		memset($var, 0, IPT_FUNCTION_MAXNAMELEN + 1);
		strncpy($var, temp, len);
	}
	else {
		SET_ERRSTR(\"$var must be string\");
		XSRETURN(FALSE);
	}
IP6T_CLABEL
	if( SvPOK($arg) ) {
		char *temp;
		STRLEN len;
		temp = SvPV($arg, len);
		if (len > IP6T_FUNCTION_MAXNAMELEN) {
			SET_ERRSTR(\"$var name too long\");
			XSRETURN(FALSE);
		}
		memset($var, 0, IP6T_FUNCTION_MAXNAMELEN + 1);
		strncpy($var, temp, len);
	}
	else {
		SET_ERRSTR(\"$var must be string\");
		XSRETURN(FALSE);
	}
IPT_ENTRY
	if( SvROK($arg) && (SvTYPE(SvRV($arg)) == SVt_PVHV)) {
		if(!ipt_do_pack((HV *)SvRV($arg), \&$var, self))
			XSRETURN(FALSE);
	}
	else {
		SET_ERRSTR(\"$var must be hash ref\");
		XSRETURN(FALSE);
	}