summaryrefslogtreecommitdiff
path: root/dialects/linux/dlsof.h
diff options
context:
space:
mode:
Diffstat (limited to 'dialects/linux/dlsof.h')
-rw-r--r--dialects/linux/dlsof.h179
1 files changed, 179 insertions, 0 deletions
diff --git a/dialects/linux/dlsof.h b/dialects/linux/dlsof.h
new file mode 100644
index 0000000..8cca3c5
--- /dev/null
+++ b/dialects/linux/dlsof.h
@@ -0,0 +1,179 @@
+/*
+ * 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.22 2012/04/10 16:39:50 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 name (mounted on) */
+ char *fsname; /* file system
+ * (symbolic links unresolved) */
+ char *fsnmres; /* file system
+ * (symbolic links resolved) */
+ size_t dirl; /* length of directory name */
+ 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 mounts *mp; /* mount structure pointer for file
+ * system type entries */
+#define SAVE_MP_IN_SFILE 1 /* for ck_file_arg() im arg.c */
+ struct sfile *next; /* forward link */
+};
+
+extern int HasNFS;
+extern int OffType;
+
+#endif /* LINUX_LSOF_H */