提交 ac57d042 编写于 作者: P Pavel Roskin 提交者: David S. Miller

[NET]: Annotate h_proto in struct ethhdr

The protocol field in ethernet headers is big-endian and should be
annotated as such.  This patch allows detection of missing ntohs() calls
on the ethernet protocol field when sparse is run with __CHECK_ENDIAN__
defined.

This is a revised version that includes <linux/types.h> so that the
userspace programs are not confused by __be16.  Thanks to David S.
Miller.
Signed-off-by: NPavel Roskin <proski@gnu.org>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 fb286bb2
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
#ifndef _LINUX_IF_ETHER_H #ifndef _LINUX_IF_ETHER_H
#define _LINUX_IF_ETHER_H #define _LINUX_IF_ETHER_H
#include <linux/types.h>
/* /*
* IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble
* and FCS/CRC (frame check sequence). * and FCS/CRC (frame check sequence).
...@@ -100,7 +102,7 @@ ...@@ -100,7 +102,7 @@
struct ethhdr { struct ethhdr {
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
unsigned char h_source[ETH_ALEN]; /* source ether addr */ unsigned char h_source[ETH_ALEN]; /* source ether addr */
unsigned short h_proto; /* packet type ID field */ __be16 h_proto; /* packet type ID field */
} __attribute__((packed)); } __attribute__((packed));
#ifdef __KERNEL__ #ifdef __KERNEL__
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册