diff mbox

[RFC] uapi: fix linux/packet_diag.h userspace compilation error

Message ID 20170228013930.GA28056@altlinux.org
State RFC, archived
Delegated to: David Miller
Headers show

Commit Message

Dmitry V. Levin Feb. 28, 2017, 1:39 a.m. UTC
Replace MAX_ADDR_LEN with its numeric value to fix the following
linux/packet_diag.h userspace compilation error:

/usr/include/linux/packet_diag.h:67:17: error: 'MAX_ADDR_LEN' undeclared here (not in a function)
  __u8 pdmc_addr[MAX_ADDR_LEN];

This is not the first case in the UAPI where the numeric value
of MAX_ADDR_LEN is used, uapi/linux/if_link.h already does the same,
and there are no UAPI headers besides these two that use MAX_ADDR_LEN.

The alternative fix would be to include <linux/netdevice.h> which
pulls in other headers and a lot of definitions with them.

Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
---
I'm not quite comfortable with this approach but the alternative
has its own drawbacks.

 include/uapi/linux/packet_diag.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Miller March 7, 2017, 8:16 p.m. UTC | #1
From: "Dmitry V. Levin" <ldv@altlinux.org>
Date: Tue, 28 Feb 2017 04:39:30 +0300

> Replace MAX_ADDR_LEN with its numeric value to fix the following
> linux/packet_diag.h userspace compilation error:
> 
> /usr/include/linux/packet_diag.h:67:17: error: 'MAX_ADDR_LEN' undeclared here (not in a function)
>   __u8 pdmc_addr[MAX_ADDR_LEN];
> 
> This is not the first case in the UAPI where the numeric value
> of MAX_ADDR_LEN is used, uapi/linux/if_link.h already does the same,
> and there are no UAPI headers besides these two that use MAX_ADDR_LEN.
> 
> The alternative fix would be to include <linux/netdevice.h> which
> pulls in other headers and a lot of definitions with them.
> 
> Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>

If if_link.h includes netdevice.h properly, let's try to do the same here as well.

Thanks.
Dmitry V. Levin March 7, 2017, 8:28 p.m. UTC | #2
On Tue, Mar 07, 2017 at 12:16:49PM -0800, David Miller wrote:
> From: "Dmitry V. Levin" <ldv@altlinux.org>
> Date: Tue, 28 Feb 2017 04:39:30 +0300
> 
> > Replace MAX_ADDR_LEN with its numeric value to fix the following
> > linux/packet_diag.h userspace compilation error:
> > 
> > /usr/include/linux/packet_diag.h:67:17: error: 'MAX_ADDR_LEN' undeclared here (not in a function)
> >   __u8 pdmc_addr[MAX_ADDR_LEN];
> > 
> > This is not the first case in the UAPI where the numeric value
> > of MAX_ADDR_LEN is used, uapi/linux/if_link.h already does the same,
> > and there are no UAPI headers besides these two that use MAX_ADDR_LEN.
> > 
> > The alternative fix would be to include <linux/netdevice.h> which
> > pulls in other headers and a lot of definitions with them.
> > 
> > Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
> 
> If if_link.h includes netdevice.h properly, let's try to do the same here as well.

Sorry if my words weren't clear enough: no, if_link.h doesn't include
netdevice.h, it uses the _numeric_ value instead:

$ grep MAX_ADDR_LEN include/uapi/linux/if_link.h 
	__u8 mac[32]; /* MAX_ADDR_LEN */
David Miller March 7, 2017, 8:35 p.m. UTC | #3
From: "Dmitry V. Levin" <ldv@altlinux.org>
Date: Tue, 7 Mar 2017 23:28:02 +0300

> On Tue, Mar 07, 2017 at 12:16:49PM -0800, David Miller wrote:
>> From: "Dmitry V. Levin" <ldv@altlinux.org>
>> Date: Tue, 28 Feb 2017 04:39:30 +0300
>> 
>> > Replace MAX_ADDR_LEN with its numeric value to fix the following
>> > linux/packet_diag.h userspace compilation error:
>> > 
>> > /usr/include/linux/packet_diag.h:67:17: error: 'MAX_ADDR_LEN' undeclared here (not in a function)
>> >   __u8 pdmc_addr[MAX_ADDR_LEN];
>> > 
>> > This is not the first case in the UAPI where the numeric value
>> > of MAX_ADDR_LEN is used, uapi/linux/if_link.h already does the same,
>> > and there are no UAPI headers besides these two that use MAX_ADDR_LEN.
>> > 
>> > The alternative fix would be to include <linux/netdevice.h> which
>> > pulls in other headers and a lot of definitions with them.
>> > 
>> > Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
>> 
>> If if_link.h includes netdevice.h properly, let's try to do the same here as well.
> 
> Sorry if my words weren't clear enough: no, if_link.h doesn't include
> netdevice.h, it uses the _numeric_ value instead:
> 
> $ grep MAX_ADDR_LEN include/uapi/linux/if_link.h 
> 	__u8 mac[32]; /* MAX_ADDR_LEN */

Ok then we might as well do the same thing here, please resubmit this
patch formally.

Thanks.
diff mbox

Patch

diff --git a/include/uapi/linux/packet_diag.h b/include/uapi/linux/packet_diag.h
index d08c63f..0c5d5dd 100644
--- a/include/uapi/linux/packet_diag.h
+++ b/include/uapi/linux/packet_diag.h
@@ -64,7 +64,7 @@  struct packet_diag_mclist {
 	__u32	pdmc_count;
 	__u16	pdmc_type;
 	__u16	pdmc_alen;
-	__u8	pdmc_addr[MAX_ADDR_LEN];
+	__u8	pdmc_addr[32]; /* MAX_ADDR_LEN */
 };
 
 struct packet_diag_ring {