diff options
author | Arnaldo Carvalho de Melo <acme@mandriva.com> | 2005-12-14 02:26:10 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-01-03 16:10:58 -0500 |
commit | d83d8461f902c672bc1bd8fbc6a94e19f092da97 (patch) | |
tree | 0534c553ab92baa2eb9dbb5bba64f2c4540b1e89 /include | |
parent | 22712813620fa8e682dbfb253a60ca0131da1e07 (diff) |
[IP_SOCKGLUE]: Remove most of the tcp specific calls
As DCCP needs to be called in the same spots.
Now we have a member in inet_sock (is_icsk), set at sock creation time from
struct inet_protosw->flags (if INET_PROTOSW_ICSK is set, like for TCP and
DCCP) to see if a struct sock instance is a inet_connection_sock for places
like the ones in ip_sockglue.c (v4 and v6) where we previously were looking if
sk_type was SOCK_STREAM, that is insufficient because we now use the same code
for DCCP, that has sk_type SOCK_DCCP.
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/dccp.h | 4 | ||||
-rw-r--r-- | include/linux/ip.h | 1 | ||||
-rw-r--r-- | include/linux/tcp.h | 3 | ||||
-rw-r--r-- | include/net/inet_connection_sock.h | 6 | ||||
-rw-r--r-- | include/net/protocol.h | 1 |
5 files changed, 8 insertions, 7 deletions
diff --git a/include/linux/dccp.h b/include/linux/dccp.h index 71fab4311e92..d0bdb499cf8d 100644 --- a/include/linux/dccp.h +++ b/include/linux/dccp.h | |||
@@ -408,8 +408,6 @@ struct dccp_ackvec; | |||
408 | * @dccps_gar - greatest valid ack number received on a non-Sync; initialized to %dccps_iss | 408 | * @dccps_gar - greatest valid ack number received on a non-Sync; initialized to %dccps_iss |
409 | * @dccps_timestamp_time - time of latest TIMESTAMP option | 409 | * @dccps_timestamp_time - time of latest TIMESTAMP option |
410 | * @dccps_timestamp_echo - latest timestamp received on a TIMESTAMP option | 410 | * @dccps_timestamp_echo - latest timestamp received on a TIMESTAMP option |
411 | * @dccps_ext_header_len - network protocol overhead (IP/IPv6 options) | ||
412 | * @dccps_pmtu_cookie - Last pmtu seen by socket | ||
413 | * @dccps_packet_size - Set thru setsockopt | 411 | * @dccps_packet_size - Set thru setsockopt |
414 | * @dccps_role - Role of this sock, one of %dccp_role | 412 | * @dccps_role - Role of this sock, one of %dccp_role |
415 | * @dccps_ndp_count - number of Non Data Packets since last data packet | 413 | * @dccps_ndp_count - number of Non Data Packets since last data packet |
@@ -434,8 +432,6 @@ struct dccp_sock { | |||
434 | __u32 dccps_timestamp_echo; | 432 | __u32 dccps_timestamp_echo; |
435 | __u32 dccps_packet_size; | 433 | __u32 dccps_packet_size; |
436 | unsigned long dccps_ndp_count; | 434 | unsigned long dccps_ndp_count; |
437 | __u16 dccps_ext_header_len; | ||
438 | __u32 dccps_pmtu_cookie; | ||
439 | __u32 dccps_mss_cache; | 435 | __u32 dccps_mss_cache; |
440 | struct dccp_options dccps_options; | 436 | struct dccp_options dccps_options; |
441 | struct dccp_ackvec *dccps_hc_rx_ackvec; | 437 | struct dccp_ackvec *dccps_hc_rx_ackvec; |
diff --git a/include/linux/ip.h b/include/linux/ip.h index 5a560daeade5..6ccc596c19c8 100644 --- a/include/linux/ip.h +++ b/include/linux/ip.h | |||
@@ -155,6 +155,7 @@ struct inet_sock { | |||
155 | __u8 mc_ttl; /* Multicasting TTL */ | 155 | __u8 mc_ttl; /* Multicasting TTL */ |
156 | __u8 pmtudisc; | 156 | __u8 pmtudisc; |
157 | unsigned recverr : 1, | 157 | unsigned recverr : 1, |
158 | is_icsk : 1, /* inet_connection_sock? */ | ||
158 | freebind : 1, | 159 | freebind : 1, |
159 | hdrincl : 1, | 160 | hdrincl : 1, |
160 | mc_loop : 1; | 161 | mc_loop : 1; |
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index da38eea1994b..f2bb2396853f 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
@@ -238,10 +238,9 @@ struct tcp_sock { | |||
238 | __u32 snd_wl1; /* Sequence for window update */ | 238 | __u32 snd_wl1; /* Sequence for window update */ |
239 | __u32 snd_wnd; /* The window we expect to receive */ | 239 | __u32 snd_wnd; /* The window we expect to receive */ |
240 | __u32 max_window; /* Maximal window ever seen from peer */ | 240 | __u32 max_window; /* Maximal window ever seen from peer */ |
241 | __u32 pmtu_cookie; /* Last pmtu seen by socket */ | ||
242 | __u32 mss_cache; /* Cached effective mss, not including SACKS */ | 241 | __u32 mss_cache; /* Cached effective mss, not including SACKS */ |
243 | __u16 xmit_size_goal; /* Goal for segmenting output packets */ | 242 | __u16 xmit_size_goal; /* Goal for segmenting output packets */ |
244 | __u16 ext_header_len; /* Network protocol overhead (IP/IPv6 options) */ | 243 | /* XXX Two bytes hole, try to pack */ |
245 | 244 | ||
246 | __u32 window_clamp; /* Maximal window to advertise */ | 245 | __u32 window_clamp; /* Maximal window to advertise */ |
247 | __u32 rcv_ssthresh; /* Current window clamp */ | 246 | __u32 rcv_ssthresh; /* Current window clamp */ |
diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h index e50e2b890c6d..91888967d3e3 100644 --- a/include/net/inet_connection_sock.h +++ b/include/net/inet_connection_sock.h | |||
@@ -60,6 +60,7 @@ struct inet_connection_sock_af_ops { | |||
60 | * @icsk_timeout: Timeout | 60 | * @icsk_timeout: Timeout |
61 | * @icsk_retransmit_timer: Resend (no ack) | 61 | * @icsk_retransmit_timer: Resend (no ack) |
62 | * @icsk_rto: Retransmit timeout | 62 | * @icsk_rto: Retransmit timeout |
63 | * @icsk_pmtu_cookie Last pmtu seen by socket | ||
63 | * @icsk_ca_ops Pluggable congestion control hook | 64 | * @icsk_ca_ops Pluggable congestion control hook |
64 | * @icsk_af_ops Operations which are AF_INET{4,6} specific | 65 | * @icsk_af_ops Operations which are AF_INET{4,6} specific |
65 | * @icsk_ca_state: Congestion control state | 66 | * @icsk_ca_state: Congestion control state |
@@ -68,6 +69,7 @@ struct inet_connection_sock_af_ops { | |||
68 | * @icsk_backoff: Backoff | 69 | * @icsk_backoff: Backoff |
69 | * @icsk_syn_retries: Number of allowed SYN (or equivalent) retries | 70 | * @icsk_syn_retries: Number of allowed SYN (or equivalent) retries |
70 | * @icsk_probes_out: unanswered 0 window probes | 71 | * @icsk_probes_out: unanswered 0 window probes |
72 | * @icsk_ext_hdr_len: Network protocol overhead (IP/IPv6 options) | ||
71 | * @icsk_ack: Delayed ACK control data | 73 | * @icsk_ack: Delayed ACK control data |
72 | */ | 74 | */ |
73 | struct inet_connection_sock { | 75 | struct inet_connection_sock { |
@@ -79,15 +81,17 @@ struct inet_connection_sock { | |||
79 | struct timer_list icsk_retransmit_timer; | 81 | struct timer_list icsk_retransmit_timer; |
80 | struct timer_list icsk_delack_timer; | 82 | struct timer_list icsk_delack_timer; |
81 | __u32 icsk_rto; | 83 | __u32 icsk_rto; |
84 | __u32 icsk_pmtu_cookie; | ||
82 | struct tcp_congestion_ops *icsk_ca_ops; | 85 | struct tcp_congestion_ops *icsk_ca_ops; |
83 | struct inet_connection_sock_af_ops *icsk_af_ops; | 86 | struct inet_connection_sock_af_ops *icsk_af_ops; |
87 | unsigned int (*icsk_sync_mss)(struct sock *sk, u32 pmtu); | ||
84 | __u8 icsk_ca_state; | 88 | __u8 icsk_ca_state; |
85 | __u8 icsk_retransmits; | 89 | __u8 icsk_retransmits; |
86 | __u8 icsk_pending; | 90 | __u8 icsk_pending; |
87 | __u8 icsk_backoff; | 91 | __u8 icsk_backoff; |
88 | __u8 icsk_syn_retries; | 92 | __u8 icsk_syn_retries; |
89 | __u8 icsk_probes_out; | 93 | __u8 icsk_probes_out; |
90 | /* 2 BYTES HOLE, TRY TO PACK! */ | 94 | __u16 icsk_ext_hdr_len; |
91 | struct { | 95 | struct { |
92 | __u8 pending; /* ACK is pending */ | 96 | __u8 pending; /* ACK is pending */ |
93 | __u8 quick; /* Scheduled number of quick acks */ | 97 | __u8 quick; /* Scheduled number of quick acks */ |
diff --git a/include/net/protocol.h b/include/net/protocol.h index 357691f6a45f..a29cb29647d0 100644 --- a/include/net/protocol.h +++ b/include/net/protocol.h | |||
@@ -76,6 +76,7 @@ struct inet_protosw { | |||
76 | }; | 76 | }; |
77 | #define INET_PROTOSW_REUSE 0x01 /* Are ports automatically reusable? */ | 77 | #define INET_PROTOSW_REUSE 0x01 /* Are ports automatically reusable? */ |
78 | #define INET_PROTOSW_PERMANENT 0x02 /* Permanent protocols are unremovable. */ | 78 | #define INET_PROTOSW_PERMANENT 0x02 /* Permanent protocols are unremovable. */ |
79 | #define INET_PROTOSW_ICSK 0x04 /* Is this an inet_connection_sock? */ | ||
79 | 80 | ||
80 | extern struct net_protocol *inet_protocol_base; | 81 | extern struct net_protocol *inet_protocol_base; |
81 | extern struct net_protocol *inet_protos[MAX_INET_PROTOS]; | 82 | extern struct net_protocol *inet_protos[MAX_INET_PROTOS]; |