Later in this series we will introduce a new initialization function
which needs access to the 'no_map_gw' flag. This flag is currently
a local variable inside the conf() call, where it is too early to
call the new function. The new function needs both ctx->hash_secret
and a valid ctx->fd_tap to be set, neither of which are initialized
at that point.
We therefore add the 'no_map_flag' to struct ctx, so it can be carried
along and used by later functions.
Signed-off-by: Jon Maloy
---
conf.c | 10 +++++-----
passt.h | 1 +
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/conf.c b/conf.c
index 66b9e63..6143b54 100644
--- a/conf.c
+++ b/conf.c
@@ -1410,7 +1410,7 @@ fail:
*/
void conf(struct ctx *c, int argc, char **argv)
{
- int netns_only = 0, no_map_gw = 0;
+ int netns_only = 0;
const struct option options[] = {
{"debug", no_argument, NULL, 'd' },
{"quiet", no_argument, NULL, 'q' },
@@ -1442,7 +1442,7 @@ void conf(struct ctx *c, int argc, char **argv)
{"no-ra", no_argument, &c->no_ra, 1 },
{"no-splice", no_argument, &c->no_splice, 1 },
{"freebind", no_argument, &c->freebind, 1 },
- {"no-map-gw", no_argument, &no_map_gw, 1 },
+ {"no-map-gw", no_argument, &c->no_map_gw, 1 },
{"ipv4-only", no_argument, NULL, '4' },
{"ipv6-only", no_argument, NULL, '6' },
{"one-off", no_argument, NULL, '1' },
@@ -1656,7 +1656,7 @@ void conf(struct ctx *c, int argc, char **argv)
break;
case 21:
conf_nat(optarg, &c->ip4.map_host_loopback,
- &c->ip6.map_host_loopback, &no_map_gw);
+ &c->ip6.map_host_loopback, &c->no_map_gw);
break;
case 22:
conf_nat(optarg, &c->ip4.map_guest_addr,
@@ -2005,11 +2005,11 @@ void conf(struct ctx *c, int argc, char **argv)
}
}
- if (c->ifi4 && !no_map_gw &&
+ if (c->ifi4 && !c->no_map_gw &&
IN4_IS_ADDR_UNSPECIFIED(&c->ip4.map_host_loopback))
c->ip4.map_host_loopback = c->ip4.guest_gw;
- if (c->ifi6 && !no_map_gw &&
+ if (c->ifi6 && !c->no_map_gw &&
IN6_IS_ADDR_UNSPECIFIED(&c->ip6.map_host_loopback))
c->ip6.map_host_loopback = c->ip6.guest_gw;
diff --git a/passt.h b/passt.h
index 0075eb4..830bc36 100644
--- a/passt.h
+++ b/passt.h
@@ -310,6 +310,7 @@ struct ctx {
int no_ndp;
int no_ra;
int no_splice;
+ int no_map_gw;
int host_lo_to_ns_lo;
int freebind;
--
2.50.1