Signed-off-by: Ben Pfaff <b...@nicira.com> --- lib/meta-flow.c | 16 ++++++++++++---- 1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/lib/meta-flow.c b/lib/meta-flow.c index a8cfd74..84ba88b 100644 --- a/lib/meta-flow.c +++ b/lib/meta-flow.c @@ -2262,19 +2262,27 @@ mf_write_subfield(const struct mf_subfield *sf, const union mf_subvalue *x, bitwise_one ( &mask, field->n_bytes, sf->ofs, sf->n_bits); mf_set(field, &value, &mask, rule); } + +/* Makes subfield 'sf' within 'rule' exactly match the 'sf->n_bits' + * least-significant bits of 'x'. + * + * Example: suppose that 'sf->field' is originally the following 2-byte field + * in 'rule': * * value == 0xe00a == 2#1110000000001010 * mask == 0xfc3f == 2#1111110000111111 * - * The call mf_set_subfield(mf, 0x55, 8, 7, rule) would have the following - * effect (note that 0x55 is 2#1010101): + * The call mf_set_subfield(sf, 0x55, 8, 7, rule), where sf->ofs == 8 and + * sf->n_bits == 7 would have the following effect (note that 0x55 is + * 2#1010101): * * value == 0xd50a == 2#1101010100001010 * mask == 0xff3f == 2#1111111100111111 + * ^^^^^^^ affected bits * * The caller is responsible for ensuring that the result will be a valid - * wildcard pattern for 'mf'. The caller is responsible for ensuring that - * 'rule' meets 'mf''s prerequisites. */ + * wildcard pattern for 'sf->field'. The caller is responsible for ensuring + * that 'rule' meets 'sf->field''s prerequisites. */ void mf_set_subfield(const struct mf_subfield *sf, uint64_t x, struct cls_rule *rule) -- 1.7.2.5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev