Space cleanup
Approved by: re (rwatson)
This commit is contained in:
parent
1272577e22
commit
2a463222be
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=171260
@ -257,7 +257,7 @@ frag6_input(struct mbuf **mp, int *offp, int proto)
|
||||
q6->ip6q_nxtp = (u_char *)nxtp;
|
||||
#endif
|
||||
q6->ip6q_ident = ip6f->ip6f_ident;
|
||||
q6->ip6q_ttl = IPV6_FRAGTTL;
|
||||
q6->ip6q_ttl = IPV6_FRAGTTL;
|
||||
q6->ip6q_src = ip6->ip6_src;
|
||||
q6->ip6q_dst = ip6->ip6_dst;
|
||||
q6->ip6q_ecn =
|
||||
|
@ -1932,7 +1932,7 @@ icmp6_rip6_input(struct mbuf **mp, int off)
|
||||
MGET(n, M_DONTWAIT, m->m_type);
|
||||
if (n != NULL) {
|
||||
if (m_dup_pkthdr(n, m, M_NOWAIT)) {
|
||||
bcopy(m->m_data, n->m_data,
|
||||
bcopy(m->m_data, n->m_data,
|
||||
m->m_len);
|
||||
n->m_len = m->m_len;
|
||||
} else {
|
||||
@ -1983,7 +1983,7 @@ icmp6_rip6_input(struct mbuf **mp, int off)
|
||||
if (m_dup_pkthdr(n, m, M_NOWAIT)) {
|
||||
bcopy(m->m_data, n->m_data, m->m_len);
|
||||
n->m_len = m->m_len;
|
||||
|
||||
|
||||
m_freem(m);
|
||||
m = n;
|
||||
} else {
|
||||
|
@ -661,7 +661,7 @@ in6_control(struct socket *so, u_long cmd, caddr_t data,
|
||||
return (error);
|
||||
if ((ia = in6ifa_ifpwithaddr(ifp, &ifra->ifra_addr.sin6_addr))
|
||||
== NULL) {
|
||||
/*
|
||||
/*
|
||||
* this can happen when the user specify the 0 valid
|
||||
* lifetime.
|
||||
*/
|
||||
@ -1398,7 +1398,7 @@ in6_unlink_ifa(struct in6_ifaddr *ia, struct ifnet *ifp)
|
||||
/*
|
||||
* Also, if the address being removed is autoconf'ed, call
|
||||
* pfxlist_onlink_check() since the release might affect the status of
|
||||
* other (detached) addresses.
|
||||
* other (detached) addresses.
|
||||
*/
|
||||
if ((oia->ia6_flags & IN6_IFF_AUTOCONF)) {
|
||||
pfxlist_onlink_check();
|
||||
@ -1517,7 +1517,7 @@ in6_lifaddr_ioctl(struct socket *so, u_long cmd, caddr_t data,
|
||||
return EADDRNOTAVAIL;
|
||||
hostid = IFA_IN6(ifa);
|
||||
|
||||
/* prefixlen must be <= 64. */
|
||||
/* prefixlen must be <= 64. */
|
||||
if (64 < iflr->prefixlen)
|
||||
return EINVAL;
|
||||
prefixlen = iflr->prefixlen;
|
||||
|
@ -317,7 +317,7 @@ extern const struct in6_addr in6addr_linklocal_allrouters;
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_LINKLOCAL))
|
||||
#define IN6_IS_ADDR_MC_SITELOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_SITELOCAL))
|
||||
#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
@ -333,7 +333,7 @@ extern const struct in6_addr in6addr_linklocal_allrouters;
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_LINKLOCAL))
|
||||
#define IN6_IS_ADDR_MC_SITELOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
(__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_SITELOCAL))
|
||||
#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
@ -352,9 +352,9 @@ extern const struct in6_addr in6addr_linklocal_allrouters;
|
||||
(IN6_IS_ADDR_MC_LINKLOCAL(a)))
|
||||
#define IN6_IS_SCOPE_EMBED(a) \
|
||||
((IN6_IS_ADDR_LINKLOCAL(a)) || \
|
||||
(IN6_IS_ADDR_MC_LINKLOCAL(a)) || \
|
||||
(IN6_IS_ADDR_MC_LINKLOCAL(a)) || \
|
||||
(IN6_IS_ADDR_MC_INTFACELOCAL(a)))
|
||||
|
||||
|
||||
#define IFA6_IS_DEPRECATED(a) \
|
||||
((a)->ia6_lifetime.ia6t_pltime != ND6_INFINITE_LIFETIME && \
|
||||
(u_int32_t)((time_second - (a)->ia6_updatetime)) > \
|
||||
@ -413,7 +413,7 @@ struct route_in6 {
|
||||
#define IPV6_BINDV6ONLY IPV6_V6ONLY
|
||||
#endif
|
||||
|
||||
#ifdef IPSEC
|
||||
#ifdef IPSEC
|
||||
#define IPV6_IPSEC_POLICY 28 /* struct; get/set security policy */
|
||||
#endif /* IPSEC */
|
||||
|
||||
|
@ -136,16 +136,16 @@ in6_gif_output(struct ifnet *ifp,
|
||||
}
|
||||
#endif
|
||||
case AF_LINK:
|
||||
proto = IPPROTO_ETHERIP;
|
||||
eiphdr.eip_ver = ETHERIP_VERSION & ETHERIP_VER_VERS_MASK;
|
||||
eiphdr.eip_pad = 0;
|
||||
/* prepend Ethernet-in-IP header */
|
||||
M_PREPEND(m, sizeof(struct etherip_header), M_DONTWAIT);
|
||||
if (m && m->m_len < sizeof(struct etherip_header))
|
||||
m = m_pullup(m, sizeof(struct etherip_header));
|
||||
if (m == NULL)
|
||||
return ENOBUFS;
|
||||
bcopy(&eiphdr, mtod(m, struct etherip_header *),
|
||||
proto = IPPROTO_ETHERIP;
|
||||
eiphdr.eip_ver = ETHERIP_VERSION & ETHERIP_VER_VERS_MASK;
|
||||
eiphdr.eip_pad = 0;
|
||||
/* prepend Ethernet-in-IP header */
|
||||
M_PREPEND(m, sizeof(struct etherip_header), M_DONTWAIT);
|
||||
if (m && m->m_len < sizeof(struct etherip_header))
|
||||
m = m_pullup(m, sizeof(struct etherip_header));
|
||||
if (m == NULL)
|
||||
return ENOBUFS;
|
||||
bcopy(&eiphdr, mtod(m, struct etherip_header *),
|
||||
sizeof(struct etherip_header));
|
||||
break;
|
||||
|
||||
@ -313,9 +313,9 @@ in6_gif_input(struct mbuf **mp, int *offp, int proto)
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
case IPPROTO_ETHERIP:
|
||||
af = AF_LINK;
|
||||
break;
|
||||
case IPPROTO_ETHERIP:
|
||||
af = AF_LINK;
|
||||
break;
|
||||
|
||||
default:
|
||||
ip6stat.ip6s_nogif++;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $KAME: in6_pcb.c,v 1.31 2001/05/21 05:45:10 jinmei Exp $ */
|
||||
|
||||
|
||||
/*-
|
||||
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
|
||||
* All rights reserved.
|
||||
@ -191,8 +191,8 @@ in6_pcbbind(register struct inpcb *inp, struct sockaddr *nam,
|
||||
(so->so_type != SOCK_STREAM ||
|
||||
IN6_IS_ADDR_UNSPECIFIED(&t->in6p_faddr)) &&
|
||||
(!IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr) ||
|
||||
!IN6_IS_ADDR_UNSPECIFIED(&t->in6p_laddr) ||
|
||||
(t->inp_socket->so_options & SO_REUSEPORT)
|
||||
!IN6_IS_ADDR_UNSPECIFIED(&t->in6p_laddr) ||
|
||||
(t->inp_socket->so_options & SO_REUSEPORT)
|
||||
== 0) && (so->so_cred->cr_uid !=
|
||||
t->inp_socket->so_cred->cr_uid))
|
||||
return (EADDRINUSE);
|
||||
@ -218,7 +218,7 @@ in6_pcbbind(register struct inpcb *inp, struct sockaddr *nam,
|
||||
t = in6_pcblookup_local(pcbinfo, &sin6->sin6_addr,
|
||||
lport, wild);
|
||||
if (t && (reuseport & ((t->inp_vflag & INP_TIMEWAIT) ?
|
||||
intotw(t)->tw_so_options :
|
||||
intotw(t)->tw_so_options :
|
||||
t->inp_socket->so_options)) == 0)
|
||||
return (EADDRINUSE);
|
||||
if ((inp->inp_flags & IN6P_IPV6_V6ONLY) == 0 &&
|
||||
@ -229,17 +229,17 @@ in6_pcbbind(register struct inpcb *inp, struct sockaddr *nam,
|
||||
t = in_pcblookup_local(pcbinfo, sin.sin_addr,
|
||||
lport, wild);
|
||||
if (t && t->inp_vflag & INP_TIMEWAIT) {
|
||||
if ((reuseport &
|
||||
if ((reuseport &
|
||||
intotw(t)->tw_so_options) == 0 &&
|
||||
(ntohl(t->inp_laddr.s_addr) !=
|
||||
INADDR_ANY || ((inp->inp_vflag &
|
||||
INP_IPV6PROTO) ==
|
||||
INADDR_ANY || ((inp->inp_vflag &
|
||||
INP_IPV6PROTO) ==
|
||||
(t->inp_vflag & INP_IPV6PROTO))))
|
||||
return (EADDRINUSE);
|
||||
}
|
||||
else if (t &&
|
||||
(reuseport & t->inp_socket->so_options)
|
||||
== 0 && (ntohl(t->inp_laddr.s_addr) !=
|
||||
else if (t &&
|
||||
(reuseport & t->inp_socket->so_options)
|
||||
== 0 && (ntohl(t->inp_laddr.s_addr) !=
|
||||
INADDR_ANY || INP_SOCKAF(so) ==
|
||||
INP_SOCKAF(t->inp_socket)))
|
||||
return (EADDRINUSE);
|
||||
@ -425,8 +425,8 @@ in6_pcbfree(struct inpcb *inp)
|
||||
#endif /* IPSEC */
|
||||
inp->inp_gencnt = ++ipi->ipi_gencnt;
|
||||
in_pcbremlists(inp);
|
||||
ip6_freepcbopts(inp->in6p_outputopts);
|
||||
ip6_freemoptions(inp->in6p_moptions);
|
||||
ip6_freepcbopts(inp->in6p_outputopts);
|
||||
ip6_freemoptions(inp->in6p_moptions);
|
||||
/* Check and free IPv4 related resources in case of mapped addr */
|
||||
if (inp->inp_options)
|
||||
(void)m_free(inp->inp_options);
|
||||
@ -605,11 +605,11 @@ in6_pcbnotify(struct inpcbinfo *pcbinfo, struct sockaddr *dst,
|
||||
errno = inet6ctlerrmap[cmd];
|
||||
head = pcbinfo->ipi_listhead;
|
||||
INP_INFO_WLOCK(pcbinfo);
|
||||
for (inp = LIST_FIRST(head); inp != NULL; inp = ninp) {
|
||||
for (inp = LIST_FIRST(head); inp != NULL; inp = ninp) {
|
||||
INP_LOCK(inp);
|
||||
ninp = LIST_NEXT(inp, inp_list);
|
||||
ninp = LIST_NEXT(inp, inp_list);
|
||||
|
||||
if ((inp->inp_vflag & INP_IPV6) == 0) {
|
||||
if ((inp->inp_vflag & INP_IPV6) == 0) {
|
||||
INP_UNLOCK(inp);
|
||||
continue;
|
||||
}
|
||||
|
@ -169,39 +169,39 @@ struct ip6protosw inet6sw[] = {
|
||||
.pr_usrreqs = &tcp6_usrreqs,
|
||||
},
|
||||
#ifdef SCTP
|
||||
{
|
||||
.pr_type = SOCK_DGRAM,
|
||||
.pr_domain = &inet6domain,
|
||||
.pr_protocol = IPPROTO_SCTP,
|
||||
.pr_flags = PR_WANTRCVD,
|
||||
.pr_input = sctp6_input,
|
||||
.pr_ctlinput = sctp6_ctlinput,
|
||||
{
|
||||
.pr_type = SOCK_DGRAM,
|
||||
.pr_domain = &inet6domain,
|
||||
.pr_protocol = IPPROTO_SCTP,
|
||||
.pr_flags = PR_WANTRCVD,
|
||||
.pr_input = sctp6_input,
|
||||
.pr_ctlinput = sctp6_ctlinput,
|
||||
.pr_ctloutput = sctp_ctloutput,
|
||||
.pr_drain = sctp_drain,
|
||||
.pr_usrreqs = &sctp6_usrreqs
|
||||
.pr_drain = sctp_drain,
|
||||
.pr_usrreqs = &sctp6_usrreqs
|
||||
},
|
||||
{
|
||||
.pr_type = SOCK_SEQPACKET,
|
||||
.pr_domain = &inet6domain,
|
||||
.pr_protocol = IPPROTO_SCTP,
|
||||
.pr_flags = PR_WANTRCVD,
|
||||
.pr_input = sctp6_input,
|
||||
.pr_ctlinput = sctp6_ctlinput,
|
||||
.pr_type = SOCK_SEQPACKET,
|
||||
.pr_domain = &inet6domain,
|
||||
.pr_protocol = IPPROTO_SCTP,
|
||||
.pr_flags = PR_WANTRCVD,
|
||||
.pr_input = sctp6_input,
|
||||
.pr_ctlinput = sctp6_ctlinput,
|
||||
.pr_ctloutput = sctp_ctloutput,
|
||||
.pr_drain = sctp_drain,
|
||||
.pr_usrreqs = &sctp6_usrreqs
|
||||
.pr_drain = sctp_drain,
|
||||
.pr_usrreqs = &sctp6_usrreqs
|
||||
},
|
||||
|
||||
{
|
||||
.pr_type = SOCK_STREAM,
|
||||
.pr_domain = &inet6domain,
|
||||
.pr_protocol = IPPROTO_SCTP,
|
||||
.pr_flags = PR_WANTRCVD,
|
||||
.pr_input = sctp6_input,
|
||||
.pr_ctlinput = sctp6_ctlinput,
|
||||
{
|
||||
.pr_type = SOCK_STREAM,
|
||||
.pr_domain = &inet6domain,
|
||||
.pr_protocol = IPPROTO_SCTP,
|
||||
.pr_flags = PR_WANTRCVD,
|
||||
.pr_input = sctp6_input,
|
||||
.pr_ctlinput = sctp6_ctlinput,
|
||||
.pr_ctloutput = sctp_ctloutput,
|
||||
.pr_drain = sctp_drain,
|
||||
.pr_usrreqs = &sctp6_usrreqs
|
||||
.pr_drain = sctp_drain,
|
||||
.pr_usrreqs = &sctp6_usrreqs
|
||||
},
|
||||
#endif /* SCTP */
|
||||
{
|
||||
@ -377,7 +377,7 @@ int ip6_accept_rtadv = 0; /* "IPV6FORWARDING ? 0 : 1" is dangerous */
|
||||
int ip6_maxfragpackets; /* initialized in frag6.c:frag6_init() */
|
||||
int ip6_maxfrags; /* initialized in frag6.c:frag6_init() */
|
||||
int ip6_log_interval = 5;
|
||||
int ip6_hdrnestlimit = 15; /* How many header options will we process? */
|
||||
int ip6_hdrnestlimit = 15; /* How many header options will we process? */
|
||||
int ip6_dad_count = 1; /* DupAddrDetectionTransmits */
|
||||
int ip6_auto_flowlabel = 1;
|
||||
int ip6_gif_hlim = 0;
|
||||
@ -481,7 +481,7 @@ sysctl_ip6_tempvltime(SYSCTL_HANDLER_ARGS)
|
||||
}
|
||||
|
||||
SYSCTL_INT(_net_inet6_ip6, IPV6CTL_FORWARDING,
|
||||
forwarding, CTLFLAG_RW, &ip6_forwarding, 0, "");
|
||||
forwarding, CTLFLAG_RW, &ip6_forwarding, 0, "");
|
||||
SYSCTL_INT(_net_inet6_ip6, IPV6CTL_SENDREDIRECTS,
|
||||
redirect, CTLFLAG_RW, &ip6_sendredirects, 0, "");
|
||||
SYSCTL_INT(_net_inet6_ip6, IPV6CTL_DEFHLIM,
|
||||
@ -534,7 +534,7 @@ SYSCTL_INT(_net_inet6_ip6, IPV6CTL_USE_DEFAULTZONE,
|
||||
SYSCTL_INT(_net_inet6_ip6, IPV6CTL_MAXFRAGS,
|
||||
maxfrags, CTLFLAG_RW, &ip6_maxfrags, 0, "");
|
||||
SYSCTL_INT(_net_inet6_ip6, IPV6CTL_MCAST_PMTU,
|
||||
mcast_pmtu, CTLFLAG_RW, &ip6_mcast_pmtu, 0, "");
|
||||
mcast_pmtu, CTLFLAG_RW, &ip6_mcast_pmtu, 0, "");
|
||||
#ifdef IPSTEALTH
|
||||
SYSCTL_INT(_net_inet6_ip6, IPV6CTL_STEALTH, stealth, CTLFLAG_RW,
|
||||
&ip6stealth, 0, "");
|
||||
|
@ -110,7 +110,7 @@ extern int in6_inithead __P((void **head, int off));
|
||||
*/
|
||||
static struct radix_node *
|
||||
in6_addroute(void *v_arg, void *n_arg, struct radix_node_head *head,
|
||||
struct radix_node *treenodes)
|
||||
struct radix_node *treenodes)
|
||||
{
|
||||
struct rtentry *rt = (struct rtentry *)treenodes;
|
||||
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)rt_key(rt);
|
||||
|
@ -147,13 +147,13 @@ static struct in6_addrpolicy *match_addrsel_policy __P((struct sockaddr_in6 *));
|
||||
sizeof(ip6stat.ip6s_sources_rule[0])) /* check for safety */ \
|
||||
ip6stat.ip6s_sources_rule[(r)]++; \
|
||||
/* printf("in6_selectsrc: keep %s against %s by %d\n", ia_best ? ip6_sprintf(&ia_best->ia_addr.sin6_addr) : "none", ip6_sprintf(&ia->ia_addr.sin6_addr), (r)); */ \
|
||||
goto next; /* XXX: we can't use 'continue' here */ \
|
||||
goto next; /* XXX: we can't use 'continue' here */ \
|
||||
} while(0)
|
||||
#define BREAK(r) do { \
|
||||
if ((r) < sizeof(ip6stat.ip6s_sources_rule) / \
|
||||
sizeof(ip6stat.ip6s_sources_rule[0])) /* check for safety */ \
|
||||
ip6stat.ip6s_sources_rule[(r)]++; \
|
||||
goto out; /* XXX: we can't use 'break' here */ \
|
||||
goto out; /* XXX: we can't use 'break' here */ \
|
||||
} while(0)
|
||||
|
||||
struct in6_addr *
|
||||
|
@ -316,10 +316,10 @@ ip6_forward(struct mbuf *m, int srcrt)
|
||||
m_freem(m);
|
||||
return;
|
||||
} else {
|
||||
/*
|
||||
* In the FAST IPSec case we have already
|
||||
/*
|
||||
* In the FAST IPSec case we have already
|
||||
* re-injected the packet and it has been freed
|
||||
* by the ipsec_done() function. So, just clean
|
||||
* by the ipsec_done() function. So, just clean
|
||||
* up after ourselves.
|
||||
*/
|
||||
m = NULL;
|
||||
@ -385,7 +385,7 @@ ip6_forward(struct mbuf *m, int srcrt)
|
||||
dst->sin6_family = AF_INET6;
|
||||
dst->sin6_addr = ip6->ip6_dst;
|
||||
|
||||
rtalloc((struct route *)&ip6_forward_rt);
|
||||
rtalloc((struct route *)&ip6_forward_rt);
|
||||
if (ip6_forward_rt.ro_rt == 0) {
|
||||
ip6stat.ip6s_noroute++;
|
||||
in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_noroute);
|
||||
|
@ -432,7 +432,7 @@ ip6_input(struct mbuf *m)
|
||||
* Multicast check
|
||||
*/
|
||||
if (IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst)) {
|
||||
struct in6_multi *in6m = 0;
|
||||
struct in6_multi *in6m = 0;
|
||||
|
||||
in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_mcast);
|
||||
/*
|
||||
@ -1242,7 +1242,7 @@ ip6_savecontrol(struct inpcb *in6p, struct mbuf *m, struct mbuf **mp)
|
||||
|
||||
default:
|
||||
/*
|
||||
* other cases have been filtered in the above.
|
||||
* other cases have been filtered in the above.
|
||||
* none will visit this case. here we supply
|
||||
* the code just in case (nxt overwritten or
|
||||
* other cases).
|
||||
|
@ -110,7 +110,7 @@ ip6_ipsec_fwd(struct mbuf *m)
|
||||
sp = ipsec_getpolicy(tdbi, IPSEC_DIR_INBOUND);
|
||||
} else {
|
||||
sp = ipsec_getpolicybyaddr(m, IPSEC_DIR_INBOUND,
|
||||
IP_FORWARDING, &error);
|
||||
IP_FORWARDING, &error);
|
||||
}
|
||||
if (sp == NULL) { /* NB: can happen if error */
|
||||
splx(s);
|
||||
@ -161,7 +161,7 @@ ip6_ipsec_input(struct mbuf *m, int nxt)
|
||||
* done. If so, then just pass it along. This tag gets
|
||||
* set during AH, ESP, etc. input handling, before the
|
||||
* packet is returned to the ip input queue for delivery.
|
||||
*/
|
||||
*/
|
||||
mtag = m_tag_find(m, PACKET_TAG_IPSEC_IN_DONE, NULL);
|
||||
s = splnet();
|
||||
if (mtag != NULL) {
|
||||
@ -169,7 +169,7 @@ ip6_ipsec_input(struct mbuf *m, int nxt)
|
||||
sp = ipsec_getpolicy(tdbi, IPSEC_DIR_INBOUND);
|
||||
} else {
|
||||
sp = ipsec_getpolicybyaddr(m, IPSEC_DIR_INBOUND,
|
||||
IP_FORWARDING, &error);
|
||||
IP_FORWARDING, &error);
|
||||
}
|
||||
if (sp != NULL) {
|
||||
/*
|
||||
@ -194,12 +194,12 @@ ip6_ipsec_input(struct mbuf *m, int nxt)
|
||||
/*
|
||||
* Called from ip6_output().
|
||||
* 1 = drop packet, 0 = continue processing packet,
|
||||
* -1 = packet was reinjected and stop processing packet
|
||||
*/
|
||||
* -1 = packet was reinjected and stop processing packet
|
||||
*/
|
||||
|
||||
int
|
||||
ip6_ipsec_output(struct mbuf **m, struct inpcb *inp, int *flags, int *error,
|
||||
struct ifnet **ifp, struct secpolicy **sp)
|
||||
struct ifnet **ifp, struct secpolicy **sp)
|
||||
{
|
||||
#ifdef IPSEC
|
||||
struct tdb_ident *tdbi;
|
||||
@ -221,7 +221,7 @@ ip6_ipsec_output(struct mbuf **m, struct inpcb *inp, int *flags, int *error,
|
||||
|
||||
/*
|
||||
* There are four return cases:
|
||||
* sp != NULL apply IPsec policy
|
||||
* sp != NULL apply IPsec policy
|
||||
* sp == NULL, error == 0 no IPsec handling needed
|
||||
* sp == NULL, error == -EINVAL discard packet w/o error
|
||||
* sp == NULL, error != 0 discard packet, report error
|
||||
|
@ -158,7 +158,7 @@ SYSCTL_STRUCT(_net_inet6_ip6, OID_AUTO, mrt6stat, CTLFLAG_RW,
|
||||
&mrt6stat, mrt6stat,
|
||||
"Multicast Routing Statistics (struct mrt6stat, netinet6/ip6_mroute.h)");
|
||||
|
||||
#define NO_RTE_FOUND 0x1
|
||||
#define NO_RTE_FOUND 0x1
|
||||
#define RTE_FOUND 0x2
|
||||
|
||||
static struct mf6c *mf6ctable[MF6CTBLSIZ];
|
||||
@ -200,9 +200,9 @@ extern struct socket *ip_mrouter;
|
||||
* by a broken gateway). Different from IPv4 register_if,
|
||||
* these interfaces are linked into the system ifnet list,
|
||||
* because per-interface IPv6 statistics are maintained in
|
||||
* ifp->if_afdata. But it does not have any routes point
|
||||
* ifp->if_afdata. But it does not have any routes point
|
||||
* to them. I.e., packets can't be sent this way. They
|
||||
* only exist as a placeholder for multicast source
|
||||
* only exist as a placeholder for multicast source
|
||||
* verification.
|
||||
*/
|
||||
static struct ifnet *multicast_register_if6;
|
||||
@ -621,8 +621,8 @@ add_m6if(struct mif6ctl *mifcp)
|
||||
if_attach(ifp);
|
||||
multicast_register_if6 = ifp;
|
||||
reg_mif_num = mifcp->mif6c_mifi;
|
||||
/*
|
||||
* it is impossible to guess the ifindex of the
|
||||
/*
|
||||
* it is impossible to guess the ifindex of the
|
||||
* register interface. So mif6c_pifi is automatically
|
||||
* calculated.
|
||||
*/
|
||||
@ -917,11 +917,11 @@ collate(struct timeval *t)
|
||||
static int
|
||||
del_m6fc(struct mf6cctl *mfccp)
|
||||
{
|
||||
struct sockaddr_in6 origin;
|
||||
struct sockaddr_in6 mcastgrp;
|
||||
struct mf6c *rt;
|
||||
struct mf6c **nptr;
|
||||
u_long hash;
|
||||
struct sockaddr_in6 origin;
|
||||
struct sockaddr_in6 mcastgrp;
|
||||
struct mf6c *rt;
|
||||
struct mf6c **nptr;
|
||||
u_long hash;
|
||||
int s;
|
||||
|
||||
origin = mfccp->mf6cc_origin;
|
||||
|
@ -100,8 +100,8 @@ typedef struct if_set {
|
||||
* Argument structure for MRT6_ADD_IF.
|
||||
*/
|
||||
struct mif6ctl {
|
||||
mifi_t mif6c_mifi; /* the index of the mif to be added */
|
||||
u_char mif6c_flags; /* MIFF_ flags defined below */
|
||||
mifi_t mif6c_mifi; /* the index of the mif to be added */
|
||||
u_char mif6c_flags; /* MIFF_ flags defined below */
|
||||
u_short mif6c_pifi; /* the index of the physical IF */
|
||||
};
|
||||
|
||||
@ -129,10 +129,10 @@ struct mrt6stat {
|
||||
u_quad_t mrt6s_cant_tunnel; /* no room for tunnel options */
|
||||
u_quad_t mrt6s_wrong_if; /* arrived on wrong interface */
|
||||
u_quad_t mrt6s_upq_ovflw; /* upcall Q overflow */
|
||||
u_quad_t mrt6s_cache_cleanups; /* # entries with no upcalls */
|
||||
u_quad_t mrt6s_drop_sel; /* pkts dropped selectively */
|
||||
u_quad_t mrt6s_q_overflow; /* pkts dropped - Q overflow */
|
||||
u_quad_t mrt6s_pkt2large; /* pkts dropped - size > BKT SIZE */
|
||||
u_quad_t mrt6s_cache_cleanups; /* # entries with no upcalls */
|
||||
u_quad_t mrt6s_drop_sel; /* pkts dropped selectively */
|
||||
u_quad_t mrt6s_q_overflow; /* pkts dropped - Q overflow */
|
||||
u_quad_t mrt6s_pkt2large; /* pkts dropped - size > BKT SIZE */
|
||||
u_quad_t mrt6s_upq_sockfull; /* upcalls dropped - socket full */
|
||||
};
|
||||
|
||||
@ -204,10 +204,10 @@ struct sioc_mif_req6 {
|
||||
* The kernel's multicast-interface structure.
|
||||
*/
|
||||
struct mif6 {
|
||||
u_char m6_flags; /* MIFF_ flags defined above */
|
||||
u_int m6_rate_limit; /* max rate */
|
||||
struct in6_addr m6_lcl_addr; /* local interface address */
|
||||
struct ifnet *m6_ifp; /* pointer to interface */
|
||||
u_char m6_flags; /* MIFF_ flags defined above */
|
||||
u_int m6_rate_limit; /* max rate */
|
||||
struct in6_addr m6_lcl_addr; /* local interface address */
|
||||
struct ifnet *m6_ifp; /* pointer to interface */
|
||||
u_quad_t m6_pkt_in; /* # pkts in on interface */
|
||||
u_quad_t m6_pkt_out; /* # pkts out on interface */
|
||||
u_quad_t m6_bytes_in; /* # bytes in on interface */
|
||||
@ -225,13 +225,13 @@ struct mif6 {
|
||||
struct mf6c {
|
||||
struct sockaddr_in6 mf6c_origin; /* IPv6 origin of mcasts */
|
||||
struct sockaddr_in6 mf6c_mcastgrp; /* multicast group associated*/
|
||||
mifi_t mf6c_parent; /* incoming IF */
|
||||
mifi_t mf6c_parent; /* incoming IF */
|
||||
struct if_set mf6c_ifset; /* set of outgoing IFs */
|
||||
|
||||
u_quad_t mf6c_pkt_cnt; /* pkt count for src-grp */
|
||||
u_quad_t mf6c_byte_cnt; /* byte count for src-grp */
|
||||
u_quad_t mf6c_wrong_if; /* wrong if for src-grp */
|
||||
int mf6c_expire; /* time to clean entry up */
|
||||
u_quad_t mf6c_pkt_cnt; /* pkt count for src-grp */
|
||||
u_quad_t mf6c_byte_cnt; /* byte count for src-grp */
|
||||
u_quad_t mf6c_wrong_if; /* wrong if for src-grp */
|
||||
int mf6c_expire; /* time to clean entry up */
|
||||
struct timeval mf6c_last_assert; /* last time I sent an assert*/
|
||||
struct rtdetq *mf6c_stall; /* pkts waiting for route */
|
||||
struct mf6c *mf6c_next; /* hash table linkage */
|
||||
@ -244,8 +244,8 @@ struct mf6c {
|
||||
*/
|
||||
#ifndef _NETINET_IP_MROUTE_H_
|
||||
struct rtdetq { /* XXX: rtdetq is also defined in ip_mroute.h */
|
||||
struct mbuf *m; /* A copy of the packet */
|
||||
struct ifnet *ifp; /* Interface pkt came in on */
|
||||
struct mbuf *m; /* A copy of the packet */
|
||||
struct ifnet *ifp; /* Interface pkt came in on */
|
||||
#ifdef UPCALL_TIMING
|
||||
struct timeval t; /* Timestamp */
|
||||
#endif /* UPCALL_TIMING */
|
||||
|
@ -147,7 +147,7 @@ static int copypktopts __P((struct ip6_pktopts *, struct ip6_pktopts *, int));
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
/*
|
||||
* Form a chain of extension headers.
|
||||
* Form a chain of extension headers.
|
||||
* m is the extension header mbuf
|
||||
* mp is the previous mbuf in the chain
|
||||
* p is the next header
|
||||
@ -218,7 +218,7 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
|
||||
printf ("ip6 is NULL");
|
||||
goto bad;
|
||||
}
|
||||
|
||||
|
||||
finaldst = ip6->ip6_dst;
|
||||
|
||||
bzero(&exthdrs, sizeof(exthdrs));
|
||||
@ -246,7 +246,7 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
|
||||
MAKE_EXTHDR(opt->ip6po_dest2, &exthdrs.ip6e_dest2);
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* IPSec checking which handles several cases.
|
||||
* FAST IPSEC: We re-injected the packet.
|
||||
*/
|
||||
@ -256,7 +256,7 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
|
||||
case 1: /* Bad packet */
|
||||
goto freehdrs;
|
||||
case -1: /* Do IPSec */
|
||||
needipsec = 1;
|
||||
needipsec = 1;
|
||||
case 0: /* No IPSec */
|
||||
default:
|
||||
break;
|
||||
@ -268,16 +268,16 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
|
||||
* Keep the length of the unfragmentable part for fragmentation.
|
||||
*/
|
||||
optlen = 0;
|
||||
if (exthdrs.ip6e_hbh)
|
||||
if (exthdrs.ip6e_hbh)
|
||||
optlen += exthdrs.ip6e_hbh->m_len;
|
||||
if (exthdrs.ip6e_dest1)
|
||||
if (exthdrs.ip6e_dest1)
|
||||
optlen += exthdrs.ip6e_dest1->m_len;
|
||||
if (exthdrs.ip6e_rthdr)
|
||||
if (exthdrs.ip6e_rthdr)
|
||||
optlen += exthdrs.ip6e_rthdr->m_len;
|
||||
unfragpartlen = optlen + sizeof(struct ip6_hdr);
|
||||
|
||||
/* NOTE: we don't add AH/ESP length here. do that later. */
|
||||
if (exthdrs.ip6e_dest2)
|
||||
if (exthdrs.ip6e_dest2)
|
||||
optlen += exthdrs.ip6e_dest2->m_len;
|
||||
|
||||
/*
|
||||
@ -330,7 +330,7 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
|
||||
*/
|
||||
u_char *nexthdrp = &ip6->ip6_nxt;
|
||||
mprev = m;
|
||||
|
||||
|
||||
/*
|
||||
* we treat dest2 specially. this makes IPsec processing
|
||||
* much easier. the goal here is to make mprev point the
|
||||
@ -347,7 +347,7 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
|
||||
*mtod(exthdrs.ip6e_dest2, u_char *) = ip6->ip6_nxt;
|
||||
ip6->ip6_nxt = IPPROTO_DSTOPTS;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* result: IPv6 hbh dest1 rthdr dest2 payload
|
||||
* m will point to IPv6 header. mprev will point to the
|
||||
@ -358,24 +358,24 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
|
||||
IPPROTO_DSTOPTS);
|
||||
MAKE_CHAIN(exthdrs.ip6e_rthdr, mprev, nexthdrp,
|
||||
IPPROTO_ROUTING);
|
||||
|
||||
|
||||
#ifdef IPSEC
|
||||
if (!needipsec)
|
||||
goto skip_ipsec2;
|
||||
|
||||
|
||||
/*
|
||||
* pointers after IPsec headers are not valid any more.
|
||||
* other pointers need a great care too.
|
||||
* (IPsec routines should not mangle mbufs prior to AH/ESP)
|
||||
*/
|
||||
exthdrs.ip6e_dest2 = NULL;
|
||||
|
||||
|
||||
if (exthdrs.ip6e_rthdr) {
|
||||
rh = mtod(exthdrs.ip6e_rthdr, struct ip6_rthdr *);
|
||||
segleft_org = rh->ip6r_segleft;
|
||||
rh->ip6r_segleft = 0;
|
||||
}
|
||||
|
||||
|
||||
bzero(&state, sizeof(state));
|
||||
state.m = m;
|
||||
error = ipsec6_output_trans(&state, nexthdrp, mprev, sp, flags,
|
||||
@ -401,15 +401,15 @@ ip6_output(struct mbuf *m0, struct ip6_pktopts *opt,
|
||||
}
|
||||
goto bad;
|
||||
} else if (!needipsectun) {
|
||||
/*
|
||||
* In the FAST IPSec case we have already
|
||||
/*
|
||||
* In the FAST IPSec case we have already
|
||||
* re-injected the packet and it has been freed
|
||||
* by the ipsec_done() function. So, just clean
|
||||
* by the ipsec_done() function. So, just clean
|
||||
* up after ourselves.
|
||||
*/
|
||||
*/
|
||||
m = NULL;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
if (exthdrs.ip6e_rthdr) {
|
||||
/* ah6_output doesn't modify mbuf chain */
|
||||
rh->ip6r_segleft = segleft_org;
|
||||
@ -493,7 +493,7 @@ skip_ipsec2:;
|
||||
dst = (struct sockaddr_in6 *)&ro->ro_dst;
|
||||
|
||||
again:
|
||||
/*
|
||||
/*
|
||||
* if specified, try to fill in the traffic class field.
|
||||
* do not override if a non-zero value is already set.
|
||||
* we check the diffserv field and the ecn field separately.
|
||||
@ -568,10 +568,10 @@ skip_ipsec2:;
|
||||
}
|
||||
goto bad;
|
||||
} else {
|
||||
/*
|
||||
* In the FAST IPSec case we have already
|
||||
/*
|
||||
* In the FAST IPSec case we have already
|
||||
* re-injected the packet and it has been freed
|
||||
* by the ipsec_done() function. So, just clean
|
||||
* by the ipsec_done() function. So, just clean
|
||||
* up after ourselves.
|
||||
*/
|
||||
m = NULL;
|
||||
@ -1058,11 +1058,11 @@ skip_ipsec2:;
|
||||
m0 = m->m_nextpkt;
|
||||
m->m_nextpkt = 0;
|
||||
if (error == 0) {
|
||||
/* Record statistics for this interface address. */
|
||||
if (ia) {
|
||||
ia->ia_ifa.if_opackets++;
|
||||
ia->ia_ifa.if_obytes += m->m_pkthdr.len;
|
||||
}
|
||||
/* Record statistics for this interface address. */
|
||||
if (ia) {
|
||||
ia->ia_ifa.if_opackets++;
|
||||
ia->ia_ifa.if_obytes += m->m_pkthdr.len;
|
||||
}
|
||||
error = nd6_output(ifp, origifp, m, dst, ro->ro_rt);
|
||||
} else
|
||||
m_freem(m);
|
||||
|
@ -290,7 +290,7 @@ extern int ip6_rr_prune; /* router renumbering prefix
|
||||
extern int ip6_mcast_pmtu; /* enable pMTU discovery for multicast? */
|
||||
extern int ip6_v6only;
|
||||
|
||||
extern struct socket *ip6_mrouter; /* multicast routing daemon */
|
||||
extern struct socket *ip6_mrouter; /* multicast routing daemon */
|
||||
extern int ip6_sendredirects; /* send IP redirects when forwarding? */
|
||||
extern int ip6_maxfragpackets; /* Maximum packets in reassembly queue */
|
||||
extern int ip6_maxfrags; /* Maximum fragments in reassembly queue */
|
||||
|
@ -318,7 +318,7 @@ mld6_input(struct mbuf *m, int off)
|
||||
*
|
||||
* In Non-Listener state, we simply don't have a membership record.
|
||||
* In Delaying Listener state, our timer is running (in6m->in6m_timer)
|
||||
* In Idle Listener state, our timer is not running
|
||||
* In Idle Listener state, our timer is not running
|
||||
* (in6m->in6m_timer==IN6M_TIMER_UNDEF)
|
||||
*
|
||||
* The flag is in6m->in6m_state, it is set to MLD_OTHERLISTENER if
|
||||
@ -532,7 +532,7 @@ mld6_sendpkt(struct in6_multi *in6m, int type, const struct in6_addr *dst)
|
||||
* Add source addresses to the list also, if upstream router is MLDv2 capable
|
||||
* and the number of source is not 0.
|
||||
*/
|
||||
struct in6_multi *
|
||||
struct in6_multi *
|
||||
in6_addmulti(struct in6_addr *maddr6, struct ifnet *ifp,
|
||||
int *errorp, int delay)
|
||||
{
|
||||
|
@ -507,7 +507,7 @@ nd6_llinfo_timer(void *arg)
|
||||
* specified as the destination of a p2p interface
|
||||
* (see in6_ifinit()). We should not free the entry
|
||||
* since this is sort of a "static" entry generated
|
||||
* via interface address configuration.
|
||||
* via interface address configuration.
|
||||
*/
|
||||
ln->ln_asked = 0;
|
||||
ln->ln_expire = 0; /* make it permanent */
|
||||
@ -1817,7 +1817,7 @@ nd6_cache_lladdr(struct ifnet *ifp, struct in6_addr *from, char *lladdr,
|
||||
* 0 n y -- (3) c s s
|
||||
* 0 y y n (4) c s s
|
||||
* 0 y y y (5) c s s
|
||||
* 1 -- n -- (6) c c c s
|
||||
* 1 -- n -- (6) c c c s
|
||||
* 1 -- y -- (7) c c s c s
|
||||
*
|
||||
* (c=clear s=set)
|
||||
@ -2234,7 +2234,7 @@ nd6_storelladdr(struct ifnet *ifp, struct rtentry *rt0, struct mbuf *m,
|
||||
return (0);
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
clear_llinfo_pqueue(struct llinfo_nd6 *ln)
|
||||
{
|
||||
struct mbuf *m_hold, *m_hold_next;
|
||||
|
@ -207,7 +207,7 @@ nd6_ns_input(struct mbuf *m, int off, int icmp6len)
|
||||
struct sockaddr_in6 tsin6;
|
||||
int need_proxy;
|
||||
|
||||
bzero(&tsin6, sizeof tsin6);
|
||||
bzero(&tsin6, sizeof tsin6);
|
||||
tsin6.sin6_len = sizeof(struct sockaddr_in6);
|
||||
tsin6.sin6_family = AF_INET6;
|
||||
tsin6.sin6_addr = taddr6;
|
||||
|
@ -1089,7 +1089,7 @@ prelist_update(struct nd_prefixctl *new, struct nd_defrouter *dr,
|
||||
goto end;
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* 5.5.3 (d). If the prefix advertised is not equal to the prefix of
|
||||
* an address configured by stateless autoconfiguration already in the
|
||||
* list of addresses associated with the interface, and the Valid
|
||||
@ -1182,14 +1182,14 @@ prelist_update(struct nd_prefixctl *new, struct nd_defrouter *dr,
|
||||
|
||||
in6_init_address_ltimes(pr, <6_tmp);
|
||||
|
||||
/*
|
||||
/*
|
||||
* We need to treat lifetimes for temporary addresses
|
||||
* differently, according to
|
||||
* draft-ietf-ipv6-privacy-addrs-v2-01.txt 3.3 (1);
|
||||
* we only update the lifetimes when they are in the maximum
|
||||
* intervals.
|
||||
*/
|
||||
if ((ifa6->ia6_flags & IN6_IFF_TEMPORARY) != 0) {
|
||||
*/
|
||||
if ((ifa6->ia6_flags & IN6_IFF_TEMPORARY) != 0) {
|
||||
u_int32_t maxvltime, maxpltime;
|
||||
|
||||
if (ip6_temp_valid_lifetime >
|
||||
@ -1372,15 +1372,15 @@ pfxlist_onlink_check()
|
||||
}
|
||||
}
|
||||
if (pr != NULL || (TAILQ_FIRST(&nd_defrouter) && pfxrtr == NULL)) {
|
||||
/*
|
||||
/*
|
||||
* There is at least one prefix that has a reachable router,
|
||||
* or at least a router which probably does not advertise
|
||||
* any prefixes. The latter would be the case when we move
|
||||
* to a new link where we have a router that does not provide
|
||||
* prefixes and we configure an address by hand.
|
||||
* Detach prefixes which have no reachable advertising
|
||||
* router, and attach other prefixes.
|
||||
*/
|
||||
* Detach prefixes which have no reachable advertising
|
||||
* router, and attach other prefixes.
|
||||
*/
|
||||
for (pr = nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
|
||||
/* XXX: a link-local prefix should never be detached */
|
||||
if (IN6_IS_ADDR_LINKLOCAL(&pr->ndpr_prefix.sin6_addr))
|
||||
@ -1810,7 +1810,7 @@ in6_ifadd(struct nd_prefixctl *pr, int mcast)
|
||||
|
||||
ifra.ifra_flags |= IN6_IFF_AUTOCONF; /* obey autoconf */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Make sure that we do not have this address already. This should
|
||||
* usually not happen, but we can still see this case, e.g., if we
|
||||
* have manually configured the exact address to be configured.
|
||||
@ -1882,7 +1882,7 @@ in6_tmpifadd(const struct in6_ifaddr *ia0, int forcegen, int delay)
|
||||
ifra.ifra_addr.sin6_addr.s6_addr32[3] |=
|
||||
(randid[1] & ~(ifra.ifra_prefixmask.sin6_addr.s6_addr32[3]));
|
||||
|
||||
/*
|
||||
/*
|
||||
* in6_get_tmpifid() quite likely provided a unique interface ID.
|
||||
* However, we may still have a chance to see collision, because
|
||||
* there may be a time lag between generation of the ID and generation
|
||||
@ -1891,7 +1891,7 @@ in6_tmpifadd(const struct in6_ifaddr *ia0, int forcegen, int delay)
|
||||
for (ia = in6_ifaddr; ia; ia = ia->ia_next) {
|
||||
if (IN6_ARE_ADDR_EQUAL(&ia->ia_addr.sin6_addr,
|
||||
&ifra.ifra_addr.sin6_addr)) {
|
||||
if (trylimit-- == 0) {
|
||||
if (trylimit-- == 0) {
|
||||
/*
|
||||
* Give up. Something strange should have
|
||||
* happened.
|
||||
|
@ -737,7 +737,7 @@ rip6_shutdown(struct socket *so)
|
||||
|
||||
static int
|
||||
rip6_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *nam,
|
||||
struct mbuf *control, struct thread *td)
|
||||
struct mbuf *control, struct thread *td)
|
||||
{
|
||||
struct inpcb *inp = sotoinpcb(so);
|
||||
struct sockaddr_in6 tmp;
|
||||
|
@ -40,7 +40,7 @@ extern struct pr_usrreqs sctp6_usrreqs;
|
||||
|
||||
|
||||
int sctp6_input __P((struct mbuf **, int *, int));
|
||||
int sctp6_output
|
||||
int sctp6_output
|
||||
__P((struct sctp_inpcb *, struct mbuf *, struct sockaddr *,
|
||||
struct mbuf *, struct proc *));
|
||||
void sctp6_ctlinput __P((int, struct sockaddr *, void *));
|
||||
|
@ -290,8 +290,8 @@ udp6_output(struct in6pcb *in6p, struct mbuf *m, struct sockaddr *addr6,
|
||||
case AF_INET6:
|
||||
ip6 = mtod(m, struct ip6_hdr *);
|
||||
ip6->ip6_flow = in6p->in6p_flowinfo & IPV6_FLOWINFO_MASK;
|
||||
ip6->ip6_vfc &= ~IPV6_VERSION_MASK;
|
||||
ip6->ip6_vfc |= IPV6_VERSION;
|
||||
ip6->ip6_vfc &= ~IPV6_VERSION_MASK;
|
||||
ip6->ip6_vfc |= IPV6_VERSION;
|
||||
#if 0 /* ip6_plen will be filled in ip6_output. */
|
||||
ip6->ip6_plen = htons((u_short)plen);
|
||||
#endif
|
||||
|
@ -706,7 +706,7 @@ udp6_disconnect(struct socket *so)
|
||||
|
||||
static int
|
||||
udp6_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
|
||||
struct mbuf *control, struct thread *td)
|
||||
struct mbuf *control, struct thread *td)
|
||||
{
|
||||
struct inpcb *inp;
|
||||
int error = 0;
|
||||
@ -717,7 +717,7 @@ udp6_send(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
|
||||
INP_INFO_WLOCK(&udbinfo);
|
||||
INP_LOCK(inp);
|
||||
if (addr) {
|
||||
if (addr->sa_len != sizeof(struct sockaddr_in6)) {
|
||||
if (addr->sa_len != sizeof(struct sockaddr_in6)) {
|
||||
error = EINVAL;
|
||||
goto bad;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user