⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sl_x400p.c

📁 OpenSS7 This the fourth public release of the OpenSS7 Master Package. See README in the release for
💻 C
📖 第 1 页 / 共 5 页
字号:
#if 0/* *  SL_OPTMGMT_ACK *  ----------------------------------- */STATIC noinline fastcall __unlikely intsl_optmgmt_ack(struct xp *xp, queue_t *q, caddr_t opt_ptr, size_t opt_len, sl_ulong flags){	mblk_t *mp;	sl_optmgmt_ack_t *p;	if ((mp = ss7_allocb(q, sizeof(*p) + opt_len, BPRI_MED))) {		mp->b_datap->db_type = M_PROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->sl_primitive = SL_OPTMGMT_ACK;		p->opt_length = opt_len;		p->opt_offset = opt_len ? sizeof(*p) : 0;		p->mgmt_flags = flags;		bcopy(opt_ptr, mp->b_wptr, opt_len);		mp->b_wptr += opt_len;		printd(("%s: %p: <- SL_OPTMGMT_ACK\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}/* *  SL_NOTIFY_IND *  ----------------------------------- */STATIC noinline fastcall __unlikely intsl_notify_ind(struct xp *xp, queue_t *q){	mblk_t *mp;	sl_notify_ind_t *p;	if ((mp = ss7_allocb(q, sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->sl_primitive = SL_NOTIFY_IND;		printd(("%s: %p: <- SL_NOTIFY_IND\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}#endif/* *  LMI_INFO_ACK *  ----------------------------------- */STATIC noinline fastcall __unlikely intlmi_info_ack(struct xp *xp, queue_t *q, caddr_t ppa_ptr, size_t ppa_len){	mblk_t *mp;	lmi_info_ack_t *p;	if ((mp = ss7_allocb(q, sizeof(*p) + ppa_len, BPRI_MED))) {		mp->b_datap->db_type = M_PCPROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->lmi_primitive = LMI_INFO_ACK;		p->lmi_version = 1;		p->lmi_state = xp->i_state;		p->lmi_max_sdu = xp->sdt.config.m + 1 + ((xp->option.popt & SS7_POPT_XSN) ? 6 : 3);		p->lmi_min_sdu = ((xp->option.popt & SS7_POPT_XSN) ? 6 : 3);		p->lmi_header_len = 0;		p->lmi_ppa_style = LMI_STYLE2;		bcopy(ppa_ptr, mp->b_wptr, ppa_len);		mp->b_wptr += ppa_len;		printd(("%s: %p: <- LMI_INFO_ACK\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}/* *  SDT_RC_SIGNAL_UNIT_IND *  ----------------------------------- *  We prefer to send M_DATA blocks.  When the count is 1, we simply send *  M_DATA.  When the count is greater than one, we send an *  SDT_RC_SIGNAL_UNIT_IND which also includes the count.  This is so that *  upper layer modules can collect SU statistics. * *  Can't use buffer service. */STATIC inline fastcall __hot_in intsdt_rc_signal_unit_ind(struct xp *xp, queue_t *q, mblk_t *dp, sl_ulong count){	if (likely(count)) {		if (likely(canput(RD(q)))) {			mblk_t *mp;			sdt_rc_signal_unit_ind_t *p;			if (likely(!!(mp = allocb(sizeof(*p), BPRI_MED)))) {				mp->b_datap->db_type = M_PROTO;				p = (typeof(p)) mp->b_wptr;				mp->b_wptr += sizeof(*p);				p->sdt_primitive = SDT_RC_SIGNAL_UNIT_IND;				p->sdt_count = count;				mp->b_cont = dp;				_printd(("%s: %p: <- SDT_RC_SIGNAL_UNIT_IND\n", DRV_NAME, xp));				put(RD(q), mp);				return (QR_ABSORBED);			}			rare();			return (-ENOBUFS);		}		rare();		return (-EBUSY);	}	swerr();	return (-EFAULT);}#if 0/* *  SDT_RC_CONGESTION_ACCEPT_IND *  ----------------------------------- */STATIC noinline fastcall __unlikely intsdt_rc_congestion_accept_ind(struct xp *xp, queue_t *q){	mblk_t *mp;	sdt_rc_congestion_accept_ind_t *p;	if ((mp = allocb(sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->sdt_primitive = SDT_RC_CONGESTION_ACCEPT_IND;		printd(("%s: %p: <- SDT_RC_CONGESTION_ACCEPT_IND\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}/* *  SDT_RC_CONGESTION_DISCARD_IND *  ----------------------------------- */STATIC noinline fastcall __unlikely intsdt_rc_congestion_discard_ind(struct xp *xp, queue_t *q){	mblk_t *mp;	sdt_rc_congestion_discard_ind_t *p;	if ((mp = allocb(sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->sdt_primitive = SDT_RC_CONGESTION_DISCARD_IND;		printd(("%s: %p: <- SDT_RC_CONGESTION_DISCARD_IND\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}/* *  SDT_RC_NO_CONGESTION_IND *  ----------------------------------- */STATIC noinline fastcall __unlikely intsdt_rc_no_congestion_ind(struct xp *xp, queue_t *q){	mblk_t *mp;	sdt_rc_no_congestion_ind_t *p;	if ((mp = allocb(sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->sdt_primitive = SDT_RC_NO_CONGESTION_IND;		printd(("%s: %p: <- SDT_RC_NO_CONGESTION_IND\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}#endif/* *  SDT_IAC_CORRECT_SU_IND *  ----------------------------------- */STATIC inline fastcall __hot_read intsdt_iac_correct_su_ind(struct xp *xp, queue_t *q){	if (canputnext(RD(q))) {		mblk_t *mp;		sdt_iac_correct_su_ind_t *p;		if ((mp = allocb(sizeof(*p), BPRI_MED))) {			mp->b_datap->db_type = M_PROTO;			p = (typeof(p)) mp->b_wptr;			mp->b_wptr += sizeof(*p);			p->sdt_primitive = SDT_IAC_CORRECT_SU_IND;			printd(("%s: %p: <- SDT_IAC_CORRECT_SU_IND\n", DRV_NAME, xp));			putnext(RD(q), mp);			return (QR_DONE);		}		rare();		return (-ENOBUFS);	}	rare();	return (-EBUSY);}#if 0/* *  SDT_IAC_ABORT_PROVING_IND *  ----------------------------------- */STATIC noinline fastcall intsdt_iac_abort_proving_ind(struct xp *xp, queue_t *q){	mblk_t *mp;	sdt_iac_abort_proving_ind_t *p;	if ((mp = allocb(sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->sdt_primitive = SDT_IAC_ABORT_PROVING_IND;		printd(("%s: %p: <- SDT_IAC_ABORT_PROVING_IND\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}/* *  SDT_LSC_LINK_FAILURE_IND *  ----------------------------------- */STATIC noinline fastcall __unlikely intsdt_lsc_link_failure_ind(struct xp *xp, queue_t *q){	mblk_t *mp;	sdt_lsc_link_failure_ind_t *p;	if ((mp = allocb(sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->sdt_primitive = SDT_LSC_LINK_FAILURE_IND;		printd(("%s: %p: <- SDT_LSC_LINK_FAILURE_IND\n", DRV_NAME, xp));		put(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}#endif/* *  SDT_TXC_TRANSMISSION_REQUEST_IND *  ----------------------------------- */STATIC inline fastcall __hot_out intsdt_txc_transmission_request_ind(struct xp *xp, queue_t *q){	mblk_t *mp;	sdt_txc_transmission_request_ind_t *p;	if ((mp = allocb(sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->sdt_primitive = SDT_TXC_TRANSMISSION_REQUEST_IND;		_printd(("%s: %p: <- SDT_TXC_TRANSMISSION_REQUEST_IND\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}/* *  SDL_RECEIVED_BITS_IND *  ----------------------------------- *  Quickly we just copy the buffer and leave the original for the lower level *  driver. */STATIC inline fastcall __hot_in intsdl_received_bits_ind(struct xp *xp, queue_t *q, mblk_t *dp){	if (canput(RD(q))) {		_printd(("%s: %p: <- SDL_RECEIVED_BITS_IND\n", DRV_NAME, xp));		put(RD(q), dp);		return (QR_ABSORBED);	}	rare();	dp->b_wptr = dp->b_rptr;	/* discard contents */	return (-EBUSY);}#if 0/* *  SDL_DISCONNECT_IND *  ----------------------------------- */STATIC noinline fastcall __unlikely intsdl_disconnect_ind(struct xp *xp, queue_t *q){	mblk_t *mp;	sdl_disconnect_ind_t *p;	(void) xp;	if ((mp = allocb(sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->sdl_primitive = SDL_DISCONNECT_IND;		printd(("%s: %p: <- SDL_DISCONNECT_IND\n", DRV_NAME, xp));		put(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}#endif/* *  LMI_OK_ACK *  ----------------------------------- */STATIC noinline fastcall __unlikely intlmi_ok_ack(struct xp *xp, queue_t *q, sl_ulong state, sl_long prim){	mblk_t *mp;	lmi_ok_ack_t *p;	if ((mp = ss7_allocb(q, sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PCPROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->lmi_primitive = LMI_OK_ACK;		p->lmi_correct_primitive = prim;		p->lmi_state = xp->i_state = state;		printd(("%s: %p: <- LMI_OK_ACK\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}/* *  LMI_ERROR_ACK *  ----------------------------------- */STATIC noinline fastcall __unlikely intlmi_error_ack(struct xp *xp, queue_t *q, sl_ulong state, sl_long prim, sl_ulong errno,	      sl_ulong reason){	mblk_t *mp;	lmi_error_ack_t *p;	if ((mp = ss7_allocb(q, sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PCPROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->lmi_primitive = LMI_ERROR_ACK;		p->lmi_errno = errno;		p->lmi_reason = reason;		p->lmi_error_primitive = prim;		p->lmi_state = xp->i_state = state;		printd(("%s: %p: <- LMI_ERROR_ACK\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}/* *  LMI_ENABLE_CON *  ----------------------------------- */STATIC noinline fastcall __unlikely intlmi_enable_con(struct xp *xp, queue_t *q){	mblk_t *mp;	lmi_enable_con_t *p;	if ((mp = ss7_allocb(q, sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->lmi_primitive = LMI_ENABLE_CON;		p->lmi_state = xp->i_state = LMI_ENABLED;		printd(("%s: %p: <- LMI_ENABLE_CON\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}/* *  LMI_DISABLE_CON *  ----------------------------------- */STATIC noinline fastcall __unlikely intlmi_disable_con(struct xp *xp, queue_t *q){	mblk_t *mp;	lmi_disable_con_t *p;	if (putctl2(RD(q), M_FLUSH, FLUSHRW, 0)) {		if ((mp = ss7_allocb(q, sizeof(*p), BPRI_MED))) {			mp->b_datap->db_type = M_PROTO;			p = (typeof(p)) mp->b_wptr;			mp->b_wptr += sizeof(*p);			p->lmi_primitive = LMI_DISABLE_CON;			p->lmi_state = xp->i_state = LMI_DISABLED;			printd(("%s: %p: <- LMI_DISABLE_CON\n", DRV_NAME, xp));			putnext(RD(q), mp);			return (QR_DONE);		}	}	rare();	return (-ENOBUFS);}#if 0/* *  LMI_OPTMGMT_ACK *  ----------------------------------- */STATIC noinline fastcall __unlikely intlmi_optmgmt_ack(struct xp *xp, queue_t *q, sl_ulong flags, caddr_t opt_ptr, size_t opt_len){	mblk_t *mp;	lmi_optmgmt_ack_t *p;	if ((mp = ss7_allocb(q, sizeof(*p) + opt_len, BPRI_MED))) {		mp->b_datap->db_type = M_PCPROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->lmi_primitive = LMI_OPTMGMT_ACK;		p->lmi_opt_length = opt_len;		p->lmi_opt_offset = opt_len ? sizeof(*p) : 0;		p->lmi_mgmt_flags = flags;		printd(("%s: %p: <- LMI_OPTMGMT_ACK\n", DRV_NAME, xp));		putnext(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}/* *  LMI_ERROR_IND *  ----------------------------------- */STATIC noinline fastcall __unlikely intlmi_error_ind(struct xp *xp, queue_t *q, sl_ulong errno, sl_ulong reason){	mblk_t *mp;	lmi_error_ind_t *p;	if ((mp = ss7_allocb(q, sizeof(*p), BPRI_MED))) {		mp->b_datap->db_type = M_PROTO;		p = (typeof(p)) mp->b_wptr;		mp->b_wptr += sizeof(*p);		p->lmi_primitive = LMI_ERROR_IND;		p->lmi_errno = errno;		p->lmi_reason = reason;		p->lmi_state = xp->i_state;		printd(("%s: %p: <- LMI_ERROR_IND\n", DRV_NAME, xp));		put(RD(q), mp);		return (QR_DONE);	}	rare();	return (-ENOBUFS);}/* *  LMI_STATS_IND *  ----------------------------------- */STATIC noinline fastcall __unlikely intlmi_stats_ind(struct xp *xp, queue_t *q, sl_ulong interval)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -