Hi all,

__vlan_tunnel_info_add() accepts tunnel ID 0, creates a valid
tunnel_dst, and inserts the VLAN into the tunnel hash with key 0.
Ingress looks up key 0 and retags the frame.

The egress path treats tunnel_id == 0 as "not configured" and returns
before installing tunnel metadata.  The same mapping therefore works in
one direction and is inert in the other, while RTM_GETLINK reports it
as present.

Observed on Linux v7.3, commit
08ab31164c55f20c7a2653de3186ae333470e2c1:

  VID 100 -> tunnel id 0:
    ingress VNI 0 is retagged to VID 100
    egress emits VID 100 tagged but installs no VXLAN metadata

  remap VID 100 -> tunnel id 3000:
    egress immediately produces VNI 3000

Two independent cold boots produced the same result.

Either reject tunnel ID 0 as reserved or stop using zero as the egress
presence sentinel and make ingress and egress interpret the mapping
consistently.

This is distinct from candidate BR-063's netlink-size undercount for a
tid-zero entry, which has a pending sizing patch.

I found no matching functional fix or CVE.

The self-contained PoC and both console logs are available on request.

This was found with a multi-agent workflow; the
ingress/egress asymmetry was reproduced in QEMU.

Thanks,
Cheng Yongkang

Reply via email to