1#ifndef _PROG_OPS_H_ 2#define _PROG_OPS_H_ 3 4#include <sys/types.h> 5#include <sys/socket.h> 6#include <poll.h> 7 8#ifndef CRUNCHOPS 9struct prog_ops { 10 int (*op_init)(void); 11 int (*op_daemon)(int, int); 12 13 int (*op_sysctl)(const int *, u_int, void *, size_t *, 14 const void *, size_t); 15 int (*op_ioctl)(int, unsigned long, ...); 16 17 int (*op_socket)(int, int, int); 18 int (*op_open)(const char *, int, ...); 19 int (*op_close)(int); 20 pid_t (*op_getpid)(void); 21 22 ssize_t (*op_read)(int, void *, size_t); 23 ssize_t (*op_write)(int, const void *, size_t); 24 25 int (*op_chdir)(const char *); 26 int (*op_chroot)(const char *); 27 28 int (*op_setuid)(uid_t); 29 int (*op_setgid)(gid_t); 30 int (*op_setgroups)(int, const gid_t *); 31 32 ssize_t (*op_recvmsg)(int, struct msghdr *, int); 33 ssize_t (*op_sendmsg)(int, const struct msghdr *, int); 34 35 int (*op_setsockopt)(int, int, int, const void *, socklen_t); 36 int (*op_poll)(struct pollfd *, u_int, int); 37 int (*op_clock_gettime)(clockid_t, struct timespec *); 38}; 39extern const struct prog_ops prog_ops; 40 41#define prog_init prog_ops.op_init 42#define prog_daemon prog_ops.op_daemon 43#define prog_socket prog_ops.op_socket 44#define prog_open prog_ops.op_open 45#define prog_close prog_ops.op_close 46#define prog_getpid prog_ops.op_getpid 47#define prog_read prog_ops.op_read 48#define prog_write prog_ops.op_write 49#define prog_sysctl prog_ops.op_sysctl 50#define prog_ioctl prog_ops.op_ioctl 51#define prog_chdir prog_ops.op_chdir 52#define prog_chroot prog_ops.op_chroot 53#define prog_setuid prog_ops.op_setuid 54#define prog_setgid prog_ops.op_setgid 55#define prog_setgroups prog_ops.op_setgroups 56#define prog_recvmsg prog_ops.op_recvmsg 57#define prog_sendmsg prog_ops.op_sendmsg 58#define prog_setsockopt prog_ops.op_setsockopt 59#define prog_poll prog_ops.op_poll 60#define prog_clock_gettime prog_ops.op_clock_gettime 61#else 62#define prog_init ((int (*)(void))NULL) 63#define prog_daemon daemon 64#define prog_socket socket 65#define prog_open open 66#define prog_close close 67#define prog_getpid getpid 68#define prog_read read 69#define prog_write write 70#define prog_sysctl sysctl 71#define prog_ioctl ioctl 72#define prog_chdir chdir 73#define prog_chroot chroot 74#define prog_setuid setuid 75#define prog_setgid setgid 76#define prog_setgroups setgroups 77#define prog_recvmsg recvmsg 78#define prog_sendmsg sendmsg 79#define prog_setsockopt setsockopt 80#define prog_poll poll 81#define prog_clock_gettime clock_gettime 82#endif 83 84#endif /* _PROG_OPS_H_ */ 85