Skip to contentSkip to conversation

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

DISCUSSION Andrew Walrond 3 participants 3 messages Jan 18, 2007 – Jan 19, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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

__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

#1 lore raw

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 short ar_op; /* ARP opcode (command) */
---

Quoted 1 line

__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

#2 lore raw
In reply to 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 short ar_op; /* ARP opcode (command) */
---

Quoted 1 line

__be16 ar_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.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.

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