/* * N_DATA_IND * ------------------------------------------------------------------------- * This is translated into SUA messages and fed to the state machines. */ static int n_data_ind(queue_t *q, mblk_t *pdu) { int err; mblk_t *mp; N_data_ind_t *p; p = (N_data_ind_t *) pdu->b_rptr; if (p->DATA_xfer_flags & N_MORE_DATA_FLAG) { /* aaargh! */ /* give it to management */ if ((err = lm_event_ind(q, pdu))) return (err); if ((err = m3ua_sp_down(q))) return (err); qdisable(q); return (0); } if (p->DATA_xfer_flags & N_RC_FLAG) { /* need to send receipt confirmation */ if (!(mp = n_datack_ind())) return (-ENOBUFS); qreply(q, mp); } /* only need the M_DATA block */ mp = pdu->b_cont; mp->b_band = 0; freeb(pdu); if ((err = m3ua_recv_msg(q, mp))) return (err); return (0); }
/* --------------------------------------------------------------------*/ static inline mblk_t * aa_datack_ind(void) { return n_datack_ind(); }