blob: 97b8f5bc2ee211e015a10d87320ea9369dfb2d1a [file] [log] [blame]
/*
* 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.65 2011/09/07 19:13:49 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_AUSX 3 /* Auspex LFS node */
#define N_AUTO 4 /* automount node */
#define N_BLK 5 /* block device node */
#define N_CACHE 6 /* cached file system node */
#define N_CDFS 7 /* CD-ROM node */
#define N_CFS 8 /* CFS node */
#define N_CHR 9 /* character device node */
#define N_COM 10 /* streams common device node */
#define N_CTFSADIR 11 /* Solaris CTFS adir node */
#define N_CTFSBUND 12 /* Solaris CTFS bundle node */
#define N_CTFSCDIR 13 /* Solaris CTFS cdir node */
#define N_CTFSCTL 14 /* Solaris CTFS ctl node */
#define N_CTFSEVT 15 /* Solaris CTFS events node */
#define N_CTFSLATE 16 /* Solaris CTFS latest node */
#define N_CTFSROOT 17 /* Solaris CTFS root node */
#define N_CTFSSTAT 18 /* Solaris CTFS status node */
#define N_CTFSSYM 19 /* Solaris CTFS symbolic node */
#define N_CTFSTDIR 20 /* Solaris CTFS type node */
#define N_CTFSTMPL 21 /* Solaris CTFS template node */
#define N_DEV 22 /* DEV FS node */
#define N_DOOR 23 /* DOOR node */
#define N_FD 24 /* FD node */
#define N_FIFO 25 /* FIFO node */
#define N_HSFS 26 /* High Sierra node */
#define N_KERN 27 /* BSD /kern node */
#define N_LOFS 28 /* loopback node */
#define N_MNT 29 /* mount file system device node */
#define N_MPC 30 /* multiplexed device node */
#define N_MVFS 31 /* multi-volume file system node (?) */
#define N_NFS 32 /* NFS node */
#define N_NFS4 33 /* NFS version 4 node */
#define N_NM 34 /* named file system node */
#define N_OBJF 35 /* objfs file system node */
#define N_PCFS 36 /* PC file system node */
#define N_PIPE 37 /* pipe device node */
#define N_PORT 38 /* port node */
#define N_PROC 39 /* /proc node */
#define N_PSEU 49 /* pseudofs node */
#define N_SAMFS 41 /* Solaris SAM-FS */
#define N_SANFS 42 /* AIX SANFS */
#define N_SDEV 43 /* Solaris sdev file system node */
#define N_SHARED 44 /* Solaris sharedfs */
#define N_SOCK 45 /* sock_vnodeops node */
#define N_SPEC 46 /* spec_vnodeops node */
#define N_STREAM 47 /* stream node */
#define N_TMP 48 /* tmpfs node */
#define N_UFS 49 /* UNIX file system node */
#define N_UNKN 50 /* unknown node type */
#define N_VXFS 51 /* Veritas file system node */
#define N_XFS 52 /* XFS node */
#define N_ZFS 53 /* 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;
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 */