summaryrefslogtreecommitdiff
path: root/lsof.h
diff options
context:
space:
mode:
Diffstat (limited to 'lsof.h')
-rw-r--r--lsof.h986
1 files changed, 986 insertions, 0 deletions
diff --git a/lsof.h b/lsof.h
new file mode 100644
index 0000000..afaa56a
--- /dev/null
+++ b/lsof.h
@@ -0,0 +1,986 @@
+/*
+ * lsof.h - common header file for lsof
+ */
+
+
+/*
+ * Copyright 1994 Purdue Research Foundation, West Lafayette, Indiana
+ * 47907. All rights reserved.
+ *
+ * Written by Victor A. Abell
+ *
+ * This software is not subject to any license of the American Telephone
+ * and Telegraph Company or the Regents of the University of California.
+ *
+ * Permission is granted to anyone to use this software for any purpose on
+ * any computer system, and to alter it and redistribute it freely, subject
+ * to the following restrictions:
+ *
+ * 1. Neither the authors nor Purdue University are responsible for any
+ * consequences of the use of this software.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ * explicit claim or by omission. Credit to the authors and Purdue
+ * University must appear in documentation and sources.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ *
+ * 4. This notice may not be removed or altered.
+ */
+
+
+/*
+ * $Id: lsof.h,v 1.66 2013/01/02 17:14:59 abe Exp $
+ */
+
+
+#if !defined(LSOF_H)
+#define LSOF_H 1
+
+#include "machine.h"
+
+# if !defined(FSV_DEFAULT)
+#define FSV_DEFAULT 0
+# endif /* !defined(FSV_DEFAULT) */
+
+#include "lsof_fields.h"
+
+#include <ctype.h>
+#include <errno.h>
+
+# if defined(HASSETLOCALE)
+#include <locale.h>
+# endif /* defined(HASSETLOCALE) */
+
+#include <netdb.h>
+#include <pwd.h>
+#include <stdio.h>
+
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+
+/*
+ * Definitions and structures that may be needed by dlsof.h
+ */
+
+# if !defined(INODETYPE)
+#define INODETYPE unsigned long /* node number storage type */
+#define INODEPSPEC "l" /* node number printf specification
+ * modifier */
+# endif /* !defined(INODETYPE) */
+
+struct l_dev {
+ dev_t rdev; /* device */
+ INODETYPE inode; /* inode number */
+ char *name; /* name */
+ int v; /* has been verified
+ * (when DCUnsafe == 1) */
+};
+
+
+/*
+ * FILE_FLAG column names
+ */
+
+#define FF_AIO "AIO"
+#define FF_APPEND "AP"
+#define FF_ASYNC "ASYN"
+#define FF_BLKANDSET "BAS"
+#define FF_BLKINUSE "BKIU"
+#define FF_BLKSEEK "BSK"
+#define FF_CIO "CIO"
+#define FF_CLONE "CLON"
+#define FF_CLREAD "CLRD"
+#define FF_COPYAVOID "CA"
+#define FF_CREAT "CR"
+#define FF_DATAFLUSH "DFLU"
+#define FF_DEFER "DF"
+#define FF_DEFERIND "DFI"
+#define FF_DELAY "DLY"
+#define FF_DIRECT "DIR"
+#define FF_DIRECTORY "DTY"
+#define FF_DOCLONE "DOCL"
+#define FF_DSYNC "DSYN"
+#define FF_EVTONLY "EVO"
+#define FF_EXCL "EXCL"
+#define FF_EXEC "EX"
+#define FF_EXLOCK "XL"
+#define FF_FILE_MBLK "MBLK"
+#define FF_FSYNC "FSYN"
+#define FF_GCFDEFER "GCDF"
+#define FF_GCFMARK "GCMK"
+#define FF_GENTTY "GTTY"
+#define FF_HASLOCK "LCK"
+#define FF_HUP "HUP"
+#define FF_KERNEL "KERN"
+#define FF_KIOCTL "KIOC"
+#define FF_LARGEFILE "LG"
+#define FF_MARK "MK"
+#define FF_MOUNT "MNT"
+#define FF_MSYNC "MSYN"
+#define FF_NBDRM "NBDR"
+#define FF_NBIO "NBIO"
+#define FF_NBLOCK "NB"
+#define FF_NBUF "NBF"
+#define FF_NMFS "NMFS"
+#define FF_NDELAY "ND"
+#define FF_NET "NET"
+#define FF_NOATM "NATM"
+#define FF_NOCACHE "NC"
+#define FF_NOCTTY "NTTY"
+#define FF_NODSYNC "NDSY"
+#define FF_NOFOLNK "NFLK"
+#define FF_NOTOSTOP "NOTO"
+#define FF_NSHARE "NSH"
+#define FF_OLRMIRROR "OLRM"
+#define FF_POSIX_AIO "PAIO"
+#define FF_POSIX_PIPE "PP"
+#define FF_RAIOSIG "RAIO"
+#define FF_RCACH "RC"
+#define FF_RDWR "RW"
+#define FF_READ "R"
+#define FF_REVOKED "REV"
+#define FF_RSHARE "RSH"
+#define FF_RSYNC "RSYN"
+#define FF_SETBLK "BL"
+#define FF_SHLOCK "SL"
+#define FF_SNAP "SNAP"
+#define FF_SOCKET "SOCK"
+#define FF_SQTSH1 "SQS1"
+#define FF_SQTSH2 "SQS2"
+#define FF_SQTREPAIR "SQR"
+#define FF_SQTSH "SQSH"
+#define FF_SQTSVM "SQSV"
+#define FF_STOPIO "STPI"
+#define FF_SYNC "SYN"
+#define FF_SYNCRON "SWR"
+#define FF_TCP_MDEVONLY "TCPM"
+#define FF_TERMIO "TIO"
+#define FF_TRUNC "TR"
+#define FF_VHANGUP "VH"
+#define FF_VTEXT "VTXT"
+#define FF_WAKEUP "WKUP"
+#define FF_WAITING "WTG"
+#define FF_WRITE "W"
+
+
+/*
+ * Process open file flag names
+ */
+
+#define POF_ALLOCATED "ALLC"
+#define POF_BNRD "BR"
+#define POF_BNWR "BW"
+#define POF_BNHUP "BHUP"
+#define POF_CLOEXEC "CX"
+#define POF_CLOSING "CLSG"
+#define POF_FDLOCK "LCK"
+#define POF_INUSE "USE"
+#define POF_MAPPED "MP"
+#define POF_FSHMAT "SHMT"
+#define POF_RESERVED "OPIP"
+#define POF_RSVWT "RSVW"
+
+
+/*
+ * Cross-over (-x) option values
+ */
+
+#define XO_FILESYS 0x1 /* file system mount points */
+#define XO_SYMLINK 0x2 /* symbolic links */
+#define XO_ALL (XO_FILESYS | XO_SYMLINK)
+
+#include "dlsof.h"
+
+#include <sys/types.h> /* just in case -- because utmp.h
+ * may need it */
+#include "./regex.h"
+
+# if defined(EMPTY)
+#undef EMPTY
+# endif /* defined(EMPTY) */
+
+# if defined(HASUTMPX)
+#include <utmpx.h>
+# else /* !defined(HASUTMPX) */
+#include <utmp.h>
+# endif /* defined(HASUTMPX) */
+
+extern int errno;
+extern char *optarg;
+extern int optind;
+
+#define ACCESSERRFMT "%s: WARNING: access %s: %s\n"
+
+# if defined(HASDCACHE)
+#define CRC_POLY 0120001 /* CRC-16 polynomial */
+#define CRC_TBLL 256 /* crc table length for software */
+#define CRC_BITS 8 /* number of bits contributing */
+# endif /* defined(HASDCACHE) */
+#define CMDL 9 /* maximum number of characters from
+ * command name to print in COMMAND
+ * column */
+#define CWD " cwd" /* current working directory fd name */
+#define FDLEN 8 /* fd printing array length */
+#define FSV_FA 0x1 /* file struct addr status */
+#define FSV_CT 0x2 /* file struct count status */
+#define FSV_FG 0x4 /* file struct flags */
+#define FSV_NI 0x8 /* file struct node ID status */
+
+# if !defined(GET_MAJ_DEV)
+#define GET_MAJ_DEV major /* if no dialect specific macro has
+ * been defined, use standard major()
+ * macro */
+# endif /* !defined(GET_MAJ_DEV) */
+
+# if !defined(GET_MIN_DEV)
+#define GET_MIN_DEV minor /* if no dialect specific macro has
+ * been defined, use standard minor()
+ * macro */
+# endif /* !defined(GET_MIN_DEV) */
+
+# if defined(HASSELINUX)
+#define HASHCNTX 128 /* security context hash bucket count
+ * -- MUST BE A POWER OF 2!!! */
+# endif /* defined(HASSELINUX) */
+
+# if defined(HASZONES)
+#define HASHZONE 128 /* zone hash bucket count -- MUST BE
+ * A POWER OF 2!!! */
+# endif /* defined(HASZONES) */
+
+#define IDINCR 10 /* PID/PGID table malloc() increment */
+
+# if !defined(INADDR_LOOPBACK)
+#define INADDR_LOOPBACK (u_long)0x7f000001
+# endif /* !defined(INADDR_LOOPBACK) */
+
+#define IPROTOL 8 /* Internet protocol length */
+
+# if !defined(KA_T_FMT_X)
+#define KA_T_FMT_X "0x%08lx" /* format for printing kernel
+ * addresses in 0x... format */
+# endif /* !defined(KA_T_FMT_X) */
+
+# if !defined(LOGINML)
+# if defined(HASUTMPX)
+static struct utmpx dummy_utmp; /* to get login name length */
+#define LOGINML sizeof(dummy_utmp.ut_user)
+ /* login name length */
+# else /* !defined(HASUTMPX) */
+static struct utmp dummy_utmp; /* to get login name length */
+#define LOGINML sizeof(dummy_utmp.ut_name)
+ /* login name length */
+# endif /* defined(HASUTMPX) */
+# endif /* !defined(LOGINML) */
+
+#define LPROCINCR 128 /* Lproc[] allocation increment */
+#define LSOF_URL "ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/"
+#define MIN_AF_ADDR sizeof(struct in_addr)
+ /* minimum AF_* address length */
+
+# if defined(HASIPv6)
+#define MAX_AF_ADDR sizeof(struct in6_addr)
+ /* maximum AF_* address length */
+# else /* !defined(HASIPv6) */
+#define MAX_AF_ADDR MIN_AF_ADDR /* maximum AF_* address length */
+# endif /* defined(HASIPv6) */
+
+#define MAXDCPATH 4 /* paths in DCpath[] */
+#define MAXNWAD 100 /* maximum network addresses */
+
+# if !defined(MEMMOVE)
+#define MEMMOVE memmove
+# endif /* !defined*MEMMOVE) */
+
+#define N_REGLR 0 /* regular file system node */
+#define N_AFS 1 /* AFS node */
+#define N_AFPFS 2 /* Apple Darwin AppleShare */
+#define N_ANON_INODE 3 /* Linux anon_inodefs node */
+#define N_AUSX 4 /* Auspex LFS node */
+#define N_AUTO 5 /* automount node */
+#define N_BLK 6 /* block device node */
+#define N_CACHE 7 /* cached file system node */
+#define N_CDFS 8 /* CD-ROM node */
+#define N_CFS 9 /* CFS node */
+#define N_CHR 10 /* character device node */
+#define N_COM 11 /* streams common device node */
+#define N_CTFSADIR 12 /* Solaris CTFS adir node */
+#define N_CTFSBUND 13 /* Solaris CTFS bundle node */
+#define N_CTFSCDIR 14 /* Solaris CTFS cdir node */
+#define N_CTFSCTL 15 /* Solaris CTFS ctl node */
+#define N_CTFSEVT 16 /* Solaris CTFS events node */
+#define N_CTFSLATE 17 /* Solaris CTFS latest node */
+#define N_CTFSROOT 18 /* Solaris CTFS root node */
+#define N_CTFSSTAT 19 /* Solaris CTFS status node */
+#define N_CTFSSYM 20 /* Solaris CTFS symbolic node */
+#define N_CTFSTDIR 21 /* Solaris CTFS type node */
+#define N_CTFSTMPL 22 /* Solaris CTFS template node */
+#define N_DEV 23 /* DEV FS node */
+#define N_DOOR 24 /* DOOR node */
+#define N_FD 25 /* FD node */
+#define N_FIFO 26 /* FIFO node */
+#define N_HSFS 27 /* High Sierra node */
+#define N_KERN 28 /* BSD /kern node */
+#define N_LOFS 29 /* loopback node */
+#define N_MNT 30 /* mount file system device node */
+#define N_MPC 31 /* multiplexed device node */
+#define N_MVFS 32 /* multi-volume file system node (?) */
+#define N_NFS 33 /* NFS node */
+#define N_NFS4 34 /* NFS version 4 node */
+#define N_NM 35 /* named file system node */
+#define N_OBJF 36 /* objfs file system node */
+#define N_PCFS 37 /* PC file system node */
+#define N_PIPE 38 /* pipe device node */
+#define N_PORT 39 /* port node */
+#define N_PROC 40 /* /proc node */
+#define N_PSEU 41 /* pseudofs node */
+#define N_SAMFS 42 /* Solaris SAM-FS */
+#define N_SANFS 43 /* AIX SANFS */
+#define N_SDEV 44 /* Solaris sdev file system node */
+#define N_SHARED 45 /* Solaris sharedfs */
+#define N_SOCK 46 /* sock_vnodeops node */
+#define N_SPEC 47 /* spec_vnodeops node */
+#define N_STREAM 48 /* stream node */
+#define N_TMP 49 /* tmpfs node */
+#define N_UFS 50 /* UNIX file system node */
+#define N_UNKN 51 /* unknown node type */
+#define N_VXFS 52 /* Veritas file system node */
+#define N_XFS 53 /* XFS node */
+#define N_ZFS 54 /* ZFS node */
+
+# if !defined(OFFDECDIG)
+#define OFFDECDIG 8 /* maximum number of digits in the
+ * offset decimal form (0t...) */
+# endif /* !defined(OFFDECDIG) */
+
+# if !defined(USELOCALREADDIR)
+#define CloseDir closedir /* use standard closedir() */
+#define OpenDir opendir /* use standard opendir() */
+#define ReadDir readdir /* use standard readdir() */
+# endif /* !defined(USELOCALREADDIR) */
+
+#define RPTTM 15 /* default repeat seconds */
+#define RTD " rtd" /* root directory fd name */
+#define TCPTPI_FLAGS 0x0001 /* report TCP/TPI socket options and
+ * state, and TCP_NODELAY state */
+#define TCPTPI_QUEUES 0x0002 /* report TCP/TPI queue lengths */
+#define TCPTPI_STATE 0x0004 /* report TCP/TPI state */
+#define TCPTPI_WINDOWS 0x0008 /* report TCP/TPI window sizes */
+#define TCPTPI_ALL (TCPTPI_QUEUES | TCPTPI_STATE | TCPTPI_WINDOWS)
+ /* report all TCP/TPI info */
+#define TCPUDPALLOC 32 /* allocation amount for TCP and UDP
+ * state tables */
+#define TMLIMIT 15 /* readlink() & stat() timeout sec */
+#define TMLIMMIN 2 /* minimum timeout */
+#define TYPEL 8 /* type character length */
+#define UIDCACHEL 1024 /* UID cache length */
+#define UIDINCR 10 /* UID table malloc() increment */
+#define USERPRTL 8 /* UID/login print length limit */
+
+# if !defined(SZOFFTYPE)
+#define SZOFFTYPE unsigned long /* type for size and offset */
+#undef SZOFFPSPEC
+#define SZOFFPSPEC "l" /* SZOFFTYPE printf specification
+ * modifier */
+# endif /* !defined(SZOFFTYPE) */
+
+# if !defined(TIMEVAL_LSOF)
+#define TIMEVAL_LSOF timeval
+# endif /* !defined(TIMEVAL_LSOF) */
+
+# if !defined(XDR_PMAPLIST)
+#define XDR_PMAPLIST xdr_pmaplist
+# endif /* !defined(XDR_PMAPLIST) */
+
+# if !defined(XDR_VOID)
+#define XDR_VOID xdr_void
+# endif /* !defined(XDR_VOID) */
+
+
+/*
+ * Output title definitions
+ */
+
+#define CMDTTL "COMMAND"
+extern int CmdColW;
+#define CNTXTTL "SECURITY-CONTEXT"
+extern int CntxColW;
+#define DEVTTL "DEVICE"
+extern int DevColW;
+#define FCTTL "FCT"
+extern int FcColW;
+#define FDTTL "FD"
+extern int FdColW;
+#define FGTTL "FILE-FLAG"
+extern int FgColW;
+#define FSTTL "FILE-ADDR"
+extern int FsColW;
+#define NITTL "NODE-ID"
+extern int NiColW;
+extern char *NiTtl;
+#define NLTTL "NLINK"
+extern int NlColW;
+#define NMTTL "NAME"
+extern int NmColW;
+#define NODETTL "NODE"
+extern int NodeColW;
+#define OFFTTL "OFFSET"
+#define PGIDTTL "PGID"
+extern int PgidColW;
+#define PIDTTL "PID"
+extern int PidColW;
+#define PPIDTTL "PPID"
+extern int PpidColW;
+#define SZTTL "SIZE"
+#define SZOFFTTL "SIZE/OFF"
+extern int SzOffColW;
+#define TIDTTL "TID"
+extern int TidColW;
+#define TYPETTL "TYPE"
+extern int TypeColW;
+#define USERTTL "USER"
+extern int UserColW;
+#define ZONETTL "ZONE"
+extern int ZoneColW;
+
+
+/*
+ * Selection flags
+ */
+
+#define PS_PRI 1 /* primary process selection -- e.g.,
+ * by PID or UID */
+#define PS_SEC 2 /* secondary process selection -- e.g.,
+ * by directory or file */
+#define SELCMD 0x0001 /* select process by command name */
+#define SELCNTX 0x0002 /* select security context (-Z) */
+#define SELFD 0x0004 /* select file by descriptor name */
+#define SELNA 0x0008 /* select socket by address (-i@...) */
+#define SELNET 0x0010 /* select Internet socket files (-i) */
+#define SELNFS 0x0020 /* select NFS files (-N) */
+#define SELNLINK 0x0040 /* select based on link count */
+#define SELNM 0x0080 /* select by name */
+#define SELPGID 0x0100 /* select process group IDs (-g) */
+#define SELPID 0x0200 /* select PIDs (-p) */
+#define SELUID 0x0400 /* select UIDs (-u) */
+#define SELUNX 0x0800 /* select UNIX socket (-U) */
+#define SELZONE 0x1000 /* select zone (-z) */
+#define SELEXCLF 0x2000 /* file selection excluded */
+#define SELTASK 0x4000 /* select tasks (-K) */
+#define SELALL (SELCMD|SELCNTX|SELFD|SELNA|SELNET|SELNM|SELNFS|SELPID|SELUID|SELUNX|SELZONE|SELTASK)
+#define SELPROC (SELCMD|SELCNTX|SELPGID|SELPID|SELUID|SELZONE|SELTASK)
+ /* process selecters */
+#define SELFILE (SELFD|SELNFS|SELNLINK|SELNM) /* file selecters */
+#define SELNW (SELNA|SELNET|SELUNX) /* network selecters */
+
+/*
+ * Structure definitions
+ */
+
+# if defined(HAS_AFS)
+struct afsnode { /* AFS pseudo-node structure */
+ dev_t dev;
+ unsigned char ino_st; /* 1 if inode has a value */
+ unsigned char nlink_st; /* 1 if nlink has a value */
+ INODETYPE inode;
+ unsigned long size;
+ long nlink;
+};
+# endif /* defined(HAS_AFS) */
+
+# if defined(HAS_STD_CLONE)
+struct clone {
+ int dx; /* index of device entry in Devtp[] */
+ struct clone *next; /* forward link */
+};
+extern struct clone *Clone;
+# endif /* defined(HAS_STD_CLONE) */
+
+# if defined(HASNLIST)
+struct drive_Nl { /* data to drive build_Nl() */
+ char *nn; /* nickname for lookups */
+ char *knm; /* kernel variable for name list */
+};
+extern struct drive_Nl Drive_Nl[]; /* defined in dstore.c */
+# endif /* defined(HASNLIST) */
+
+
+/*
+ * Global storage definitions (including their structure definitions)
+ */
+
+typedef struct efsys_list {
+ char *path; /* path to file system for which kernel
+ * blocks are to be eliminated */
+ int pathl; /* path length */
+ int rdlnk; /* avoid readlink(2) if non-zero */
+ struct mounts *mp; /* local mount table entry pointer */
+ struct efsys_list *next; /* next efsys_list entry pointer */
+} efsys_list_t;
+extern efsys_list_t *Efsysl; /* file systems for which kernel blocks
+ * are to be eliminated */
+
+struct int_lst {
+ int i; /* integer argument */
+ int f; /* find state -- meaningful only if
+ * x == 0 */
+ int x; /* excluded state */
+};
+
+typedef struct lsof_rx { /* regular expression table entry */
+ char *exp; /* original regular expression */
+ regex_t cx; /* compiled expression */
+ int mc; /* match count */
+} lsof_rx_t;
+extern lsof_rx_t *CmdRx;
+extern int NCmdRxU;
+
+# if defined(HASFSTRUCT)
+struct pff_tab { /* print file flags table structure */
+ long val; /* flag value */
+ char *nm; /* name to print for flag */
+};
+# endif /* defined(HASFSTRUCT) */
+
+struct seluid {
+ uid_t uid; /* User ID */
+ char *lnm; /* specified login name (NULL = none) */
+ unsigned char excl; /* excluded state */
+ unsigned char f; /* selected User ID find state
+ * (meaningful only if excl == 0) */
+};
+
+# if defined(HASBLKDEV)
+extern struct l_dev *BDevtp, **BSdev;
+extern int BNdev;
+# endif /* defined(HASBLKDEV) */
+
+extern int CkPasswd;
+
+struct str_lst {
+ char *str; /* string */
+ int len; /* string length */
+ short f; /* selected string find state */
+ short x; /* exclusion (if non-zero) */
+ struct str_lst *next; /* next list entry */
+};
+extern struct str_lst *Cmdl;
+extern int CmdLim;
+extern int Cmdni;
+extern int Cmdnx;
+
+# if defined(HASSELINUX)
+typedef struct cntxlist {
+ char *cntx; /* zone name */
+ int f; /* "find" flag (used only in CntxArg) */
+ struct cntxlist *next; /* next zone hash entry */
+} cntxlist_t;
+extern cntxlist_t *CntxArg;
+extern int CntxStatus;
+# endif /* defined(HASSELINUX) */
+
+# if defined(HASDCACHE)
+extern unsigned DCcksum;
+extern int DCfd;
+extern FILE *DCfs;
+extern char *DCpathArg;
+extern char *DCpath[];
+extern int DCpathX;
+extern int DCrebuilt;
+extern int DCstate;
+extern int DCunsafe;
+# endif /* defined(HASDCACHE) */
+
+extern int DChelp;
+extern dev_t DevDev;
+extern struct l_dev *Devtp;
+extern char **Dstk;
+extern int Dstkn;
+extern int Dstkx;
+extern int ErrStat;
+extern uid_t Euid;
+extern int Fand;
+extern int Fblock;
+extern int Fcntx;
+extern int Ffield;
+extern int Ffilesys;
+extern int Fhelp;
+extern int Fhost;
+
+# if defined(HASNCACHE)
+extern int Fncache;
+extern int NcacheReload;
+# endif /* defined(HASNCACHE) */
+
+extern int Fnet;
+extern int FnetTy;
+extern int Fnfs;
+extern int Fnlink;
+extern int Foffset;
+extern int Fovhd;
+extern int Fport;
+
+# if !defined(HASNORPC_H)
+extern int FportMap;
+# endif /* !defined(HASNORPC_H) */
+
+extern int Fpgid;
+extern int Fppid;
+extern int Fsize;
+extern int Fsv;
+extern int FsvByf;
+extern int FsvFlagX;
+extern int Ftask;
+extern int Ftcptpi;
+extern int Fterse;
+extern int Funix;
+extern int Futol;
+extern int Fverbose;
+extern int Fwarn;
+
+# if defined(HASXOPT_VALUE)
+extern int Fxopt;
+# endif /* defined(HASXOPT_VALUE) */
+
+extern int Fxover;
+extern int Fzone;
+
+struct fd_lst {
+ char *nm; /* file descriptor name -- range if
+ * NULL */
+ int lo; /* range start (if nm NULL) */
+ int hi; /* range end (if nm NULL) */
+ struct fd_lst *next;
+};
+extern struct fd_lst *Fdl;
+extern int FdlTy; /* Fdl[] type: -1 == none
+ * 0 == include
+ * 1 == exclude */
+
+struct fieldsel {
+ char id; /* field ID character */
+ unsigned char st; /* field status */
+ char *nm; /* field name */
+ int *opt; /* option variable address */
+ int ov; /* value to OR with option variable */
+};
+extern struct fieldsel FieldSel[];
+
+extern int Hdr;
+
+enum IDType {PGID, PID};
+extern char *InodeFmt_d;
+extern char *InodeFmt_x;
+extern int LastPid;
+
+struct lfile {
+ char access;
+ char lock;
+ unsigned char dev_def; /* device number definition status */
+ unsigned char inp_ty; /* inode/iproto type
+ * 0: neither inode nor iproto
+ * 1: print inode in decimal
+ * 2: iproto contains string
+ * 3: print inode in hex
+ */
+ unsigned char is_com; /* common stream status */
+ unsigned char is_nfs; /* NFS file status */
+ unsigned char is_stream; /* stream device status */
+
+# if defined(HASVXFS) && defined(HASVXFSDNLC)
+ unsigned char is_vxfs; /* VxFS file status */
+# endif /* defined(HASVXFS) && defined(HASVXFSDNLC) */
+
+ unsigned char lmi_srch; /* local mount info search status:
+ * 1 = printname() search required */
+
+# if defined(HASMNTSTAT)
+ unsigned char mnt_stat; /* mount point stat(2) status */
+# endif /* defined(HASMNTSTAT) */
+
+ unsigned char nlink_def; /* link count definition status */
+ unsigned char off_def; /* offset definition status */
+ unsigned char rdev_def; /* rdev definition status */
+ unsigned char sz_def; /* size definition status */
+
+# if defined(HASFSTRUCT)
+ unsigned char fsv; /* file struct value status */
+# endif /* defined(HASFSTRUCT) */
+
+ char fd[FDLEN];
+ char iproto[IPROTOL];
+ char type[TYPEL];
+ short sf; /* select flags -- SEL* symbols */
+ int ch; /* VMPC channel: -1 = none */
+ int ntype; /* node type -- N_* value */
+ SZOFFTYPE off;
+ SZOFFTYPE sz;
+ dev_t dev;
+ dev_t rdev;
+ INODETYPE inode;
+ long nlink; /* link count */
+ char *dev_ch;
+ char *fsdir; /* file system directory */
+ char *fsdev; /* file system device */
+
+# if defined(HASFSINO)
+ INODETYPE fs_ino; /* file system inode number */
+# endif /* defined HASFSINO) */
+
+ struct linaddr { /* local Internet address information */
+ int af; /* address family: 0 for none; AF_INET;
+ * or AF_INET6 */
+ int p; /* port */
+ union {
+ struct in_addr a4; /* AF_INET Internet address */
+
+# if defined(HASIPv6)
+ struct in6_addr a6; /* AF_INET6 Internet address */
+# endif /* defined(HASIPv6) */
+
+ } ia;
+ } li[2]; /* li[0]: local
+ * li[1]: foreign */
+ struct ltstate { /* local TCP/TPI state */
+ int type; /* state type:
+ * -1 == none
+ * 0 == TCP
+ * 1 == TPI or socket (SS_*) */
+ union {
+ int i; /* integer state */
+ unsigned int ui; /* unsigned integer state */
+ } state;
+
+# if defined(HASSOOPT)
+ unsigned char pqlens; /* pqlen status: 0 = none */
+ unsigned char qlens; /* qlen status: 0 = none */
+ unsigned char qlims; /* qlim status: 0 = none */
+ unsigned char rbszs; /* rbsz status: 0 = none */
+ unsigned char sbszs; /* sbsz status: 0 = none */
+ int kai; /* TCP keep-alive interval */
+ int ltm; /* TCP linger time */
+ unsigned int opt; /* socket options */
+ unsigned int pqlen; /* partial connection queue length */
+ unsigned int qlen; /* connection queue length */
+ unsigned int qlim; /* connection queue limit */
+ unsigned long rbsz; /* receive buffer size */
+ unsigned long sbsz; /* send buffer size */
+# endif /* defined(HASSOOPT) */
+
+# if defined(HASSOSTATE)
+ unsigned int ss; /* socket state */
+# if defined(HASSBSTATE)
+ unsigned int sbs_rcv; /* receive socket buffer state */
+ unsigned int sbs_snd; /* send socket buffer state */
+# endif /* defined(HASSBSTATE) */
+# endif /* defined(HASSOSTATE) */
+
+# if defined(HASTCPOPT)
+ unsigned int topt; /* TCP options */
+ unsigned char msss; /* mss status: 0 = none */
+ unsigned long mss; /* TCP maximum segment size */
+# endif /* defined(HASTCPOPT) */
+
+# if defined(HASTCPTPIQ)
+ unsigned long rq; /* receive queue length */
+ unsigned long sq; /* send queue length */
+ unsigned char rqs; /* rq status: 0 = none */
+ unsigned char sqs; /* sq status: 0 = none */
+# endif /* defined(HASTCPTPIQ) */
+
+# if defined(HASTCPTPIW)
+ unsigned char rws; /* rw status: 0 = none */
+ unsigned char wws; /* ww status: 0 = none */
+ unsigned long rw; /* read window size */
+ unsigned long ww; /* write window size */
+# endif /* defined(HASTCPTPIW) */
+
+ } lts;
+ char *nm;
+ char *nma; /* NAME column addition */
+
+# if defined(HASNCACHE) && HASNCACHE<2
+ KA_T na; /* file structure's node address */
+# endif /* defined(HASNCACHE) && HASNCACHE<2 */
+
+# if defined(HASNCACHE) && defined(HASNCVPID)
+ unsigned long id; /* capability ID */
+# endif /* defined(HASNCACHE) && defined(HASNCVPID) */
+
+# if defined(HASLFILEADD)
+ HASLFILEADD
+# endif /* defined(HASLFILEADD) */
+
+# if defined(HASFSTRUCT)
+ KA_T fsa; /* file structure address */
+ long fct; /* file structure's f_count */
+ long ffg; /* file structure's f_flag */
+ long pof; /* process open-file flags */
+ KA_T fna; /* file structure node address */
+# endif /* defined(HASFSTRUCT) */
+
+ struct lfile *next;
+};
+extern struct lfile *Lf, *Plf;
+
+
+struct lproc {
+ char *cmd; /* command name */
+
+# if defined(HASSELINUX)
+ char *cntx; /* security context */
+# endif /* defined(HASSELINUX) */
+
+ short sf; /* select flags -- SEL* symbols */
+ short pss; /* state: 0 = not selected
+ * 1 = wholly selected
+ * 2 = partially selected */
+ int pid; /* process ID */
+
+# if defined(HASTASKS)
+ int tid; /* task ID */
+# endif /* HASTASKS */
+
+ int pgid; /* process group ID */
+ int ppid; /* parent process ID */
+ uid_t uid; /* user ID */
+
+# if defined(HASZONES)
+ char *zn; /* zone name */
+# endif /* defined(HASZONES) */
+
+ struct lfile *file; /* open files of process */
+};
+extern struct lproc *Lp, *Lproc;
+
+extern char *Memory;
+extern int MntSup;
+extern char *MntSupP;
+
+# if defined(HASPROCFS)
+extern struct mounts *Mtprocfs;
+# endif
+
+extern int Mxpgid;
+extern int Mxpid;
+extern int Mxuid;
+extern gid_t Mygid;
+extern int Mypid;
+extern uid_t Myuid;
+extern char *Namech;
+extern size_t Namechl;
+extern int Ndev;
+
+# if defined(HASNLIST)
+# if !defined(NLIST_TYPE)
+#define NLIST_TYPE nlist
+# endif /* !defined(NLIST_TYPE) */
+extern struct NLIST_TYPE *Nl;
+extern int Nll;
+# endif /* defined(HASNLIST) */
+extern long Nlink;
+extern int Nlproc;
+extern char *Nmlst;
+extern int Npgid;
+extern int Npgidi;
+extern int Npgidx;
+extern int Npid;
+extern int Npidi;
+extern int Npidx;
+extern int Npuns;
+extern int Ntype;
+extern int Nuid;
+extern int Nuidexcl;
+extern int Nuidincl;
+
+struct nwad {
+ char *arg; /* argument */
+ char *proto; /* protocol */
+ int af; /* address family -- e.g.,
+ * AF_INET, AF_INET6 */
+ unsigned char a[MAX_AF_ADDR]; /* address */
+ int sport; /* starting port */
+ int eport; /* ending port */
+ int f; /* find state */
+ struct nwad *next; /* forward link */
+};
+extern struct nwad *Nwad;
+
+extern int OffDecDig;
+extern char *Pn;
+
+# if defined(HASFSTRUCT)
+extern struct pff_tab Pff_tab[]; /* file flags table */
+extern struct pff_tab Pof_tab[]; /* process open file flags table */
+# endif /* defined(HASFSTRUCT) */
+
+# if defined(HASPROCFS)
+struct procfsid {
+ pid_t pid; /* search PID */
+ char *nm; /* search name */
+ unsigned char f; /* match found if == 1 */
+
+# if defined(HASPINODEN)
+ INODETYPE inode; /* search inode number */
+# endif /* defined(HASPINODEN) */
+
+ struct procfsid *next; /* forward link */
+};
+
+extern int Procfind;
+extern struct procfsid *Procfsid;
+extern int Procsrch;
+# endif /* defined(HASPROCFS) */
+
+extern int PrPass;
+extern int RptTm;
+extern struct l_dev **Sdev;
+extern int Selall;
+extern int Selflags;
+extern int Setgid;
+extern int Selinet;
+extern int Setuidroot;
+extern struct sfile *Sfile;
+extern struct int_lst *Spgid;
+extern struct int_lst *Spid;
+extern struct seluid *Suid;
+extern char *SzOffFmt_0t;
+extern char *SzOffFmt_d;
+extern char *SzOffFmt_dv;
+extern char *SzOffFmt_x;
+extern int TaskPrtFl;
+extern int TcpStAlloc;
+extern unsigned char *TcpStI;
+extern int TcpStIn;
+extern int TcpStOff;
+extern unsigned char *TcpStX;
+extern int TcpStXn;
+extern int TcpNstates;
+extern char **TcpSt;
+extern char Terminator;
+extern int TmLimit;
+extern int UdpStAlloc;
+extern unsigned char *UdpStI;
+extern int UdpStIn;
+extern int UdpStOff;
+extern unsigned char *UdpStX;
+extern int UdpStXn;
+extern int UdpNstates;
+extern char **UdpSt;
+
+# if defined(HASZONES)
+typedef struct znhash {
+ char *zn; /* zone name */
+ int f; /* "find" flag (used only in ZoneArg) */
+ struct znhash *next; /* next zone hash entry */
+} znhash_t;
+extern znhash_t **ZoneArg;
+# endif /* defined(HASZONES) */
+
+#include "proto.h"
+#include "dproto.h"
+
+#endif /* LSOF_H */