diff options
Diffstat (limited to 'srcx/jstart.c')
-rw-r--r-- | srcx/jstart.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/srcx/jstart.c b/srcx/jstart.c index 76bdaae..370c064 100644 --- a/srcx/jstart.c +++ b/srcx/jstart.c @@ -3,23 +3,17 @@ /* TODO: Attribute properly */ #include <sys/types.h> -#include <sys/stat.h> #include <sys/param.h> -#include <sys/sysctl.h> -#include <sys/proc.h> -#include <sys/user.h> +#include <sys/jail.h> + +#include <netinet/in.h> +#include <arpa/inet.h> #include <paths.h> -#include <signal.h> #include <stdio.h> -#include <syslog.h> #include <err.h> -#include <errno.h> -#include <stdarg.h> #include <unistd.h> -#include <kvm.h> #include <limits.h> -#include <fcntl.h> #include "util.h" @@ -27,9 +21,13 @@ #include "../config.h" #endif +#define START_SCRIPT "/etc/rc" +static char* START_ARGS[] = { _PATH_BSHELL, START_SCRIPT }; + +static void usage(); + int main(int argc, char* argv[]) { -#include <signal.h> int ch, jid; struct jail j; int printjid = 0; @@ -66,13 +64,12 @@ int main(int argc, char* argv[]) if(chdir(argv[0]) != 0) err(1, "couldn't change to jail directory: %s", argv[0]); - if(inet_aton(argv[2], &in) != 0) + if(inet_aton(argv[2], &in) != 1) errx(1, "invalid ip address: %s", argv[2]); memset(&j, 0, sizeof(j)); j.version = 0; j.path = argv[0]; -#include <signal.h> j.hostname = argv[1]; j.ip_number = ntohl(in.s_addr); @@ -84,7 +81,6 @@ int main(int argc, char* argv[]) if(console) { - } if(printjid) @@ -93,10 +89,10 @@ int main(int argc, char* argv[]) fflush(stdout); } - if(!check_jail_command("/etc/rc")) + if(!check_jail_command(NULL, START_SCRIPT)) exit(1); - run_jail_command("/etc/rc"); + run_jail_command(NULL, START_ARGS[0], START_ARGS, JAIL_RUN_CONSOLE | JAIL_RUN_STDOUT); return 0; } @@ -105,3 +101,5 @@ static void usage() fprintf(stderr, "usage: jstart [-ic] path hostname ip-number\n"); exit(2); } + + |