📄 slpmod.c
字号:
break; case LMI_DETACH_PENDING: p->lmi_state = sl_set_l_state(sl, lk, LMI_DISABLED); break; case LMI_ENABLE_PENDING: p->lmi_state = sl_set_l_state(sl, lk, LMI_DISABLED); break; case LMI_DISABLE_PENDING: p->lmi_state = sl_set_l_state(sl, lk, LMI_ENABLED); break; default: /* FIXME: log error */ p->lmi_state = sl_get_l_state(lk); break; } } mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- LMI_ERROR_ACK"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intlmi_enable_con(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg){ lmi_enable_con_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PCPROTO; p = (typeof(p)) mp->b_wptr; p->lmi_primitive = LMI_ENABLE_CON; p->lmi_state = sl_set_l_state(sl, lk, LMI_ENABLED); mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- LMI_ENABLE_CON"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intlmi_disable_con(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg){ lmi_disable_con_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PCPROTO; p = (typeof(p)) mp->b_wptr; p->lmi_primitive = LMI_DISABLE_CON; p->lmi_state = sl_set_l_state(sl, lk, LMI_DISABLED); mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- LMI_DISABLE_CON"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intlmi_optmgmt_ack(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg, caddr_t optr, size_t olen, sl_ulong flags){ lmi_optmgmt_ack_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p) + olen, BPRI_MED)))) { mp->b_datap->db_type = M_PCPROTO; p = (typeof(p)) mp->b_wptr; p->lmi_primitive = LMI_OPTMGMT_ACK; p->lmi_opt_length = olen; p->lmi_opt_offset = olen ? sizeof(*p) : 0; p->lmi_mgmt_flags = flags; mp->b_wptr += sizeof(*p); bcopy(optr, mp->b_wptr, olen); mp->b_wptr += olen; freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- LMI_OPTMGMT_ACK"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intlmi_error_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg, sl_long err){ lmi_error_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { if (bcanputnext(lk->oq, 1)) { mp->b_datap->db_type = M_PROTO; mp->b_band = 1; p = (typeof(p)) mp->b_wptr; p->lmi_primitive = LMI_ERROR_IND; p->lmi_errno = err < 0 ? -err : 0; p->lmi_reason = err < 0 ? LMI_SYSERR : err; p->lmi_state = sl_get_l_state(lk); mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- LMI_ERROR_IND"); putnext(lk->oq, mp); return (0); } freeb(mp); return (-EBUSY); } return (-ENOBUFS);}static inline intlmi_stats_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg, sl_ulong itvl){ lmi_stats_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; mp->b_band = 1; p = (typeof(p)) mp->b_wptr; p->lmi_primitive = LMI_STATS_IND; p->lmi_interval = itvl; p->lmi_timestamp = drv_hztomsec(jiffies); mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- LMI_STATS_IND"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intlmi_event_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg, sl_ulong oid, sl_ulong severity){ lmi_event_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { if (bcanputnext(lk->oq, 1)) { mp->b_datap->db_type = M_PCPROTO; mp->b_band = 1; p = (typeof(p)) mp->b_wptr; p->lmi_primitive = LMI_EVENT_IND; p->lmi_objectid = oid; p->lmi_timestamp = drv_hztomsec(jiffies); p->lmi_severity = severity; mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- LMI_EVENT_IND"); putnext(lk->oq, mp); return (0); } freeb(mp); return (-EBUSY); } return (-ENOBUFS);}static inline intsl_pdu_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg, sl_ulong pri, mblk_t *dp){ sl_pdu_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { if (likely(canputnext(lk->oq))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_PDU_IND; p->sl_mp = pri; mp->b_wptr += sizeof(*p); mp->b_cont = dp; freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_PDU_IND"); putnext(lk->oq, mp); return (0); } freeb(mp); return (-EBUSY); } return (-ENOBUFS);}static inline intsl_link_congested_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg, sl_ulong cong, sl_ulong disc){ sl_link_cong_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { if (bcanputnext(lk->oq, 1)) { mp->b_datap->db_type = M_PROTO; mp->b_band = 1; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_LINK_CONGESTED_IND; p->sl_timestamp = drv_hztomsec(jiffies); p->sl_cong_status = cong; p->sl_disc_status = disc; mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_LINK_CONGESTED_IND"); putnext(lk->oq, mp); return (0); } freeb(mp); return (-EBUSY); } return (-ENOBUFS);}static inline intsl_link_congestion_ceased_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg){ sl_link_cong_ceased_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { if (bcanputnext(lk->oq, 1)) { mp->b_datap->db_type = M_PROTO; mp->b_band = 1; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_LINK_CONGESTION_CEASED_IND; p->sl_timestamp = drv_hztomsec(jiffies); p->sl_cong_status = 0; p->sl_disc_status = 0; mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_LINK_CONGESTION_CEASED_IND"); putnext(lk->oq, mp); return (0); } freeb(mp); return (-EBUSY); } return (-ENOBUFS);}static inline intsl_retrieved_message_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg, sl_ulong pri, mblk_t *dp){ sl_retrieved_msg_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_RETRIEVED_MESSAGE_IND; p->sl_mp = pri; mp->b_wptr += sizeof(*p); mp->b_cont = dp; freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_RETRIEVED_MESSAGE_IND"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intsl_retrieval_complete_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg, sl_ulong pri, mblk_t *dp){ sl_retrieval_comp_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_RETRIEVAL_COMPLETE_IND; p->sl_mp = pri; mp->b_wptr += sizeof(*p); mp->b_cont = dp; freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_RETRIEVAL_COMPLETE_IND"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intsl_rb_cleared_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg){ sl_rb_cleared_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_RB_CLEARED_IND; mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_RB_CLEARED_IND"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intsl_bsnt_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg, sl_ulong bsnt){ sl_bsnt_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_BSNT_IND; p->sl_bsnt = bsnt; mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_BSNT_IND"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intsl_in_service_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg){ sl_in_service_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_IN_SERVICE_IND; mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_IN_SERVICE_IND"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intsl_out_of_service_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg, sl_ulong reason){ sl_out_of_service_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_OUT_OF_SERVICE_IND; p->sl_timestamp = drv_hztomsec(jiffies); p->sl_reason = reason; mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_OUT_OF_SERVICE_IND"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intsl_remote_processor_outage_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg){ sl_rem_proc_out_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_REMOTE_PROCESSOR_OUTAGE_IND; p->sl_timestamp = drv_hztomsec(jiffies); mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_REMOTE_PROCESSOR_OUTAGE_IND"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intsl_remote_processor_recovered_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg){ sl_rem_proc_recovered_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_REMOTE_PROCESSOR_RECOVERED_IND; p->sl_timestamp = drv_hztomsec(jiffies); mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_REMOTE_PROCESSOR_RECOVERED_IND"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intsl_rtb_cleared_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg){ sl_rtb_cleared_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_RTB_CLEARED_IND; mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_RTB_CLEARED_IND"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intsl_retrieval_not_possible_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg){ sl_retrieval_not_poss_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_RETRIEVAL_NOT_POSSIBLE_IND; mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_RETRIEVAL_NOT_POSSIBLE_IND"); putnext(lk->oq, mp); return (0); } return (-ENOBUFS);}static inline intsl_bsnt_not_retrievable_ind(struct sl *sl, struct lk *lk, queue_t *q, mblk_t *msg){ sl_bsnt_not_retr_ind_t *p; mblk_t *mp; if (likely(!!(mp = sl_allocb(q, sizeof(*p), BPRI_MED)))) { mp->b_datap->db_type = M_PROTO; p = (typeof(p)) mp->b_wptr; p->sl_primitive = SL_BSNT_NOT_RETRIEVABLE_IND; mp->b_wptr += sizeof(*p); freemsg(msg); strlog(sl->mid, sl->sid, SLLOGTX, SL_TRACE, "<- SL_BSNT_NOT_RETRIEVABLE_IND"); putnext(lk->oq, mp); return (0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -