aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--init.c3
-rw-r--r--tun.c3
-rw-r--r--tun.h2
3 files changed, 5 insertions, 3 deletions
diff --git a/init.c b/init.c
index 1712cb2..2eb1896 100644
--- a/init.c
+++ b/init.c
@@ -425,7 +425,8 @@ do_persist_tuntap (const struct options *options)
msg (M_FATAL|M_OPTERR,
"options --mktun or --rmtun should only be used together with --dev");
tuncfg (options->dev, options->dev_type, options->dev_node,
- options->tun_ipv6, options->persist_mode);
+ options->tun_ipv6, options->persist_mode,
+ &options->tuntap_options);
if (options->persist_mode && options->lladdr)
set_lladdr(options->dev, options->lladdr, NULL);
return true;
diff --git a/tun.c b/tun.c
index 3166b32..abfd760 100644
--- a/tun.c
+++ b/tun.c
@@ -1163,13 +1163,14 @@ open_tun (const char *dev, const char *dev_type, const char *dev_node, bool ipv6
#ifdef TUNSETPERSIST
void
-tuncfg (const char *dev, const char *dev_type, const char *dev_node, bool ipv6, int persist_mode)
+tuncfg (const char *dev, const char *dev_type, const char *dev_node, bool ipv6, int persist_mode, const struct tuntap_options *options)
{
struct tuntap *tt;
ALLOC_OBJ (tt, struct tuntap);
clear_tuntap (tt);
tt->type = dev_type_enum (dev, dev_type);
+ tt->options = *options;
open_tun (dev, dev_type, dev_node, ipv6, tt);
if (ioctl (tt->fd, TUNSETPERSIST, persist_mode) < 0)
msg (M_ERR, "Cannot ioctl TUNSETPERSIST(%d) %s", persist_mode, dev);
diff --git a/tun.h b/tun.h
index 508e4a5..4d66533 100644
--- a/tun.h
+++ b/tun.h
@@ -204,7 +204,7 @@ int write_tun (struct tuntap* tt, uint8_t *buf, int len);
int read_tun (struct tuntap* tt, uint8_t *buf, int len);
void tuncfg (const char *dev, const char *dev_type, const char *dev_node,
- bool ipv6, int persist_mode);
+ bool ipv6, int persist_mode, const struct tuntap_options *options);
const char *guess_tuntap_dev (const char *dev,
const char *dev_type,