With a small nit below, Acked-by: Jarno Rajahalme <ja...@ovn.org>
> On Jan 18, 2016, at 11:27 PM, Ben Pfaff <b...@ovn.org> wrote: > (snip) > +struct ofp14_async_prop { > + uint64_t prop_type; > + enum ofputil_async_msg_type oam; > + bool master; > + uint32_t allowed10, allowed14; > +}; > + > +#define AP_PAIR(SLAVE_PROP_TYPE, OAM, A10, A14) \ > + { SLAVE_PROP_TYPE, OAM, false, A10, (A14) ? (A14) : (A10) }, \ > + { (SLAVE_PROP_TYPE + 1), OAM, true, A10, (A14) ? (A14) : (A10) } > + > +static const struct ofp14_async_prop async_props[] = { > + AP_PAIR( 0, OAM_PACKET_IN, OFPR10_BITS, OFPR14_BITS), > + AP_PAIR( 2, OAM_PORT_STATUS, (1 << OFPPR_N_REASONS) - 1, 0), > + AP_PAIR( 4, OAM_FLOW_REMOVED, (1 << OVS_OFPRR_NONE) - 1, 0), > + AP_PAIR( 6, OAM_ROLE_STATUS, (1 << OFPCRR_N_REASONS) - 1, 0), > + AP_PAIR( 8, OAM_TABLE_STATUS, OFPTR_BITS, 0), > + AP_PAIR(10, OAM_REQUESTFORWARD, (1 << OFPRFR_N_REASONS) - 1, 0), > +}; > + > +static const struct ofp14_async_prop * > +get_ofp14_async_config_prop_by_prop_type(uint64_t prop_type) > +{ > + for (const struct ofp14_async_prop *ap = async_props; > + ap < &async_props[ARRAY_SIZE(async_props)]; ap++) { There are at least three uses for this for-loop, maybe define a macro for this and use it instead? > + if (prop_type == ap->prop_type) { > + return ap; > + } > + } > + return NULL; > +} > + > +static const struct ofp14_async_prop * > +get_ofp14_async_config_prop_by_oam(enum ofputil_async_msg_type oam, > + bool master) > +{ > + for (const struct ofp14_async_prop *ap = async_props; > + ap < &async_props[ARRAY_SIZE(async_props)]; ap++) { > + if (ap->oam == oam && ap->master == master) { > + return ap; > + } > + } > + return NULL; > +} > + (snip) _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev