Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d83d8461 authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo Committed by David S. Miller
Browse files

[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: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 22712813
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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;
+1 −2
Original line number Diff line number Diff line
@@ -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			*/
+5 −1
Original line number Diff line number Diff line
@@ -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	   */
+1 −0
Original line number Diff line number Diff line
@@ -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];
Loading