Blame lsof.h

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