Subject: Re: [PATCH v3 net-next 2/2] Special handling for IP & MPLS.

From: Martin Varghese <[email-masked]>
Date: Thu, 28 Nov 2019 21:42:43 +0530

On Mon, Nov 18, 2019 at 12:30:11PM -0500, Willem de Bruijn wrote:
> On Sat, Nov 16, 2019 at 12:45 AM Martin Varghese
> <[email-masked]> wrote:
> >
> > From: Martin Varghese <[email-masked]>
> >
> > Special handling is needed in bareudp module for IP & MPLS as they support
> > more than one ethertypes.
> >
> > MPLS has 2 ethertypes. 0x8847 for MPLS unicast and 0x8848 for MPLS multicast.
> > While decapsulating MPLS packet from UDP packet the tunnel destination IP
> > address is checked to determine the ethertype. The ethertype of the packet
> > will be set to 0x8848 if the  tunnel destination IP address is a multicast
> > IP address. The ethertype of the packet will be set to 0x8847 if the
> > tunnel destination IP address is a unicast IP address.
> >
> > IP has 2 ethertypes.0x0800 for IPV4 and 0x86dd for IPv6. The version field
> > of the IP header tunnelled will be checked to determine the ethertype.
> 
> If using ipv6 dual stack, it might make more sense to use extended
> mode with the ipv6 device instead of the ipv4 device.
>
ipv6 dual stack (v6 socket) is for the tunnel.the ethertype mentioned above
is for the inner protocol being tunnelled

> Also, the term extended mode is not self describing. Dual stack as
> term would be, but is not relevant to MPLS. Maybe "dual_proto"?
>
multi_proto ?

> > diff --git a/Documentation/networking/bareudp.rst b/Documentation/networking/bareudp.rst
> > index 2828521..1f01dfd 100644
> > --- a/Documentation/networking/bareudp.rst
> > +++ b/Documentation/networking/bareudp.rst
> > @@ -12,6 +12,15 @@ The Bareudp tunnel module provides a generic L3 encapsulation tunnelling
> >  support for tunnelling different L3 protocols like MPLS, IP, NSH etc. inside
> >  a UDP tunnel.
> >
> > +Special Handling
> > +----------------
> > +The bareudp device supports special handling for MPLS & IP as they can have
> > +multiple ethertypes.
> > +MPLS procotcol can have ethertypes ETH_P_MPLS_UC  (unicast) & ETH_P_MPLS_MC (multicast).
> > +IP proctocol can have ethertypes ETH_P_IP (v4) & ETH_P_IPV6 (v6).
> 
> proctocol -> protocol

Noted.

Thanks for your time