The other cls_rule_*() functions that take IPv6 addresses take a pointer
to an in6_addr, so cls_rule_set_nd_target() should as well for consistency.
Possibly this is more efficient also, although I guess it doesn't really
make much of a difference either way.
}
void
-cls_rule_set_nd_target(struct cls_rule *rule, const struct in6_addr target)
+cls_rule_set_nd_target(struct cls_rule *rule, const struct in6_addr *target)
{
rule->wc.wildcards &= ~FWW_ND_TARGET;
- rule->flow.nd_target = target;
+ rule->flow.nd_target = *target;
}
/* Returns true if 'a' and 'b' have the same priority, wildcard the same
void cls_rule_set_ipv6_dst(struct cls_rule *, const struct in6_addr *);
bool cls_rule_set_ipv6_dst_masked(struct cls_rule *, const struct in6_addr *,
const struct in6_addr *);
-void cls_rule_set_nd_target(struct cls_rule *, const struct in6_addr);
+void cls_rule_set_nd_target(struct cls_rule *, const struct in6_addr *);
bool cls_rule_equal(const struct cls_rule *, const struct cls_rule *);
uint32_t cls_rule_hash(const struct cls_rule *, uint32_t basis);
case F_ND_TARGET:
str_to_ipv6(value, &ipv6, NULL);
- cls_rule_set_nd_target(rule, ipv6);
+ cls_rule_set_nd_target(rule, &ipv6);
break;
case F_ND_SLL: