Print this page
XXXX adding PID information to netstat output

*** 2720,2724 **** --- 2720,2756 ---- ctb->ctb_depth = getpcstack(ctb->ctb_stack, CONN_STACK_DEPTH); connp->conn_trace_last = last; return (1); } #endif + + mblk_t * + conn_get_pid_mblk(conn_t *connp) + { + mblk_t *mblk; + conn_pid_info_t *cpi; + + /* + * If the connection is closing, it is not safe to make an upcall or + * access the stream associated with the connection. + */ + if (!(connp->conn_state_flags & CONN_CLOSING)) { + if (connp->conn_upper_handle != NULL) { + return (*connp->conn_upcalls->su_get_sock_pid_mblk) + (connp->conn_upper_handle); + } else if (!IPCL_IS_NONSTR(connp) && connp->conn_rq != NULL && + connp->conn_rq->q_stream != NULL) { + return (sh_get_pid_mblk(connp->conn_rq->q_stream)); + } + } + + /* return an empty mblk */ + if ((mblk = allocb(sizeof (conn_pid_info_t), BPRI_HI)) == NULL) + return (NULL); + mblk->b_wptr += sizeof (conn_pid_info_t); + cpi = (conn_pid_info_t *)mblk->b_datap->db_base; + cpi->cpi_contents = CONN_PID_INFO_NON; + cpi->cpi_pids_cnt = 0; + cpi->cpi_tot_size = sizeof (conn_pid_info_t); + cpi->cpi_pids[0] = 0; + return (mblk); + }