sub DECBIT {1;}
sub IS_CLUSTER {
    local($m) = @_;
    eval "(($m)-> &m_flags &  &M_EXT)";
}
sub HTOC {
    local($msb, $lsb, $hword) = @_;
    eval "($msb) = (($hword) >> 8); ($lsb) = (($hword) & 0xff)";
}
sub CTOH {
    local($msb, $lsb, $hword) = @_;
    eval "($hword) = (($msb) << 8) | ($lsb)";
}
sub CKSUM_REQUIRED {
    local($clnp) = @_;
    eval "((($clnp)-> &cnf_cksum_msb != 0) || (($clnp)-> &cnf_cksum_lsb != 0))";
}
sub CNF_TYPE {0x1f;}
sub CNF_ERR_OK {0x20;}
sub CNF_MORE_SEGS {0x40;}
sub CNF_SEG_OK {0x80;}
sub CLNP_CKSUM_OFF {0x07;}
sub clnl_fixed { &clnp_fixed;}
sub ER_INVALREAS {0xff;}
sub CLNP_OPTTOOFF {
    local($m, $opt) = @_;
    eval "( ($opt -  &mtod($m,  &caddr_t)))";
}
sub CLNP_OFFTOOPT {
    local($m, $off) = @_;
    eval "(( &caddr_t) ( &mtod($m,  &caddr_t) + $off))";
}
sub CLNPSRCRT_VALID {
    local($oidx) = @_;
    eval "(($oidx) && ($oidx-> &cni_srcrt_s))";
}
sub CLNPSRCRT_OFF {
    local($oidx, $options) = @_;
    eval "(*(( &CLNP_OFFTOOPT($options, $oidx-> &cni_srcrt_s) + 1)))";
}
sub CLNPSRCRT_TYPE {
    local($oidx, $options) = @_;
    eval "((*( &CLNP_OFFTOOPT($options, $oidx-> &cni_srcrt_s))))";
}
sub CLNPSRCRT_CLEN {
    local($oidx, $options) = @_;
    eval "((*( &CLNP_OFFTOOPT($options, $oidx-> &cni_srcrt_s) +  &CLNPSRCRT_OFF($oidx, $options) - 1)))";
}
sub CLNPSRCRT_CADDR {
    local($oidx, $options) = @_;
    eval "(( &caddr_t)( &CLNP_OFFTOOPT($options, $oidx-> &cni_srcrt_s) +  &CLNPSRCRT_OFF($oidx, $options)))";
}
sub CLNPSRCRT_TERM {
    local($oidx, $options) = @_;
    eval "( &CLNPSRCRT_OFF($oidx, $options) > $oidx-> &cni_srcrt_len)";
}
sub CLNPOPT_FLAGS {0x01;}
sub CLNPOPT_OPTS {0x02;}
sub CLNPOVAL_PAD {0xcc;}
sub CLNPOVAL_SECURE {0xc5;}
sub CLNPOVAL_SRCRT {0xc8;}
sub CLNPOVAL_RECRT {0xcb;}
sub CLNPOVAL_QOS {0xc3;}
sub CLNPOVAL_PRIOR {0xcd;}
sub CLNPOVAL_ERREAS {0xc1;}
sub CLNPOVAL_SRCSPEC {0x40;}
sub CLNPOVAL_DSTSPEC {0x80;}
sub CLNPOVAL_GLOBAL {0xc0;}
sub CLNPOVAL_SEQUENCING {0x10;}
sub CLNPOVAL_CONGESTED {0x08;}
sub CLNPOVAL_LOWDELAY {0x04;}
sub CLNPOVAL_PARTRT {0x00;}
sub CLNPOVAL_COMPRT {0x01;}
sub CLNP_NO_SEG {0x010;}
sub CLNP_NO_ER {0x020;}
sub CLNP_SEND_RAW {0x080;}
sub CLNP_NO_CKSUM {0x100;}
sub CLNP_ECHO {0x200;}
sub CLNP_NOCACHE {0x400;}
sub CLNP_ECHOR {0x800;}
sub CLNP_VFLAGS {( &CLNP_SEND_RAW| &CLNP_NO_SEG| &CLNP_NO_ER| &CLNP_NO_CKSUM | &CLNP_ECHO| &CLNP_NOCACHE| &CLNP_ECHOR);}
sub CLNP_HDR_MIN {($sizeof{'struct clnp_fixed'});}
sub CLNP_HDR_MAX {(254);}
sub CLNP_TTL_UNITS {2;}
sub CLNP_TTL {15* &CLNP_TTL_UNITS;}
sub ISO8473_V1 {0x01;}
sub CLNP_DT {0x1C;}
sub CLNP_ER {0x01;}
sub CLNP_RAW {0x1D;}
sub CLNP_EC {0x1E;}
sub CLNP_ECR {0x1F;}
sub GEN_NOREAS {0x00;}
sub GEN_PROTOERR {0x01;}
sub GEN_BADCSUM {0x02;}
sub GEN_CONGEST {0x03;}
sub GEN_HDRSYNTAX {0x04;}
sub GEN_SEGNEEDED {0x05;}
sub GEN_INCOMPLETE {0x06;}
sub GEN_DUPOPT {0x07;}
sub ADDR_DESTUNREACH {0x80;}
sub ADDR_DESTUNKNOWN {0x81;}
sub SRCRT_UNSPECERR {0x90;}
sub SRCRT_SYNTAX {0x91;}
sub SRCRT_UNKNOWNADDR {0x92;}
sub SRCRT_BADPATH {0x93;}
sub TTL_EXPTRANSIT {0xa0;}
sub TTL_EXPREASS {0xa1;}
sub DISC_UNSUPPOPT {0xb0;}
sub DISC_UNSUPPVERS {0xb1;}
sub DISC_UNSUPPSECURE {0xb2;}
sub DISC_UNSUPPSRCRT {0xb3;}
sub DISC_UNSUPPRECRT {0xb4;}
sub REASS_INTERFERE {0xc0;}
sub CLNP_ERRORS {22;}
if (defined &KERNEL) {
}
if (defined &CLNP_ER_CODES) {
}
if (defined &TROLL) {
    eval 'sub TR_DUPEND {0x01;}';
    eval 'sub TR_DUPPKT {0x02;}';
    eval 'sub TR_DROPPKT {0x04;}';
    eval 'sub TR_TRIM {0x08;}';
    eval 'sub TR_CHANGE {0x10;}';
    eval 'sub TR_MTU {0x20;}';
    eval 'sub TR_CHUCK {0x40;}';
    eval 'sub TR_BLAST {0x80;}';
    eval 'sub TR_RAWLOOP {0x100;}';
    eval 'sub SN_OUTPUT {
        local($clcp, $m) = @_;
        eval " &troll_output($clcp-> &clc_ifp, $m, $clcp-> &clc_firsthop, $clcp-> &clc_rt)";
    }';
    eval 'sub SN_MTU {
        local($ifp, $rt) = @_;
        eval "((($rt && $rt-> &rt_rmx. &rmx_mtu) ? $rt-> &rt_rmx. &rmx_mtu :  &clnp_badmtu($ifp, $rt,  &__LINE__,  &__FILE__)) -  &trollctl. &tr_mtu_adj)";
    }';
    if (defined &KERNEL) {
    }
}
else {
    eval 'sub SN_OUTPUT {
        local($clcp, $m) = @_;
        eval "(*$clcp-> &clc_ifp-> &if_output)($clcp-> &clc_ifp, $m, $clcp-> &clc_firsthop, $clcp-> &clc_rt)";
    }';
    eval 'sub SN_MTU {
        local($ifp, $rt) = @_;
        eval "((($rt && $rt-> &rt_rmx. &rmx_mtu) ? $rt-> &rt_rmx. &rmx_mtu :  &clnp_badmtu($ifp, $rt,  &__LINE__,  &__FILE__)))";
    }';
}
sub CLNP_EXTRACT_ADDR {
    local($isoa, $hoff, $hend) = @_;
    eval "{ $isoa. &isoa_len = *$hoff;  &if ((((++$hoff) + $isoa. &isoa_len) > $hend) || ($isoa. &isoa_len > 20) || ($isoa. &isoa_len == 0)) { $hoff = ( &caddr_t)0; }  &else { ( &void)  &bcopy($hoff, ( &caddr_t)$isoa. &isoa_genaddr, $isoa. &isoa_len); $hoff += $isoa. &isoa_len; } }";
}
sub CLNP_INSERT_ADDR {
    local($hoff, $isoa) = @_;
    eval "*$hoff++ = ($isoa). &isoa_len; ( &void)  &bcopy(( &caddr_t)(($isoa). &isoa_genaddr), $hoff, ($isoa). &isoa_len); $hoff += ($isoa). &isoa_len;";
}
if (!defined &satosiso) {
    eval 'sub satosiso {
        local($sa) = @_;
        eval "(($sa))";
    }';
}
if (defined &KERNEL) {
    if (defined &TROLL) {
    }
}
1;
