aboutgitcodebugslistschat
diff options
context:
space:
mode:
-rw-r--r--conf.c10
-rw-r--r--passt.16
2 files changed, 11 insertions, 5 deletions
diff --git a/conf.c b/conf.c
index d3d58a7..404c7bc 100644
--- a/conf.c
+++ b/conf.c
@@ -665,8 +665,7 @@ static unsigned int conf_ip4(unsigned int ifi,
if (MAC_IS_ZERO(mac))
nl_link(0, ifi, mac, 0, 0);
- if (IN4_IS_ADDR_UNSPECIFIED(&ip4->gw) ||
- IN4_IS_ADDR_UNSPECIFIED(&ip4->addr) ||
+ if (IN4_IS_ADDR_UNSPECIFIED(&ip4->addr) ||
MAC_IS_ZERO(mac))
return 0;
@@ -708,7 +707,6 @@ static unsigned int conf_ip6(unsigned int ifi,
nl_link(0, ifi, mac, 0, 0);
if (IN6_IS_ADDR_UNSPECIFIED(&ip6->gw) ||
- IN6_IS_ADDR_UNSPECIFIED(&ip6->addr) ||
IN6_IS_ADDR_UNSPECIFIED(&ip6->addr_ll) ||
MAC_IS_ZERO(mac))
return 0;
@@ -1660,6 +1658,12 @@ void conf(struct ctx *c, int argc, char **argv)
(*c->ip6.ifname_out && !c->ifi6))
die("External interface not usable");
+ if (c->ifi4 && IN4_IS_ADDR_UNSPECIFIED(&c->ip4.gw))
+ c->no_map_gw = c->no_dhcp = 1;
+
+ if (c->ifi6 && IN6_IS_ADDR_UNSPECIFIED(&c->ip6.gw))
+ c->no_map_gw = 1;
+
/* Inbound port options can be parsed now (after IPv4/IPv6 settings) */
optind = 1;
do {
diff --git a/passt.1 b/passt.1
index ee2803a..96ce96e 100644
--- a/passt.1
+++ b/passt.1
@@ -281,7 +281,8 @@ guest or target namespace will be silently dropped.
.TP
.BR \-\-no-dhcp
Disable the DHCP server. DHCP client requests coming from guest or target
-namespace will be silently dropped.
+namespace will be silently dropped. Implied if there is no gateway on the
+selected IPv4 default route.
.TP
.BR \-\-no-ndp
@@ -301,7 +302,8 @@ namespace will be ignored.
.TP
.BR \-\-no-map-gw
Don't remap TCP connections and untracked UDP traffic, with the gateway address
-as destination, to the host.
+as destination, to the host. Implied if there is no gateway on the selected
+default route for any of the enabled address families.
.TP
.BR \-4 ", " \-\-ipv4-only