diff options
| author | Arnaldo Carvalho de Melo <acme@mandriva.com> | 2005-12-13 23:26:10 -0800 | 
|---|---|---|
| committer | David S. Miller <davem@sunset.davemloft.net> | 2006-01-03 13:10:58 -0800 | 
| commit | d83d8461f902c672bc1bd8fbc6a94e19f092da97 (patch) | |
| tree | 0534c553ab92baa2eb9dbb5bba64f2c4540b1e89 /include | |
| parent | 22712813620fa8e682dbfb253a60ca0131da1e07 (diff) | |
| download | olio-linux-3.10-d83d8461f902c672bc1bd8fbc6a94e19f092da97.tar.xz olio-linux-3.10-d83d8461f902c672bc1bd8fbc6a94e19f092da97.zip  | |
[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 71fab4311e9..d0bdb499cf8 100644 --- a/include/linux/dccp.h +++ b/include/linux/dccp.h @@ -408,8 +408,6 @@ struct dccp_ackvec;   * @dccps_gar - greatest valid ack number received on a non-Sync; initialized to %dccps_iss   * @dccps_timestamp_time - time of latest TIMESTAMP option   * @dccps_timestamp_echo - latest timestamp received on a TIMESTAMP option - * @dccps_ext_header_len - network protocol overhead (IP/IPv6 options) - * @dccps_pmtu_cookie - Last pmtu seen by socket   * @dccps_packet_size - Set thru setsockopt   * @dccps_role - Role of this sock, one of %dccp_role   * @dccps_ndp_count - number of Non Data Packets since last data packet @@ -434,8 +432,6 @@ struct dccp_sock {  	__u32				dccps_timestamp_echo;  	__u32				dccps_packet_size;  	unsigned long			dccps_ndp_count; -	__u16				dccps_ext_header_len; -	__u32				dccps_pmtu_cookie;  	__u32				dccps_mss_cache;  	struct dccp_options		dccps_options;  	struct dccp_ackvec		*dccps_hc_rx_ackvec; diff --git a/include/linux/ip.h b/include/linux/ip.h index 5a560daeade..6ccc596c19c 100644 --- a/include/linux/ip.h +++ b/include/linux/ip.h @@ -155,6 +155,7 @@ struct inet_sock {  	__u8			mc_ttl;		/* Multicasting TTL */  	__u8			pmtudisc;  	unsigned		recverr : 1, +				is_icsk : 1,	/* inet_connection_sock? */  				freebind : 1,  				hdrincl : 1,  				mc_loop : 1; diff --git a/include/linux/tcp.h b/include/linux/tcp.h index da38eea1994..f2bb2396853 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h @@ -238,10 +238,9 @@ struct tcp_sock {  	__u32	snd_wl1;	/* Sequence for window update		*/  	__u32	snd_wnd;	/* The window we expect to receive	*/  	__u32	max_window;	/* Maximal window ever seen from peer	*/ -	__u32	pmtu_cookie;	/* Last pmtu seen by socket		*/  	__u32	mss_cache;	/* Cached effective mss, not including SACKS */  	__u16	xmit_size_goal;	/* Goal for segmenting output packets	*/ -	__u16	ext_header_len;	/* Network protocol overhead (IP/IPv6 options) */ +	/* XXX Two bytes hole, try to pack */  	__u32	window_clamp;	/* Maximal window to advertise		*/  	__u32	rcv_ssthresh;	/* Current window clamp			*/ diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h index e50e2b890c6..91888967d3e 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 {   * @icsk_timeout:	   Timeout   * @icsk_retransmit_timer: Resend (no ack)   * @icsk_rto:		   Retransmit timeout + * @icsk_pmtu_cookie	   Last pmtu seen by socket   * @icsk_ca_ops		   Pluggable congestion control hook   * @icsk_af_ops		   Operations which are AF_INET{4,6} specific   * @icsk_ca_state:	   Congestion control state @@ -68,6 +69,7 @@ struct inet_connection_sock_af_ops {   * @icsk_backoff:	   Backoff   * @icsk_syn_retries:      Number of allowed SYN (or equivalent) retries   * @icsk_probes_out:	   unanswered 0 window probes + * @icsk_ext_hdr_len:	   Network protocol overhead (IP/IPv6 options)   * @icsk_ack:		   Delayed ACK control data   */  struct inet_connection_sock { @@ -79,15 +81,17 @@ struct inet_connection_sock {   	struct timer_list	  icsk_retransmit_timer;   	struct timer_list	  icsk_delack_timer;  	__u32			  icsk_rto; +	__u32			  icsk_pmtu_cookie;  	struct tcp_congestion_ops *icsk_ca_ops;  	struct inet_connection_sock_af_ops *icsk_af_ops; +	unsigned int		  (*icsk_sync_mss)(struct sock *sk, u32 pmtu);  	__u8			  icsk_ca_state;  	__u8			  icsk_retransmits;  	__u8			  icsk_pending;  	__u8			  icsk_backoff;  	__u8			  icsk_syn_retries;  	__u8			  icsk_probes_out; -	/* 2 BYTES HOLE, TRY TO PACK! */ +	__u16			  icsk_ext_hdr_len;  	struct {  		__u8		  pending;	 /* ACK is pending			   */  		__u8		  quick;	 /* Scheduled number of quick acks	   */ diff --git a/include/net/protocol.h b/include/net/protocol.h index 357691f6a45..a29cb29647d 100644 --- a/include/net/protocol.h +++ b/include/net/protocol.h @@ -76,6 +76,7 @@ struct inet_protosw {  };  #define INET_PROTOSW_REUSE 0x01	     /* Are ports automatically reusable? */  #define INET_PROTOSW_PERMANENT 0x02  /* Permanent protocols are unremovable. */ +#define INET_PROTOSW_ICSK      0x04  /* Is this an inet_connection_sock? */  extern struct net_protocol *inet_protocol_base;  extern struct net_protocol *inet_protos[MAX_INET_PROTOS];  |