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,
+
+};
+