VLOG_WARN_RL(&rl, "bundle_load action requires at least 16 bit "
"destination.");
error = ofp_mkerr(OFPET_BAD_ACTION, OFPBAC_BAD_ARGUMENT);
- } else {
- error = nxm_dst_check(nab->dst, ofs, n_bits, flow) || error;
+ } else if (!error) {
+ error = nxm_dst_check(nab->dst, ofs, n_bits, flow);
}
}
const char *slave_type, const char *dst,
const char *slave_delim)
{
+ enum ofputil_action_code code;
struct nx_action_bundle *nab;
uint16_t n_slaves;
s, slave_delim);
}
- b->l2 = ofpbuf_put_zeros(b, sizeof *nab);
+ code = dst ? OFPUTIL_NXAST_BUNDLE_LOAD : OFPUTIL_NXAST_BUNDLE;
+ b->l2 = ofputil_put_action(code, b);
n_slaves = 0;
for (;;) {
ovs_be16 slave_be;
char *slave;
- slave = strtok_r(NULL, ", ", save_ptr);
+ slave = strtok_r(NULL, ", [", save_ptr);
if (!slave || n_slaves >= BUNDLE_MAX_SLAVES) {
break;
}
}
nab = b->l2;
- nab->type = htons(OFPAT_VENDOR);
nab->len = htons(b->size - ((char *) b->l2 - (char *) b->data));
- nab->vendor = htonl(NX_VENDOR_ID);
- nab->subtype = htons(dst ? NXAST_BUNDLE_LOAD: NXAST_BUNDLE);
nab->n_slaves = htons(n_slaves);
nab->basis = htons(atoi(basis));