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 9 struct 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 }; 39 extern 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