diff options
Diffstat (limited to 'src/utils.c')
| -rw-r--r-- | src/utils.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/utils.c b/src/utils.c index c4bbd4f..d73c5f6 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); } |
