Print this page
8541 pfiles does not properly identify PF_KEY or PF_POLICY
Reviewed by: Mike Zeller <mike.zeller@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
        
*** 19,28 ****
--- 19,29 ----
   * CDDL HEADER END
   */
  /*
   * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
   * Copyright (c) 2012 Nexenta Systems, Inc. All rights reserved.
+  * Copyright 2017 Joyent, Inc.
   */
  
  #include <sys/param.h>
  #include <sys/types.h>
  #include <sys/stream.h>
*** 32,41 ****
--- 33,43 ----
  #include <sys/zone.h>
  #include <sys/vnode.h>
  #include <sys/sysmacros.h>
  #define _SUN_TPI_VERSION 2
  #include <sys/tihdr.h>
+ #include <sys/timod.h>
  #include <sys/ddi.h>
  #include <sys/sunddi.h>
  #include <sys/mkdev.h>
  #include <sys/debug.h>
  #include <sys/kmem.h>
*** 3402,3416 ****
--- 3404,3431 ----
                          /* Not supported by spdsock. */
                          spdsock_err_ack(q, mp, TNOTSUPPORT, 0);
                          break;
                  }
                  return;
+         case M_IOCDATA:
+                 keysock_spdsock_wput_iocdata(q, mp, PF_POLICY);
+                 return;
          case M_IOCTL:
                  iocp = (struct iocblk *)mp->b_rptr;
                  error = EINVAL;
  
                  switch (iocp->ioc_cmd) {
+                 case TI_GETMYNAME:
+                 case TI_GETPEERNAME:
+                         /*
+                          * For pfiles(1) observability with getsockname().
+                          * See keysock_spdsock_wput_iocdata() for the rest of
+                          * this.
+                          */
+                         mi_copyin(q, mp, NULL,
+                             SIZEOF_STRUCT(strbuf, iocp->ioc_flag));
+                         return;
                  case ND_SET:
                  case ND_GET:
                          if (nd_getset(q, spds->spds_g_nd, mp)) {
                                  qreply(q, mp);
                                  return;