aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerrit Renker <gerrit@erg.abdn.ac.uk>2007-09-26 10:27:56 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:52:42 -0400
commit0430ee3451f4589b68f522552b1896825f2043b3 (patch)
treef96e46fa079d90a51a4fc5b912d271470b489668
parent727ecc5faaf6e976fc841649821c865ebd1e822d (diff)
[DCCP]: Add Support for Data 1 .. 3 fields of Reset packets
This adds fields to support the informational Data 1..3 fields of the DCCP-Reset packets (RFC 4340, 5.6), and makes minor cosmetic changes to documentation. Code which fills in these fields follows in subsequent patches, it is primarily used for reporting option-processing and feature-negotiation errors. Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk> Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
-rw-r--r--include/linux/dccp.h14
-rw-r--r--net/dccp/dccp.h14
2 files changed, 19 insertions, 9 deletions
diff --git a/include/linux/dccp.h b/include/linux/dccp.h
index a0441190dc71..20e0717aa8e1 100644
--- a/include/linux/dccp.h
+++ b/include/linux/dccp.h
@@ -56,10 +56,9 @@ struct dccp_hdr_ext {
56}; 56};
57 57
58/** 58/**
59 * struct dccp_hdr_request - Conection initiation request header 59 * struct dccp_hdr_request - Connection initiation request header
60 * 60 *
61 * @dccph_req_service - Service to which the client app wants to connect 61 * @dccph_req_service - Service to which the client app wants to connect
62 * @dccph_req_options - list of options (must be a multiple of 32 bits
63 */ 62 */
64struct dccp_hdr_request { 63struct dccp_hdr_request {
65 __be32 dccph_req_service; 64 __be32 dccph_req_service;
@@ -76,12 +75,10 @@ struct dccp_hdr_ack_bits {
76 __be32 dccph_ack_nr_low; 75 __be32 dccph_ack_nr_low;
77}; 76};
78/** 77/**
79 * struct dccp_hdr_response - Conection initiation response header 78 * struct dccp_hdr_response - Connection initiation response header
80 * 79 *
81 * @dccph_resp_ack_nr_high - 48 bit ack number high order bits, contains GSR 80 * @dccph_resp_ack - 48 bit Acknowledgment Number Subheader (5.3)
82 * @dccph_resp_ack_nr_low - 48 bit ack number low order bits, contains GSR
83 * @dccph_resp_service - Echoes the Service Code on a received DCCP-Request 81 * @dccph_resp_service - Echoes the Service Code on a received DCCP-Request
84 * @dccph_resp_options - list of options (must be a multiple of 32 bits
85 */ 82 */
86struct dccp_hdr_response { 83struct dccp_hdr_response {
87 struct dccp_hdr_ack_bits dccph_resp_ack; 84 struct dccp_hdr_ack_bits dccph_resp_ack;
@@ -91,8 +88,9 @@ struct dccp_hdr_response {
91/** 88/**
92 * struct dccp_hdr_reset - Unconditionally shut down a connection 89 * struct dccp_hdr_reset - Unconditionally shut down a connection
93 * 90 *
94 * @dccph_reset_service - Echoes the Service Code on a received DCCP-Request 91 * @dccph_reset_ack - 48 bit Acknowledgment Number Subheader (5.6)
95 * @dccph_reset_options - list of options (must be a multiple of 32 bits 92 * @dccph_reset_code - one of %dccp_reset_codes
93 * @dccph_reset_data - the Data 1 ... Data 3 fields from 5.6
96 */ 94 */
97struct dccp_hdr_reset { 95struct dccp_hdr_reset {
98 struct dccp_hdr_ack_bits dccph_reset_ack; 96 struct dccp_hdr_ack_bits dccph_reset_ack;
diff --git a/net/dccp/dccp.h b/net/dccp/dccp.h
index f62eeb374931..e28220183208 100644
--- a/net/dccp/dccp.h
+++ b/net/dccp/dccp.h
@@ -308,10 +308,22 @@ static inline int dccp_bad_service_code(const struct sock *sk,
308 return !dccp_list_has_service(dp->dccps_service_list, service); 308 return !dccp_list_has_service(dp->dccps_service_list, service);
309} 309}
310 310
311/**
312 * dccp_skb_cb - DCCP per-packet control information
313 * @dccpd_type: one of %dccp_pkt_type (or unknown)
314 * @dccpd_ccval: CCVal field (5.1), see e.g. RFC 4342, 8.1
315 * @dccpd_reset_code: one of %dccp_reset_codes
316 * @dccpd_reset_data: Data1..3 fields (depend on @dccpd_reset_code)
317 * @dccpd_opt_len: total length of all options (5.8) in the packet
318 * @dccpd_seq: sequence number
319 * @dccpd_ack_seq: acknowledgment number subheader field value
320 * This is used for transmission as well as for reception.
321 */
311struct dccp_skb_cb { 322struct dccp_skb_cb {
312 __u8 dccpd_type:4; 323 __u8 dccpd_type:4;
313 __u8 dccpd_ccval:4; 324 __u8 dccpd_ccval:4;
314 __u8 dccpd_reset_code; 325 __u8 dccpd_reset_code,
326 dccpd_reset_data[3];
315 __u16 dccpd_opt_len; 327 __u16 dccpd_opt_len;
316 __u64 dccpd_seq; 328 __u64 dccpd_seq;
317 __u64 dccpd_ack_seq; 329 __u64 dccpd_ack_seq;