aboutgitcodebugslistschat
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2023-03-27 19:35:26 +0200
committerStefano Brivio <sbrivio@redhat.com>2023-03-29 13:48:12 +0200
commit98a9a7d9e59f50f4b42e0dd7f52f45241ac60a57 (patch)
treec930cd7a516058ea162391a081fa7ad15c9f3cf6
parent33d88f79d920699be5162e1f5d6901da0c02b005 (diff)
downloadpasst-98a9a7d9e59f50f4b42e0dd7f52f45241ac60a57.tar
passt-98a9a7d9e59f50f4b42e0dd7f52f45241ac60a57.tar.gz
passt-98a9a7d9e59f50f4b42e0dd7f52f45241ac60a57.tar.bz2
passt-98a9a7d9e59f50f4b42e0dd7f52f45241ac60a57.tar.lz
passt-98a9a7d9e59f50f4b42e0dd7f52f45241ac60a57.tar.xz
passt-98a9a7d9e59f50f4b42e0dd7f52f45241ac60a57.tar.zst
passt-98a9a7d9e59f50f4b42e0dd7f52f45241ac60a57.zip
conf: Allow binding to ports on an interface without a specific address
Somebody might want to bind listening sockets to a specific interface, but not a specific address, and there isn't really a reason to prevent that. For example: -t %eth0/2022 Alternatively, we support options such as -t 0.0.0.0%eth0/2022 and -t ::%eth0/2022, but not together, for the same port. Enable this kind of syntax and add examples to the man page. Reported-by: Paul Holzinger <pholzing@redhat.com> Link: https://github.com/containers/podman/issues/14425#issuecomment-1485192195 Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rw-r--r--conf.c4
-rw-r--r--passt.16
2 files changed, 9 insertions, 1 deletions
diff --git a/conf.c b/conf.c
index 04e9956..f519a6a 100644
--- a/conf.c
+++ b/conf.c
@@ -263,7 +263,9 @@ static void conf_ports(const struct ctx *c, char optname, const char *optarg,
ifname++;
}
- if (inet_pton(AF_INET, buf, addr))
+ if (ifname == buf + 1) /* Interface without address */
+ addr = NULL;
+ else if (inet_pton(AF_INET, buf, addr))
af = AF_INET;
else if (inet_pton(AF_INET6, buf, addr))
af = AF_INET6;
diff --git a/passt.1 b/passt.1
index 4c90634..cb7ae4e 100644
--- a/passt.1
+++ b/passt.1
@@ -385,6 +385,9 @@ Forward local port 22, bound to 192.0.2.1, to port 22 on the guest
-t 192.0.2.1%eth0/22
Forward local port 22, bound to 192.0.2.1 and interface eth0, to port 22
.TP
+-t %eth0/22
+Forward local port 22, bound to any address on interface eth0, to port 22
+.TP
-t 2000-5000,~3000-3010
Forward local ports between 2000 and 5000, except for those between 3000 and
3010
@@ -467,6 +470,9 @@ Forward local port 22, bound to 192.0.2.1, to port 22 in the target namespace
-t 192.0.2.1%eth0/22
Forward local port 22, bound to 192.0.2.1 and interface eth0, to port 22
.TP
+-t %eth0/22
+Forward local port 22, bound to any address on interface eth0, to port 22
+.TP
-t 2000-5000,~3000-3010
Forward local ports between 2000 and 5000, except for those between 3000 and
3010