return ret;
}
-static void parse_ifname(const char *name, unsigned int len,
- char *dst, unsigned char *mask)
+static void parse_ifname(const char *name, unsigned int len, char *dst)
{
if (len == 0)
return;
memcpy(dst, name, len);
- if (name[len - 1] == '\0') {
- if (mask)
- memset(mask, 0xff, strlen(name) + 1);
+ if (name[len - 1] == '\0')
return;
- }
if (len >= IFNAMSIZ)
return;
if (len >= IFNAMSIZ)
return;
dst[len++] = 0;
- if (mask)
- memset(mask, 0xff, len - 2);
}
-static void parse_invalid_iface(char *iface, unsigned char *mask,
- uint8_t *invflags, uint8_t invbit)
+static void parse_invalid_iface(char *iface, uint8_t *invflags, uint8_t invbit)
{
if (*invflags & invbit || strcmp(iface, "INVAL/D"))
return;
*invflags |= invbit;
iface[0] = '+';
iface[1] = '\0';
- mask[0] = 0xff;
- mask[1] = 0xff;
- memset(mask + 2, 0, IFNAMSIZ - 2);
}
static uint32_t get_meta_mask(struct nft_xt_ctx *ctx, enum nft_registers sreg)
}
int parse_meta(struct nft_xt_ctx *ctx, struct nftnl_expr *e, uint8_t key,
- char *iniface, unsigned char *iniface_mask,
- char *outiface, unsigned char *outiface_mask, uint8_t *invflags)
+ char *iniface, char *outiface, uint8_t *invflags)
{
uint32_t value;
const void *ifname;
*invflags |= IPT_INV_VIA_IN;
if_indextoname(value, iniface);
-
- memset(iniface_mask, 0xff, strlen(iniface)+1);
break;
case NFT_META_OIF:
value = nftnl_expr_get_u32(e, NFTNL_EXPR_CMP_DATA);
*invflags |= IPT_INV_VIA_OUT;
if_indextoname(value, outiface);
-
- memset(outiface_mask, 0xff, strlen(outiface)+1);
break;
case NFT_META_BRI_IIFNAME:
case NFT_META_IIFNAME:
if (nftnl_expr_get_u32(e, NFTNL_EXPR_CMP_OP) == NFT_CMP_NEQ)
*invflags |= IPT_INV_VIA_IN;
- parse_ifname(ifname, len, iniface, iniface_mask);
- parse_invalid_iface(iniface, iniface_mask,
- invflags, IPT_INV_VIA_IN);
+ parse_ifname(ifname, len, iniface);
+ parse_invalid_iface(iniface, invflags, IPT_INV_VIA_IN);
break;
case NFT_META_BRI_OIFNAME:
case NFT_META_OIFNAME:
if (nftnl_expr_get_u32(e, NFTNL_EXPR_CMP_OP) == NFT_CMP_NEQ)
*invflags |= IPT_INV_VIA_OUT;
- parse_ifname(ifname, len, outiface, outiface_mask);
- parse_invalid_iface(outiface, outiface_mask,
- invflags, IPT_INV_VIA_OUT);
+ parse_ifname(ifname, len, outiface);
+ parse_invalid_iface(outiface, invflags, IPT_INV_VIA_OUT);
break;
case NFT_META_MARK:
parse_meta_mark(ctx, e);