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

📄 m2pa_slm.c

📁 No7信令,我需要交换类似的代码, 请店长审核,谢谢了,急着交换,谢谢
💻 C
📖 第 1 页 / 共 5 页
字号:
		p->lmi_severity		= severity;		bcopy(mp->b_wptr, inf_ptr, inf_len);		mp->b_wptr += inf_len;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_PDU_IND *  --------------------------------------------- */static intsl_pdu_ind(sl_t *sl, mblk_t *dp){	mblk_t *mp;	sl_pdu_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_pdu_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_PDU_IND;		mp->b_cont = dp;		ptrace(("Delivering mp = %u\n",(uint)mp));		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_LINK_CONGESTED_IND *  --------------------------------------------- */static intsl_link_congested_ind(sl_t *sl, ulong cong, ulong disc){	mblk_t *mp;	sl_link_cong_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_link_cong_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_LINK_CONGESTED_IND;		p->sl_timestamp		= jiffies;		p->sl_cong_status	= cong;		p->sl_disc_status	= disc;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_LINK_CONGESTION_CEASED_IND *  --------------------------------------------- */static intsl_link_congestion_ceased_ind(sl_t *sl, ulong cong, ulong disc){	mblk_t *mp;	sl_link_cong_ceased_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_link_cong_ceased_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_LINK_CONGESTION_CEASED_IND;		p->sl_timestamp		= jiffies;		p->sl_cong_status	= cong;		p->sl_disc_status	= disc;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_RETRIEVED_MESSAGE_IND *  --------------------------------------------- */static intsl_retrieved_message_ind(sl_t *sl, mblk_t *dp){	mblk_t *mp;	sl_retrieved_msg_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_retrieved_msg_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_RETRIEVED_MESSAGE_IND;		mp->b_cont = dp;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_RETRIEVAL_COMPLETE_IND *  --------------------------------------------- */static intsl_retrieval_complete_ind(sl_t *sl){	mblk_t *mp;	sl_retrieval_comp_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_retrieval_comp_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_RETRIEVAL_COMPLETE_IND;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_RB_CLEARED_IND *  --------------------------------------------- */static intsl_rb_cleared_ind(sl_t *sl){	mblk_t *mp;	sl_rb_cleared_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_rb_cleared_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_RB_CLEARED_IND;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_BSNT_IND *  --------------------------------------------- */static intsl_bsnt_ind(sl_t *sl, ulong bsnt){	mblk_t *mp;	sl_bsnt_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_bsnt_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_BSNT_IND;		p->sl_bsnt		= bsnt;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_IN_SERVICE_IND *  --------------------------------------------- */static intsl_in_service_ind(sl_t *sl){	mblk_t *mp;	sl_in_service_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_in_service_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_IN_SERVICE_IND;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_OUT_OF_SERVICE_IND *  --------------------------------------------- */static intsl_out_of_service_ind(sl_t *sl, ulong reason){	mblk_t *mp;	sl_out_of_service_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_out_of_service_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_OUT_OF_SERVICE_IND;		p->sl_timestamp		= jiffies;		p->sl_reason		= reason;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_REMOTE_PROCESSOR_OUTAGE_IND *  --------------------------------------------- */static intsl_remote_processor_outage_ind(sl_t *sl){	mblk_t *mp;	sl_rem_proc_out_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_rem_proc_out_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_REMOTE_PROCESSOR_OUTAGE_IND;		p->sl_timestamp		= jiffies;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_REMOTE_PROCESSOR_RECOVERED_IND *  --------------------------------------------- */static intsl_remote_processor_recovered_ind(sl_t *sl){	mblk_t *mp;	sl_rem_proc_recovered_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_rem_proc_recovered_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_REMOTE_PROCESSOR_RECOVERED_IND;		p->sl_timestamp		= jiffies;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_RTB_CLEARED_IND *  --------------------------------------------- */static intsl_rtb_cleared_ind(sl_t *sl){	mblk_t *mp;	sl_rtb_cleared_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_rtb_cleared_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_RTB_CLEARED_IND;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_RETRIEVAL_NOT_POSSIBLE_IND *  --------------------------------------------- */static intsl_retrieval_not_possible_ind(sl_t *sl){	mblk_t *mp;	sl_retrieval_not_poss_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_retrieval_not_poss_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_RETRIEVAL_NOT_POSSIBLE_IND;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  SL_BSNT_NOT_RETRIEVABLE_IND *  --------------------------------------------- */static intsl_bsnt_not_retrievable_ind(sl_t *sl, ulong bsnt){	mblk_t *mp;	sl_bsnt_not_retr_ind_t *p;	if ( canputnext(sl->rq) ) {	if ( (mp = allocb(sizeof(*p), BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((sl_bsnt_not_retr_ind_t *)mp->b_wptr)++;		p->sl_primitive		= SL_BSNT_NOT_RETRIEVABLE_IND;		p->sl_bsnt		= bsnt;		putnext(sl->rq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  ------------------------------------------------------------------------- * *  NPI User (M2PA) -> NPI Provider (SCTP) Primitives * *  ------------------------------------------------------------------------- * *  N_DATA_REQ *  --------------------------------------------- */static intn_data_req(sl_t *sl, ulong flags, void *qos_ptr, size_t qos_len, mblk_t *dp){	mblk_t *mp;	N_data_req_t *p;	if ( canputnext(sl->wq) ) {	if ( (mp = allocb(sizeof(*p)+qos_len, BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((N_data_req_t *)mp->b_wptr)++;		p->PRIM_type		= N_DATA_REQ;		p->DATA_xfer_flags	= flags;		bcopy(qos_ptr, mp->b_wptr, qos_len);		mp->b_wptr += qos_len;		mp->b_cont = dp;		putnext(sl->wq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  N_EXDATA_REQ *  --------------------------------------------- */static intn_exdata_req(sl_t *sl, void *qos_ptr, size_t qos_len, mblk_t *dp){	mblk_t *mp;	N_exdata_req_t *p;	if ( bcanputnext(sl->wq, 1) ) {	if ( (mp = allocb(sizeof(*p)+qos_len, BPRI_MED)) ) {		mp->b_datap->db_type = M_PROTO;		p = ((N_exdata_req_t *)mp->b_wptr)++;		p->PRIM_type		= N_EXDATA_REQ;		bcopy(qos_ptr, mp->b_wptr, qos_len);		mp->b_wptr += qos_len;		mp->b_cont = dp;		putnext(sl->wq, mp);		return(0);	} rare();   return(-ENOBUFS);	} seldom(); return(-EBUSY);}/* *  ------------------------------------------------------------------------- * *  SL Peer (M2PA) -> SL Peer Sent Messages * *  ------------------------------------------------------------------------- * *  M2PA SEND PROVING *  --------------------------------------------- */static intsl_send_proving(sl_t *sl, size_t plen){	int err;	mblk_t *mp;	N_qos_sel_data_sctp_t qos = { N_QOS_SEL_DATA_SCTP, M2PA_PPI, M2PA_DATA_STREAM, };	if ( (mp = allocb(2*sizeof(uint32_t)+plen, BPRI_MED)) )	{		mp->b_datap->db_type = M_DATA;		*((uint32_t *)mp->b_wptr)++ = M2PA_PROVING_MESSAGE;		*((uint32_t *)mp->b_wptr)++ = __constant_htonl(2*sizeof(uint32_t)+plen);		fixme(("We should include a test pattern.\n"));		bzero(mp->b_wptr, plen);		mp->b_wptr += plen;		if ( !(err = n_data_req(sl, 0, &qos, sizeof(qos), mp)) )			return(0);		freeb(mp);		return(err);	}	return(-ENOBUFS);}/* *  M2PA SEND STATUS *  --------------------------------------------- */static intsl_send_status(sl_t *sl, uint32_t status){	int err;	mblk_t *mp;	N_qos_sel_data_sctp_t qos = { N_QOS_SEL_DATA_SCTP, M2PA_PPI, M2PA_STATUS_STREAM, };	if ( (mp = allocb(3*sizeof(uint32_t), BPRI_MED)) )	{		mp->b_datap->db_type = M_DATA;		*((uint32_t *)mp->b_wptr)++ = M2PA_STATUS_MESSAGE;		*((uint32_t *)mp->b_wptr)++ = __constant_htonl(3*sizeof(uint32_t));		*((uint32_t *)mp->b_wptr)++ = status;		if ( !(err = n_data_req(sl, 0, &qos, sizeof(qos), mp)) )			return(0);		assert(mp->b_datap->db_ref);		freeb(mp);		return(err);	}	return(-ENOBUFS);}/* *  M2PA SEND ACK *  --------------------------------------------- */static intsl_send_ack(sl_t *sl, ulong count){	int err;	mblk_t *mp;	N_qos_sel_data_sctp_t qos = { N_QOS_SEL_DATA_SCTP, M2PA_PPI, M2PA_DATA_STREAM, };	if ( (mp = allocb(3*sizeof(uint32_t), BPRI_MED)) )	{		mp->b_datap->db_type = M_DATA;		*((uint32_t *)mp->b_wptr)++ = M2PA_ACK_MESSAGE;		*((uint32_t *)mp->b_wptr)++ = __constant_htonl(3*sizeof(uint32_t));		*((uint32_t *)mp->b_wptr)++ = htonl(count);		if ( (err = n_exdata_req(sl, &qos, sizeof(qos), mp)) )		{			assert(mp->b_datap->db_ref);			freeb(mp);			return(err);		}		return(0);	}	return(-ENOBUFS);}/* *  M2PA SEND DATA *  --------------------------------------------- */static intsl_send_data(sl_t *sl, mblk_t *dp){	int err;	mblk_t *mp, *db;	ulong rcpt = sl->version<M2PA_VERSION_DRAFT4?N_RC_FLAG:0;	size_t dlen = msgdsize(dp);	N_qos_sel_data_sctp_t qos = { N_QOS_SEL_DATA_SCTP, M2PA_PPI, M2PA_DATA_STREAM, };	if ( !(db = dupmsg(dp)) )		return(-ENOBUFS);	if ( (mp = allocb(2*sizeof(uint32_t), BPRI_MED)) )	{		mp->b_datap->db_type = M_DATA;		*((uint32_t *)mp->b_wptr)++ = M2PA_DATA_MESSAGE;		*((uint32_t *)mp->b_wptr)++ = __constant_htonl(dlen + 2*sizeof(uint32_t));		mp->b_cont = db;		pullupmsg(mp, -1);		if ( (err = n_data_req(sl, rcpt, &qos, sizeof(qos), mp)) )		{			assert(mp->b_datap->db_ref);			freemsg(mp);			return(err);		}		return(0);	}	freemsg(db);	return(-ENOBUFS);}/* *  ========================================================================= * *  M2PA State Machines * *  ========================================================================= */#define MF_LPO			0x00000001#define MF_RPO			0x00000002#define MF_LOC_INS		0x00000004#define MF_REM_INS		0x00000008#define MF_LOC_BUSY		0x00000010#define MF_REM_BUSY		0x00000020#define MF_LOC_EMERG		0x00000040#define MF_REM_EMERG		0x00000080#define MF_RECV_MSU		0x00000100#define MF_SEND_MSU		0x00000200#define MF_CONG_ACCEPT		0x00000400#define MF_CONG_DISCARD		0x00000800#define MF_RTB_FULL		0x00001000#define MF_L3_CONG_DETECT	0x00002000#define MF_L2_CONG_DETECT	0x00004000#define MF_CONTINUE		0x00008000#define MF_CLEAR_RTB		0x00010000#define MF_NEED_FLUSH		0x00020000#define MS_POWER_OFF		0#define MS_OUT_OF_SERVICE	1#define MS_NOT_ALIGNED		2#define MS_ALIGNED		3#define MS_PROVING		4#define MS_ALIGNED_NOT_READY	5#define MS_ALIGNED_READY	6#define MS_IN_SERVICE		7#define MS_PROCESSOR_OUTAGE	8/* *  ------------------------------------------------------------------------- * *  Timers *

⌨️ 快捷键说明

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