On Tue, Oct 11, 2022 at 01:32:20AM +0200, Stefano
Brivio wrote:
[...]
@@ -231,6 +231,14 @@ static int conf_ports(const struct ctx *c, char optname, const char
*optarg,
if (optname != 't' && optname != 'u')
goto bad;
+ if ((ifname = strchr(buf, '%'))) {
+ if (spec - ifname >= IFNAMSIZ - 1)
+ goto bad;
+
+ *ifname = 0;
+ ifname++;
+ }
+
if (inet_pton(AF_INET, buf, addr))
af = AF_INET;
else if (inet_pton(AF_INET6, buf, addr))
@@ -278,9 +286,9 @@ static int conf_ports(const struct ctx *c, char optname, const char
*optarg,
bitmap_set(fwd->map, i);
if (optname == 't')
- tcp_sock_init(c, 0, af, addr, i);
+ tcp_sock_init(c, 0, af, addr, NULL, i);
else if (optname == 'u')
- udp_sock_init(c, 0, af, addr, i);
+ udp_sock_init(c, 0, af, addr, NULL, i);
AFAICT nothing prevents specifying an interface with the exclude only
case, in which case shouldn't you also be passing ifname here?
Right, good catch, I'll fix that.
--
Stefano