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
  */