dccp.h
001: #ifndef _LINUX_DCCP_H
002: #define _LINUX_DCCP_H
003: 
004: #include <linux/types.h>
005: #include <asm/byteorder.h>
006: 
007: 
008: 
009: 
010: @dccph
011: @dccph
012: @dccph
013: @dccph
014: @dccph
015: @dccph
016: @dccph
017: @dccph
018: @dccph
019: 
020: struct dccp_hdr {
021:         __be16  dccph_sport,
022:                 dccph_dport;
023:         __u8    dccph_doff;
024: #if defined(__LITTLE_ENDIAN_BITFIELD)
025:         __u8    dccph_cscov:4,
026:                 dccph_ccval:4;
027: #elif defined(__BIG_ENDIAN_BITFIELD)
028:         __u8    dccph_ccval:4,
029:                 dccph_cscov:4;
030: #else
031: #error  "Adjust your <asm/byteorder.h> defines"
032: #endif
033:         __sum16 dccph_checksum;
034: #if defined(__LITTLE_ENDIAN_BITFIELD)
035:         __u8    dccph_x:1,
036:                 dccph_type:4,
037:                 dccph_reserved:3;
038: #elif defined(__BIG_ENDIAN_BITFIELD)
039:         __u8    dccph_reserved:3,
040:                 dccph_type:4,
041:                 dccph_x:1;
042: #else
043: #error  "Adjust your <asm/byteorder.h> defines"
044: #endif
045:         __u8    dccph_seq2;
046:         __be16  dccph_seq;
047: };
048: 
049: 
050: 
051: 
052: @dccph
053: 
054: struct dccp_hdr_ext {
055:         __be32  dccph_seq_low;
056: };
057: 
058: 
059: 
060: 
061: @dccph
062: 
063: struct dccp_hdr_request {
064:         __be32  dccph_req_service;
065: };
066: 
067: 
068: 
069: @dccph
070: @dccph
071: 
072: struct dccp_hdr_ack_bits {
073:         __be16  dccph_reserved1;
074:         __be16  dccph_ack_nr_high;
075:         __be32  dccph_ack_nr_low;
076: };
077: 
078: 
079: 
080: @dccph
081: @dccph
082: 
083: struct dccp_hdr_response {
084:         struct dccp_hdr_ack_bits        dccph_resp_ack;
085:         __be32                          dccph_resp_service;
086: };
087: 
088: 
089: 
090: 
091: @dccph
092: @dccph
093: @dccph
094: 
095: struct dccp_hdr_reset {
096:         struct dccp_hdr_ack_bits        dccph_reset_ack;
097:         __u8                            dccph_reset_code,
098:                                         dccph_reset_data[3];
099: };
100: 
101: enum dccp_pkt_type {
102:         DCCP_PKT_REQUEST = 0,
103:         DCCP_PKT_RESPONSE,
104:         DCCP_PKT_DATA,
105:         DCCP_PKT_ACK,
106:         DCCP_PKT_DATAACK,
107:         DCCP_PKT_CLOSEREQ,
108:         DCCP_PKT_CLOSE,
109:         DCCP_PKT_RESET,
110:         DCCP_PKT_SYNC,
111:         DCCP_PKT_SYNCACK,
112:         DCCP_PKT_INVALID,
113: };
114: 
115: #define DCCP_NR_PKT_TYPES DCCP_PKT_INVALID
116: 
117: static __inline__ unsigned int dccp_packet_hdr_len(const __u8 type)
118: {
119:         if (type == DCCP_PKT_DATA)
120:                 return 0;
121:         if (type == DCCP_PKT_DATAACK    ||
122:             type == DCCP_PKT_ACK        ||
123:             type == DCCP_PKT_SYNC       ||
124:             type == DCCP_PKT_SYNCACK    ||
125:             type == DCCP_PKT_CLOSE      ||
126:             type == DCCP_PKT_CLOSEREQ)
127:                 return sizeof(struct dccp_hdr_ack_bits);
128:         if (type == DCCP_PKT_REQUEST)
129:                 return sizeof(struct dccp_hdr_request);
130:         if (type == DCCP_PKT_RESPONSE)
131:                 return sizeof(struct dccp_hdr_response);
132:         return sizeof(struct dccp_hdr_reset);
133: }
134: enum dccp_reset_codes {
135:         DCCP_RESET_CODE_UNSPECIFIED = 0,
136:         DCCP_RESET_CODE_CLOSED,
137:         DCCP_RESET_CODE_ABORTED,
138:         DCCP_RESET_CODE_NO_CONNECTION,
139:         DCCP_RESET_CODE_PACKET_ERROR,
140:         DCCP_RESET_CODE_OPTION_ERROR,
141:         DCCP_RESET_CODE_MANDATORY_ERROR,
142:         DCCP_RESET_CODE_CONNECTION_REFUSED,
143:         DCCP_RESET_CODE_BAD_SERVICE_CODE,
144:         DCCP_RESET_CODE_TOO_BUSY,
145:         DCCP_RESET_CODE_BAD_INIT_COOKIE,
146:         DCCP_RESET_CODE_AGGRESSION_PENALTY,
147: 
148:         DCCP_MAX_RESET_CODES            
149: };
150: 
151: 
152: enum {
153:         DCCPO_PADDING = 0,
154:         DCCPO_MANDATORY = 1,
155:         DCCPO_MIN_RESERVED = 3,
156:         DCCPO_MAX_RESERVED = 31,
157:         DCCPO_CHANGE_L = 32,
158:         DCCPO_CONFIRM_L = 33,
159:         DCCPO_CHANGE_R = 34,
160:         DCCPO_CONFIRM_R = 35,
161:         DCCPO_NDP_COUNT = 37,
162:         DCCPO_ACK_VECTOR_0 = 38,
163:         DCCPO_ACK_VECTOR_1 = 39,
164:         DCCPO_TIMESTAMP = 41,
165:         DCCPO_TIMESTAMP_ECHO = 42,
166:         DCCPO_ELAPSED_TIME = 43,
167:         DCCPO_MAX = 45,
168:         DCCPO_MIN_RX_CCID_SPECIFIC = 128,       
169:         DCCPO_MAX_RX_CCID_SPECIFIC = 191,
170:         DCCPO_MIN_TX_CCID_SPECIFIC = 192,       
171:         DCCPO_MAX_TX_CCID_SPECIFIC = 255,
172: };
173: 
174: #define DCCP_SINGLE_OPT_MAXLEN  253
175: 
176: 
177: enum {
178:         DCCPC_CCID2 = 2,
179:         DCCPC_CCID3 = 3,
180: };
181: 
182: 
183: enum dccp_feature_numbers {
184:         DCCPF_RESERVED = 0,
185:         DCCPF_CCID = 1,
186:         DCCPF_SHORT_SEQNOS = 2,
187:         DCCPF_SEQUENCE_WINDOW = 3,
188:         DCCPF_ECN_INCAPABLE = 4,
189:         DCCPF_ACK_RATIO = 5,
190:         DCCPF_SEND_ACK_VECTOR = 6,
191:         DCCPF_SEND_NDP_COUNT = 7,
192:         DCCPF_MIN_CSUM_COVER = 8,
193:         DCCPF_DATA_CHECKSUM = 9,
194:         
195:         DCCPF_MIN_CCID_SPECIFIC = 128,
196:         DCCPF_SEND_LEV_RATE = 192,      
197:         DCCPF_MAX_CCID_SPECIFIC = 255,
198: };
199: 
200: 
201: enum dccp_cmsg_type {
202:         DCCP_SCM_PRIORITY = 1,
203:         DCCP_SCM_QPOLICY_MAX = 0xFFFF,
204:         
205:         DCCP_SCM_MAX
206: };
207: 
208: 
209: enum dccp_packet_dequeueing_policy {
210:         DCCPQ_POLICY_SIMPLE,
211:         DCCPQ_POLICY_PRIO,
212:         DCCPQ_POLICY_MAX
213: };
214: 
215: 
216: #define DCCP_SOCKOPT_PACKET_SIZE        1 
217: #define DCCP_SOCKOPT_SERVICE            2
218: #define DCCP_SOCKOPT_CHANGE_L           3
219: #define DCCP_SOCKOPT_CHANGE_R           4
220: #define DCCP_SOCKOPT_GET_CUR_MPS        5
221: #define DCCP_SOCKOPT_SERVER_TIMEWAIT    6
222: #define DCCP_SOCKOPT_SEND_CSCOV         10
223: #define DCCP_SOCKOPT_RECV_CSCOV         11
224: #define DCCP_SOCKOPT_AVAILABLE_CCIDS    12
225: #define DCCP_SOCKOPT_CCID               13
226: #define DCCP_SOCKOPT_TX_CCID            14
227: #define DCCP_SOCKOPT_RX_CCID            15
228: #define DCCP_SOCKOPT_QPOLICY_ID         16
229: #define DCCP_SOCKOPT_QPOLICY_TXQLEN     17
230: #define DCCP_SOCKOPT_CCID_RX_INFO       128
231: #define DCCP_SOCKOPT_CCID_TX_INFO       192
232: 
233: 
234: #define DCCP_SERVICE_LIST_MAX_LEN      32
235: 
236: 
237: #endif 
238: 
      
      
      
      
   
      
      
         
            
            © Andrew Scott 2006 -
            2025, 
            All Rights Reserved