All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2 net-next 0/2] doc/netlink/specs: Add vlan support
@ 2024-03-26  2:43 Hangbin Liu
  2024-03-26  2:43 ` [PATCHv2 net-next 1/2] ynl: support hex display_hint for integer Hangbin Liu
  2024-03-26  2:43 ` [PATCHv2 net-next 2/2] doc/netlink/specs: Add vlan attr in rt_link spec Hangbin Liu
  0 siblings, 2 replies; 6+ messages in thread
From: Hangbin Liu @ 2024-03-26  2:43 UTC (permalink / raw
  To: netdev
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Donald Hunter, Jiri Pirko, Jacob Keller, Stanislav Fomichev,
	Hangbin Liu

Add vlan support in rt_link spec.

Hangbin Liu (2):
  ynl: support hex display_hint for integer
  doc/netlink/specs: Add vlan attr in rt_link spec

 Documentation/netlink/specs/rt_link.yaml | 83 +++++++++++++++++++++++-
 tools/net/ynl/lib/ynl.py                 |  5 +-
 2 files changed, 86 insertions(+), 2 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCHv2 net-next 1/2] ynl: support hex display_hint for integer
  2024-03-26  2:43 [PATCHv2 net-next 0/2] doc/netlink/specs: Add vlan support Hangbin Liu
@ 2024-03-26  2:43 ` Hangbin Liu
  2024-03-26  9:13   ` Donald Hunter
  2024-03-26  2:43 ` [PATCHv2 net-next 2/2] doc/netlink/specs: Add vlan attr in rt_link spec Hangbin Liu
  1 sibling, 1 reply; 6+ messages in thread
From: Hangbin Liu @ 2024-03-26  2:43 UTC (permalink / raw
  To: netdev
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Donald Hunter, Jiri Pirko, Jacob Keller, Stanislav Fomichev,
	Hangbin Liu

Some times it would be convenient to read the integer as hex, like
mask values.

Suggested-by: Donald Hunter <donald.hunter@gmail.com>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
---
 tools/net/ynl/lib/ynl.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py
index 5fa7957f6e0f..e73b027c5624 100644
--- a/tools/net/ynl/lib/ynl.py
+++ b/tools/net/ynl/lib/ynl.py
@@ -819,7 +819,10 @@ class YnlFamily(SpecFamily):
         if display_hint == 'mac':
             formatted = ':'.join('%02x' % b for b in raw)
         elif display_hint == 'hex':
-            formatted = bytes.hex(raw, ' ')
+            if isinstance(raw, int):
+                formatted = hex(raw)
+            else:
+                formatted = bytes.hex(raw, ' ')
         elif display_hint in [ 'ipv4', 'ipv6' ]:
             formatted = format(ipaddress.ip_address(raw))
         elif display_hint == 'uuid':
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCHv2 net-next 2/2] doc/netlink/specs: Add vlan attr in rt_link spec
  2024-03-26  2:43 [PATCHv2 net-next 0/2] doc/netlink/specs: Add vlan support Hangbin Liu
  2024-03-26  2:43 ` [PATCHv2 net-next 1/2] ynl: support hex display_hint for integer Hangbin Liu
@ 2024-03-26  2:43 ` Hangbin Liu
  2024-03-26  9:34   ` Donald Hunter
  2024-03-27  3:34   ` Jakub Kicinski
  1 sibling, 2 replies; 6+ messages in thread
From: Hangbin Liu @ 2024-03-26  2:43 UTC (permalink / raw
  To: netdev
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Donald Hunter, Jiri Pirko, Jacob Keller, Stanislav Fomichev,
	Hangbin Liu

With command:
 # ./tools/net/ynl/cli.py \
 --spec Documentation/netlink/specs/rt_link.yaml \
 --do getlink --json '{"ifname": "eno1.2"}' --output-json | \
 jq -C '.linkinfo'

Before:
Exception: No message format for 'vlan' in sub-message spec 'linkinfo-data-msg'

After:
 {
   "kind": "vlan",
   "data": {
     "protocol": "8021Q",
     "id": 2,
     "flag": {
       "flags": [
         "reorder-hdr"
       ],
       "mask": "0xffffffff"
     }
   }
 }

Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>

v2:
 - Add eth-protocols definitions, but only include vlan protocols (Donald Hunter)
 - Set protocol to big-endian (Donald Hunter)
 - Add display-hint for vlan flag mask (Donald Hunter)
---
 Documentation/netlink/specs/rt_link.yaml | 83 +++++++++++++++++++++++-
 1 file changed, 82 insertions(+), 1 deletion(-)

diff --git a/Documentation/netlink/specs/rt_link.yaml b/Documentation/netlink/specs/rt_link.yaml
index 8e4d19adee8c..41b49f15236f 100644
--- a/Documentation/netlink/specs/rt_link.yaml
+++ b/Documentation/netlink/specs/rt_link.yaml
@@ -50,7 +50,16 @@ definitions:
         name: dormant
       -
         name: echo
-
+  -
+    name: eth-protocols
+    type: enum
+    entries:
+      -
+        name: 8021Q
+        value: 33024
+      -
+        name: 8021AD
+        value: 34984
   -
     name: rtgenmsg
     type: struct
@@ -729,6 +738,43 @@ definitions:
       -
         name: filter-mask
         type: u32
+  -
+    name: ifla-vlan-flags
+    type: struct
+    members:
+      -
+        name: flags
+        type: u32
+        enum: vlan-flags
+        enum-as-flags: true
+      -
+        name: mask
+        type: u32
+        display-hint: hex
+  -
+    name: vlan-flags
+    type: flags
+    entries:
+      -
+        name: reorder-hdr
+      -
+        name: gvrp
+      -
+        name: loose-binding
+      -
+        name: mvrp
+      -
+        name: bridge-binding
+  -
+    name: ifla-vlan-qos-mapping
+    type: struct
+    members:
+      -
+        name: from
+        type: u32
+      -
+        name: to
+        type: u32
 
 
 attribute-sets:
@@ -1507,6 +1553,38 @@ attribute-sets:
       -
         name: num-disabled-queues
         type: u32
+  -
+    name: linkinfo-vlan-attrs
+    name-prefix: ifla-vlan-
+    attributes:
+      -
+        name: id
+        type: u16
+      -
+        name: flag
+        type: binary
+        struct: ifla-vlan-flags
+      -
+        name: egress-qos
+        type: nest
+        nested-attributes: ifla-vlan-qos
+      -
+        name: ingress-qos
+        type: nest
+        nested-attributes: ifla-vlan-qos
+      -
+        name: protocol
+        type: u16
+        enum: eth-protocols
+        byte-order: big-endian
+  -
+    name: ifla-vlan-qos
+    name-prefix: ifla-vlan-qos
+    attributes:
+      -
+        name: mapping
+        type: binary
+        struct: ifla-vlan-qos-mapping
   -
     name: linkinfo-vrf-attrs
     name-prefix: ifla-vrf-
@@ -1666,6 +1744,9 @@ sub-messages:
       -
         value: tun
         attribute-set: linkinfo-tun-attrs
+      -
+        value: vlan
+        attribute-set: linkinfo-vlan-attrs
       -
         value: vrf
         attribute-set: linkinfo-vrf-attrs
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCHv2 net-next 1/2] ynl: support hex display_hint for integer
  2024-03-26  2:43 ` [PATCHv2 net-next 1/2] ynl: support hex display_hint for integer Hangbin Liu
@ 2024-03-26  9:13   ` Donald Hunter
  0 siblings, 0 replies; 6+ messages in thread
From: Donald Hunter @ 2024-03-26  9:13 UTC (permalink / raw
  To: Hangbin Liu
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Jiri Pirko, Jacob Keller, Stanislav Fomichev

Hangbin Liu <liuhangbin@gmail.com> writes:

> Some times it would be convenient to read the integer as hex, like
> mask values.
>
> Suggested-by: Donald Hunter <donald.hunter@gmail.com>
> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>

Reviewed-by: Donald Hunter <donald.hunter@gmail.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCHv2 net-next 2/2] doc/netlink/specs: Add vlan attr in rt_link spec
  2024-03-26  2:43 ` [PATCHv2 net-next 2/2] doc/netlink/specs: Add vlan attr in rt_link spec Hangbin Liu
@ 2024-03-26  9:34   ` Donald Hunter
  2024-03-27  3:34   ` Jakub Kicinski
  1 sibling, 0 replies; 6+ messages in thread
From: Donald Hunter @ 2024-03-26  9:34 UTC (permalink / raw
  To: Hangbin Liu
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Jiri Pirko, Jacob Keller, Stanislav Fomichev

Hangbin Liu <liuhangbin@gmail.com> writes:
>
> diff --git a/Documentation/netlink/specs/rt_link.yaml b/Documentation/netlink/specs/rt_link.yaml
> index 8e4d19adee8c..41b49f15236f 100644
> --- a/Documentation/netlink/specs/rt_link.yaml
> +++ b/Documentation/netlink/specs/rt_link.yaml
> @@ -50,7 +50,16 @@ definitions:
>          name: dormant
>        -
>          name: echo
> -
> +  -
> +    name: eth-protocols

I think this should be called vlan-protocols since the enum only
contains valid vlan protocol values.

> +    type: enum
> +    entries:
> +      -
> +        name: 8021Q

The convention with YNL specs is to use lower case for names and let
e.g. ynl-gen-c convert to upper case for the C domain. So these should
be '8021q' and '8021ad'.

> +        value: 33024
> +      -
> +        name: 8021AD
> +        value: 34984
>    -
>      name: rtgenmsg
>      type: struct
> @@ -729,6 +738,43 @@ definitions:
>        -
>          name: filter-mask
>          type: u32
> +  -
> +    name: ifla-vlan-flags
> +    type: struct
> +    members:
> +      -
> +        name: flags
> +        type: u32
> +        enum: vlan-flags
> +        enum-as-flags: true
> +      -
> +        name: mask
> +        type: u32
> +        display-hint: hex
> +  -
> +    name: vlan-flags
> +    type: flags
> +    entries:
> +      -
> +        name: reorder-hdr
> +      -
> +        name: gvrp
> +      -
> +        name: loose-binding
> +      -
> +        name: mvrp
> +      -
> +        name: bridge-binding

Nit: when you specify entries by name only, you can use the abbreviated
form:

   - reorder-hdr
   - gvrp
   - loose-binding
   - mvrp
   - bridge-binding

> +  -
> +    name: ifla-vlan-qos-mapping
> +    type: struct
> +    members:
> +      -
> +        name: from
> +        type: u32
> +      -
> +        name: to
> +        type: u32
>  
>  
>  attribute-sets:
> @@ -1507,6 +1553,38 @@ attribute-sets:
>        -
>          name: num-disabled-queues
>          type: u32
> +  -
> +    name: linkinfo-vlan-attrs
> +    name-prefix: ifla-vlan-
> +    attributes:
> +      -
> +        name: id
> +        type: u16
> +      -
> +        name: flag
> +        type: binary
> +        struct: ifla-vlan-flags
> +      -
> +        name: egress-qos
> +        type: nest
> +        nested-attributes: ifla-vlan-qos

I _think_ this needs 'multi-attr: true'

https://elixir.bootlin.com/linux/latest/source/net/8021q/vlan_netlink.c#L120

> +      -
> +        name: ingress-qos
> +        type: nest
> +        nested-attributes: ifla-vlan-qos

Same for ingress-qos.

> +      -
> +        name: protocol
> +        type: u16
> +        enum: eth-protocols
> +        byte-order: big-endian
> +  -
> +    name: ifla-vlan-qos
> +    name-prefix: ifla-vlan-qos
> +    attributes:
> +      -
> +        name: mapping
> +        type: binary
> +        struct: ifla-vlan-qos-mapping
>    -
>      name: linkinfo-vrf-attrs
>      name-prefix: ifla-vrf-
> @@ -1666,6 +1744,9 @@ sub-messages:
>        -
>          value: tun
>          attribute-set: linkinfo-tun-attrs
> +      -
> +        value: vlan
> +        attribute-set: linkinfo-vlan-attrs
>        -
>          value: vrf
>          attribute-set: linkinfo-vrf-attrs

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCHv2 net-next 2/2] doc/netlink/specs: Add vlan attr in rt_link spec
  2024-03-26  2:43 ` [PATCHv2 net-next 2/2] doc/netlink/specs: Add vlan attr in rt_link spec Hangbin Liu
  2024-03-26  9:34   ` Donald Hunter
@ 2024-03-27  3:34   ` Jakub Kicinski
  1 sibling, 0 replies; 6+ messages in thread
From: Jakub Kicinski @ 2024-03-27  3:34 UTC (permalink / raw
  To: Hangbin Liu
  Cc: netdev, David S. Miller, Eric Dumazet, Paolo Abeni, Donald Hunter,
	Jiri Pirko, Jacob Keller, Stanislav Fomichev

On Tue, 26 Mar 2024 10:43:25 +0800 Hangbin Liu wrote:
> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
> 

nit: please add a "---" line here so that the changelog is not part 
of the commit after we apply it with git am.

> v2:
>  - Add eth-protocols definitions, but only include vlan protocols (Donald Hunter)
>  - Set protocol to big-endian (Donald Hunter)
>  - Add display-hint for vlan flag mask (Donald Hunter)
> ---

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-03-27  3:34 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-26  2:43 [PATCHv2 net-next 0/2] doc/netlink/specs: Add vlan support Hangbin Liu
2024-03-26  2:43 ` [PATCHv2 net-next 1/2] ynl: support hex display_hint for integer Hangbin Liu
2024-03-26  9:13   ` Donald Hunter
2024-03-26  2:43 ` [PATCHv2 net-next 2/2] doc/netlink/specs: Add vlan attr in rt_link spec Hangbin Liu
2024-03-26  9:34   ` Donald Hunter
2024-03-27  3:34   ` Jakub Kicinski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.