home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / NEXTSTEP / UNIX / Utilities / lsof-4.21-MIHS / lsof.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-12-10  |  11.9 KB  |  474 lines

  1. /*
  2.  * lsof.h - common header file for lsof
  3.  */
  4.  
  5.  
  6.  
  7.  
  8. /*
  9.  * $Id: lsof.h,v 1.8 97/10/24 08:00:40 abe Exp $
  10.  */
  11.  
  12.  
  13. #if    !defined(LSOF_H)
  14. #define    LSOF_H    1
  15.  
  16. #include "machine.h"
  17. #include "lsof_fields.h"
  18.  
  19. #include <ctype.h>
  20. #include <errno.h>
  21.  
  22. #include <sys/types.h>
  23. #include <netinet/in_systm.h>
  24.  
  25. #include <netdb.h>
  26. #include <pwd.h>
  27. #include <stdio.h>
  28.  
  29. #include <sys/stat.h>
  30.  
  31.  
  32. /*
  33.  * Definitions of structures that may be needed by dlsof.h
  34.  */
  35.  
  36. struct l_dev {
  37.     dev_t rdev;            /* device */
  38.     ino_t inode;            /* inode number */
  39.     char *name;            /* name */
  40.     int v;                /* has been verified
  41.                      * (when DCUnsafe == 1) */
  42. };
  43.  
  44. #include "dlsof.h"
  45.  
  46. extern int errno;
  47. extern char *optarg;
  48. extern int optind;
  49.  
  50. #define    ACCESSERRFMT    "%s: WARNING: access %s: %s\n"
  51.  
  52. # if    defined(HASDCACHE)
  53. #define    CRC_POLY    0120001     /* CRC-16 polynomial */
  54. #define    CRC_TBLL    256        /* crc table length for software */
  55. #define    CRC_BITS    8        /* number of bits contributing */
  56. # endif    /* defined(HASDCACHE) */
  57.  
  58. #define    CMDL        9        /* maximum number of characters from
  59.                      * command name to print in COMMAND
  60.                      * column */
  61. #define    CWD        " cwd"        /* current working directory fd name */
  62. #define    FDLEN        8        /* fd printing array length */
  63. #define    IDINCR        10        /* PID/PGRP table malloc() increment */
  64. #define    IPROTOL        6        /* Internet protocol length */
  65. #define    LOGINML        9        /* login name length */
  66. #define    LPROCINCR    128        /* Lproc[] allocation increment */
  67. #define    LSOF_URL    "ftp://vic.cc.purdue.edu/pub/tools/unix/lsof"
  68. #define    MAXDCPATH    4        /* paths in DCpath[] */
  69. #define    MAXNWAD        100        /* maximum network addresses */
  70. #define    N_REGLR        0        /* regular file system node */
  71. #define    N_AFS        1        /* AFS node */
  72. #define    N_AUTO        2        /* automount node */
  73. #define    N_BLK        3        /* block device node */
  74. #define    N_CACHE        4        /* cached file system node */
  75. #define    N_CDFS        5        /* CD-ROM node */
  76. #define    N_CHR        6        /* character device node */
  77. #define    N_COM        7        /* streams common device node */
  78. #define    N_DOOR        8        /* DOOR node */
  79. #define    N_FIFO        9        /* FIFO node */
  80. #define    N_HSFS        10        /* High Sierra node */
  81. #define    N_KERN        11        /* BSD /kern node */
  82. #define    N_LOFS        12        /* loopback node */
  83. #define    N_MPC        13        /* multiplexed device node */
  84. #define    N_MVFS        14        /* multi-volume file system node (?) */
  85. #define    N_NFS        15        /* NFS node */
  86. #define    N_NM        16        /* named file system node */
  87. #define    N_OBJF        17        /* objfs file system node */
  88. #define    N_PCFS        18        /* PC file system node */
  89. #define    N_PIPE        19        /* pipe device node */
  90. #define    N_PROC        20        /* /proc node */
  91. #define    N_SOCK        21        /* sock_vnodeops node */
  92. #define    N_SPEC        22        /* spec_vnodeops node */
  93. #define    N_STREAM    23        /* stream node */
  94. #define    N_TMP        24        /* tmpfs node */
  95. #define    N_UFS        25        /* Unix file system node */
  96. #define    N_VXFS        26        /* Veritas file system node */
  97. #define    N_XFS        27        /* XFS node */
  98. #define    RPTTM        15        /* default repeat seconds */
  99. #define    RTD        " rtd"        /* root directory fd name */
  100. #define    TCPTPI_QUEUES    1        /* report TCP/TPI queue lengths */
  101. #define    TCPTPI_STATE    2        /* report TCP/TPI state */
  102. #define TCPTPI_WINDOWS    4        /* report TCP/TPI window sizes */
  103. #define    TCPTPI_ALL    (TCPTPI_QUEUES | TCPTPI_STATE | TCPTPI_WINDOWS)
  104.                     /* report all TCP/TPI info */
  105. #define    TMLIMIT        15        /* readlink() & stat() timeout sec */
  106. #define    TMLIMMIN    2        /* minimum timeout */
  107. #define    TYPEL        8        /* type character length */
  108. #define    UIDCACHEL    1024        /* UID cache length */
  109. #define    UIDINCR        10        /* UID table malloc() increment */
  110. #define    USERPRTL    8        /* UID/login print length limit */
  111.  
  112. # if    !defined(SZOFFTYPE)
  113. #define    SZOFFTYPE    unsigned long    /* type for size and offset */
  114. #undef    SZOFFPSPEC
  115. #define    SZOFFPSPEC    "l"        /* SZOFFTYPE printf specification
  116.                      * modifier */
  117. # endif    /* !defined(SZOFFTYPE) */
  118.  
  119.  
  120. /*
  121.  * Output title definitions
  122.  */
  123.  
  124. #define    CMDTTL        "COMMAND"
  125. extern int CmdColW;
  126. #define DEVTTL        "DEVICE"
  127. extern int DevColW;
  128. #define    FDTTL         "FD"
  129. extern int FdColW;
  130. #define INOTTL        "INODE"
  131. extern int InoColW;
  132. #define    NMTTL        "NAME"
  133. extern int NmColW;
  134. #define OFFTTL        "OFFSET"
  135. #define    PGRPTTL        "PGRP"
  136. extern int PgrpColW;
  137. #define    PIDTTL        "PID"
  138. extern int PidColW;
  139. #define    PPIDTTL        "PPID"
  140. extern int PpidColW;
  141. #define SZTTL        "SIZE"
  142. #define    SZOFFTTL    "SIZE/OFF"
  143. extern int SzOffColW;
  144. #define TYPETTL        "TYPE"
  145. extern int TypeColW;
  146. #define    USERTTL        "USER"
  147. extern int UserColW;
  148.  
  149. /*
  150.  * Selection flags
  151.  */
  152.  
  153. #define    PS_PRI        1        /* primary process selection -- e.g.,
  154.                      * by PID or UID */
  155. #define    PS_SEC        2        /* secondary process selection -- e.g.,
  156.                      * by directory or file */
  157. #define    SELCMD        0x001        /* select process by command name */
  158. #define    SELFD        0x002        /* select file by descriptor name */
  159. #define    SELNA        0x004        /* select socket by address (-i@...) */
  160. #define    SELNET        0x008        /* select Internet socket files (-i) */
  161. #define    SELNFS        0x010        /* select NFS files (-N) */
  162. #define    SELNM        0x020        /* select by name */
  163. #define    SELPGRP        0x040        /* select process group IDs (-g) */
  164. #define    SELPID        0x080        /* select PIDs (-p) */
  165. #define    SELUID        0x100        /* select UIDs (-u) */
  166. #define    SELUNX        0x200        /* select Unix socket (-U) */
  167. #define    SELALL        (SELCMD|SELFD|SELNA|SELNET|SELNM|SELNFS|SELPID|SELUID|SELUNX)
  168.  
  169. /*
  170.  * Structure definitions
  171.  */
  172.  
  173. #if    defined(HAS_AFS)
  174. struct afsnode {            /* AFS pseudo-node structure */
  175.     dev_t dev;
  176.     unsigned char ino_st;        /* 1 if inode has a value */
  177.     unsigned long inode;
  178.     unsigned long size;
  179. };
  180. #endif    /* defined(HAS_AFS) */
  181.  
  182. #if    defined(HASNLIST)
  183. struct drive_Nl {            /* data to drive build_Nl() */
  184.     char *nn;            /* nickname for lookups */
  185.     char *knm;            /* kernel variable for name list */
  186. };
  187. extern struct drive_Nl Drive_Nl[];    /* defined in dstore.c */
  188. #endif    /* defined(HASNLIST) */
  189.  
  190.  
  191. /*
  192.  * Global storage definitions (including their structure definitions)
  193.  */
  194.  
  195. struct int_lst {
  196.     int i;                /* integer argument */
  197.     int f;                /* find state */
  198. };
  199.  
  200. struct seluid {
  201.     uid_t uid;            /* User ID */
  202.     char *lnm;            /* specified login name (NULL = none) */
  203.     unsigned char excl;        /* excluded state */
  204.     unsigned char f;        /* selected User ID find state
  205.                      * (meaningful only if excl == 0) */
  206. };
  207.  
  208. extern int CkPasswd;
  209.  
  210. struct str_lst {
  211.     char *str;            /* string */
  212.     int len;            /* string length */
  213.     int f;                /* selected string find state */
  214.     struct str_lst *next;        /* next list entry */
  215. };
  216. extern struct str_lst *Cmdl;
  217.  
  218. # if    defined(HASDCACHE)
  219. extern unsigned DCcksum;
  220. extern int DCfd;
  221. extern FILE *DCfs;
  222. extern char *DCpathArg;
  223. extern char *DCpath[];
  224. extern int DCpathX;
  225. extern int DCrebuilt;
  226. extern int DCstate;
  227. extern int DCunsafe;
  228. # endif    /* defined(HASDCACHE) */
  229.  
  230. extern int DChelp;
  231. extern struct l_dev *Devtp;
  232.  
  233. # if    defined(HASBLKDEV)
  234. extern struct l_dev *BDevtp, **BSdev;
  235. extern int BNdev;
  236. # endif    /* defined(HASBLKDEV) */
  237.  
  238. extern int Fand;
  239. extern int Fblock;
  240. extern int Ffield;
  241. extern int Fhelp;
  242. extern int Fhost;
  243.  
  244. # if    defined(HASNCACHE)
  245. extern int Fncache;
  246. # endif    /* defined(HASNCACHE) */
  247.  
  248. extern int Fnet;
  249. extern int Fnfs;
  250. extern int Foffset;
  251. extern int Fovhd;
  252. extern int Fport;
  253. extern int Fpgrp;
  254.  
  255. # if    defined(HASPPID)
  256. extern int Fppid;
  257. # endif    /* defined(HASPPID) */
  258.  
  259. extern int Fsize;
  260. extern int Ftcptpi;
  261. extern int Fterse;
  262. extern int Funix;
  263. extern int Futol;
  264. extern int Fverbose;
  265. extern int Fwarn;
  266.  
  267. # if    defined(HASXOPT_VALUE)
  268. extern int Fxopt;
  269. # endif    /* defined(HASXOPT_VALUE) */
  270.  
  271. extern struct str_lst *Fdl;
  272.  
  273. struct fieldsel {
  274.     char id;            /* field ID character */
  275.     unsigned char st;        /* field status */
  276.     char *nm;            /* field name */
  277. };
  278. extern struct fieldsel FieldSel[];
  279.  
  280. extern int Hdr;
  281.  
  282. enum IDType {PGRP, PID};
  283.  
  284. struct lfile {
  285.     char access;
  286.     char lock;
  287.     unsigned char dev_def;        /* device number definition status */
  288.     unsigned char inp_ty;        /* inode/iproto type
  289.                      *    0: neither inode nor iproto
  290.                      *    1: inode contains number
  291.                      *    2: iproto contains string */
  292.     unsigned char is_com;        /* common stream status */
  293.     unsigned char is_nfs;        /* NFS file status */
  294.     unsigned char is_stream;    /* stream device status */
  295.  
  296. # if    defined(HASVXFS) && defined(HASVXFSDNLC)
  297.     unsigned char is_vxfs;        /* VxFS file status */
  298. # endif    /* defined(HASVXFS) && defined(HASVXFSDNLC) */
  299.  
  300.     unsigned char off_def;        /* offset definition status */
  301.     unsigned char sz_def;        /* size definition status */
  302.     char fd[FDLEN];
  303.     char iproto[IPROTOL];
  304.     char type[TYPEL];
  305.     short sf;            /* select flags -- SEL* symbols */
  306.     int ch;                /* VMPC channel: -1 = none */
  307.     int ntype;            /* node type -- N_* value */
  308.     SZOFFTYPE off;
  309.     SZOFFTYPE sz;
  310.     dev_t dev;
  311.     unsigned long inode;
  312.     char *dev_ch;
  313.     char *fsdir;            /* file system directory */
  314.     char *fsdev;            /* file system device */
  315.  
  316. # if    defined(HASFSINO)
  317.     unsigned long fs_ino;        /* file system inode number */
  318. # endif    /* defined HASFSINO) */
  319.  
  320.     struct linaddr {        /* local Internet address information */
  321.         int as;            /* address status: 0 == none */
  322.         int p;            /* port */
  323.         struct in_addr ia;    /* Internet address */
  324.     } li[2];            /* li[0]: local
  325.                      * li[1]: foreign */
  326.     struct ltstate {        /* local TCP/TPI state */
  327.         int type;        /* state type: -1 == none
  328.                      *        0 == TCP
  329.                      *        1 == TPI */
  330.         union {
  331.             int i;        /* integer state */
  332.             unsigned int u;    /* unsigned integer state */
  333.         } state;
  334.  
  335. #if    defined(HASTCPTPIQ)
  336.         unsigned long rq;    /* receive queue length */
  337.         unsigned long sq;    /* send queue length */
  338.         unsigned char rqs;    /* rq status: 0 = none */
  339.         unsigned char sqs;    /* sq status: 0 = none */
  340. #endif    /* defined(HASTCPTPIQ) */
  341.  
  342. #if    defined(HASTCPTPIW)
  343.         unsigned char rws;    /* rw status: 0 = none */
  344.         unsigned char wws;    /* ww status: 0 = none */
  345.         unsigned long rw;    /* read window size */
  346.         unsigned long ww;    /* write window size */
  347. #endif    /* defined(HASTCPTPIW) */
  348.  
  349.     } lts;
  350.     char *nm;
  351.     char *nma;            /* NAME column addition */
  352.  
  353. # if    defined(HASNCACHE)
  354.     unsigned long na;        /* name cache lookup node address */
  355. #  if    defined(HASNCAPID)
  356.     unsigned long id;        /* capability ID */
  357. #  endif    /* defined(HASNCAPID) */
  358. # endif    /* defined(HASNCACHE) */
  359.  
  360. # if    defined(HASLFILEADD)
  361.     HASLFILEADD
  362. # endif    /* defined(HASLFILEADD) */
  363.  
  364.     struct lfile *next;
  365. };
  366. extern struct lfile *Lf, *Plf;
  367.  
  368.  
  369. struct lproc {
  370.     char *cmd;            /* command name */
  371.     short sf;            /* select flags -- SEL* symbols */
  372.     short pss;            /* state: 0 = not selected
  373.                       *      1 = wholly selected
  374.                       *      2 = partially selected */
  375.     int pid;            /* process ID */
  376.     int pgrp;            /* process group ID */
  377.     int ppid;            /* parent process ID */
  378.     uid_t uid;            /* user ID */
  379.     struct lfile *file;        /* open files of process */
  380. };
  381. extern struct lproc *Lp, *Lproc;
  382.  
  383. extern char *Memory;
  384. extern struct mounts *Mtab;
  385.  
  386. # if    defined(HASPROCFS)
  387. extern struct mounts *Mtprocfs;
  388. # endif
  389.  
  390. extern int Mxpgrp;
  391. extern int Mxpid;
  392. extern int Mxuid;
  393. extern gid_t Mygid;
  394. extern int Mypid;
  395. extern uid_t Myuid;
  396. extern char *Namech;
  397. extern int Ndev;
  398.  
  399. # if    defined(HASNLIST)
  400. #  if    !defined(NLIST_TYPE)
  401. #define    NLIST_TYPE    nlist
  402. #  endif    /* !defined(NLIST_TYPE) */
  403. extern struct NLIST_TYPE *Nl;
  404. extern int Nll;
  405. # endif    /* defined(HASNLIST) */
  406.  
  407. extern int Nlproc;
  408. extern char *Nmlst;
  409. extern int Npgrp;
  410. extern int Npid;
  411. extern int Npuns;
  412. extern int Ntype;
  413. extern int Nuid;
  414. extern int Nuidexcl;
  415. extern int Nuidincl;
  416.  
  417. struct nwad {
  418.     char *arg;                /* argument */
  419.     char *proto;                /* protocol */
  420.     unsigned char a[4];            /* address */
  421.     int sport;                /* starting port */
  422.     int eport;                /* ending port */
  423.     int f;                    /* find state */
  424.     struct nwad *next;            /* forward link */
  425. };
  426. extern struct nwad *Nwad;
  427.  
  428. extern char *Pn;
  429.  
  430. # if    defined(HASPROCFS)
  431. struct procfsid {
  432.     pid_t pid;            /* search PID */
  433.  
  434. #  if    defined(HASPINFO)
  435.     unsigned char type;        /* type: 0 if one PID file in HASPROCFS
  436.                      *       1 if one PID file in HASPINFO
  437.                      *     2 if all files in HASPINFO */
  438. #  endif    /* defined(HASPINFO) */
  439.  
  440. #  if    defined(HASPINODEN)
  441.     unsigned long inode;        /* search inode number */
  442. #  endif    /* defined(HASPINODEN) */
  443.  
  444.     struct procfsid *next;        /* forward link */
  445. };
  446.  
  447. extern struct procfsid *Procfsid;
  448. extern int Procsrch;
  449. # endif    /* defined(HASPROCFS) */
  450.  
  451. extern int PrPass;
  452. extern int RptTm;
  453. extern struct l_dev **Sdev;
  454. extern int Selall;
  455. extern int Selflags;
  456. extern int Setgid;
  457. extern int Selinet;
  458. extern int Setuidroot;
  459. extern struct sfile *Sfile;
  460. extern struct int_lst *Spgrp;
  461. extern struct int_lst *Spid;
  462. extern struct seluid *Suid;
  463. extern char *SzOffFmt_0t;
  464. extern char *SzOffFmt_d;
  465. extern char *SzOffFmt_dv;
  466. extern char *SzOffFmt_x;
  467. extern char Terminator;
  468. extern int TmLimit;
  469.  
  470. #include "proto.h"
  471. #include "dproto.h"
  472.  
  473. #endif    /* LSOF_H */
  474.