summaryrefslogtreecommitdiff
path: root/srcx/jstart.c
diff options
context:
space:
mode:
Diffstat (limited to 'srcx/jstart.c')
-rw-r--r--srcx/jstart.c150
1 files changed, 76 insertions, 74 deletions
diff --git a/srcx/jstart.c b/srcx/jstart.c
index 288b444..770d41f 100644
--- a/srcx/jstart.c
+++ b/srcx/jstart.c
@@ -61,89 +61,91 @@
#endif
#define START_SCRIPT "/etc/rc"
-static char* START_ARGS[] = { _PATH_BSHELL, START_SCRIPT };
+static char* START_ARGS[] = { _PATH_BSHELL, START_SCRIPT };
static void usage();
int main(int argc, char* argv[])
{
- int ch, jid;
- struct jail j;
- int printjid = 0;
- struct in_addr in;
-
- while((ch = getopt(argc, argv, "i")) != -1)
- {
- switch(ch)
- {
- case 'i':
- printjid = 1;
- break;
-
- case '?':
- default:
- usage();
- }
- }
-
- argc -= optind;
- argv += optind;
-
- if(argc < 3)
- usage();
-
- if(getuid() != 0)
- errx(1, "must be run as root");
-
- if(chdir(argv[0]) != 0)
- err(1, "couldn't change to jail directory: %s", argv[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];
- j.hostname = argv[1];
- j.ip_number = ntohl(in.s_addr);
-
- /* Here's where we actually go into the jail */
- jid = jail(&j);
- if(jid == -1)
- err(1, "couldn't create jail");
-
- if(printjid)
- {
- printf("%d\n", jid);
- fflush(stdout);
- }
-
- argc -= 3;
- argv += 3;
-
- if(argc == 0)
- {
- if(!check_jail_command(NULL, START_SCRIPT))
- exit(1);
-
- run_jail_command(NULL, START_ARGS[0], START_ARGS, JAIL_RUN_CONSOLE | JAIL_RUN_STDOUT);
- }
-
- else
- {
- if(!check_jail_command(NULL, argv[0]))
- exit(1);
-
- run_jail_command(NULL, argv[0], argv, JAIL_RUN_CONSOLE | JAIL_RUN_STDOUT);
- }
-
- return 0;
+ int ch, jid;
+ struct jail j;
+ int printjid = 0;
+ struct in_addr in;
+
+ while((ch = getopt(argc, argv, "i")) != -1)
+ {
+ switch(ch)
+ {
+ case 'i':
+ printjid = 1;
+ break;
+
+ case '?':
+ default:
+ usage();
+ }
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ if(argc < 3)
+ usage();
+
+ if(getuid() != 0)
+ errx(1, "must be run as root");
+
+ if(chdir(argv[0]) != 0)
+ err(1, "couldn't change to jail directory: %s", argv[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];
+ j.hostname = argv[1];
+ j.ip_number = ntohl(in.s_addr);
+
+ /* Here's where we actually go into the jail */
+ jid = jail(&j);
+ if(jid == -1)
+ err(1, "couldn't create jail");
+
+ if(printjid)
+ {
+ printf("%d\n", jid);
+ fflush(stdout);
+ }
+
+ argc -= 3;
+ argv += 3;
+
+ if(argc == 0)
+ {
+ if(!check_jail_command(NULL, START_SCRIPT))
+ exit(1);
+
+ run_jail_command(NULL, START_ARGS[0], START_ARGS,
+ JAIL_RUN_CONSOLE | JAIL_RUN_STDOUT);
+ }
+
+ else
+ {
+ if(!check_jail_command(NULL, argv[0]))
+ exit(1);
+
+ run_jail_command(NULL, argv[0], argv,
+ JAIL_RUN_CONSOLE | JAIL_RUN_STDOUT);
+ }
+
+ return 0;
}
static void usage()
{
- fprintf(stderr, "usage: jstart [-i] path hostname ip-number [command ...]\n");
- exit(2);
+ fprintf(stderr, "usage: jstart [-i] path hostname ip-number [command ...]\n");
+ exit(2);
}