diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-10-10 08:50:11 +0800 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-10-14 08:17:07 +0200 |
commit | 73abc38dc56d6431f43673d995d6e20f562834b4 (patch) | |
tree | bf1976d52e0f2394558dc9fbda2bce6ef87bd807 /sgsnemu/sgsnemu.c | |
parent | be4baa6d97e259514ff32f9cd3bd325aa572cbde (diff) |
sgsnemu: Add '--tun-device' option to specify TUN device name
This way, multiple sgsnemu instances can be runnig in parallel, each
of them creating a different tun device for their respective PDP context
Change-Id: Id12fbadf924a60db255b6d51b9f647aa51dd2e16
Diffstat (limited to 'sgsnemu/sgsnemu.c')
-rw-r--r-- | sgsnemu/sgsnemu.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c index fa295da..c83aebd 100644 --- a/sgsnemu/sgsnemu.c +++ b/sgsnemu/sgsnemu.c @@ -84,6 +84,7 @@ int echoversion = 1; /* First try this version */ struct { int debug; /* Print debug messages */ int createif; /* Create local network interface */ + char *tun_dev_name; struct in_addr netaddr, destaddr, net; /* Network interface */ size_t prefixlen; char *ipup, *ipdown; /* Filename of scripts */ @@ -289,6 +290,8 @@ int process_options(int argc, char **argv) printf("contexts: %d\n", args_info.contexts_arg); printf("timelimit: %d\n", args_info.timelimit_arg); printf("createif: %d\n", args_info.createif_flag); + if (args_info.tun_device_arg) + printf("tun-device: %d\n", args_info.tun_device_arg); if (args_info.ipup_arg) printf("ipup: %s\n", args_info.ipup_arg); if (args_info.ipdown_arg) @@ -345,6 +348,8 @@ int process_options(int argc, char **argv) printf("contexts: %d\n", args_info.contexts_arg); printf("timelimit: %d\n", args_info.timelimit_arg); printf("createif: %d\n", args_info.createif_flag); + if (args_info.tun_device_arg) + printf("tun-device: %d\n", args_info.tun_device_arg); if (args_info.ipup_arg) printf("ipup: %s\n", args_info.ipup_arg); if (args_info.ipdown_arg) @@ -863,6 +868,7 @@ int process_options(int argc, char **argv) /* createif */ options.createif = args_info.createif_flag; + options.tun_dev_name = args_info.tun_device_arg; /* net */ /* Store net as in_addr net and mask */ @@ -1525,7 +1531,7 @@ int main(int argc, char **argv) if (options.createif) { printf("Setting up interface\n"); /* Create a tunnel interface */ - if (tun_new((struct tun_t **)&tun, NULL)) { + if (tun_new((struct tun_t **)&tun, options.tun_dev_name)) { SYS_ERR(DSGSN, LOGL_ERROR, 0, "Failed to create tun"); exit(1); |