|
@@ -1,4 +1,4 @@
|
|
|
-/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
+/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) */
|
|
|
/* Copyright (C) 2007-2017 B.A.T.M.A.N. contributors:
|
|
|
*
|
|
|
* Marek Lindner, Simon Wunderlich
|
|
@@ -16,10 +16,11 @@
|
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
|
*/
|
|
|
|
|
|
-#ifndef _NET_BATMAN_ADV_PACKET_H_
|
|
|
-#define _NET_BATMAN_ADV_PACKET_H_
|
|
|
+#ifndef _UAPI_LINUX_BATADV_PACKET_H_
|
|
|
+#define _UAPI_LINUX_BATADV_PACKET_H_
|
|
|
|
|
|
#include <asm/byteorder.h>
|
|
|
+#include <linux/if_ether.h>
|
|
|
#include <linux/types.h>
|
|
|
|
|
|
/**
|
|
@@ -28,7 +29,7 @@
|
|
|
*
|
|
|
* Return: 0 when not error was detected, != 0 otherwise
|
|
|
*/
|
|
|
-#define batadv_tp_is_error(n) ((u8)(n) > 127 ? 1 : 0)
|
|
|
+#define batadv_tp_is_error(n) ((__u8)(n) > 127 ? 1 : 0)
|
|
|
|
|
|
/**
|
|
|
* enum batadv_packettype - types for batman-adv encapsulated packets
|
|
@@ -90,9 +91,9 @@ enum batadv_subtype {
|
|
|
* one hop neighbor on the interface where it was originally received.
|
|
|
*/
|
|
|
enum batadv_iv_flags {
|
|
|
- BATADV_NOT_BEST_NEXT_HOP = BIT(0),
|
|
|
- BATADV_PRIMARIES_FIRST_HOP = BIT(1),
|
|
|
- BATADV_DIRECTLINK = BIT(2),
|
|
|
+ BATADV_NOT_BEST_NEXT_HOP = 1UL << 0,
|
|
|
+ BATADV_PRIMARIES_FIRST_HOP = 1UL << 1,
|
|
|
+ BATADV_DIRECTLINK = 1UL << 2,
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -121,9 +122,9 @@ enum batadv_icmp_packettype {
|
|
|
* @BATADV_MCAST_WANT_ALL_IPV6: we want all IPv6 multicast packets
|
|
|
*/
|
|
|
enum batadv_mcast_flags {
|
|
|
- BATADV_MCAST_WANT_ALL_UNSNOOPABLES = BIT(0),
|
|
|
- BATADV_MCAST_WANT_ALL_IPV4 = BIT(1),
|
|
|
- BATADV_MCAST_WANT_ALL_IPV6 = BIT(2),
|
|
|
+ BATADV_MCAST_WANT_ALL_UNSNOOPABLES = 1UL << 0,
|
|
|
+ BATADV_MCAST_WANT_ALL_IPV4 = 1UL << 1,
|
|
|
+ BATADV_MCAST_WANT_ALL_IPV6 = 1UL << 2,
|
|
|
};
|
|
|
|
|
|
/* tt data subtypes */
|
|
@@ -137,10 +138,10 @@ enum batadv_mcast_flags {
|
|
|
* @BATADV_TT_FULL_TABLE: contains full table to replace existing table
|
|
|
*/
|
|
|
enum batadv_tt_data_flags {
|
|
|
- BATADV_TT_OGM_DIFF = BIT(0),
|
|
|
- BATADV_TT_REQUEST = BIT(1),
|
|
|
- BATADV_TT_RESPONSE = BIT(2),
|
|
|
- BATADV_TT_FULL_TABLE = BIT(4),
|
|
|
+ BATADV_TT_OGM_DIFF = 1UL << 0,
|
|
|
+ BATADV_TT_REQUEST = 1UL << 1,
|
|
|
+ BATADV_TT_RESPONSE = 1UL << 2,
|
|
|
+ BATADV_TT_FULL_TABLE = 1UL << 4,
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -148,7 +149,7 @@ enum batadv_tt_data_flags {
|
|
|
* @BATADV_VLAN_HAS_TAG: whether the field contains a valid vlan tag or not
|
|
|
*/
|
|
|
enum batadv_vlan_flags {
|
|
|
- BATADV_VLAN_HAS_TAG = BIT(15),
|
|
|
+ BATADV_VLAN_HAS_TAG = 1UL << 15,
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -190,8 +191,8 @@ enum batadv_tvlv_type {
|
|
|
* transport the claim type and the group id
|
|
|
*/
|
|
|
struct batadv_bla_claim_dst {
|
|
|
- u8 magic[3]; /* FF:43:05 */
|
|
|
- u8 type; /* bla_claimframe */
|
|
|
+ __u8 magic[3]; /* FF:43:05 */
|
|
|
+ __u8 type; /* bla_claimframe */
|
|
|
__be16 group; /* group id */
|
|
|
};
|
|
|
|
|
@@ -211,15 +212,15 @@ struct batadv_bla_claim_dst {
|
|
|
* @tvlv_len: length of tvlv data following the ogm header
|
|
|
*/
|
|
|
struct batadv_ogm_packet {
|
|
|
- u8 packet_type;
|
|
|
- u8 version;
|
|
|
- u8 ttl;
|
|
|
- u8 flags;
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version;
|
|
|
+ __u8 ttl;
|
|
|
+ __u8 flags;
|
|
|
__be32 seqno;
|
|
|
- u8 orig[ETH_ALEN];
|
|
|
- u8 prev_sender[ETH_ALEN];
|
|
|
- u8 reserved;
|
|
|
- u8 tq;
|
|
|
+ __u8 orig[ETH_ALEN];
|
|
|
+ __u8 prev_sender[ETH_ALEN];
|
|
|
+ __u8 reserved;
|
|
|
+ __u8 tq;
|
|
|
__be16 tvlv_len;
|
|
|
/* __packed is not needed as the struct size is divisible by 4,
|
|
|
* and the largest data type in this struct has a size of 4.
|
|
@@ -240,12 +241,12 @@ struct batadv_ogm_packet {
|
|
|
* @throughput: the currently flooded path throughput
|
|
|
*/
|
|
|
struct batadv_ogm2_packet {
|
|
|
- u8 packet_type;
|
|
|
- u8 version;
|
|
|
- u8 ttl;
|
|
|
- u8 flags;
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version;
|
|
|
+ __u8 ttl;
|
|
|
+ __u8 flags;
|
|
|
__be32 seqno;
|
|
|
- u8 orig[ETH_ALEN];
|
|
|
+ __u8 orig[ETH_ALEN];
|
|
|
__be16 tvlv_len;
|
|
|
__be32 throughput;
|
|
|
/* __packed is not needed as the struct size is divisible by 4,
|
|
@@ -264,9 +265,9 @@ struct batadv_ogm2_packet {
|
|
|
* @elp_interval: currently used ELP sending interval in ms
|
|
|
*/
|
|
|
struct batadv_elp_packet {
|
|
|
- u8 packet_type;
|
|
|
- u8 version;
|
|
|
- u8 orig[ETH_ALEN];
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version;
|
|
|
+ __u8 orig[ETH_ALEN];
|
|
|
__be32 seqno;
|
|
|
__be32 elp_interval;
|
|
|
};
|
|
@@ -289,14 +290,14 @@ struct batadv_elp_packet {
|
|
|
* members are padded the same way as they are in real packets.
|
|
|
*/
|
|
|
struct batadv_icmp_header {
|
|
|
- u8 packet_type;
|
|
|
- u8 version;
|
|
|
- u8 ttl;
|
|
|
- u8 msg_type; /* see ICMP message types above */
|
|
|
- u8 dst[ETH_ALEN];
|
|
|
- u8 orig[ETH_ALEN];
|
|
|
- u8 uid;
|
|
|
- u8 align[3];
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version;
|
|
|
+ __u8 ttl;
|
|
|
+ __u8 msg_type; /* see ICMP message types above */
|
|
|
+ __u8 dst[ETH_ALEN];
|
|
|
+ __u8 orig[ETH_ALEN];
|
|
|
+ __u8 uid;
|
|
|
+ __u8 align[3];
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -312,14 +313,14 @@ struct batadv_icmp_header {
|
|
|
* @seqno: ICMP sequence number
|
|
|
*/
|
|
|
struct batadv_icmp_packet {
|
|
|
- u8 packet_type;
|
|
|
- u8 version;
|
|
|
- u8 ttl;
|
|
|
- u8 msg_type; /* see ICMP message types above */
|
|
|
- u8 dst[ETH_ALEN];
|
|
|
- u8 orig[ETH_ALEN];
|
|
|
- u8 uid;
|
|
|
- u8 reserved;
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version;
|
|
|
+ __u8 ttl;
|
|
|
+ __u8 msg_type; /* see ICMP message types above */
|
|
|
+ __u8 dst[ETH_ALEN];
|
|
|
+ __u8 orig[ETH_ALEN];
|
|
|
+ __u8 uid;
|
|
|
+ __u8 reserved;
|
|
|
__be16 seqno;
|
|
|
};
|
|
|
|
|
@@ -341,15 +342,15 @@ struct batadv_icmp_packet {
|
|
|
* store it using network order
|
|
|
*/
|
|
|
struct batadv_icmp_tp_packet {
|
|
|
- u8 packet_type;
|
|
|
- u8 version;
|
|
|
- u8 ttl;
|
|
|
- u8 msg_type; /* see ICMP message types above */
|
|
|
- u8 dst[ETH_ALEN];
|
|
|
- u8 orig[ETH_ALEN];
|
|
|
- u8 uid;
|
|
|
- u8 subtype;
|
|
|
- u8 session[2];
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version;
|
|
|
+ __u8 ttl;
|
|
|
+ __u8 msg_type; /* see ICMP message types above */
|
|
|
+ __u8 dst[ETH_ALEN];
|
|
|
+ __u8 orig[ETH_ALEN];
|
|
|
+ __u8 uid;
|
|
|
+ __u8 subtype;
|
|
|
+ __u8 session[2];
|
|
|
__be32 seqno;
|
|
|
__be32 timestamp;
|
|
|
};
|
|
@@ -380,16 +381,16 @@ enum batadv_icmp_tp_subtype {
|
|
|
* @rr: route record array
|
|
|
*/
|
|
|
struct batadv_icmp_packet_rr {
|
|
|
- u8 packet_type;
|
|
|
- u8 version;
|
|
|
- u8 ttl;
|
|
|
- u8 msg_type; /* see ICMP message types above */
|
|
|
- u8 dst[ETH_ALEN];
|
|
|
- u8 orig[ETH_ALEN];
|
|
|
- u8 uid;
|
|
|
- u8 rr_cur;
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version;
|
|
|
+ __u8 ttl;
|
|
|
+ __u8 msg_type; /* see ICMP message types above */
|
|
|
+ __u8 dst[ETH_ALEN];
|
|
|
+ __u8 orig[ETH_ALEN];
|
|
|
+ __u8 uid;
|
|
|
+ __u8 rr_cur;
|
|
|
__be16 seqno;
|
|
|
- u8 rr[BATADV_RR_LEN][ETH_ALEN];
|
|
|
+ __u8 rr[BATADV_RR_LEN][ETH_ALEN];
|
|
|
};
|
|
|
|
|
|
#define BATADV_ICMP_MAX_PACKET_SIZE sizeof(struct batadv_icmp_packet_rr)
|
|
@@ -415,11 +416,11 @@ struct batadv_icmp_packet_rr {
|
|
|
* @dest: originator destination of the unicast packet
|
|
|
*/
|
|
|
struct batadv_unicast_packet {
|
|
|
- u8 packet_type;
|
|
|
- u8 version;
|
|
|
- u8 ttl;
|
|
|
- u8 ttvn; /* destination translation table version number */
|
|
|
- u8 dest[ETH_ALEN];
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version;
|
|
|
+ __u8 ttl;
|
|
|
+ __u8 ttvn; /* destination translation table version number */
|
|
|
+ __u8 dest[ETH_ALEN];
|
|
|
/* "4 bytes boundary + 2 bytes" long to make the payload after the
|
|
|
* following ethernet header again 4 bytes boundary aligned
|
|
|
*/
|
|
@@ -434,9 +435,9 @@ struct batadv_unicast_packet {
|
|
|
*/
|
|
|
struct batadv_unicast_4addr_packet {
|
|
|
struct batadv_unicast_packet u;
|
|
|
- u8 src[ETH_ALEN];
|
|
|
- u8 subtype;
|
|
|
- u8 reserved;
|
|
|
+ __u8 src[ETH_ALEN];
|
|
|
+ __u8 subtype;
|
|
|
+ __u8 reserved;
|
|
|
/* "4 bytes boundary + 2 bytes" long to make the payload after the
|
|
|
* following ethernet header again 4 bytes boundary aligned
|
|
|
*/
|
|
@@ -456,22 +457,22 @@ struct batadv_unicast_4addr_packet {
|
|
|
* @total_size: size of the merged packet
|
|
|
*/
|
|
|
struct batadv_frag_packet {
|
|
|
- u8 packet_type;
|
|
|
- u8 version; /* batman version field */
|
|
|
- u8 ttl;
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version; /* batman version field */
|
|
|
+ __u8 ttl;
|
|
|
#if defined(__BIG_ENDIAN_BITFIELD)
|
|
|
- u8 no:4;
|
|
|
- u8 priority:3;
|
|
|
- u8 reserved:1;
|
|
|
+ __u8 no:4;
|
|
|
+ __u8 priority:3;
|
|
|
+ __u8 reserved:1;
|
|
|
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
|
|
- u8 reserved:1;
|
|
|
- u8 priority:3;
|
|
|
- u8 no:4;
|
|
|
+ __u8 reserved:1;
|
|
|
+ __u8 priority:3;
|
|
|
+ __u8 no:4;
|
|
|
#else
|
|
|
#error "unknown bitfield endianness"
|
|
|
#endif
|
|
|
- u8 dest[ETH_ALEN];
|
|
|
- u8 orig[ETH_ALEN];
|
|
|
+ __u8 dest[ETH_ALEN];
|
|
|
+ __u8 orig[ETH_ALEN];
|
|
|
__be16 seqno;
|
|
|
__be16 total_size;
|
|
|
};
|
|
@@ -486,12 +487,12 @@ struct batadv_frag_packet {
|
|
|
* @orig: originator of the broadcast packet
|
|
|
*/
|
|
|
struct batadv_bcast_packet {
|
|
|
- u8 packet_type;
|
|
|
- u8 version; /* batman version field */
|
|
|
- u8 ttl;
|
|
|
- u8 reserved;
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version; /* batman version field */
|
|
|
+ __u8 ttl;
|
|
|
+ __u8 reserved;
|
|
|
__be32 seqno;
|
|
|
- u8 orig[ETH_ALEN];
|
|
|
+ __u8 orig[ETH_ALEN];
|
|
|
/* "4 bytes boundary + 2 bytes" long to make the payload after the
|
|
|
* following ethernet header again 4 bytes boundary aligned
|
|
|
*/
|
|
@@ -515,19 +516,19 @@ struct batadv_bcast_packet {
|
|
|
* @coded_len: length of network coded part of the payload
|
|
|
*/
|
|
|
struct batadv_coded_packet {
|
|
|
- u8 packet_type;
|
|
|
- u8 version; /* batman version field */
|
|
|
- u8 ttl;
|
|
|
- u8 first_ttvn;
|
|
|
- /* u8 first_dest[ETH_ALEN]; - saved in mac header destination */
|
|
|
- u8 first_source[ETH_ALEN];
|
|
|
- u8 first_orig_dest[ETH_ALEN];
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version; /* batman version field */
|
|
|
+ __u8 ttl;
|
|
|
+ __u8 first_ttvn;
|
|
|
+ /* __u8 first_dest[ETH_ALEN]; - saved in mac header destination */
|
|
|
+ __u8 first_source[ETH_ALEN];
|
|
|
+ __u8 first_orig_dest[ETH_ALEN];
|
|
|
__be32 first_crc;
|
|
|
- u8 second_ttl;
|
|
|
- u8 second_ttvn;
|
|
|
- u8 second_dest[ETH_ALEN];
|
|
|
- u8 second_source[ETH_ALEN];
|
|
|
- u8 second_orig_dest[ETH_ALEN];
|
|
|
+ __u8 second_ttl;
|
|
|
+ __u8 second_ttvn;
|
|
|
+ __u8 second_dest[ETH_ALEN];
|
|
|
+ __u8 second_source[ETH_ALEN];
|
|
|
+ __u8 second_orig_dest[ETH_ALEN];
|
|
|
__be32 second_crc;
|
|
|
__be16 coded_len;
|
|
|
};
|
|
@@ -546,14 +547,14 @@ struct batadv_coded_packet {
|
|
|
* @align: 2 bytes to align the header to a 4 byte boundary
|
|
|
*/
|
|
|
struct batadv_unicast_tvlv_packet {
|
|
|
- u8 packet_type;
|
|
|
- u8 version; /* batman version field */
|
|
|
- u8 ttl;
|
|
|
- u8 reserved;
|
|
|
- u8 dst[ETH_ALEN];
|
|
|
- u8 src[ETH_ALEN];
|
|
|
+ __u8 packet_type;
|
|
|
+ __u8 version; /* batman version field */
|
|
|
+ __u8 ttl;
|
|
|
+ __u8 reserved;
|
|
|
+ __u8 dst[ETH_ALEN];
|
|
|
+ __u8 src[ETH_ALEN];
|
|
|
__be16 tvlv_len;
|
|
|
- u16 align;
|
|
|
+ __u16 align;
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -563,8 +564,8 @@ struct batadv_unicast_tvlv_packet {
|
|
|
* @len: tvlv container length
|
|
|
*/
|
|
|
struct batadv_tvlv_hdr {
|
|
|
- u8 type;
|
|
|
- u8 version;
|
|
|
+ __u8 type;
|
|
|
+ __u8 version;
|
|
|
__be16 len;
|
|
|
};
|
|
|
|
|
@@ -587,8 +588,8 @@ struct batadv_tvlv_gateway_data {
|
|
|
* one batadv_tvlv_tt_vlan_data object per announced vlan
|
|
|
*/
|
|
|
struct batadv_tvlv_tt_data {
|
|
|
- u8 flags;
|
|
|
- u8 ttvn;
|
|
|
+ __u8 flags;
|
|
|
+ __u8 ttvn;
|
|
|
__be16 num_vlan;
|
|
|
};
|
|
|
|
|
@@ -602,7 +603,7 @@ struct batadv_tvlv_tt_data {
|
|
|
struct batadv_tvlv_tt_vlan_data {
|
|
|
__be32 crc;
|
|
|
__be16 vid;
|
|
|
- u16 reserved;
|
|
|
+ __u16 reserved;
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -614,9 +615,9 @@ struct batadv_tvlv_tt_vlan_data {
|
|
|
* @vid: VLAN identifier
|
|
|
*/
|
|
|
struct batadv_tvlv_tt_change {
|
|
|
- u8 flags;
|
|
|
- u8 reserved[3];
|
|
|
- u8 addr[ETH_ALEN];
|
|
|
+ __u8 flags;
|
|
|
+ __u8 reserved[3];
|
|
|
+ __u8 addr[ETH_ALEN];
|
|
|
__be16 vid;
|
|
|
};
|
|
|
|
|
@@ -626,7 +627,7 @@ struct batadv_tvlv_tt_change {
|
|
|
* @vid: VLAN identifier
|
|
|
*/
|
|
|
struct batadv_tvlv_roam_adv {
|
|
|
- u8 client[ETH_ALEN];
|
|
|
+ __u8 client[ETH_ALEN];
|
|
|
__be16 vid;
|
|
|
};
|
|
|
|
|
@@ -636,8 +637,8 @@ struct batadv_tvlv_roam_adv {
|
|
|
* @reserved: reserved field
|
|
|
*/
|
|
|
struct batadv_tvlv_mcast_data {
|
|
|
- u8 flags;
|
|
|
- u8 reserved[3];
|
|
|
+ __u8 flags;
|
|
|
+ __u8 reserved[3];
|
|
|
};
|
|
|
|
|
|
-#endif /* _NET_BATMAN_ADV_PACKET_H_ */
|
|
|
+#endif /* _UAPI_LINUX_BATADV_PACKET_H_ */
|