X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fmultipath.c;h=1be69646f11e64eeba2a4d656ebc4039d645f3bf;hb=f80022d9df98d29ee41176a4bc6cb91025da84b8;hp=f6a1a0aee4451e4127eb84d730b9f71d42552b28;hpb=e368cad8ecf6dbf272b2a3775b2e3e5e2dc6a5cf;p=sliver-openvswitch.git diff --git a/lib/multipath.c b/lib/multipath.c index f6a1a0aee..1be69646f 100644 --- a/lib/multipath.c +++ b/lib/multipath.c @@ -102,15 +102,18 @@ static uint16_t multipath_algorithm(uint32_t hash, enum nx_mp_algorithm, unsigned int n_links, unsigned int arg); /* Executes 'mp' based on the current contents of 'flow', writing the results - * back into 'flow'. */ + * back into 'flow'. Sets fields in 'wc' that were used to calculate + * the result. */ void -multipath_execute(const struct ofpact_multipath *mp, struct flow *flow) +multipath_execute(const struct ofpact_multipath *mp, struct flow *flow, + struct flow_wildcards *wc) { /* Calculate value to store. */ uint32_t hash = flow_hash_fields(flow, mp->fields, mp->basis); uint16_t link = multipath_algorithm(hash, mp->algorithm, mp->max_link + 1, mp->arg); + flow_mask_hash_fields(flow, wc, mp->fields); nxm_reg_load(&mp->dst, link, flow); }