Print this page
XXXX adding PID information to netstat output
@@ -44,10 +44,11 @@
#include <sys/types.h>
#include <sys/stream.h>
#include <sys/t_lock.h>
#include <sys/cred.h>
+#include <sys/pidnode.h>
#include <sys/vnode.h>
#include <sys/file.h>
#include <sys/param.h>
#include <sys/zone.h>
#include <sys/sdt.h>
@@ -242,10 +243,14 @@
uint_t so_filter_active; /* # of active fil */
uint_t so_filter_tx; /* pending tx ops */
struct sof_instance *so_filter_top; /* top of stack */
struct sof_instance *so_filter_bottom; /* bottom of stack */
clock_t so_filter_defertime; /* time when deferred */
+
+ /* pid tree */
+ avl_tree_t so_pid_tree;
+ kmutex_t so_pid_tree_lock;
};
#define SO_HAVE_DATA(so) \
/* \
* For the (tid == 0) case we must check so_rcv_{q_,}head \
@@ -949,12 +954,18 @@
#endif
/*
* Internal structure for obtaining sonode information from the socklist.
* These types match those corresponding in the sonode structure.
- * This is not a published interface, and may change at any time.
+ * This is not a published interface, and may change at any time. It is
+ * used for passing information back up to the kstat consumers. By converting
+ * kernel addresses to strings, we should be able to pass information from
+ * the kernel to userland regardless of n-bit kernel we are using.
*/
+
+#define ADRSTRLEN (2 * sizeof (uint64_t) + 1)
+
struct sockinfo {
uint_t si_size; /* real length of this struct */
short si_family;
short si_type;
ushort_t si_flag;
@@ -968,10 +979,15 @@
uint16_t si_faddr_family;
char si_laddr_sun_path[MAXPATHLEN + 1]; /* NULL terminated */
char si_faddr_sun_path[MAXPATHLEN + 1];
boolean_t si_faddr_noxlate;
zoneid_t si_szoneid;
+ char si_son_straddr[ADRSTRLEN];
+ char si_lvn_straddr[ADRSTRLEN];
+ char si_fvn_straddr[ADRSTRLEN];
+ uint_t si_pn_cnt;
+ pid_t si_pids[1];
};
/*
* Subcodes for sockconf() system call
*/