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 ****************************************************************************
11 ****************************************************************************/
12#ifndef _LINUX_DCCP_H
13#define _LINUX_DCCP_H
14
15#include <linux/types.h>
16#include <asm/byteorder.h>
17
18struct dccp_hdr {
19 __be16 dccph_sport,
20 dccph_dport;
21 __u8 dccph_doff;
22#ifdef __LITTLE_ENDIAN_BITFIELD
23 __u8 dccph_cscov:4,
24 dccph_ccval:4;
25#elif defined(__BIG_ENDIAN_BITFIELD)
26 __u8 dccph_ccval:4,
27 dccph_cscov:4;
28#else
29#error "Adjust your <asm/byteorder.h> defines"
30#endif
31 __u16 dccph_checksum;
32#ifdef __LITTLE_ENDIAN_BITFIELD
33 __u8 dccph_x:1,
34 dccph_type:4,
35 dccph_reserved:3;
36#elif defined(__BIG_ENDIAN_BITFIELD)
37 __u8 dccph_reserved:3,
38 dccph_type:4,
39 dccph_x:1;
40#else
41#error "Adjust your <asm/byteorder.h> defines"
42#endif
43 __u8 dccph_seq2;
44 __be16 dccph_seq;
45};
46
47struct dccp_hdr_ext {
48 __be32 dccph_seq_low;
49};
50
51struct dccp_hdr_request {
52 __be32 dccph_req_service;
53};
54
55struct dccp_hdr_ack_bits {
56 __be16 dccph_reserved1;
57 __be16 dccph_ack_nr_high;
58 __be32 dccph_ack_nr_low;
59};
60
61struct dccp_hdr_response {
62 struct dccp_hdr_ack_bits dccph_resp_ack;
63 __be32 dccph_resp_service;
64};
65
66struct dccp_hdr_reset {
67 struct dccp_hdr_ack_bits dccph_reset_ack;
68 __u8 dccph_reset_code,
69 dccph_reset_data[3];
70};
71
72enum dccp_pkt_type {
73 DCCP_PKT_REQUEST = 0,
74 DCCP_PKT_RESPONSE,
75 DCCP_PKT_DATA,
76 DCCP_PKT_ACK,
77 DCCP_PKT_DATAACK,
78 DCCP_PKT_CLOSEREQ,
79 DCCP_PKT_CLOSE,
80 DCCP_PKT_RESET,
81 DCCP_PKT_SYNC,
82 DCCP_PKT_SYNCACK,
83 DCCP_PKT_INVALID,
84};
85
86#define DCCP_NR_PKT_TYPES DCCP_PKT_INVALID
87
88enum {
89 DCCPO_PADDING = 0,
90 DCCPO_MANDATORY = 1,
91 DCCPO_MIN_RESERVED = 3,
92 DCCPO_MAX_RESERVED = 31,
93 DCCPO_CHANGE_L = 32,
94 DCCPO_CONFIRM_L = 33,
95 DCCPO_CHANGE_R = 34,
96 DCCPO_CONFIRM_R = 35,
97 DCCPO_NDP_COUNT = 37,
98 DCCPO_ACK_VECTOR_0 = 38,
99 DCCPO_ACK_VECTOR_1 = 39,
100 DCCPO_TIMESTAMP = 41,
101 DCCPO_TIMESTAMP_ECHO = 42,
102 DCCPO_ELAPSED_TIME = 43,
103 DCCPO_MAX = 45,
104 DCCPO_MIN_CCID_SPECIFIC = 128,
105 DCCPO_MAX_CCID_SPECIFIC = 255,
106};
107
108enum {
109 DCCPF_RESERVED = 0,
110 DCCPF_CCID = 1,
111 DCCPF_SEQUENCE_WINDOW = 3,
112 DCCPF_ACK_RATIO = 5,
113 DCCPF_SEND_ACK_VECTOR = 6,
114 DCCPF_SEND_NDP_COUNT = 7,
115
116 DCCPF_MIN_CCID_SPECIFIC = 128,
117 DCCPF_MAX_CCID_SPECIFIC = 255,
118};
119
120struct dccp_so_feat {
121 __u8 dccpsf_feat;
122 __u8 *dccpsf_val;
123 __u8 dccpsf_len;
124};
125
126#define DCCP_SOCKOPT_PACKET_SIZE 1
127#define DCCP_SOCKOPT_SERVICE 2
128#define DCCP_SOCKOPT_CHANGE_L 3
129#define DCCP_SOCKOPT_CHANGE_R 4
130#define DCCP_SOCKOPT_CCID_RX_INFO 128
131#define DCCP_SOCKOPT_CCID_TX_INFO 192
132
133#define DCCP_SERVICE_LIST_MAX_LEN 32
134
135#endif
136