On Thu, Aug 07, 2014 at 04:11:23PM -0700, Jarno Rajahalme wrote:
> Acked-by: Jarno Rajahalme <[email protected]>
Thanks!
> > --- a/lib/ofp-actions.c
> > +++ b/lib/ofp-actions.c
> > @@ -1646,6 +1646,72 @@ OVS_INSTRUCTIONS
> > }
> > }
> >
> > +struct ovsinst_xlate {
> > + enum ovs_instruction_type ovsinst;
> > + int ofpit;
> > +};
>
> It would be nice to have comment on the latter ref. OpenFlow
> specs. I?m not so bothered about ?xlate? this time :-)
I decided to s/xlate/map/ here too for consistency.
I added comments:
/* Two-way translation between OVS's internal "OVSINST_*" representation of
* instructions and the "OFPIT_*" representation used in OpenFlow. */
struct ovsinst_map {
enum ovs_instruction_type ovsinst; /* Internal name for instruction. */
int ofpit; /* OFPIT_* number from OpenFlow spec. */
};
> > +/* Converts 'ofpit_bitmap', a bitmap of instructions from an OpenFlow
> > message
> > + * with the given 'version' (OFP11_VERSION or later) into a bitmap whose
> > bits
> > + * correspond to OVSINST_* values, and returns the result. */
> > +uint32_t
> > +ovsinst_bitmap_from_openflow(ovs_be32 ofpit_bitmap, enum ofp_version
> > version)
> > +{
> > + uint32_t ovsinst_bitmap = 0;
> > + const struct ovsinst_xlate *x;
> > +
> > + for (x = get_ovsinst_xlate(version); x->ofpit >= 0; x++) {
> > + if (ofpit_bitmap & htonl(1u << x->ofpit)) {
>
> Maybe ntohl(ofpit_bitmap) once before the loop?
OK, done.
> > + ovsinst_bitmap |= 1u << x->ovsinst;
> > + }
> > + }
> > + return ovsinst_bitmap;
> > +}
> > +
> > static inline struct ofp11_instruction *
> > instruction_next(const struct ofp11_instruction *inst)
> > {
I'll rerun the tests and then apply to master. Thanks again!
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev