Re: [PATCH v5] net: ip, diag -- Add diag interface for raw sockets

From: Cyrill Gorcunov
Date: Wed Sep 28 2016 - 06:17:33 EST


On Wed, Sep 28, 2016 at 06:08:00AM -0400, Jamal Hadi Salim wrote:
...
> > @@ -38,7 +38,10 @@ struct inet_diag_req_v2 {
> > __u8 sdiag_family;
> > __u8 sdiag_protocol;
> > __u8 idiag_ext;
> > - __u8 pad;
> > + union {
> > + __u8 pad;
> > + __u8 sdiag_raw_protocol; /* SOCK_RAW only, @pad for others */
> > + };
>
>
> Above looks funny. Why is it a union? pad is for exposing a byte-hole
> for padding/alignment reasons and i doubt anybody is using it.

Someone may have set it to zero explicitly on source level, and the
compilation will fail on new kernel then. So no, keeping the name
is reasonable.

> Should you not just rename it?
> Also I notice when things like __raw_v4_lookup() are claiming it is unsigned
> short instead of a u8?

The protocol is still up to 255 for a while, is it expected that IPPROTO_MAX
will be increased in more-less near future? Of course I can drop the idea
of using @pad here and switch to some extended reauest but prefer to stick
with simplier solution. Hm?