Kernel headers - linux-atm userspace build broken by recent change; __be16 undefined
Subsystems (2)
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 */ ---
Quoted 2 lines
__be16 ar_hrd; /* format of hardware address */
__be16 ar_pro; /* format of protocol address */137c137
< unsigned short ar_op; /* ARP opcode (command) */
---
Quoted 1 line
__be16ar_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?
Quoted 25 lines · 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 */ ---Quoted 2 lines
__be16 ar_hrd; /* format of hardware address */ __be16 ar_pro; /* format of protocol address */137c137
< unsigned shortar_op; /* ARP opcode (command) */
---Quoted 1 line
__be16ar_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.hneeds to includeinclude/linux/byteorder/big_endian.h?Andrew Walrond
Quoted 16 lines · Andrew Walrond
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 */ ---Quoted 2 lines
__be16 ar_hrd; /* format of hardware address */ __be16 ar_pro; /* format of protocol address */137c137
< unsigned shortar_op; /* ARP opcode (command) */
---Quoted 1 line
__be16ar_op; /* ARP opcode (command) */
Quoted 7 lines
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.hneeds to includeinclude/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.
Quoted 1 line
Andrew Walrond
cu
Adrian
Signature · 4 lines
"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