TYPEMAP
Net_CDP	T_PTROBJ_SPECIAL
Net_CDP_Packet	T_PTROBJ_SPECIAL
Net_CDP_Address	T_PTROBJ_SPECIAL
Net_CDP_Address *	T_ARRAY
Net_CDP_IPPrefix	T_PTROBJ_SPECIAL
Net_CDP_IPPrefix *	T_ARRAY

u_int8_t	T_UV
u_int16_t	T_UV
u_int32_t	T_UV

const char *	T_PV
string_undef	T_PV_UNDEF

charPtr	T_PV
char **	T_ARRAY

INPUT
T_PTROBJ_SPECIAL
	if (sv_derived_from($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")) {
		IV tmp = SvIV((SV*)SvRV($arg));
		$var = ($type) tmp;
	} else
		croak(\"$var is not of type ${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")

T_PV_UNDEF
	SvGETMAGIC($arg);
	STMT_START {
		STRLEN tmp;
		$var = ($type) (SvOK($arg) ? SvPV_nomg($arg, tmp) : NULL);
	} STMT_END;

OUTPUT
T_PTROBJ_SPECIAL
	sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\", (void*)$var);
