Message ID | 20240611235355.177667-2-ast@fiberby.net (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | flower: rework TCA_FLOWER_KEY_ENC_FLAGS usage | expand |
On Tue, Jun 11, 2024 at 11:53:34PM +0000, Asbjørn Sloth Tønnesen wrote: > Define new TCA_FLOWER_KEY_FLAGS_* flags for use in struct > flow_dissector_key_control, covering the same flags > as currently exposed through TCA_FLOWER_KEY_ENC_FLAGS, > but assign them new bit positions in so that they don't > conflict with existing TCA_FLOWER_KEY_FLAGS_* flags. > > Synchronize FLOW_DIS_* flags, but put the new flags > under FLOW_DIS_F_*. The idea is that we can later, move > the existing flags under FLOW_DIS_F_* as well. > > Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net> > --- > include/net/flow_dissector.h | 17 +++++++++++++---- > include/uapi/linux/pkt_cls.h | 5 +++++ > 2 files changed, 18 insertions(+), 4 deletions(-) > > diff --git a/include/net/flow_dissector.h b/include/net/flow_dissector.h > index 99626475c3f4a..1f0fddb29a0d8 100644 > --- a/include/net/flow_dissector.h > +++ b/include/net/flow_dissector.h > @@ -16,7 +16,8 @@ struct sk_buff; > * struct flow_dissector_key_control: > * @thoff: Transport header offset > * @addr_type: Type of key. One of FLOW_DISSECTOR_KEY_* > - * @flags: Key flags. Any of FLOW_DIS_(IS_FRAGMENT|FIRST_FRAGENCAPSULATION) > + * @flags: Key flags. > + * Any of FLOW_DIS_(IS_FRAGMENT|FIRST_FRAGENCAPSULATION|F_*) ^^ nit: there was a typo in the original line above. Maybe this is a good chance to put the missing '|' before 'ENCAPSULATION'
diff --git a/include/net/flow_dissector.h b/include/net/flow_dissector.h index 99626475c3f4a..1f0fddb29a0d8 100644 --- a/include/net/flow_dissector.h +++ b/include/net/flow_dissector.h @@ -16,7 +16,8 @@ struct sk_buff; * struct flow_dissector_key_control: * @thoff: Transport header offset * @addr_type: Type of key. One of FLOW_DISSECTOR_KEY_* - * @flags: Key flags. Any of FLOW_DIS_(IS_FRAGMENT|FIRST_FRAGENCAPSULATION) + * @flags: Key flags. + * Any of FLOW_DIS_(IS_FRAGMENT|FIRST_FRAGENCAPSULATION|F_*) */ struct flow_dissector_key_control { u16 thoff; @@ -24,9 +25,17 @@ struct flow_dissector_key_control { u32 flags; }; -#define FLOW_DIS_IS_FRAGMENT BIT(0) -#define FLOW_DIS_FIRST_FRAG BIT(1) -#define FLOW_DIS_ENCAPSULATION BIT(2) +/* Please keep these flags in sync with TCA_FLOWER_KEY_FLAGS_* + * in include/uapi/linux/pkt_cls.h, as these bit flags are exposed + * to userspace in some error paths, ie. unsupported flags. + */ +#define FLOW_DIS_IS_FRAGMENT BIT(0) +#define FLOW_DIS_FIRST_FRAG BIT(1) +#define FLOW_DIS_ENCAPSULATION BIT(2) +#define FLOW_DIS_F_TUNNEL_CSUM BIT(3) +#define FLOW_DIS_F_TUNNEL_DONT_FRAGMENT BIT(4) +#define FLOW_DIS_F_TUNNEL_OAM BIT(5) +#define FLOW_DIS_F_TUNNEL_CRIT_OPT BIT(6) enum flow_dissect_ret { FLOW_DISSECT_RET_OUT_GOOD, diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h index b6d38f5fd7c05..24795aad76518 100644 --- a/include/uapi/linux/pkt_cls.h +++ b/include/uapi/linux/pkt_cls.h @@ -677,6 +677,11 @@ enum { enum { TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0), TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1), + /* FLOW_DIS_ENCAPSULATION (1 << 2) is not exposed to userspace */ + TCA_FLOWER_KEY_FLAGS_TUNNEL_CSUM = (1 << 3), + TCA_FLOWER_KEY_FLAGS_TUNNEL_DONT_FRAGMENT = (1 << 4), + TCA_FLOWER_KEY_FLAGS_TUNNEL_OAM = (1 << 5), + TCA_FLOWER_KEY_FLAGS_TUNNEL_CRIT_OPT = (1 << 6), }; enum {
Define new TCA_FLOWER_KEY_FLAGS_* flags for use in struct flow_dissector_key_control, covering the same flags as currently exposed through TCA_FLOWER_KEY_ENC_FLAGS, but assign them new bit positions in so that they don't conflict with existing TCA_FLOWER_KEY_FLAGS_* flags. Synchronize FLOW_DIS_* flags, but put the new flags under FLOW_DIS_F_*. The idea is that we can later, move the existing flags under FLOW_DIS_F_* as well. Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net> --- include/net/flow_dissector.h | 17 +++++++++++++---- include/uapi/linux/pkt_cls.h | 5 +++++ 2 files changed, 18 insertions(+), 4 deletions(-)