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