I don't think this corner case can come up in a real OpenFlow message,
because the presence of the OpenFlow header guarantees that the ofpbuf's
data is nonnull, but it did in a simple test that is coming up in a few
commits.
Signed-off-by: Ben Pfaff <blp@nicira.com>
assert((cookie != NULL) == (cookie_mask != NULL));
assert((cookie != NULL) == (cookie_mask != NULL));
+ cls_rule_init_catchall(rule, priority);
+ if (cookie) {
+ *cookie = *cookie_mask = htonll(0);
+ }
+ if (!match_len) {
+ return 0;
+ }
+
p = ofpbuf_try_pull(b, ROUND_UP(match_len, 8));
if (!p) {
VLOG_DBG_RL(&rl, "nx_match length %u, rounded up to a "
p = ofpbuf_try_pull(b, ROUND_UP(match_len, 8));
if (!p) {
VLOG_DBG_RL(&rl, "nx_match length %u, rounded up to a "
return OFPERR_OFPBMC_BAD_LEN;
}
return OFPERR_OFPBMC_BAD_LEN;
}
- cls_rule_init_catchall(rule, priority);
- if (cookie) {
- *cookie = *cookie_mask = htonll(0);
- }
for (;
(header = nx_entry_ok(p, match_len)) != 0;
p += 4 + NXM_LENGTH(header), match_len -= 4 + NXM_LENGTH(header)) {
for (;
(header = nx_entry_ok(p, match_len)) != 0;
p += 4 + NXM_LENGTH(header), match_len -= 4 + NXM_LENGTH(header)) {