diff -ur linux-2.5.40/net/ipv6/ipv6_sockglue.c linux-2.5.40a/net/ipv6/ipv6_sockglue.c --- linux-2.5.40/net/ipv6/ipv6_sockglue.c Tue Oct 1 03:06:16 2002 +++ linux-2.5.40a/net/ipv6/ipv6_sockglue.c Thu Oct 3 07:23:59 2002 @@ -143,66 +143,6 @@ switch (optname) { - case IPV6_ADDRFORM: - if (val == PF_INET) { - struct ipv6_txoptions *opt; - struct sk_buff *pktopt; - - if (sk->protocol != IPPROTO_UDP && - sk->protocol != IPPROTO_TCP) - break; - - if (sk->state != TCP_ESTABLISHED) { - retv = -ENOTCONN; - break; - } - - if (!(ipv6_addr_type(&np->daddr) & IPV6_ADDR_MAPPED)) { - retv = -EADDRNOTAVAIL; - break; - } - - fl6_free_socklist(sk); - ipv6_sock_mc_close(sk); - - if (sk->protocol == IPPROTO_TCP) { - struct tcp_opt *tp = tcp_sk(sk); - - local_bh_disable(); - sock_prot_dec_use(sk->prot); - sock_prot_inc_use(&tcp_prot); - local_bh_enable(); - sk->prot = &tcp_prot; - tp->af_specific = &ipv4_specific; - sk->socket->ops = &inet_stream_ops; - sk->family = PF_INET; - tcp_sync_mss(sk, tp->pmtu_cookie); - } else { - local_bh_disable(); - sock_prot_dec_use(sk->prot); - sock_prot_inc_use(&udp_prot); - local_bh_enable(); - sk->prot = &udp_prot; - sk->socket->ops = &inet_dgram_ops; - sk->family = PF_INET; - } - opt = xchg(&np->opt, NULL); - if (opt) - sock_kfree_s(sk, opt, opt->tot_len); - pktopt = xchg(&np->pktoptions, NULL); - if (pktopt) - kfree_skb(pktopt); - - sk->destruct = inet_sock_destruct; -#ifdef INET_REFCNT_DEBUG - atomic_dec(&inet6_sock_nr); -#endif - MOD_DEC_USE_COUNT; - retv = 0; - break; - } - goto e_inval; - case IPV6_PKTINFO: np->rxopt.bits.rxinfo = valbool; retv = 0;