clarify flowlabel handling

This commit is contained in:
itojun 2003-09-06 03:12:51 +00:00
parent 4bb6552ed0
commit 175c9afa3f
4 changed files with 16 additions and 26 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: tcp_input.c,v 1.181 2003/09/04 09:16:59 itojun Exp $ */
/* $NetBSD: tcp_input.c,v 1.182 2003/09/06 03:12:51 itojun Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@ -148,7 +148,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.181 2003/09/04 09:16:59 itojun Exp $");
__KERNEL_RCSID(0, "$NetBSD: tcp_input.c,v 1.182 2003/09/06 03:12:51 itojun Exp $");
#include "opt_inet.h"
#include "opt_ipsec.h"
@ -3203,10 +3203,6 @@ syn_cache_get(src, dst, th, hlen, tlen, so, m)
if (in6p) {
in6p->in6p_laddr = ((struct sockaddr_in6 *)dst)->sin6_addr;
in6p->in6p_lport = ((struct sockaddr_in6 *)dst)->sin6_port;
#if 0
in6p->in6p_flowinfo = ip6->ip6_flow & IPV6_FLOWINFO_MASK;
/*inp->inp_options = ip6_srcroute();*/ /* soon. */
#endif
in6_pcbstate(in6p, IN6P_BOUND);
}
break;

View File

@ -1,4 +1,4 @@
/* $NetBSD: in6_pcb.c,v 1.56 2003/09/04 09:17:06 itojun Exp $ */
/* $NetBSD: in6_pcb.c,v 1.57 2003/09/06 03:12:53 itojun Exp $ */
/* $KAME: in6_pcb.c,v 1.84 2001/02/08 18:02:08 itojun Exp $ */
/*
@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: in6_pcb.c,v 1.56 2003/09/04 09:17:06 itojun Exp $");
__KERNEL_RCSID(0, "$NetBSD: in6_pcb.c,v 1.57 2003/09/06 03:12:53 itojun Exp $");
#include "opt_inet.h"
#include "opt_ipsec.h"
@ -326,7 +326,9 @@ in6_pcbbind(v, nam, p)
in6_pcbstate(in6p, IN6P_BOUND);
}
in6p->in6p_flowinfo = sin6 ? sin6->sin6_flowinfo : 0; /*XXX*/
#if 0
in6p->in6p_flowinfo = 0; /* XXX */
#endif
return (0);
}
@ -450,11 +452,10 @@ in6_pcbconnect(v, nam)
in6p->in6p_faddr = sin6->sin6_addr;
in6p->in6p_fport = sin6->sin6_port;
in6_pcbstate(in6p, IN6P_CONNECTED);
/*
* xxx kazu flowlabel is necessary for connect?
* but if this line is missing, the garbage value remains.
*/
in6p->in6p_flowinfo = sin6->sin6_flowinfo;
in6p->in6p_flowinfo &= ~IPV6_FLOWLABEL_MASK;
if (ip6_auto_flowlabel)
in6p->in6p_flowinfo |=
(htonl(ip6_flow_seq++) & IPV6_FLOWLABEL_MASK);
#ifdef IPSEC
if (in6p->in6p_socket->so_type == SOCK_STREAM)
ipsec_pcbconn(in6p->in6p_sp);
@ -469,6 +470,7 @@ in6_pcbdisconnect(in6p)
bzero((caddr_t)&in6p->in6p_faddr, sizeof(in6p->in6p_faddr));
in6p->in6p_fport = 0;
in6_pcbstate(in6p, IN6P_BOUND);
in6p->in6p_flowinfo &= ~IPV6_FLOWLABEL_MASK;
if (in6p->in6p_socket->so_state & SS_NOFDREF)
in6_pcbdetach(in6p);
#ifdef IPSEC

View File

@ -1,4 +1,4 @@
/* $NetBSD: raw_ip6.c,v 1.60 2003/09/05 23:20:49 itojun Exp $ */
/* $NetBSD: raw_ip6.c,v 1.61 2003/09/06 03:12:54 itojun Exp $ */
/* $KAME: raw_ip6.c,v 1.82 2001/07/23 18:57:56 jinmei Exp $ */
/*
@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: raw_ip6.c,v 1.60 2003/09/05 23:20:49 itojun Exp $");
__KERNEL_RCSID(0, "$NetBSD: raw_ip6.c,v 1.61 2003/09/06 03:12:54 itojun Exp $");
#include "opt_ipsec.h"
@ -164,9 +164,6 @@ rip6_input(mp, offp, proto)
bzero(&rip6src, sizeof(rip6src));
rip6src.sin6_len = sizeof(struct sockaddr_in6);
rip6src.sin6_family = AF_INET6;
#if 0 /* XXX inbound flowlabel */
rip6src.sin6_flowinfo = ip6->ip6_flow & IPV6_FLOWINFO_MASK;
#endif
/* KAME hack: recover scopeid */
(void)in6_recoverscope(&rip6src, &ip6->ip6_src, m->m_pkthdr.rcvif);

View File

@ -1,4 +1,4 @@
/* $NetBSD: udp6_usrreq.c,v 1.58 2003/09/04 09:17:09 itojun Exp $ */
/* $NetBSD: udp6_usrreq.c,v 1.59 2003/09/06 03:12:55 itojun Exp $ */
/* $KAME: udp6_usrreq.c,v 1.86 2001/05/27 17:33:00 itojun Exp $ */
/*
@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: udp6_usrreq.c,v 1.58 2003/09/04 09:17:09 itojun Exp $");
__KERNEL_RCSID(0, "$NetBSD: udp6_usrreq.c,v 1.59 2003/09/06 03:12:55 itojun Exp $");
#include <sys/param.h>
#include <sys/malloc.h>
@ -335,11 +335,6 @@ udp6_usrreq(so, req, m, addr6, control, p)
}
s = splsoftnet();
error = in6_pcbconnect(in6p, addr6);
if (ip6_auto_flowlabel) {
in6p->in6p_flowinfo &= ~IPV6_FLOWLABEL_MASK;
in6p->in6p_flowinfo |=
(htonl(ip6_flow_seq++) & IPV6_FLOWLABEL_MASK);
}
splx(s);
if (error == 0)
soisconnected(so);