| /* |
| * dlsof.h - Linux header file for /proc-based lsof |
| */ |
| |
| |
| /* |
| * Copyright 1997 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: dlsof.h,v 1.21 2011/09/27 17:38:39 abe Exp $ |
| */ |
| |
| |
| #if !defined(LINUX_LSOF_H) |
| #define LINUX_LSOF_H 1 |
| |
| #include <dirent.h> |
| #define DIRTYPE dirent /* for arg.c's enter_dir() */ |
| #define __USE_GNU /* to get all O_* symbols in fcntl.h */ |
| #include <fcntl.h> |
| #include <malloc.h> |
| #include <signal.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <setjmp.h> |
| #include <unistd.h> |
| #include <netinet/in.h> |
| |
| # if defined(GLIBCV) || defined(__UCLIBC__) |
| #include <netinet/tcp.h> |
| # else /* !defined(GLIBCV) && !defined(__UCLIBC__) */ |
| #include <linux/tcp.h> |
| # endif /* defined(GLIBCV) || defined(__UCLIBC__) */ |
| |
| # if !defined(HASNORPC_H) |
| #include <rpc/rpc.h> |
| #include <rpc/pmap_prot.h> |
| # endif /* !defined(HASNORPC_H) */ |
| |
| #if defined(HASSELINUX) |
| #include <selinux/selinux.h> |
| #endif /* defined(HASSELINUX) */ |
| |
| #include <sys/sysmacros.h> |
| #include <sys/socket.h> |
| #include <arpa/inet.h> |
| #include <linux/if_ether.h> |
| #include <linux/netlink.h> |
| |
| |
| /* |
| * This definition is needed for the common function prototype definitions |
| * in "proto.h", but isn't used in /proc-based lsof. |
| */ |
| |
| typedef unsigned long KA_T; |
| |
| |
| /* |
| * Local definitions |
| */ |
| |
| #define COMP_P const void |
| #define DEVINCR 1024 /* device table malloc() increment */ |
| #define FSNAMEL 4 |
| #define MALLOC_P void |
| #define FREE_P MALLOC_P |
| #define MALLOC_S size_t |
| #define MAXSYSCMDL 15 /* max system command name length |
| * This value should be obtained from a |
| * header file #define, but no consistent one |
| * exists. Some versions of the Linux kernel |
| * have a hard-coded "char comm[16]" command |
| * name member of the task structured |
| * definition in <linux/sched.h>, while others |
| * have a "char comm[TASK_COMM_LEN]" member |
| * with TASK_COMM_LEN #define'd to be 16. |
| * Hence, a universal, local definition of |
| * 16 is #define'd here. */ |
| #define PROCFS "/proc" |
| #define QSORT_P void |
| #define READLEN_T size_t |
| |
| /* |
| * Definitions that indicate what values are present in a stat(2) or lstat(2) |
| * buffer. |
| */ |
| |
| #define SB_DEV 0x01 /* st_dev */ |
| #define SB_INO 0x02 /* st_ino */ |
| #define SB_MODE 0x04 /* st_mode */ |
| #define SB_NLINK 0x08 /* st_nlink */ |
| #define SB_RDEV 0x10 /* st_rdev */ |
| #define SB_SIZE 0x20 /* st_size */ |
| #define SB_ALL (SB_DEV | SB_INO | SB_MODE | SB_NLINK | SB_RDEV | \ |
| SB_SIZE) /* all values */ |
| |
| #define STRNCPY_L size_t |
| #define STRNML 32 |
| |
| # if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS==64 |
| #define SZOFFTYPE unsigned long long |
| /* size and offset internal storage |
| * type */ |
| #define SZOFFPSPEC "ll" /* SZOFFTYPE print specification |
| * modifier */ |
| # endif /* defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS==64 */ |
| |
| #define XDR_PMAPLIST (xdrproc_t)xdr_pmaplist |
| #define XDR_VOID (xdrproc_t)xdr_void |
| |
| |
| /* |
| * Global storage definitions (including their structure definitions) |
| */ |
| |
| struct mounts { |
| char *dir; /* directory (mounted on) */ |
| char *fsname; /* file system |
| * (symbolic links unresolved) */ |
| char *fsnmres; /* file system |
| * (symbolic links resolved) */ |
| dev_t dev; /* directory st_dev */ |
| dev_t rdev; /* directory st_rdev */ |
| INODETYPE inode; /* directory st_ino */ |
| mode_t mode; /* directory st_mode */ |
| int ds; /* directory status -- i.e., SB_* |
| * values */ |
| mode_t fs_mode; /* file system st_mode */ |
| int ty; /* node type -- e.g., N_REGLR, N_NFS */ |
| struct mounts *next; /* forward link */ |
| }; |
| |
| struct sfile { |
| char *aname; /* argument file name */ |
| char *name; /* file name (after readlink()) */ |
| char *devnm; /* device name (optional) */ |
| dev_t dev; /* device */ |
| dev_t rdev; /* raw device */ |
| mode_t mode; /* S_IFMT mode bits from stat() */ |
| int type; /* file type: 0 = file system |
| * 1 = regular file */ |
| INODETYPE i; /* inode number */ |
| int f; /* file found flag */ |
| struct sfile *next; /* forward link */ |
| }; |
| |
| extern int HasNFS; |
| extern int OffType; |
| |
| #endif /* LINUX_LSOF_H */ |