aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sbin/natd/natd.87
-rw-r--r--sbin/natd/natd.c6
2 files changed, 9 insertions, 4 deletions
diff --git a/sbin/natd/natd.8 b/sbin/natd/natd.8
index a6bf1b664a4a..90f5c13e46b1 100644
--- a/sbin/natd/natd.8
+++ b/sbin/natd/natd.8
@@ -315,9 +315,12 @@ will be used as a default.
Use
.Ar address
as the aliasing address.
-If this option is not specified, the
+Either this or the
.Fl interface
-option must be used.
+option must be used (but not both),
+if the
+.Fl proxy_only
+option is not specified.
The specified address is usually the address assigned to the
.Dq public
network interface.
diff --git a/sbin/natd/natd.c b/sbin/natd/natd.c
index 38f923fe5424..40f68c26e260 100644
--- a/sbin/natd/natd.c
+++ b/sbin/natd/natd.c
@@ -169,9 +169,11 @@ int main (int argc, char** argv)
openlog ("natd", LOG_CONS | LOG_PID | (verbose ? LOG_PERROR : 0),
logFacility);
/*
- * Check that valid aliasing address has been given.
+ * If not doing the transparent proxying only,
+ * check that valid aliasing address has been given.
*/
- if (aliasAddr.s_addr == INADDR_NONE && ifName == NULL)
+ if (aliasAddr.s_addr == INADDR_NONE && ifName == NULL &&
+ !(PacketAliasSetMode(0,0) & PKT_ALIAS_PROXY_ONLY))
errx (1, "aliasing address not given");
if (aliasAddr.s_addr != INADDR_NONE && ifName != NULL)