X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=lib%2Fdpif-netdev.c;h=8794ca036c3fb47f419173c5e26a1ad9ca4f775d;hb=ca8d344271ab84666353b3f3456ac282af5722f5;hp=3bf130db1d4dad48bd9c8035252987832563bfe4;hpb=efa6665e4d72e4d4f7cc971fb0df54278dba3e47;p=cascardo%2Fovs.git diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 3bf130db1..8794ca036 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -1858,33 +1858,29 @@ dpif_netdev_mask_from_nlattrs(const struct nlattr *key, uint32_t key_len, uint32_t mask_key_len, const struct flow *flow, struct flow_wildcards *wc) { - if (mask_key_len) { - enum odp_key_fitness fitness; - - fitness = odp_flow_key_to_mask_udpif(mask_key, mask_key_len, key, - key_len, &wc->masks, flow); - if (fitness) { - /* This should not happen: it indicates that - * odp_flow_key_from_mask() and odp_flow_key_to_mask() - * disagree on the acceptable form of a mask. Log the problem - * as an error, with enough details to enable debugging. */ - static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5); - - if (!VLOG_DROP_ERR(&rl)) { - struct ds s; - - ds_init(&s); - odp_flow_format(key, key_len, mask_key, mask_key_len, NULL, &s, - true); - VLOG_ERR("internal error parsing flow mask %s (%s)", - ds_cstr(&s), odp_key_fitness_to_string(fitness)); - ds_destroy(&s); - } + enum odp_key_fitness fitness; + + fitness = odp_flow_key_to_mask_udpif(mask_key, mask_key_len, key, + key_len, wc, flow); + if (fitness) { + /* This should not happen: it indicates that + * odp_flow_key_from_mask() and odp_flow_key_to_mask() + * disagree on the acceptable form of a mask. Log the problem + * as an error, with enough details to enable debugging. */ + static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5); + + if (!VLOG_DROP_ERR(&rl)) { + struct ds s; - return EINVAL; + ds_init(&s); + odp_flow_format(key, key_len, mask_key, mask_key_len, NULL, &s, + true); + VLOG_ERR("internal error parsing flow mask %s (%s)", + ds_cstr(&s), odp_key_fitness_to_string(fitness)); + ds_destroy(&s); } - } else { - flow_wildcards_init_for_packet(wc, flow); + + return EINVAL; } return 0;