On 7/28/25 8:57 AM, Ales Musil wrote: > There have been multiple definitions of the put_load() function > through out the code base. There have also been variation of > put_load that allows to set BE array instead of LE constant. > Move both variations to ovn-util and djust the code as needed. > > Signed-off-by: Ales Musil <amu...@redhat.com> > ---
Hi Ales, Thanks for the cleanup! > controller/lflow.c | 51 +++++++------------------------------------ > controller/physical.c | 12 ---------- > controller/pinctrl.c | 16 -------------- > lib/actions.c | 12 ---------- > lib/ovn-util.c | 19 ++++++++++++++++ > lib/ovn-util.h | 6 +++++ > 6 files changed, 33 insertions(+), 83 deletions(-) > [...] > diff --git a/lib/ovn-util.c b/lib/ovn-util.c > index d7e236059..c8d10f493 100644 > --- a/lib/ovn-util.c > +++ b/lib/ovn-util.c > @@ -1484,3 +1484,22 @@ ovn_mirror_port_name(const char *datapath_name, > { > return xasprintf("mp-%s-%s", datapath_name, port_name); > } > + > +void > +put_load_be(const void *value, size_t len, enum mf_field_id dst, > + size_t ofs, size_t n_bits, struct ofpbuf *ofpacts) > +{ > + struct ofpact_set_field *sf = ofpact_put_set_field(ofpacts, > + mf_from_id(dst), NULL, > + NULL); > + bitwise_copy(value, len, 0, sf->value, sf->field->n_bytes, ofs, n_bits); > + bitwise_one(ofpact_set_field_mask(sf), sf->field->n_bytes, ofs, n_bits); > +} > + I find the name "put_load_be()" confusing. That's because the function copies the value in host endianess which may or may not be BE. Would it make sense to call this function put_load_bytes()? > +void > +put_load(uint64_t value, enum mf_field_id dst, int ofs, int n_bits, > + struct ofpbuf *ofpacts) > +{ > + ovs_be64 n_value = htonll(value); > + put_load_be(&n_value, 8, dst, ofs, n_bits, ofpacts); > +} > diff --git a/lib/ovn-util.h b/lib/ovn-util.h > index c05bfc53b..eddb07f4d 100644 > --- a/lib/ovn-util.h > +++ b/lib/ovn-util.h > @@ -16,6 +16,7 @@ > #ifndef OVN_UTIL_H > #define OVN_UTIL_H 1 > > +#include "openvswitch/meta-flow.h" > #include "ovsdb-idl.h" > #include "lib/packets.h" > #include "lib/sset.h" > @@ -504,6 +505,11 @@ const struct sbrec_port_binding *lport_lookup_by_name( > struct ovsdb_idl_index *sbrec_port_binding_by_name, > const char *name); > > +void put_load_be(const void *value, size_t len, enum mf_field_id dst, > + size_t ofs, size_t n_bits, struct ofpbuf *ofpacts); > +void put_load(uint64_t value, enum mf_field_id dst, int ofs, int n_bits, > + struct ofpbuf *ofpacts); > + Nit: size_t for 'ofs' and 'n_bits' > /* __NARG__ provides a way to count the number of arguments passed to a > * variadic macro. As defined below, it's capable of counting up to > * 16 arguments. This should be more than enough for our purposes. However With these minor comments addressed: Acked-by: Dumitru Ceara <dce...@redhat.com> Thanks, Dumitru _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev