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
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
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