From: Antonio Quartulli <a@unstable.cc>
To: "Sven Eckelmann" <sven@narfation.org>,
"Linus Lüssing" <linus.luessing@c0d3.blue>
Cc: b.a.t.m.a.n@lists.open-mesh.org
Subject: Re: [PATCH] batman-adv: Map VID 0 to untagged TT VLAN
Date: Wed, 18 Dec 2024 09:02:27 +0100 [thread overview]
Message-ID: <b309777f-15b0-418f-88d0-a7b8199180ff@unstable.cc> (raw)
In-Reply-To: <2224062.Icojqenx9y@sven-l14>
On 17/12/2024 17:38, Sven Eckelmann wrote:
> On Tuesday, 17 December 2024 14:53:23 CET Linus Lüssing wrote:
>> On Mon, Dec 16, 2024 at 07:37:12PM +0100, Sven Eckelmann wrote:
>>> diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c
>>> index 8e0f44c71696f642d80304ec2724e8b5e56a5d93..333e947afcce7ca4128be8406f23295df723515c 100644
>>> --- a/net/batman-adv/main.c
>>> +++ b/net/batman-adv/main.c
>>> @@ -637,6 +637,13 @@ unsigned short batadv_get_vid(struct sk_buff *skb, size_t header_len)
>>>
>>> vhdr = (struct vlan_ethhdr *)(skb->data + header_len);
>>> vid = ntohs(vhdr->h_vlan_TCI) & VLAN_VID_MASK;
>>> +
>>> + /* VID 0 is only used to indicate "priority tag" frames which only
>>> + * contain priority information and no VID.
>>> + */
>>> + if (vid == 0)
>>> + return BATADV_NO_FLAGS;
>>> +
>>> vid |= BATADV_VLAN_HAS_TAG;
>>>
>>> return vid;
>>
>> I guess with this patch all TT entries previously in
>> TT VLAN 0 would be moved to untagged/NO_FLAGS TT entries, right?
>
> Yes, as specified by 802.1Q-2011, it is meant to transport only priority
> information and not a VID. For a switch, the PVID would be used but because
> batman-adv is here used as the lower device (for either a VLAN aware bridge or
> 8021q device), we don't have to add the PVID - the VID is simply missing
> (because it is !BATADV_VLAN_HAS_TAG) and therefore has to check for the
> "untagged" TT global entries (or add entries to the "untagged" TT local part)
>
>> Wouldn't that technically break compatibility? Let's say someone
>> uses VLAN headers with VID 0 to be able to use priorities / QoS.
>
> Then this person should have noticed that it broken at the moment and doesn't
> work as expected (to reach the "untagged remotes" with the priority tagged
> packets)
>
>> What if some old nodes still announced+used VLAN 0 in batman-adv
>> while others used it after this patch, with the mapping to
>> NO_FLAGS?
>
> Then the misbehaving old node would still misbehave. Because you should
> actually be able to talk with VID 0 to the untagged global TT entries - which
> the old node fails to do. So I could also add
>
> Fixes: 0ffa9e8d86d6 ("batman-adv: use vid when computing local and global TT CRC")
> Fixes: 5d2c05b21337 ("batman-adv: add per VLAN interface attribute framework")
>
> if you prefer and transmit it via the batadv/net queue.
>
> But I considered VID 0 somewhat esoteric for in-Linux usage because most tools
> just use DSCP. I am only away of tools like isochron-send which just inject
> raw packets with the VLAN headers directly. And using another 8021q device
> with VID on one side is a good way to create a unidirectional communication
> (when you want a bidirectional one) because the other end will just reply
> with a vanilla, untagged packet. And because of that, things like ARP will
> not be able to "finish" because the answers are received on the non-VID0
> interface.
I am not aware of 0 being used as a sane VID.
I have seen it mostly used internally, but never truly used with
something like "eth0.0".
Therefore I agree with Sven that this should not cause any real compat
issue. If we truly break something, then we can probably assume that the
scenario was already ill formed.
Regards,
--
Antonio Quartulli
next prev parent reply other threads:[~2024-12-18 8:02 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-16 18:37 [PATCH] batman-adv: Map VID 0 to untagged TT VLAN Sven Eckelmann
2024-12-16 20:51 ` Antonio Quartulli
2024-12-17 13:53 ` Linus Lüssing
2024-12-17 16:38 ` Sven Eckelmann
2024-12-18 8:02 ` Antonio Quartulli [this message]
2024-12-30 21:50 ` Linus Lüssing
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b309777f-15b0-418f-88d0-a7b8199180ff@unstable.cc \
--to=a@unstable.cc \
--cc=b.a.t.m.a.n@lists.open-mesh.org \
--cc=linus.luessing@c0d3.blue \
--cc=sven@narfation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox