multipath_check(const struct nx_action_multipath *mp, const struct flow *flow)
{
uint32_t n_links = ntohs(mp->max_link) + 1;
- size_t min_n_bits = log_2_floor(n_links) + 1;
+ size_t min_n_bits = log_2_ceil(n_links);
int ofs = nxm_decode_ofs(mp->ofs_nbits);
int n_bits = nxm_decode_n_bits(mp->ofs_nbits);
int error;
ovs_fatal(0, "%s: not enough arguments to multipath action", s_);
}
- memset(mp, 0, sizeof *mp);
- mp->type = htons(OFPAT_VENDOR);
- mp->len = htons(sizeof *mp);
- mp->vendor = htonl(NX_VENDOR_ID);
- mp->subtype = htons(NXAST_MULTIPATH);
+ ofputil_init_NXAST_MULTIPATH(mp);
if (!strcasecmp(fields, "eth_src")) {
mp->fields = htons(NX_HASH_FIELDS_ETH_SRC);
} else if (!strcasecmp(fields, "symmetric_l4")) {