2007-01-18 21:22:55

by Andrew Walrond

[permalink] [raw]
Subject: Kernel headers - linux-atm userspace build broken by recent change; __be16 undefined

Don't know exactly when this change went in, but it's not in 2.6.18.3
and is in 2.6.19.2+

$ diff linux/include/linux/if_arp.h linux-2.6/include/linux/if_arp.h
133,134c133,134
< unsigned short ar_hrd; /* format of hardware address */
< unsigned short ar_pro; /* format of protocol address */
---
> __be16 ar_hrd; /* format of hardware address */
> __be16 ar_pro; /* format of protocol address */
137c137
< unsigned short ar_op; /* ARP opcode (command) */
---
> __be16 ar_op; /* ARP opcode (command) */


This causes the linux-atm userspace compile to fail like this:

In file included from arp.c:19:
/usr/include/linux/if_arp.h:133: error: expected
specifier-qualifier-list before '__be16'

I guess if_arp.h needs to include include/linux/byteorder/big_endian.h?

Andrew Walrond


Subject: Re: Kernel headers - linux-atm userspace build broken by recent change; __be16 undefined

it might be that the userspace code shouldnt be including if_arp.h.
can you try that instead?

In message <[email protected]>,Andrew Walrond writes:
>Don't know exactly when this change went in, but it's not in 2.6.18.3
>and is in 2.6.19.2+
>
> $ diff linux/include/linux/if_arp.h linux-2.6/include/linux/if_arp.h
>133,134c133,134
>< unsigned short ar_hrd; /* format of hardware address */
>< unsigned short ar_pro; /* format of protocol address */
>---
> > __be16 ar_hrd; /* format of hardware address */
> > __be16 ar_pro; /* format of protocol address */
>137c137
>< unsigned short ar_op; /* ARP opcode (command) */
>---
> > __be16 ar_op; /* ARP opcode (command) */
>
>
>This causes the linux-atm userspace compile to fail like this:
>
>In file included from arp.c:19:
>/usr/include/linux/if_arp.h:133: error: expected
>specifier-qualifier-list before '__be16'
>
>I guess if_arp.h needs to include include/linux/byteorder/big_endian.h?
>
>Andrew Walrond

2007-01-19 14:37:21

by Adrian Bunk

[permalink] [raw]
Subject: Re: Kernel headers - linux-atm userspace build broken by recent change; __be16 undefined

On Thu, Jan 18, 2007 at 09:22:52PM +0000, Andrew Walrond wrote:
> Don't know exactly when this change went in, but it's not in 2.6.18.3
> and is in 2.6.19.2+
>
> $ diff linux/include/linux/if_arp.h linux-2.6/include/linux/if_arp.h
> 133,134c133,134
> < unsigned short ar_hrd; /* format of hardware address */
> < unsigned short ar_pro; /* format of protocol address */
> ---
> > __be16 ar_hrd; /* format of hardware address */
> > __be16 ar_pro; /* format of protocol address */
> 137c137
> < unsigned short ar_op; /* ARP opcode (command) */
> ---
> > __be16 ar_op; /* ARP opcode (command) */
>
>
> This causes the linux-atm userspace compile to fail like this:
>
> In file included from arp.c:19:
> /usr/include/linux/if_arp.h:133: error: expected
> specifier-qualifier-list before '__be16'
>
> I guess if_arp.h needs to include include/linux/byteorder/big_endian.h?

No, linux/types.h

But what bothers me more about if_arp.h is that it is one of the
headers using "struct sockaddr" in userspace, but as far as I can see we
aren't exporting it in any header.

This seems to work since glibc is providing the struct, but this looks
a bit fishy.

> Andrew Walrond

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed