static int replace_entry(const char *chain, const char *table, struct arptables_command_state *cs, unsigned int rulenum, const struct in_addr *saddr, const struct in_addr *daddr, bool verbose, struct nft_handle *h) { cs->fw.arp.src.s_addr = saddr->s_addr; cs->fw.arp.tgt.s_addr = daddr->s_addr; return nft_rule_replace(h, chain, table, cs, rulenum, verbose); }
static int replace_entry(const char *chain, const char *table, struct iptables_command_state *cs, unsigned int rulenum, int family, const struct addr_mask s, const struct addr_mask d, bool verbose, struct nft_handle *h) { if (family == AF_INET) { cs->fw.ip.src.s_addr = s.addr.v4->s_addr; cs->fw.ip.dst.s_addr = d.addr.v4->s_addr; cs->fw.ip.smsk.s_addr = s.mask.v4->s_addr; cs->fw.ip.dmsk.s_addr = d.mask.v4->s_addr; } else if (family == AF_INET6) { memcpy(&cs->fw6.ipv6.src, s.addr.v6, sizeof(struct in6_addr)); memcpy(&cs->fw6.ipv6.dst, d.addr.v6, sizeof(struct in6_addr)); memcpy(&cs->fw6.ipv6.smsk, s.mask.v6, sizeof(struct in6_addr)); memcpy(&cs->fw6.ipv6.dmsk, d.mask.v6, sizeof(struct in6_addr)); } else return 1; return nft_rule_replace(h, chain, table, cs, rulenum, verbose); }