Module Name: src Committed By: ozaki-r Date: Wed Nov 11 07:49:59 UTC 2015
Added Files: src/usr.sbin/rtadvd: prog_ops.h rtadvd_hostops.c rtadvd_rumpops.c Log Message: Introduce rump.rtadvd It is used to write ATF tests for RA. >From s-yamaguchi@IIJ. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/usr.sbin/rtadvd/prog_ops.h \ src/usr.sbin/rtadvd/rtadvd_hostops.c src/usr.sbin/rtadvd/rtadvd_rumpops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Added files: Index: src/usr.sbin/rtadvd/prog_ops.h diff -u /dev/null src/usr.sbin/rtadvd/prog_ops.h:1.1 --- /dev/null Wed Nov 11 07:49:59 2015 +++ src/usr.sbin/rtadvd/prog_ops.h Wed Nov 11 07:49:59 2015 @@ -0,0 +1,84 @@ +#ifndef _PROG_OPS_H_ +#define _PROG_OPS_H_ + +#include <sys/types.h> +#include <sys/socket.h> +#include <poll.h> + +#ifndef CRUNCHOPS +struct prog_ops { + int (*op_init)(void); + int (*op_daemon)(int, int); + + int (*op_sysctl)(const int *, u_int, void *, size_t *, + const void *, size_t); + int (*op_ioctl)(int, unsigned long, ...); + + int (*op_socket)(int, int, int); + int (*op_open)(const char *, int, ...); + int (*op_close)(int); + pid_t (*op_getpid)(void); + + ssize_t (*op_read)(int, void *, size_t); + ssize_t (*op_write)(int, const void *, size_t); + + int (*op_chdir)(const char *); + int (*op_chroot)(const char *); + + int (*op_setuid)(uid_t); + int (*op_setgid)(gid_t); + int (*op_setgroups)(int, const gid_t *); + + ssize_t (*op_recvmsg)(int, struct msghdr *, int); + ssize_t (*op_sendmsg)(int, const struct msghdr *, int); + + int (*op_setsockopt)(int, int, int, const void *, socklen_t); + int (*op_poll)(struct pollfd *, u_int, int); + int (*op_clock_gettime)(clockid_t, struct timespec *); +}; +extern const struct prog_ops prog_ops; + +#define prog_init prog_ops.op_init +#define prog_daemon prog_ops.op_daemon +#define prog_socket prog_ops.op_socket +#define prog_open prog_ops.op_open +#define prog_close prog_ops.op_close +#define prog_getpid prog_ops.op_getpid +#define prog_read prog_ops.op_read +#define prog_write prog_ops.op_write +#define prog_sysctl prog_ops.op_sysctl +#define prog_ioctl prog_ops.op_ioctl +#define prog_chdir prog_ops.op_chdir +#define prog_chroot prog_ops.op_chroot +#define prog_setuid prog_ops.op_setuid +#define prog_setgid prog_ops.op_setgid +#define prog_setgroups prog_ops.op_setgroups +#define prog_recvmsg prog_ops.op_recvmsg +#define prog_sendmsg prog_ops.op_sendmsg +#define prog_setsockopt prog_ops.op_setsockopt +#define prog_poll prog_ops.op_poll +#define prog_clock_gettime prog_ops.op_clock_gettime +#else +#define prog_init ((int (*)(void))NULL) +#define prog_daemon daemon +#define prog_socket socket +#define prog_open open +#define prog_close close +#define prog_getpid getpid +#define prog_read read +#define prog_write write +#define prog_sysctl sysctl +#define prog_ioctl ioctl +#define prog_chdir chdir +#define prog_chroot chroot +#define prog_setuid setuid +#define prog_setgid setgid +#define prog_setgroups setgroups +#define prog_recvmsg recvmsg +#define prog_sendmsg sendmsg +#define prog_setsockopt setsockopt +#define prog_poll poll +#define prog_clock_gettime clock_gettime +#endif + +#endif /* _PROG_OPS_H_ */ Index: src/usr.sbin/rtadvd/rtadvd_hostops.c diff -u /dev/null src/usr.sbin/rtadvd/rtadvd_hostops.c:1.1 --- /dev/null Wed Nov 11 07:49:59 2015 +++ src/usr.sbin/rtadvd/rtadvd_hostops.c Wed Nov 11 07:49:59 2015 @@ -0,0 +1,40 @@ +#include <sys/cdefs.h> + +#include <sys/types.h> +#include <sys/socket.h> +#include <sys/sysctl.h> +#include <sys/ioctl.h> + +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> + +#include "prog_ops.h" + +const struct prog_ops prog_ops = { + .op_daemon = daemon, + .op_socket = socket, + .op_open = open, + .op_close = close, + .op_getpid = getpid, + + .op_read = read, + .op_write = write, + + .op_sysctl = sysctl, + .op_ioctl = ioctl, + + .op_chdir = chdir, + .op_chroot = chroot, + + .op_setuid = setuid, + .op_setgid = setgid, + .op_setgroups = setgroups, + + .op_recvmsg = recvmsg, + .op_sendmsg = sendmsg, + + .op_setsockopt = setsockopt, + .op_poll = poll, + .op_clock_gettime = clock_gettime, +}; Index: src/usr.sbin/rtadvd/rtadvd_rumpops.c diff -u /dev/null src/usr.sbin/rtadvd/rtadvd_rumpops.c:1.1 --- /dev/null Wed Nov 11 07:49:59 2015 +++ src/usr.sbin/rtadvd/rtadvd_rumpops.c Wed Nov 11 07:49:59 2015 @@ -0,0 +1,45 @@ +#include <sys/cdefs.h> + +#include <sys/types.h> +#include <sys/socket.h> +#include <sys/ioctl.h> + +#include <unistd.h> + +#include <rump/rump.h> +#include <rump/rump_syscalls.h> +#include <rump/rumpclient.h> + +#include "prog_ops.h" + +const struct prog_ops prog_ops = { + .op_init = rumpclient_init, + .op_daemon = rumpclient_daemon, + + .op_socket = rump_sys_socket, + .op_open = rump_sys_open, + .op_close = rump_sys_close, + .op_getpid = rump_sys_getpid, + + .op_read = rump_sys_read, + .op_write = rump_sys_write, + + .op_sysctl = rump_sys___sysctl, + .op_ioctl = rump_sys_ioctl, + + .op_chdir = rump_sys_chdir, + .op_chroot = rump_sys_chroot, + + .op_setuid = rump_sys_setuid, + .op_setgid = rump_sys_setgid, + .op_setgroups = rump_sys_setgroups, + + .op_recvmsg = rump_sys_recvmsg, + .op_sendmsg = rump_sys_sendmsg, + + .op_setsockopt = rump_sys_setsockopt, + .op_poll = rump_sys_poll, + .op_clock_gettime = rump_sys_clock_gettime, + +}; +