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,101 ****
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;
-
/*
* make a copy of the original message
*/
mp2ctl = copymsg(mpctl);
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);
}
--- 80,109 ----
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;
/*
* make a copy of the original message
*/
mp2ctl = copymsg(mpctl);
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 ****
--- 141,151 ----
(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 ****
--- 256,272 ----
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);
+
+ (void) snmp_append_data2(mp_pidnode_ctl->b_cont,
+ &mp_pidnode_tail, (char *)&ude, ude_size);
+
+ (void) snmp_append_mblk2(mp_pidnode_ctl->b_cont,
+ &mp_pidnode_tail, conn_get_pid_mblk(connp));
+
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 ****
--- 306,324 ----
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);
+
+ (void) snmp_append_data2(
+ mp6_pidnode_ctl->b_cont, &mp6_pidnode_tail,
+ (char *)&ude6, ude6_size);
+
+ (void) snmp_append_mblk2(
+ mp6_pidnode_ctl->b_cont, &mp6_pidnode_tail,
+ conn_get_pid_mblk(connp));
+
mlp.tme_connidx = v6_conn_idx++;
if (needattr)
(void) snmp_append_data2(
mp6_attr_ctl->b_cont,
&mp6_attr_tail, (char *)&mlp,
*** 319,328 ****
--- 344,364 ----
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 ****
--- 374,394 ----
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.