[DCCP]: Make PARTOPEN an autonomous state
This decouples PARTOPEN from TCP-specific stream-states. It thus addresses the FIXME. The code has been checked with regard to dependency on PARTOPEN and FIN_WAIT1 states (to which PARTOPEN previously was mapped): there is no difference, as PARTOPEN is always referred to directly (i.e. not via the mapping to TCP state). Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk> Signed-off-by: Ian McDonald <ian.mcdonald@jandi.co.nz> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
c3ada46a00
Коммит
9b91ad2747
|
@ -229,21 +229,13 @@ struct dccp_so_feat {
|
||||||
enum dccp_state {
|
enum dccp_state {
|
||||||
DCCP_OPEN = TCP_ESTABLISHED,
|
DCCP_OPEN = TCP_ESTABLISHED,
|
||||||
DCCP_REQUESTING = TCP_SYN_SENT,
|
DCCP_REQUESTING = TCP_SYN_SENT,
|
||||||
DCCP_PARTOPEN = TCP_FIN_WAIT1, /* FIXME:
|
|
||||||
This mapping is horrible, but TCP has
|
|
||||||
no matching state for DCCP_PARTOPEN,
|
|
||||||
as TCP_SYN_RECV is already used by
|
|
||||||
DCCP_RESPOND, why don't stop using TCP
|
|
||||||
mapping of states? OK, now we don't use
|
|
||||||
sk_stream_sendmsg anymore, so doesn't
|
|
||||||
seem to exist any reason for us to
|
|
||||||
do the TCP mapping here */
|
|
||||||
DCCP_LISTEN = TCP_LISTEN,
|
DCCP_LISTEN = TCP_LISTEN,
|
||||||
DCCP_RESPOND = TCP_SYN_RECV,
|
DCCP_RESPOND = TCP_SYN_RECV,
|
||||||
DCCP_CLOSING = TCP_CLOSING,
|
DCCP_CLOSING = TCP_CLOSING,
|
||||||
DCCP_TIME_WAIT = TCP_TIME_WAIT,
|
DCCP_TIME_WAIT = TCP_TIME_WAIT,
|
||||||
DCCP_CLOSED = TCP_CLOSE,
|
DCCP_CLOSED = TCP_CLOSE,
|
||||||
DCCP_MAX_STATES = TCP_MAX_STATES,
|
DCCP_PARTOPEN = TCP_MAX_STATES,
|
||||||
|
DCCP_MAX_STATES
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DCCP_STATE_MASK 0xf
|
#define DCCP_STATE_MASK 0xf
|
||||||
|
@ -252,12 +244,12 @@ enum dccp_state {
|
||||||
enum {
|
enum {
|
||||||
DCCPF_OPEN = TCPF_ESTABLISHED,
|
DCCPF_OPEN = TCPF_ESTABLISHED,
|
||||||
DCCPF_REQUESTING = TCPF_SYN_SENT,
|
DCCPF_REQUESTING = TCPF_SYN_SENT,
|
||||||
DCCPF_PARTOPEN = TCPF_FIN_WAIT1,
|
|
||||||
DCCPF_LISTEN = TCPF_LISTEN,
|
DCCPF_LISTEN = TCPF_LISTEN,
|
||||||
DCCPF_RESPOND = TCPF_SYN_RECV,
|
DCCPF_RESPOND = TCPF_SYN_RECV,
|
||||||
DCCPF_CLOSING = TCPF_CLOSING,
|
DCCPF_CLOSING = TCPF_CLOSING,
|
||||||
DCCPF_TIME_WAIT = TCPF_TIME_WAIT,
|
DCCPF_TIME_WAIT = TCPF_TIME_WAIT,
|
||||||
DCCPF_CLOSED = TCPF_CLOSE,
|
DCCPF_CLOSED = TCPF_CLOSE,
|
||||||
|
DCCPF_PARTOPEN = 1 << DCCP_PARTOPEN,
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline struct dccp_hdr *dccp_hdr(const struct sk_buff *skb)
|
static inline struct dccp_hdr *dccp_hdr(const struct sk_buff *skb)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче