The asterisk left in place becomes part of the prefix by accident and is thus both included when matching interface names as well as dumped back to user space. Fixes: f30eae26d813e ("utils: Add helpers for interface name wildcards") Signed-off-by: Phil Sutter --- This code is currently unused by nftables at least since it builds the netlink message itself. --- src/utils.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/utils.c b/src/utils.c index c4bbd4f7ed171..d73c5f6175802 100644 --- a/src/utils.c +++ b/src/utils.c @@ -164,9 +164,16 @@ static bool is_wildcard_str(const char *str) void nftnl_attr_put_ifname(struct nlmsghdr *nlh, const char *ifname) { - uint16_t attr = is_wildcard_str(ifname) ? - NFTA_DEVICE_PREFIX : NFTA_DEVICE_NAME; + uint16_t attr = NFTA_DEVICE_NAME; + char pfx[IFNAMSIZ]; + if (is_wildcard_str(ifname)) { + snprintf(pfx, IFNAMSIZ, "%s", ifname); + pfx[strlen(pfx) - 1] = '\0'; + + attr = NFTA_DEVICE_PREFIX; + ifname = pfx; + } mnl_attr_put_strz(nlh, attr, ifname); } -- 2.51.0