patch-2.2.7 linux/net/ipv6/ipv6_sockglue.c
Next file: linux/net/ipv6/ndisc.c
Previous file: linux/net/ipv6/ip6_output.c
Back to the patch index
Back to the overall index
- Lines: 66
- Date:
Thu Apr 22 19:45:20 1999
- Orig file:
v2.2.6/linux/net/ipv6/ipv6_sockglue.c
- Orig date:
Mon Mar 29 11:09:12 1999
diff -u --recursive --new-file v2.2.6/linux/net/ipv6/ipv6_sockglue.c linux/net/ipv6/ipv6_sockglue.c
@@ -7,7 +7,7 @@
*
* Based on linux/net/ipv4/ip_sockglue.c
*
- * $Id: ipv6_sockglue.c,v 1.26 1999/03/25 10:04:53 davem Exp $
+ * $Id: ipv6_sockglue.c,v 1.27 1999/04/22 10:07:43 davem Exp $
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -151,6 +151,9 @@
goto addrform_done;
}
+ fl6_free_socklist(sk);
+ ipv6_sock_mc_close(sk);
+
if (sk->protocol == IPPROTO_TCP) {
struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp);
@@ -211,12 +214,19 @@
retv = 0;
break;
+ case IPV6_FLOWINFO:
+ np->rxopt.bits.rxflow = valbool;
+ return 0;
+
case IPV6_PKTOPTIONS:
{
struct ipv6_txoptions *opt = NULL;
struct msghdr msg;
+ struct flowi fl;
int junk;
- struct in6_addr *saddr;
+
+ fl.fl6_flowlabel = 0;
+ fl.oif = sk->bound_dev_if;
if (optlen == 0)
goto update;
@@ -235,7 +245,7 @@
msg.msg_controllen = optlen;
msg.msg_control = (void*)(opt+1);
- retv = datagram_send_ctl(&msg, &junk, &saddr, opt, &junk);
+ retv = datagram_send_ctl(&msg, &fl, opt, &junk);
if (retv)
goto done;
update:
@@ -321,10 +331,15 @@
np->frag_size = val;
return 0;
case IPV6_RECVERR:
- np->recverr = !!val;
+ np->recverr = valbool;
if (!val)
skb_queue_purge(&sk->error_queue);
return 0;
+ case IPV6_FLOWINFO_SEND:
+ np->sndflow = valbool;
+ return 0;
+ case IPV6_FLOWLABEL_MGR:
+ return ipv6_flowlabel_opt(sk, optval, optlen);
};
out:
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)