1/****************************************************************************
2 ****************************************************************************
3 ***
4 ***   This header was automatically generated from a Linux kernel header
5 ***   of the same name, to make information necessary for userspace to
6 ***   call into the kernel available to libc.  It contains only constants,
7 ***   structures, and macros generated from the original header, and thus,
8 ***   contains no copyrightable information.
9 ***
10 ***   To edit the content of this header, modify the corresponding
11 ***   source file (e.g. under external/kernel-headers/original/) then
12 ***   run bionic/libc/kernel/tools/update_all.py
13 ***
14 ***   Any manual change here will be lost the next time this script will
15 ***   be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef _UAPI_LINUX_DCCP_H
20#define _UAPI_LINUX_DCCP_H
21#include <linux/types.h>
22#include <asm/byteorder.h>
23struct dccp_hdr {
24  __be16 dccph_sport, dccph_dport;
25  __u8 dccph_doff;
26#ifdef __LITTLE_ENDIAN_BITFIELD
27  __u8 dccph_cscov : 4, dccph_ccval : 4;
28#elif defined(__BIG_ENDIAN_BITFIELD)
29  __u8 dccph_ccval : 4, dccph_cscov : 4;
30#else
31#error "Adjust your <asm/byteorder.h> defines"
32#endif
33  __sum16 dccph_checksum;
34#ifdef __LITTLE_ENDIAN_BITFIELD
35  __u8 dccph_x : 1, dccph_type : 4, dccph_reserved : 3;
36#elif defined(__BIG_ENDIAN_BITFIELD)
37  __u8 dccph_reserved : 3, dccph_type : 4, dccph_x : 1;
38#else
39#error "Adjust your <asm/byteorder.h> defines"
40#endif
41  __u8 dccph_seq2;
42  __be16 dccph_seq;
43};
44struct dccp_hdr_ext {
45  __be32 dccph_seq_low;
46};
47struct dccp_hdr_request {
48  __be32 dccph_req_service;
49};
50struct dccp_hdr_ack_bits {
51  __be16 dccph_reserved1;
52  __be16 dccph_ack_nr_high;
53  __be32 dccph_ack_nr_low;
54};
55struct dccp_hdr_response {
56  struct dccp_hdr_ack_bits dccph_resp_ack;
57  __be32 dccph_resp_service;
58};
59struct dccp_hdr_reset {
60  struct dccp_hdr_ack_bits dccph_reset_ack;
61  __u8 dccph_reset_code, dccph_reset_data[3];
62};
63enum dccp_pkt_type {
64  DCCP_PKT_REQUEST = 0,
65  DCCP_PKT_RESPONSE,
66  DCCP_PKT_DATA,
67  DCCP_PKT_ACK,
68  DCCP_PKT_DATAACK,
69  DCCP_PKT_CLOSEREQ,
70  DCCP_PKT_CLOSE,
71  DCCP_PKT_RESET,
72  DCCP_PKT_SYNC,
73  DCCP_PKT_SYNCACK,
74  DCCP_PKT_INVALID,
75};
76#define DCCP_NR_PKT_TYPES DCCP_PKT_INVALID
77enum dccp_reset_codes {
78  DCCP_RESET_CODE_UNSPECIFIED = 0,
79  DCCP_RESET_CODE_CLOSED,
80  DCCP_RESET_CODE_ABORTED,
81  DCCP_RESET_CODE_NO_CONNECTION,
82  DCCP_RESET_CODE_PACKET_ERROR,
83  DCCP_RESET_CODE_OPTION_ERROR,
84  DCCP_RESET_CODE_MANDATORY_ERROR,
85  DCCP_RESET_CODE_CONNECTION_REFUSED,
86  DCCP_RESET_CODE_BAD_SERVICE_CODE,
87  DCCP_RESET_CODE_TOO_BUSY,
88  DCCP_RESET_CODE_BAD_INIT_COOKIE,
89  DCCP_RESET_CODE_AGGRESSION_PENALTY,
90  DCCP_MAX_RESET_CODES
91};
92enum {
93  DCCPO_PADDING = 0,
94  DCCPO_MANDATORY = 1,
95  DCCPO_MIN_RESERVED = 3,
96  DCCPO_MAX_RESERVED = 31,
97  DCCPO_CHANGE_L = 32,
98  DCCPO_CONFIRM_L = 33,
99  DCCPO_CHANGE_R = 34,
100  DCCPO_CONFIRM_R = 35,
101  DCCPO_NDP_COUNT = 37,
102  DCCPO_ACK_VECTOR_0 = 38,
103  DCCPO_ACK_VECTOR_1 = 39,
104  DCCPO_TIMESTAMP = 41,
105  DCCPO_TIMESTAMP_ECHO = 42,
106  DCCPO_ELAPSED_TIME = 43,
107  DCCPO_MAX = 45,
108  DCCPO_MIN_RX_CCID_SPECIFIC = 128,
109  DCCPO_MAX_RX_CCID_SPECIFIC = 191,
110  DCCPO_MIN_TX_CCID_SPECIFIC = 192,
111  DCCPO_MAX_TX_CCID_SPECIFIC = 255,
112};
113#define DCCP_SINGLE_OPT_MAXLEN 253
114enum {
115  DCCPC_CCID2 = 2,
116  DCCPC_CCID3 = 3,
117};
118enum dccp_feature_numbers {
119  DCCPF_RESERVED = 0,
120  DCCPF_CCID = 1,
121  DCCPF_SHORT_SEQNOS = 2,
122  DCCPF_SEQUENCE_WINDOW = 3,
123  DCCPF_ECN_INCAPABLE = 4,
124  DCCPF_ACK_RATIO = 5,
125  DCCPF_SEND_ACK_VECTOR = 6,
126  DCCPF_SEND_NDP_COUNT = 7,
127  DCCPF_MIN_CSUM_COVER = 8,
128  DCCPF_DATA_CHECKSUM = 9,
129  DCCPF_MIN_CCID_SPECIFIC = 128,
130  DCCPF_SEND_LEV_RATE = 192,
131  DCCPF_MAX_CCID_SPECIFIC = 255,
132};
133enum dccp_cmsg_type {
134  DCCP_SCM_PRIORITY = 1,
135  DCCP_SCM_QPOLICY_MAX = 0xFFFF,
136  DCCP_SCM_MAX
137};
138enum dccp_packet_dequeueing_policy {
139  DCCPQ_POLICY_SIMPLE,
140  DCCPQ_POLICY_PRIO,
141  DCCPQ_POLICY_MAX
142};
143#define DCCP_SOCKOPT_PACKET_SIZE 1
144#define DCCP_SOCKOPT_SERVICE 2
145#define DCCP_SOCKOPT_CHANGE_L 3
146#define DCCP_SOCKOPT_CHANGE_R 4
147#define DCCP_SOCKOPT_GET_CUR_MPS 5
148#define DCCP_SOCKOPT_SERVER_TIMEWAIT 6
149#define DCCP_SOCKOPT_SEND_CSCOV 10
150#define DCCP_SOCKOPT_RECV_CSCOV 11
151#define DCCP_SOCKOPT_AVAILABLE_CCIDS 12
152#define DCCP_SOCKOPT_CCID 13
153#define DCCP_SOCKOPT_TX_CCID 14
154#define DCCP_SOCKOPT_RX_CCID 15
155#define DCCP_SOCKOPT_QPOLICY_ID 16
156#define DCCP_SOCKOPT_QPOLICY_TXQLEN 17
157#define DCCP_SOCKOPT_CCID_RX_INFO 128
158#define DCCP_SOCKOPT_CCID_TX_INFO 192
159#define DCCP_SERVICE_LIST_MAX_LEN 32
160#endif
161