Print this page
XXXX adding PID information to netstat output

*** 51,66 **** --- 51,70 ---- udp_snmp_get(queue_t *q, mblk_t *mpctl, boolean_t legacy_req) { mblk_t *mpdata; mblk_t *mp_conn_ctl; mblk_t *mp_attr_ctl; + mblk_t *mp_pidnode_ctl; mblk_t *mp6_conn_ctl; mblk_t *mp6_attr_ctl; + mblk_t *mp6_pidnode_ctl; mblk_t *mp_conn_tail; mblk_t *mp_attr_tail; + mblk_t *mp_pidnode_tail; mblk_t *mp6_conn_tail; mblk_t *mp6_attr_tail; + mblk_t *mp6_pidnode_tail; struct opthdr *optp; mib2_udpEntry_t ude; mib2_udp6Entry_t ude6; mib2_transportMLPEntry_t mlp; int state;
*** 76,85 **** --- 80,91 ---- udp_stack_t *us = connp->conn_netstack->netstack_udp; mblk_t *mp2ctl; mib2_udp_t udp_mib; size_t udp_mib_size, ude_size, ude6_size; + conn_pid_node_list_hdr_t *cph; + /* * make a copy of the original message */ mp2ctl = copymsg(mpctl);
*** 87,101 **** mp_conn_ctl = mp_attr_ctl = mp6_conn_ctl = NULL; if (mpctl == NULL || (mpdata = mpctl->b_cont) == NULL || (mp_conn_ctl = copymsg(mpctl)) == NULL || (mp_attr_ctl = copymsg(mpctl)) == NULL || (mp6_conn_ctl = copymsg(mpctl)) == NULL || ! (mp6_attr_ctl = copymsg(mpctl)) == NULL) { freemsg(mp_conn_ctl); freemsg(mp_attr_ctl); freemsg(mp6_conn_ctl); freemsg(mpctl); freemsg(mp2ctl); return (0); } --- 93,112 ---- mp_conn_ctl = mp_attr_ctl = mp6_conn_ctl = NULL; if (mpctl == NULL || (mpdata = mpctl->b_cont) == NULL || (mp_conn_ctl = copymsg(mpctl)) == NULL || (mp_attr_ctl = copymsg(mpctl)) == NULL || + (mp_pidnode_ctl = copymsg(mpctl)) == NULL || (mp6_conn_ctl = copymsg(mpctl)) == NULL || ! (mp6_attr_ctl = copymsg(mpctl)) == NULL || ! (mp6_pidnode_ctl = copymsg(mpctl)) == NULL) { freemsg(mp_conn_ctl); freemsg(mp_attr_ctl); + freemsg(mp_pidnode_ctl); freemsg(mp6_conn_ctl); + freemsg(mp6_attr_ctl); + freemsg(mp6_pidnode_ctl); freemsg(mpctl); freemsg(mp2ctl); return (0); }
*** 133,142 **** --- 144,154 ---- (void) snmp_append_data(mpdata, (char *)&udp_mib, udp_mib_size); optp->len = msgdsize(mpdata); qreply(q, mpctl); mp_conn_tail = mp_attr_tail = mp6_conn_tail = mp6_attr_tail = NULL; + mp_pidnode_tail = mp6_pidnode_tail = NULL; v4_conn_idx = v6_conn_idx = 0; for (i = 0; i < CONN_G_HASH_SIZE; i++) { connfp = &ipst->ips_ipcl_globalhash_fanout[i]; connp = NULL;
*** 247,256 **** --- 259,280 ---- connp->conn_cpid; ude.udpCreationTime = connp->conn_open_time; (void) snmp_append_data2(mp_conn_ctl->b_cont, &mp_conn_tail, (char *)&ude, ude_size); + /* my data */ + (void) snmp_append_data2(mp_pidnode_ctl->b_cont, + &mp_pidnode_tail, (char *)&ude, ude_size); + + cph = conn_get_pid_list(connp); + (void) snmp_append_data2(mp_pidnode_ctl->b_cont, + &mp_pidnode_tail, (char *)cph, + cph->cph_tot_size); + + kmem_free(cph, cph->cph_tot_size); + /* end of my data */ + mlp.tme_connidx = v4_conn_idx++; if (needattr) (void) snmp_append_data2( mp_attr_ctl->b_cont, &mp_attr_tail, (char *)&mlp, sizeof (mlp));
*** 290,299 **** --- 314,335 ---- connp->conn_cpid; ude6.udp6CreationTime = connp->conn_open_time; (void) snmp_append_data2(mp6_conn_ctl->b_cont, &mp6_conn_tail, (char *)&ude6, ude6_size); + /* my dat */ + (void) snmp_append_data2( + mp6_pidnode_ctl->b_cont, &mp6_pidnode_tail, + (char *)&ude6, ude6_size); + + cph = conn_get_pid_list(connp); + (void) snmp_append_data2( + mp6_pidnode_ctl->b_cont, &mp6_pidnode_tail, + (char *)cph, cph->cph_tot_size); + + kmem_free(cph, cph->cph_tot_size); + /* end of my data */ mlp.tme_connidx = v6_conn_idx++; if (needattr) (void) snmp_append_data2( mp6_attr_ctl->b_cont, &mp6_attr_tail, (char *)&mlp,
*** 319,328 **** --- 355,375 ---- if (optp->len == 0) freemsg(mp_attr_ctl); else qreply(q, mp_attr_ctl); + /* table of EXPER_XPORT_PROC_INFO ipv4 */ + optp = (struct opthdr *)&mp_pidnode_ctl->b_rptr[ + sizeof (struct T_optmgmt_ack)]; + optp->level = MIB2_UDP; + optp->name = EXPER_XPORT_PROC_INFO; + optp->len = msgdsize(mp_pidnode_ctl->b_cont); + if (optp->len == 0) + freemsg(mp_pidnode_ctl); + else + qreply(q, mp_pidnode_ctl); + /* IPv6 UDP endpoints */ optp = (struct opthdr *)&mp6_conn_ctl->b_rptr[ sizeof (struct T_optmgmt_ack)]; optp->level = MIB2_UDP6; optp->name = MIB2_UDP6_ENTRY;
*** 338,347 **** --- 385,405 ---- if (optp->len == 0) freemsg(mp6_attr_ctl); else qreply(q, mp6_attr_ctl); + /* table of EXPER_XPORT_PROC_INFO ipv6 */ + optp = (struct opthdr *)&mp6_pidnode_ctl->b_rptr[ + sizeof (struct T_optmgmt_ack)]; + optp->level = MIB2_UDP6; + optp->name = EXPER_XPORT_PROC_INFO; + optp->len = msgdsize(mp6_pidnode_ctl->b_cont); + if (optp->len == 0) + freemsg(mp6_pidnode_ctl); + else + qreply(q, mp6_pidnode_ctl); + return (mp2ctl); } /* * Return 0 if invalid set request, 1 otherwise, including non-udp requests.