Print this page
XXXX adding PID information to netstat output

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/sockfs/sockcommon_vnops.c
          +++ new/usr/src/uts/common/fs/sockfs/sockcommon_vnops.c
↓ open down ↓ 115 lines elided ↑ open up ↑
 116  116      caller_context_t *ct)
 117  117  {
 118  118          struct vnode *vp = *vpp;
 119  119          struct sonode *so = VTOSO(vp);
 120  120  
 121  121          flag &= ~FCREAT;                /* paranoia */
 122  122          mutex_enter(&so->so_lock);
 123  123          so->so_count++;
 124  124          mutex_exit(&so->so_lock);
 125  125  
      126 +        sonode_insert_pid(so, curproc);
      127 +
 126  128          ASSERT(so->so_count != 0);      /* wraparound */
 127  129          ASSERT(vp->v_type == VSOCK);
 128  130  
 129  131          return (0);
 130  132  }
 131  133  
 132  134  /*ARGSUSED*/
 133  135  static int
 134  136  socket_vop_close(struct vnode *vp, int flag, int count, offset_t offset,
 135  137      struct cred *cr, caller_context_t *ct)
↓ open down ↓ 65 lines elided ↑ open up ↑
 201  203  }
 202  204  
 203  205  /*ARGSUSED4*/
 204  206  static int
 205  207  socket_vop_ioctl(struct vnode *vp, int cmd, intptr_t arg, int mode,
 206  208      struct cred *cr, int32_t *rvalp, caller_context_t *ct)
 207  209  {
 208  210          struct sonode *so = VTOSO(vp);
 209  211  
 210  212          ASSERT(vp->v_type == VSOCK);
      213 +
      214 +        switch (cmd) {
      215 +                case F_FORKED: {
      216 +                        if (cr != kcred)
      217 +                                return (-1);
      218 +                        sonode_insert_pid(so, (proc_t *)arg);
      219 +                        return (0);
      220 +                }
      221 +
      222 +                case F_CLOSED: {
      223 +                        if (cr != kcred)
      224 +                                return (-1);
      225 +                        sonode_remove_pid(so, (proc_t *)arg);
      226 +                        return (0);
      227 +                }
      228 +        }
 211  229  
 212  230          return (socket_ioctl(so, cmd, arg, mode, cr, rvalp));
 213  231  }
 214  232  
 215  233  /*
 216  234   * Allow any flags. Record FNDELAY and FNONBLOCK so that they can be inherited
 217  235   * from listener to acceptor.
 218  236   */
 219  237  /* ARGSUSED */
 220  238  static int
↓ open down ↓ 262 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX