aboutsummaryrefslogtreecommitdiffstats
path: root/src/dumm/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dumm/main.c')
-rw-r--r--src/dumm/main.c42
1 files changed, 28 insertions, 14 deletions
diff --git a/src/dumm/main.c b/src/dumm/main.c
index 8d4c3e688..bd764017a 100644
--- a/src/dumm/main.c
+++ b/src/dumm/main.c
@@ -292,6 +292,16 @@ static void guest(char *name)
}
}
+
+/**
+ * create an bridge
+ */
+static void create_bridge(char *name)
+{
+ dumm->create_bridge(dumm, name);
+
+}
+
/**
* create an UML guest
*/
@@ -299,11 +309,13 @@ static void create_guest(char *line)
{
enum {
NAME = 0,
+ KERNEL,
MASTER,
MEMORY,
};
char *const opts[] = {
[NAME] = "name",
+ [KERNEL] = "kernel",
[MASTER] = "master",
[MEMORY] = "memory",
NULL
@@ -311,7 +323,8 @@ static void create_guest(char *line)
char *value;
char *name = NULL;
char *master = NULL;
- int mem = 0;
+ char *kernel = NULL;
+ int mem = 128;
while (TRUE)
{
@@ -320,6 +333,9 @@ static void create_guest(char *line)
case NAME:
name = value;
continue;
+ case KERNEL:
+ kernel = value;
+ continue;
case MASTER:
master = value;
continue;
@@ -334,21 +350,17 @@ static void create_guest(char *line)
}
break;
}
- if (name == NULL)
+ if (name == NULL || master == NULL || kernel == NULL)
{
- printf("option 'name' is required.\n");
+ printf("too few arguments!\n");
help();
return;
}
- if (master == NULL)
- {
- master = "master";
- }
if (mem == 0)
{
mem = 128;
}
- if (dumm->create_guest(dumm, name, master, mem))
+ if (dumm->create_guest(dumm, name, kernel, master, mem))
{
printf("guest '%s' created\n", name);
guest(name);
@@ -406,6 +418,7 @@ int main(int argc, char *argv[])
{
char *line = NULL;
struct sigaction action;
+ char *dir = ".";
while (TRUE)
{
@@ -420,11 +433,7 @@ int main(int argc, char *argv[])
case -1:
break;
case 'd':
- if (chdir(optarg))
- {
- printf("changing to directory '%s' failed.\n", optarg);
- return 1;
- }
+ dir = optarg;
continue;
case 'h':
usage();
@@ -436,7 +445,7 @@ int main(int argc, char *argv[])
break;
}
- dumm = dumm_create();
+ dumm = dumm_create(dir);
memset(&action, 0, sizeof(action));
action.sa_sigaction = signal_action;
@@ -456,6 +465,7 @@ int main(int argc, char *argv[])
QUIT = 0,
HELP,
CREATE,
+ BRIDGE,
LIST,
GUEST,
};
@@ -463,6 +473,7 @@ int main(int argc, char *argv[])
[QUIT] = "quit",
[HELP] = "help",
[CREATE] = "create",
+ [BRIDGE] = "bridge",
[LIST] = "list",
[GUEST] = "guest",
NULL
@@ -498,6 +509,9 @@ int main(int argc, char *argv[])
case CREATE:
create_guest(pos);
continue;
+ case BRIDGE:
+ create_bridge(pos);
+ continue;
case LIST:
list();
continue;