[DCCP]: Prepare the AF agnostic core for the introduction of DCCPv6
Basically exports a similar set of functions as the one exported by the non-AF specific TCP code. In the process moved some non-AF specific code from dccp_v4_connect to dccp_connect_init and moved the checksum verification from dccp_invalid_packet to dccp_v4_rcv, so as to use it in dccp_v6_rcv too. Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
34ca686081
commit
f21e68caa0
@@ -135,12 +135,6 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
|
||||
unsigned int dccp_sync_mss(struct sock *sk, u32 pmtu)
|
||||
{
|
||||
struct dccp_sock *dp = dccp_sk(sk);
|
||||
/*
|
||||
* FIXME: we really should be using the af_specific thing to support
|
||||
* IPv6.
|
||||
* mss_now = pmtu - tp->af_specific->net_header_len -
|
||||
* sizeof(struct dccp_hdr) - sizeof(struct dccp_hdr_ext);
|
||||
*/
|
||||
int mss_now = (pmtu - inet_csk(sk)->icsk_af_ops->net_header_len -
|
||||
sizeof(struct dccp_hdr) - sizeof(struct dccp_hdr_ext));
|
||||
|
||||
@@ -164,6 +158,8 @@ unsigned int dccp_sync_mss(struct sock *sk, u32 pmtu)
|
||||
return mss_now;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(dccp_sync_mss);
|
||||
|
||||
void dccp_write_space(struct sock *sk)
|
||||
{
|
||||
read_lock(&sk->sk_callback_lock);
|
||||
@@ -319,6 +315,8 @@ struct sk_buff *dccp_make_response(struct sock *sk, struct dst_entry *dst,
|
||||
return skb;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(dccp_make_response);
|
||||
|
||||
struct sk_buff *dccp_make_reset(struct sock *sk, struct dst_entry *dst,
|
||||
const enum dccp_reset_codes code)
|
||||
|
||||
@@ -375,6 +373,7 @@ struct sk_buff *dccp_make_reset(struct sock *sk, struct dst_entry *dst,
|
||||
*/
|
||||
static inline void dccp_connect_init(struct sock *sk)
|
||||
{
|
||||
struct dccp_sock *dp = dccp_sk(sk);
|
||||
struct dst_entry *dst = __sk_dst_get(sk);
|
||||
struct inet_connection_sock *icsk = inet_csk(sk);
|
||||
|
||||
@@ -383,10 +382,16 @@ static inline void dccp_connect_init(struct sock *sk)
|
||||
|
||||
dccp_sync_mss(sk, dst_mtu(dst));
|
||||
|
||||
/*
|
||||
* FIXME: set dp->{dccps_swh,dccps_swl}, with
|
||||
* something like dccp_inc_seq
|
||||
*/
|
||||
dccp_update_gss(sk, dp->dccps_iss);
|
||||
/*
|
||||
* SWL and AWL are initially adjusted so that they are not less than
|
||||
* the initial Sequence Numbers received and sent, respectively:
|
||||
* SWL := max(GSR + 1 - floor(W/4), ISR),
|
||||
* AWL := max(GSS - W' + 1, ISS).
|
||||
* These adjustments MUST be applied only at the beginning of the
|
||||
* connection.
|
||||
*/
|
||||
dccp_set_seqno(&dp->dccps_awl, max48(dp->dccps_awl, dp->dccps_iss));
|
||||
|
||||
icsk->icsk_retransmits = 0;
|
||||
}
|
||||
@@ -418,6 +423,8 @@ int dccp_connect(struct sock *sk)
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(dccp_connect);
|
||||
|
||||
void dccp_send_ack(struct sock *sk)
|
||||
{
|
||||
/* If we have been reset, we may not send again. */
|
||||
|
Reference in New Issue
Block a user