if (!defined &_NETISO_TP_PARAM_H_) {
    eval 'sub _NETISO_TP_PARAM_H_ {1;}';
    eval 'sub TP_CLASSES_IMPLEMENTED {0x11;}';
    eval 'sub TP_DECBIT_CLEAR_COUNT {3;}';
    if (defined &KERNEL) {
    }
    eval 'sub TP_SOCKBUFSIZE {(4096);}';
    eval 'sub TP0_SOCKBUFSIZE {(512);}';
    eval 'sub MAX_TSAP_SEL_LEN {64;}';
    eval 'sub TP_TPDUSIZE {0xc;}';
    eval 'sub TP0_TPDUSIZE {0xb;}';
    eval 'sub TP_DFL_TPDUSIZE {0x7;}';
    eval 'sub TP_NRETRANS {12;}';
    eval 'sub TP_MAXRXTSHIFT {6;}';
    eval 'sub TP_MAXPORT {0xefff;}';
    eval 'sub TP_RTT_ALPHA {3;}';
    eval 'sub TP_RTV_ALPHA {2;}';
    eval 'sub TP_REXMTVAL {
        local($tpcb) = @_;
        eval "(( &tp_rttadd + ($tpcb)-> &tp_rtt + (($tpcb)-> &tp_rtv) << 2) /  &tp_rttdiv)";
    }';
    eval 'sub TP_RANGESET {
        local($tv, $value, $min, $max) = @_;
        eval "(($tv = $value) > ($max) ? ($tv = $max) : ($tv < $min ? $tv = $min : $tv))";
    }';
    eval 'sub T_CONN_DATA {0x1;}';
    eval 'sub T_DISCONNECT {0x2;}';
    eval 'sub T_DISC_DATA {0x4;}';
    eval 'sub T_XDATA {0x8;}';
    eval 'sub ISO_CLNS {0;}';
    eval 'sub IN_CLNS {1;}';
    eval 'sub ISO_CONS {2;}';
    eval 'sub ISO_COSNS {3;}';
    eval 'sub TP_MAX_NETSERVICES {3;}';
    eval 'sub _ACK_DONT_ {0;}';
    eval 'sub _ACK_STRAT_EACH_ {0x1;}';
    eval 'sub _ACK_STRAT_FULLWIN_ {0x2;}';
    eval 'sub _ACK_DUP_ {0x3;}';
    eval 'sub _ACK_EOT_ {0x4;}';
    eval 'sub _ACK_REORDER_ {0x5;}';
    eval 'sub _ACK_USRRCV_ {0x6;}';
    eval 'sub _ACK_FCC_ {0x7;}';
    eval 'sub _ACK_NUM_REASONS_ {0x8;}';
    eval 'sub ACK_DONT {0;}';
    eval 'sub ACK_STRAT_EACH {(1<<  &_ACK_STRAT_EACH_);}';
    eval 'sub ACK_STRAT_FULLWIN {(1<<  &_ACK_STRAT_FULLWIN_);}';
    eval 'sub ACK_DUP {(1<<  &_ACK_DUP_);}';
    eval 'sub ACK_EOT {(1<<  &_ACK_EOT_);}';
    eval 'sub ACK_REORDER {(1<<  &_ACK_REORDER_);}';
    eval 'sub TP_VERSION {0x1;}';
    eval 'sub TP_MAX_HEADER_LEN {256;}';
    eval 'sub TP_MIN_TPDUSIZE {0x7;}';
    eval 'sub TP_MAX_TPDUSIZE {0xd;}';
    eval 'sub TP_MAX_XPD_DATA {0x10;}';
    eval 'sub TP_MAX_CC_DATA {0x20;}';
    eval 'sub TP_MAX_CR_DATA { &TP_MAX_CC_DATA;}';
    eval 'sub TP_MAX_DR_DATA {0x40;}';
    eval 'sub TP_XTD_FMT_BIT {0x80000000;}';
    eval 'sub TP_XTD_FMT_MASK {0x7fffffff;}';
    eval 'sub TP_NML_FMT_BIT {0x80;}';
    eval 'sub TP_NML_FMT_MASK {0x7f;}';
    eval 'sub TP_MIN_TPDUTYPE {0x1;}';
    eval 'sub XPD_TPDU_type {0x1;}';
    eval 'sub XAK_TPDU_type {0x2;}';
    eval 'sub GR_TPDU_type {0x3;}';
    eval 'sub AK_TPDU_type {0x6;}';
    eval 'sub ER_TPDU_type {0x7;}';
    eval 'sub DR_TPDU_type {0x8;}';
    eval 'sub DC_TPDU_type {0xc;}';
    eval 'sub CC_TPDU_type {0xd;}';
    eval 'sub CR_TPDU_type {0xe;}';
    eval 'sub DT_TPDU_type {0xf;}';
    eval 'sub TP_MAX_TPDUTYPE {0xf;}';
    eval 'sub TPP_acktime {0x85;}';
    eval 'sub TPP_residER {0x86;}';
    eval 'sub TPP_priority {0x87;}';
    eval 'sub TPP_transdelay {0x88;}';
    eval 'sub TPP_throughput {0x89;}';
    eval 'sub TPP_subseq {0x8a;}';
    eval 'sub TPP_flow_cntl_conf {0x8c;}';
    eval 'sub TPP_addl_info {0xe0;}';
    eval 'sub TPP_tpdu_size {0xc0;}';
    eval 'sub TPP_calling_sufx {0xc1;}';
    eval 'sub TPP_invalid_tpdu {0xc1;}';
    eval 'sub TPP_called_sufx {0xc2;}';
    eval 'sub TPP_checksum {0xc3;}';
    eval 'sub TPP_vers {0xc4;}';
    eval 'sub TPP_security {0xc5;}';
    eval 'sub TPP_addl_opt {0xc6;}';
    eval 'sub TPP_alt_class {0xc7;}';
    eval 'sub TPP_perf_meas {0xc8;}';
    eval 'sub TPP_ptpdu_size {0xf0;}';
    eval 'sub TPP_inact_time {0xf2;}';
    if (!defined &TRUE) {
	eval 'sub TRUE {1;}';
    }
    if (!defined &FALSE) {
	eval 'sub FALSE {0;}';
    }
    eval 'sub TP_LOCAL {22;}';
    eval 'sub TP_FOREIGN {33;}';
    if (!defined &EOK) {
	eval 'sub EOK {0;}';
    }
    eval 'sub TP_CLASS_0 {(1<<0);}';
    eval 'sub TP_CLASS_1 {(1<<1);}';
    eval 'sub TP_CLASS_2 {(1<<2);}';
    eval 'sub TP_CLASS_3 {(1<<3);}';
    eval 'sub TP_CLASS_4 {(1<<4);}';
    eval 'sub TP_FORCE {0x1;}';
    eval 'sub TP_STRICT {0x2;}';
    if (!defined &MNULL) {
	eval 'sub MNULL {0;}';
    }
    eval 'sub MT_XPD {0x44;}';
    eval 'sub MT_EOT {0x40;}';
    eval 'sub TP_ENOREF {0x80000000;}';
    eval 'sub DoEvent {
        local($x) = @_;
        eval "(( &E. &ev_number=($x)),( &tp_driver( &tpcb,& &E)))";
    }';
    eval 'sub GET_CUR_TIME {
        local($tvalp) = @_;
        eval "((*$tvalp) =  &time)";
    }';
    eval 'sub GET_TIME_SINCE {
        local($oldtvalp, $diffp) = @_;
        eval "{ ($diffp)-> &tv_sec =  &time. &tv_sec - ($oldtvalp)-> &tv_sec; ($diffp)-> &tv_usec =  &time. &tv_usec - ($oldtvalp)-> &tv_usec;  &if( ($diffp)-> &tv_usec <0 ) { ($diffp)-> &tv_sec --; ($diffp)-> &tv_usec = 1000000 - ($diffp)-> &tv_usec; }}";
    }';
    eval 'sub satosiso {
        local($ADDR) = @_;
        eval "(($ADDR))";
    }';
    eval 'sub satosin {
        local($ADDR) = @_;
        eval "(($ADDR))";
    }';
    eval 'sub CHANGE_MTYPE {
        local($m, $TYPE) = @_;
        eval " &if(($m)-> &m_type != $TYPE) {  &mbstat. &m_mtypes[($m)-> &m_type]--;  &mbstat. &m_mtypes[$TYPE]++; ($m)-> &m_type = $TYPE; }";
    }';
    eval 'sub vbptr {
        local($x) = @_;
        eval "(($x))";
    }';
    eval 'sub vbval {
        local($x,$type) = @_;
        eval "(*(($type *)&((($x))-> &tpv_val)))";
    }';
    eval 'sub vbcode {
        local($x) = @_;
        eval "( &vbptr($x)-> &tpv_code)";
    }';
    eval 'sub vblen {
        local($x) = @_;
        eval "( &vbptr($x)-> &tpv_len)";
    }';
    eval 'sub vb_putval {
        local($dst,$type,$src) = @_;
        eval " &bcopy(( &caddr_t)&($src),( &caddr_t)&((($dst))-> &tpv_val), $sizeof{$type})";
    }';
    eval 'sub vb_getval {
        local($src,$type,$dst) = @_;
        eval " &bcopy(( &caddr_t)&((($src))-> &tpv_val),( &caddr_t)&($dst),$sizeof{$type})";
    }';
    eval 'sub ADDOPTION {
        local($type, $DU, $len, $src) = @_;
        eval "{  &register  &caddr_t  &P;  &P = ( &caddr_t)($DU) + (($DU)-> &tpdu_li);  &vbptr( &P)-> &tpv_code = $type;  &vbptr( &P)-> &tpv_len = $len;  &bcopy(( &caddr_t)&$src, ( &caddr_t)&( &vbptr( &P)-> &tpv_val), $len); $DU-> &tpdu_li += $len+2;}";
    }';
    if (defined( &ARGO_DEBUG)&&!defined( &LOCAL_CREDIT_EXPAND)) {
	eval 'sub LOCAL_CREDIT {
	    local($tpcb) = @_;
	    eval " &tp_local_credit($tpcb)";
	}';
    }
    else {
	eval 'sub LOCAL_CREDIT {
	    local($tpcb) = @_;
	    eval "{  &if ($tpcb-> &tp_rsycnt == 0) {  &register struct sockbuf * &xxsb = &(($tpcb)-> &tp_sock-> &so_rcv);  &register int  &xxi =  &sbspace( &xxsb);  &xxi = ( &xxi<0) ? 0 : (( &xxi) / ($tpcb)-> &tp_l_tpdusize);  &xxi =  &min( &xxi, ($tpcb)-> &tp_maxlcredit);  &if (!($tpcb-> &tp_cebit_off)) { ($tpcb)-> &tp_lcredit =  &ROUND(($tpcb)-> &tp_win_recv);  &if ( &xxi < ($tpcb)-> &tp_lcredit) { ($tpcb)-> &tp_lcredit =  &xxi; } }  &else ($tpcb)-> &tp_lcredit =  &xxi; } }";
	}';
    }
    if (defined &KERNEL) {
	require 'sys/syslog.ph';
	eval 'sub printf { &logpri( &LOG_DEBUG), &addlog;}';
	if (!defined &tp_NSTATES) {
	    require 'netiso/tp_states.ph';
	    require 'netiso/tp_events.ph';
	    if (defined( &__STDC__) || defined( &__cplusplus)) {
		eval 'sub ATTR {
		    local($X) = @_;
		    eval " &ev_union. &EV_ ## $X";
		}';
	    }
	}
    }
}
1;
