[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>
This commit is contained in:
committed by
David S. Miller
parent
2271281362
commit
d83d8461f9
@@ -29,8 +29,7 @@
|
||||
#include <net/sock.h>
|
||||
#include <net/ip.h>
|
||||
#include <net/icmp.h>
|
||||
#include <net/tcp.h>
|
||||
#include <linux/tcp.h>
|
||||
#include <net/tcp_states.h>
|
||||
#include <linux/udp.h>
|
||||
#include <linux/igmp.h>
|
||||
#include <linux/netfilter.h>
|
||||
@@ -427,8 +426,8 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval,
|
||||
err = ip_options_get_from_user(&opt, optval, optlen);
|
||||
if (err)
|
||||
break;
|
||||
if (sk->sk_type == SOCK_STREAM) {
|
||||
struct tcp_sock *tp = tcp_sk(sk);
|
||||
if (inet->is_icsk) {
|
||||
struct inet_connection_sock *icsk = inet_csk(sk);
|
||||
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
|
||||
if (sk->sk_family == PF_INET ||
|
||||
(!((1 << sk->sk_state) &
|
||||
@@ -436,10 +435,10 @@ int ip_setsockopt(struct sock *sk, int level, int optname, char __user *optval,
|
||||
inet->daddr != LOOPBACK4_IPV6)) {
|
||||
#endif
|
||||
if (inet->opt)
|
||||
tp->ext_header_len -= inet->opt->optlen;
|
||||
icsk->icsk_ext_hdr_len -= inet->opt->optlen;
|
||||
if (opt)
|
||||
tp->ext_header_len += opt->optlen;
|
||||
tcp_sync_mss(sk, tp->pmtu_cookie);
|
||||
icsk->icsk_ext_hdr_len += opt->optlen;
|
||||
icsk->icsk_sync_mss(sk, icsk->icsk_pmtu_cookie);
|
||||
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user