122851890Sopenharmony_ci/**************************************************************************** 222851890Sopenharmony_ci **************************************************************************** 322851890Sopenharmony_ci *** 422851890Sopenharmony_ci *** This header was automatically generated from a Linux kernel header 522851890Sopenharmony_ci *** of the same name, to make information necessary for userspace to 622851890Sopenharmony_ci *** call into the kernel available to libc. It contains only constants, 722851890Sopenharmony_ci *** structures, and macros generated from the original header, and thus, 822851890Sopenharmony_ci *** contains no copyrightable information. 922851890Sopenharmony_ci *** 1022851890Sopenharmony_ci *** To edit the content of this header, modify the corresponding 1122851890Sopenharmony_ci *** source file (e.g. under external/kernel-headers/original/) then 1222851890Sopenharmony_ci *** run bionic/libc/kernel/tools/update_all.py 1322851890Sopenharmony_ci *** 1422851890Sopenharmony_ci *** Any manual change here will be lost the next time this script will 1522851890Sopenharmony_ci *** be run. You've been warned! 1622851890Sopenharmony_ci *** 1722851890Sopenharmony_ci **************************************************************************** 1822851890Sopenharmony_ci ****************************************************************************/ 1922851890Sopenharmony_ci#ifndef _UAPI_LINUX_BATADV_PACKET_H_ 2022851890Sopenharmony_ci#define _UAPI_LINUX_BATADV_PACKET_H_ 2122851890Sopenharmony_ci#include <asm/byteorder.h> 2222851890Sopenharmony_ci#include <linux/if_ether.h> 2322851890Sopenharmony_ci#include <linux/types.h> 2422851890Sopenharmony_ci#define batadv_tp_is_error(n) ((__u8) (n) > 127 ? 1 : 0) 2522851890Sopenharmony_cienum batadv_packettype { 2622851890Sopenharmony_ci BATADV_IV_OGM = 0x00, 2722851890Sopenharmony_ci BATADV_BCAST = 0x01, 2822851890Sopenharmony_ci BATADV_CODED = 0x02, 2922851890Sopenharmony_ci BATADV_ELP = 0x03, 3022851890Sopenharmony_ci BATADV_OGM2 = 0x04, 3122851890Sopenharmony_ci#define BATADV_UNICAST_MIN 0x40 3222851890Sopenharmony_ci BATADV_UNICAST = 0x40, 3322851890Sopenharmony_ci BATADV_UNICAST_FRAG = 0x41, 3422851890Sopenharmony_ci BATADV_UNICAST_4ADDR = 0x42, 3522851890Sopenharmony_ci BATADV_ICMP = 0x43, 3622851890Sopenharmony_ci BATADV_UNICAST_TVLV = 0x44, 3722851890Sopenharmony_ci#define BATADV_UNICAST_MAX 0x7f 3822851890Sopenharmony_ci}; 3922851890Sopenharmony_cienum batadv_subtype { 4022851890Sopenharmony_ci BATADV_P_DATA = 0x01, 4122851890Sopenharmony_ci BATADV_P_DAT_DHT_GET = 0x02, 4222851890Sopenharmony_ci BATADV_P_DAT_DHT_PUT = 0x03, 4322851890Sopenharmony_ci BATADV_P_DAT_CACHE_REPLY = 0x04, 4422851890Sopenharmony_ci}; 4522851890Sopenharmony_ci#define BATADV_COMPAT_VERSION 15 4622851890Sopenharmony_cienum batadv_iv_flags { 4722851890Sopenharmony_ci BATADV_NOT_BEST_NEXT_HOP = 1UL << 0, 4822851890Sopenharmony_ci BATADV_PRIMARIES_FIRST_HOP = 1UL << 1, 4922851890Sopenharmony_ci BATADV_DIRECTLINK = 1UL << 2, 5022851890Sopenharmony_ci}; 5122851890Sopenharmony_cienum batadv_icmp_packettype { 5222851890Sopenharmony_ci BATADV_ECHO_REPLY = 0, 5322851890Sopenharmony_ci BATADV_DESTINATION_UNREACHABLE = 3, 5422851890Sopenharmony_ci BATADV_ECHO_REQUEST = 8, 5522851890Sopenharmony_ci BATADV_TTL_EXCEEDED = 11, 5622851890Sopenharmony_ci BATADV_PARAMETER_PROBLEM = 12, 5722851890Sopenharmony_ci BATADV_TP = 15, 5822851890Sopenharmony_ci}; 5922851890Sopenharmony_cienum batadv_mcast_flags { 6022851890Sopenharmony_ci BATADV_MCAST_WANT_ALL_UNSNOOPABLES = 1UL << 0, 6122851890Sopenharmony_ci BATADV_MCAST_WANT_ALL_IPV4 = 1UL << 1, 6222851890Sopenharmony_ci BATADV_MCAST_WANT_ALL_IPV6 = 1UL << 2, 6322851890Sopenharmony_ci BATADV_MCAST_WANT_NO_RTR4 = 1UL << 3, 6422851890Sopenharmony_ci BATADV_MCAST_WANT_NO_RTR6 = 1UL << 4, 6522851890Sopenharmony_ci}; 6622851890Sopenharmony_ci#define BATADV_TT_DATA_TYPE_MASK 0x0F 6722851890Sopenharmony_cienum batadv_tt_data_flags { 6822851890Sopenharmony_ci BATADV_TT_OGM_DIFF = 1UL << 0, 6922851890Sopenharmony_ci BATADV_TT_REQUEST = 1UL << 1, 7022851890Sopenharmony_ci BATADV_TT_RESPONSE = 1UL << 2, 7122851890Sopenharmony_ci BATADV_TT_FULL_TABLE = 1UL << 4, 7222851890Sopenharmony_ci}; 7322851890Sopenharmony_cienum batadv_vlan_flags { 7422851890Sopenharmony_ci BATADV_VLAN_HAS_TAG = 1UL << 15, 7522851890Sopenharmony_ci}; 7622851890Sopenharmony_cienum batadv_bla_claimframe { 7722851890Sopenharmony_ci BATADV_CLAIM_TYPE_CLAIM = 0x00, 7822851890Sopenharmony_ci BATADV_CLAIM_TYPE_UNCLAIM = 0x01, 7922851890Sopenharmony_ci BATADV_CLAIM_TYPE_ANNOUNCE = 0x02, 8022851890Sopenharmony_ci BATADV_CLAIM_TYPE_REQUEST = 0x03, 8122851890Sopenharmony_ci BATADV_CLAIM_TYPE_LOOPDETECT = 0x04, 8222851890Sopenharmony_ci}; 8322851890Sopenharmony_cienum batadv_tvlv_type { 8422851890Sopenharmony_ci BATADV_TVLV_GW = 0x01, 8522851890Sopenharmony_ci BATADV_TVLV_DAT = 0x02, 8622851890Sopenharmony_ci BATADV_TVLV_NC = 0x03, 8722851890Sopenharmony_ci BATADV_TVLV_TT = 0x04, 8822851890Sopenharmony_ci BATADV_TVLV_ROAM = 0x05, 8922851890Sopenharmony_ci BATADV_TVLV_MCAST = 0x06, 9022851890Sopenharmony_ci}; 9122851890Sopenharmony_ci#pragma pack(2) 9222851890Sopenharmony_cistruct batadv_bla_claim_dst { 9322851890Sopenharmony_ci __u8 magic[3]; 9422851890Sopenharmony_ci __u8 type; 9522851890Sopenharmony_ci __be16 group; 9622851890Sopenharmony_ci}; 9722851890Sopenharmony_cistruct batadv_ogm_packet { 9822851890Sopenharmony_ci __u8 packet_type; 9922851890Sopenharmony_ci __u8 version; 10022851890Sopenharmony_ci __u8 ttl; 10122851890Sopenharmony_ci __u8 flags; 10222851890Sopenharmony_ci __be32 seqno; 10322851890Sopenharmony_ci __u8 orig[ETH_ALEN]; 10422851890Sopenharmony_ci __u8 prev_sender[ETH_ALEN]; 10522851890Sopenharmony_ci __u8 reserved; 10622851890Sopenharmony_ci __u8 tq; 10722851890Sopenharmony_ci __be16 tvlv_len; 10822851890Sopenharmony_ci}; 10922851890Sopenharmony_ci#define BATADV_OGM_HLEN sizeof(struct batadv_ogm_packet) 11022851890Sopenharmony_cistruct batadv_ogm2_packet { 11122851890Sopenharmony_ci __u8 packet_type; 11222851890Sopenharmony_ci __u8 version; 11322851890Sopenharmony_ci __u8 ttl; 11422851890Sopenharmony_ci __u8 flags; 11522851890Sopenharmony_ci __be32 seqno; 11622851890Sopenharmony_ci __u8 orig[ETH_ALEN]; 11722851890Sopenharmony_ci __be16 tvlv_len; 11822851890Sopenharmony_ci __be32 throughput; 11922851890Sopenharmony_ci}; 12022851890Sopenharmony_ci#define BATADV_OGM2_HLEN sizeof(struct batadv_ogm2_packet) 12122851890Sopenharmony_cistruct batadv_elp_packet { 12222851890Sopenharmony_ci __u8 packet_type; 12322851890Sopenharmony_ci __u8 version; 12422851890Sopenharmony_ci __u8 orig[ETH_ALEN]; 12522851890Sopenharmony_ci __be32 seqno; 12622851890Sopenharmony_ci __be32 elp_interval; 12722851890Sopenharmony_ci}; 12822851890Sopenharmony_ci#define BATADV_ELP_HLEN sizeof(struct batadv_elp_packet) 12922851890Sopenharmony_cistruct batadv_icmp_header { 13022851890Sopenharmony_ci __u8 packet_type; 13122851890Sopenharmony_ci __u8 version; 13222851890Sopenharmony_ci __u8 ttl; 13322851890Sopenharmony_ci __u8 msg_type; 13422851890Sopenharmony_ci __u8 dst[ETH_ALEN]; 13522851890Sopenharmony_ci __u8 orig[ETH_ALEN]; 13622851890Sopenharmony_ci __u8 uid; 13722851890Sopenharmony_ci __u8 align[3]; 13822851890Sopenharmony_ci}; 13922851890Sopenharmony_cistruct batadv_icmp_packet { 14022851890Sopenharmony_ci __u8 packet_type; 14122851890Sopenharmony_ci __u8 version; 14222851890Sopenharmony_ci __u8 ttl; 14322851890Sopenharmony_ci __u8 msg_type; 14422851890Sopenharmony_ci __u8 dst[ETH_ALEN]; 14522851890Sopenharmony_ci __u8 orig[ETH_ALEN]; 14622851890Sopenharmony_ci __u8 uid; 14722851890Sopenharmony_ci __u8 reserved; 14822851890Sopenharmony_ci __be16 seqno; 14922851890Sopenharmony_ci}; 15022851890Sopenharmony_cistruct batadv_icmp_tp_packet { 15122851890Sopenharmony_ci __u8 packet_type; 15222851890Sopenharmony_ci __u8 version; 15322851890Sopenharmony_ci __u8 ttl; 15422851890Sopenharmony_ci __u8 msg_type; 15522851890Sopenharmony_ci __u8 dst[ETH_ALEN]; 15622851890Sopenharmony_ci __u8 orig[ETH_ALEN]; 15722851890Sopenharmony_ci __u8 uid; 15822851890Sopenharmony_ci __u8 subtype; 15922851890Sopenharmony_ci __u8 session[2]; 16022851890Sopenharmony_ci __be32 seqno; 16122851890Sopenharmony_ci __be32 timestamp; 16222851890Sopenharmony_ci}; 16322851890Sopenharmony_cienum batadv_icmp_tp_subtype { 16422851890Sopenharmony_ci BATADV_TP_MSG = 0, 16522851890Sopenharmony_ci BATADV_TP_ACK, 16622851890Sopenharmony_ci}; 16722851890Sopenharmony_ci#define BATADV_RR_LEN 16 16822851890Sopenharmony_cistruct batadv_icmp_packet_rr { 16922851890Sopenharmony_ci __u8 packet_type; 17022851890Sopenharmony_ci __u8 version; 17122851890Sopenharmony_ci __u8 ttl; 17222851890Sopenharmony_ci __u8 msg_type; 17322851890Sopenharmony_ci __u8 dst[ETH_ALEN]; 17422851890Sopenharmony_ci __u8 orig[ETH_ALEN]; 17522851890Sopenharmony_ci __u8 uid; 17622851890Sopenharmony_ci __u8 rr_cur; 17722851890Sopenharmony_ci __be16 seqno; 17822851890Sopenharmony_ci __u8 rr[BATADV_RR_LEN][ETH_ALEN]; 17922851890Sopenharmony_ci}; 18022851890Sopenharmony_ci#define BATADV_ICMP_MAX_PACKET_SIZE sizeof(struct batadv_icmp_packet_rr) 18122851890Sopenharmony_cistruct batadv_unicast_packet { 18222851890Sopenharmony_ci __u8 packet_type; 18322851890Sopenharmony_ci __u8 version; 18422851890Sopenharmony_ci __u8 ttl; 18522851890Sopenharmony_ci __u8 ttvn; 18622851890Sopenharmony_ci __u8 dest[ETH_ALEN]; 18722851890Sopenharmony_ci}; 18822851890Sopenharmony_cistruct batadv_unicast_4addr_packet { 18922851890Sopenharmony_ci struct batadv_unicast_packet u; 19022851890Sopenharmony_ci __u8 src[ETH_ALEN]; 19122851890Sopenharmony_ci __u8 subtype; 19222851890Sopenharmony_ci __u8 reserved; 19322851890Sopenharmony_ci}; 19422851890Sopenharmony_cistruct batadv_frag_packet { 19522851890Sopenharmony_ci __u8 packet_type; 19622851890Sopenharmony_ci __u8 version; 19722851890Sopenharmony_ci __u8 ttl; 19822851890Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD 19922851890Sopenharmony_ci __u8 no : 4; 20022851890Sopenharmony_ci __u8 priority : 3; 20122851890Sopenharmony_ci __u8 reserved : 1; 20222851890Sopenharmony_ci#elif defined(__LITTLE_ENDIAN_BITFIELD) 20322851890Sopenharmony_ci __u8 reserved : 1; 20422851890Sopenharmony_ci __u8 priority : 3; 20522851890Sopenharmony_ci __u8 no : 4; 20622851890Sopenharmony_ci#else 20722851890Sopenharmony_ci#error "unknown bitfield endianness" 20822851890Sopenharmony_ci#endif 20922851890Sopenharmony_ci __u8 dest[ETH_ALEN]; 21022851890Sopenharmony_ci __u8 orig[ETH_ALEN]; 21122851890Sopenharmony_ci __be16 seqno; 21222851890Sopenharmony_ci __be16 total_size; 21322851890Sopenharmony_ci}; 21422851890Sopenharmony_cistruct batadv_bcast_packet { 21522851890Sopenharmony_ci __u8 packet_type; 21622851890Sopenharmony_ci __u8 version; 21722851890Sopenharmony_ci __u8 ttl; 21822851890Sopenharmony_ci __u8 reserved; 21922851890Sopenharmony_ci __be32 seqno; 22022851890Sopenharmony_ci __u8 orig[ETH_ALEN]; 22122851890Sopenharmony_ci}; 22222851890Sopenharmony_cistruct batadv_coded_packet { 22322851890Sopenharmony_ci __u8 packet_type; 22422851890Sopenharmony_ci __u8 version; 22522851890Sopenharmony_ci __u8 ttl; 22622851890Sopenharmony_ci __u8 first_ttvn; 22722851890Sopenharmony_ci __u8 first_source[ETH_ALEN]; 22822851890Sopenharmony_ci __u8 first_orig_dest[ETH_ALEN]; 22922851890Sopenharmony_ci __be32 first_crc; 23022851890Sopenharmony_ci __u8 second_ttl; 23122851890Sopenharmony_ci __u8 second_ttvn; 23222851890Sopenharmony_ci __u8 second_dest[ETH_ALEN]; 23322851890Sopenharmony_ci __u8 second_source[ETH_ALEN]; 23422851890Sopenharmony_ci __u8 second_orig_dest[ETH_ALEN]; 23522851890Sopenharmony_ci __be32 second_crc; 23622851890Sopenharmony_ci __be16 coded_len; 23722851890Sopenharmony_ci}; 23822851890Sopenharmony_cistruct batadv_unicast_tvlv_packet { 23922851890Sopenharmony_ci __u8 packet_type; 24022851890Sopenharmony_ci __u8 version; 24122851890Sopenharmony_ci __u8 ttl; 24222851890Sopenharmony_ci __u8 reserved; 24322851890Sopenharmony_ci __u8 dst[ETH_ALEN]; 24422851890Sopenharmony_ci __u8 src[ETH_ALEN]; 24522851890Sopenharmony_ci __be16 tvlv_len; 24622851890Sopenharmony_ci __u16 align; 24722851890Sopenharmony_ci}; 24822851890Sopenharmony_cistruct batadv_tvlv_hdr { 24922851890Sopenharmony_ci __u8 type; 25022851890Sopenharmony_ci __u8 version; 25122851890Sopenharmony_ci __be16 len; 25222851890Sopenharmony_ci}; 25322851890Sopenharmony_cistruct batadv_tvlv_gateway_data { 25422851890Sopenharmony_ci __be32 bandwidth_down; 25522851890Sopenharmony_ci __be32 bandwidth_up; 25622851890Sopenharmony_ci}; 25722851890Sopenharmony_cistruct batadv_tvlv_tt_data { 25822851890Sopenharmony_ci __u8 flags; 25922851890Sopenharmony_ci __u8 ttvn; 26022851890Sopenharmony_ci __be16 num_vlan; 26122851890Sopenharmony_ci}; 26222851890Sopenharmony_cistruct batadv_tvlv_tt_vlan_data { 26322851890Sopenharmony_ci __be32 crc; 26422851890Sopenharmony_ci __be16 vid; 26522851890Sopenharmony_ci __u16 reserved; 26622851890Sopenharmony_ci}; 26722851890Sopenharmony_cistruct batadv_tvlv_tt_change { 26822851890Sopenharmony_ci __u8 flags; 26922851890Sopenharmony_ci __u8 reserved[3]; 27022851890Sopenharmony_ci __u8 addr[ETH_ALEN]; 27122851890Sopenharmony_ci __be16 vid; 27222851890Sopenharmony_ci}; 27322851890Sopenharmony_cistruct batadv_tvlv_roam_adv { 27422851890Sopenharmony_ci __u8 client[ETH_ALEN]; 27522851890Sopenharmony_ci __be16 vid; 27622851890Sopenharmony_ci}; 27722851890Sopenharmony_cistruct batadv_tvlv_mcast_data { 27822851890Sopenharmony_ci __u8 flags; 27922851890Sopenharmony_ci __u8 reserved[3]; 28022851890Sopenharmony_ci}; 28122851890Sopenharmony_ci#pragma pack() 28222851890Sopenharmony_ci#endif 283