classifier: Change cls_rule_set_nd_target() to take a pointer.
authorBen Pfaff <blp@nicira.com>
Mon, 12 Sep 2011 17:57:28 +0000 (10:57 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 13 Sep 2011 18:46:08 +0000 (11:46 -0700)
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.

lib/classifier.c
lib/classifier.h
lib/ofp-parse.c

index d1f9d5d..fef4014 100644 (file)
@@ -390,10 +390,10 @@ cls_rule_set_ipv6_dst_masked(struct cls_rule *rule, const struct in6_addr *dst,
 }
 
 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
index 0dfb1e7..20b9590 100644 (file)
@@ -115,7 +115,7 @@ bool cls_rule_set_ipv6_src_masked(struct cls_rule *, const struct in6_addr *,
 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);
index e352bd4..2d4f011 100644 (file)
@@ -813,7 +813,7 @@ parse_field_value(struct cls_rule *rule, enum field_index index,
 
     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: