diff options
author | Arnaldo Carvalho de Melo <acme@mandriva.com> | 2006-03-20 22:21:44 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-03-20 22:21:44 -0500 |
commit | 91f0ebf7b6d5cb2b6e818d48587566144821babe (patch) | |
tree | 505c66f36bd72014d7eacb7a04ea011bae2e9a3a /net/dccp/ccids/ccid2.h | |
parent | f38c39d6ce8226519455a6dfe91c2ad84f363f6f (diff) |
[DCCP] CCID: Improve CCID infrastructure
1. No need for ->ccid_init nor ->ccid_exit, this is what module_{init,exit}
does and anynways neither ccid2 nor ccid3 were using it.
2. Rename struct ccid to struct ccid_operations and introduce struct ccid
with a pointer to ccid_operations and rigth after it the rx or tx
private state.
3. Remove the pointer to the state of the half connections from struct
dccp_sock, now its derived thru ccid_priv() from the ccid pointer.
Now we also can implement the setsockopt for changing the CCID easily as
no ccid init routines can affect struct dccp_sock in any way that prevents
other CCIDs from working if a CCID switch operation is asked by apps.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dccp/ccids/ccid2.h')
-rw-r--r-- | net/dccp/ccids/ccid2.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/net/dccp/ccids/ccid2.h b/net/dccp/ccids/ccid2.h index 0b08c90955a9..451a87464fa5 100644 --- a/net/dccp/ccids/ccid2.h +++ b/net/dccp/ccids/ccid2.h | |||
@@ -20,6 +20,13 @@ | |||
20 | #ifndef _DCCP_CCID2_H_ | 20 | #ifndef _DCCP_CCID2_H_ |
21 | #define _DCCP_CCID2_H_ | 21 | #define _DCCP_CCID2_H_ |
22 | 22 | ||
23 | #include <linux/dccp.h> | ||
24 | #include <linux/timer.h> | ||
25 | #include <linux/types.h> | ||
26 | #include "../ccid.h" | ||
27 | |||
28 | struct sock; | ||
29 | |||
23 | struct ccid2_seq { | 30 | struct ccid2_seq { |
24 | u64 ccid2s_seq; | 31 | u64 ccid2s_seq; |
25 | unsigned long ccid2s_sent; | 32 | unsigned long ccid2s_sent; |
@@ -66,4 +73,13 @@ struct ccid2_hc_rx_sock { | |||
66 | int ccid2hcrx_data; | 73 | int ccid2hcrx_data; |
67 | }; | 74 | }; |
68 | 75 | ||
76 | static inline struct ccid2_hc_tx_sock *ccid2_hc_tx_sk(const struct sock *sk) | ||
77 | { | ||
78 | return ccid_priv(dccp_sk(sk)->dccps_hc_tx_ccid); | ||
79 | } | ||
80 | |||
81 | static inline struct ccid2_hc_rx_sock *ccid2_hc_rx_sk(const struct sock *sk) | ||
82 | { | ||
83 | return ccid_priv(dccp_sk(sk)->dccps_hc_rx_ccid); | ||
84 | } | ||
69 | #endif /* _DCCP_CCID2_H_ */ | 85 | #endif /* _DCCP_CCID2_H_ */ |