Adjust userland commands for struct inpcb separation
Only kvm users are affected.
This commit is contained in:
parent
7118c214c7
commit
be0f86d642
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: fstat.c,v 1.116 2022/10/28 05:24:07 ozaki-r Exp $ */
|
||||
/* $NetBSD: fstat.c,v 1.117 2022/10/28 05:27:16 ozaki-r Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1988, 1993
|
||||
|
@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 1993\
|
|||
#if 0
|
||||
static char sccsid[] = "@(#)fstat.c 8.3 (Berkeley) 5/2/95";
|
||||
#else
|
||||
__RCSID("$NetBSD: fstat.c,v 1.116 2022/10/28 05:24:07 ozaki-r Exp $");
|
||||
__RCSID("$NetBSD: fstat.c,v 1.117 2022/10/28 05:27:16 ozaki-r Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
|
@ -1061,7 +1061,8 @@ socktrans(struct file *f, struct socket *sock, int i)
|
|||
struct socket so;
|
||||
struct protosw proto;
|
||||
struct domain dom;
|
||||
struct inpcb inpcb;
|
||||
struct in4pcb in4pcb;
|
||||
struct in6pcb in6pcb;
|
||||
struct unpcb unpcb;
|
||||
struct ddpcb ddpcb;
|
||||
int len;
|
||||
|
@ -1123,15 +1124,16 @@ socktrans(struct file *f, struct socket *sock, int i)
|
|||
case IPPROTO_TCP:
|
||||
if (so.so_pcb == NULL)
|
||||
break;
|
||||
if (kvm_read(kd, (u_long)so.so_pcb, (char *)&inpcb,
|
||||
sizeof(inpcb)) != sizeof(inpcb)) {
|
||||
dprintf("can't read inpcb at %p", so.so_pcb);
|
||||
if (kvm_read(kd, (u_long)so.so_pcb, (char *)&in4pcb,
|
||||
sizeof(in4pcb)) != sizeof(in4pcb)) {
|
||||
dprintf("can't read in4pcb at %p", so.so_pcb);
|
||||
goto bad;
|
||||
}
|
||||
inet_addrstr(lbuf, sizeof(lbuf), &inpcb.inp_laddr,
|
||||
ntohs(inpcb.inp_lport), isdgram);
|
||||
inet_addrstr(fbuf, sizeof(fbuf), &inpcb.inp_faddr,
|
||||
ntohs(inpcb.inp_fport), isdgram);
|
||||
struct inpcb *inp = (struct inpcb *)&in4pcb;
|
||||
inet_addrstr(lbuf, sizeof(lbuf), &in4p_laddr(inp),
|
||||
ntohs(inp->inp_lport), isdgram);
|
||||
inet_addrstr(fbuf, sizeof(fbuf), &in4p_faddr(inp),
|
||||
ntohs(inp->inp_fport), isdgram);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1147,15 +1149,16 @@ socktrans(struct file *f, struct socket *sock, int i)
|
|||
case IPPROTO_TCP:
|
||||
if (so.so_pcb == NULL)
|
||||
break;
|
||||
if (kvm_read(kd, (u_long)so.so_pcb, (char *)&inpcb,
|
||||
sizeof(inpcb)) != sizeof(inpcb)) {
|
||||
dprintf("can't read inpcb at %p", so.so_pcb);
|
||||
if (kvm_read(kd, (u_long)so.so_pcb, (char *)&in6pcb,
|
||||
sizeof(in6pcb)) != sizeof(in6pcb)) {
|
||||
dprintf("can't read in6pcb at %p", so.so_pcb);
|
||||
goto bad;
|
||||
}
|
||||
inet6_addrstr(lbuf, sizeof(lbuf), &inpcb.inp_laddr6,
|
||||
ntohs(inpcb.inp_lport), isdgram);
|
||||
inet6_addrstr(fbuf, sizeof(fbuf), &inpcb.inp_faddr6,
|
||||
ntohs(inpcb.inp_fport), isdgram);
|
||||
struct inpcb *inp = (struct inpcb *)&in6pcb;
|
||||
inet6_addrstr(lbuf, sizeof(lbuf), &in6p_laddr(inp),
|
||||
ntohs(inp->inp_lport), isdgram);
|
||||
inet6_addrstr(fbuf, sizeof(fbuf), &in6p_faddr(inp),
|
||||
ntohs(inp->inp_fport), isdgram);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: inet.c,v 1.118 2022/10/28 05:24:07 ozaki-r Exp $ */
|
||||
/* $NetBSD: inet.c,v 1.119 2022/10/28 05:27:17 ozaki-r Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1983, 1988, 1993
|
||||
|
@ -34,7 +34,7 @@
|
|||
#if 0
|
||||
static char sccsid[] = "from: @(#)inet.c 8.4 (Berkeley) 4/20/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: inet.c,v 1.118 2022/10/28 05:24:07 ozaki-r Exp $");
|
||||
__RCSID("$NetBSD: inet.c,v 1.119 2022/10/28 05:27:17 ozaki-r Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
|
@ -276,7 +276,8 @@ getpcblist_kmem(u_long off, const char *name, size_t *len)
|
|||
{
|
||||
struct inpcbtable table;
|
||||
struct inpcb *next, *prev;
|
||||
struct inpcb inpcb;
|
||||
struct in4pcb in4pcb;
|
||||
struct inpcb *inp;
|
||||
struct tcpcb tcpcb;
|
||||
struct socket sockb;
|
||||
int istcp = strcmp(name, "tcp") == 0;
|
||||
|
@ -301,31 +302,32 @@ getpcblist_kmem(u_long off, const char *name, size_t *len)
|
|||
|
||||
i = 0;
|
||||
while (next != TAILQ_END(head)) {
|
||||
kread((u_long)next, (char *)&inpcb, sizeof inpcb);
|
||||
kread((u_long)next, (char *)&in4pcb, sizeof in4pcb);
|
||||
prev = next;
|
||||
next = TAILQ_NEXT(&inpcb, inp_queue);
|
||||
inp = (struct inpcb *)&in4pcb;
|
||||
next = TAILQ_NEXT(inp, inp_queue);
|
||||
|
||||
if (inpcb.inp_af != AF_INET)
|
||||
if (inp->inp_af != AF_INET)
|
||||
continue;
|
||||
|
||||
kread((u_long)inpcb.inp_socket, (char *)&sockb, sizeof(sockb));
|
||||
kread((u_long)inp->inp_socket, (char *)&sockb, sizeof(sockb));
|
||||
if (istcp) {
|
||||
kread((u_long)inpcb.inp_ppcb,
|
||||
kread((u_long)inp->inp_ppcb,
|
||||
(char *)&tcpcb, sizeof (tcpcb));
|
||||
}
|
||||
pcblist[i].ki_ppcbaddr =
|
||||
istcp ? (uintptr_t) inpcb.inp_ppcb : (uintptr_t) prev;
|
||||
istcp ? (uintptr_t) inp->inp_ppcb : (uintptr_t) prev;
|
||||
pcblist[i].ki_rcvq = (uint64_t)sockb.so_rcv.sb_cc;
|
||||
pcblist[i].ki_sndq = (uint64_t)sockb.so_snd.sb_cc;
|
||||
|
||||
sin.sin_addr = inpcb.inp_laddr;
|
||||
sin.sin_port = inpcb.inp_lport;
|
||||
sin.sin_addr = in4p_laddr(inp);
|
||||
sin.sin_port = inp->inp_lport;
|
||||
memcpy(&pcblist[i].ki_s, &sin, sizeof(sin));
|
||||
sin.sin_addr = inpcb.inp_faddr;
|
||||
sin.sin_port = inpcb.inp_fport;
|
||||
sin.sin_addr = in4p_faddr(inp);
|
||||
sin.sin_port = inp->inp_fport;
|
||||
memcpy(&pcblist[i].ki_d, &sin, sizeof(sin));
|
||||
pcblist[i].ki_tstate = tcpcb.t_state;
|
||||
pcblist[i].ki_pflags = inpcb.inp_flags;
|
||||
pcblist[i].ki_pflags = inp->inp_flags;
|
||||
if (i++ == size) {
|
||||
size += 100;
|
||||
if (reallocarr(&pcblist, size, sizeof(*pcblist)) != 0)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: inet6.c,v 1.83 2022/10/28 05:24:07 ozaki-r Exp $ */
|
||||
/* $NetBSD: inet6.c,v 1.84 2022/10/28 05:27:17 ozaki-r Exp $ */
|
||||
/* BSDI inet.c,v 2.3 1995/10/24 02:19:29 prb Exp */
|
||||
|
||||
/*
|
||||
|
@ -64,7 +64,7 @@
|
|||
#if 0
|
||||
static char sccsid[] = "@(#)inet.c 8.4 (Berkeley) 4/20/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: inet6.c,v 1.83 2022/10/28 05:24:07 ozaki-r Exp $");
|
||||
__RCSID("$NetBSD: inet6.c,v 1.84 2022/10/28 05:27:17 ozaki-r Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
|
@ -141,7 +141,7 @@ extern const char * const tcptimers[];
|
|||
|
||||
#ifdef INET6
|
||||
|
||||
struct inpcb inpcb;
|
||||
struct in6pcb in6pcb;
|
||||
#ifdef TCP6
|
||||
struct tcp6cb tcp6cb;
|
||||
#else
|
||||
|
@ -288,6 +288,7 @@ getpcblist_kmem(u_long off, const char *name, size_t *len)
|
|||
struct socket sockb;
|
||||
struct inpcbtable table;
|
||||
struct inpcb *next, *prev;
|
||||
struct inpcb *inp;
|
||||
int istcp = strcmp(name, "tcp6") == 0;
|
||||
struct kinfo_pcb *pcblist;
|
||||
size_t size = 100, i;
|
||||
|
@ -309,33 +310,34 @@ getpcblist_kmem(u_long off, const char *name, size_t *len)
|
|||
|
||||
i = 0;
|
||||
while (next != TAILQ_END(head)) {
|
||||
kread((u_long)next, (char *)&inpcb, sizeof inpcb);
|
||||
next = TAILQ_NEXT(&inpcb, inp_queue);
|
||||
kread((u_long)next, (char *)&in6pcb, sizeof in6pcb);
|
||||
inp = (struct inpcb *)&in6pcb;
|
||||
next = TAILQ_NEXT(inp, inp_queue);
|
||||
prev = next;
|
||||
|
||||
if (inpcb.inp_af != AF_INET6)
|
||||
if (inp->inp_af != AF_INET6)
|
||||
continue;
|
||||
|
||||
kread((u_long)inpcb.inp_socket, (char *)&sockb,
|
||||
kread((u_long)inp->inp_socket, (char *)&sockb,
|
||||
sizeof (sockb));
|
||||
if (istcp) {
|
||||
#ifdef TCP6
|
||||
kread((u_long)inpcb.inp_ppcb,
|
||||
kread((u_long)inp->inp_ppcb,
|
||||
(char *)&tcp6cb, sizeof (tcp6cb));
|
||||
#else
|
||||
kread((u_long)inpcb.inp_ppcb,
|
||||
kread((u_long)inp->inp_ppcb,
|
||||
(char *)&tcpcb, sizeof (tcpcb));
|
||||
#endif
|
||||
}
|
||||
pcblist[i].ki_ppcbaddr =
|
||||
istcp ? (uintptr_t) inpcb.inp_ppcb : (uintptr_t) prev;
|
||||
istcp ? (uintptr_t) inp->inp_ppcb : (uintptr_t) prev;
|
||||
pcblist[i].ki_rcvq = (uint64_t)sockb.so_rcv.sb_cc;
|
||||
pcblist[i].ki_sndq = (uint64_t)sockb.so_snd.sb_cc;
|
||||
sin6.sin6_addr = inpcb.inp_laddr6;
|
||||
sin6.sin6_port = inpcb.inp_lport;
|
||||
sin6.sin6_addr = in6p_laddr(inp);
|
||||
sin6.sin6_port = inp->inp_lport;
|
||||
memcpy(&pcblist[i].ki_s, &sin6, sizeof(sin6));
|
||||
sin6.sin6_addr = inpcb.inp_faddr6;
|
||||
sin6.sin6_port = inpcb.inp_fport;
|
||||
sin6.sin6_addr = in6p_faddr(inp);
|
||||
sin6.sin6_port = inp->inp_fport;
|
||||
memcpy(&pcblist[i].ki_d, &sin6, sizeof(sin6));
|
||||
pcblist[i].ki_tstate = tcpcb.t_state;
|
||||
if (i++ == size) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: netcmds.c,v 1.23 2022/10/28 05:24:08 ozaki-r Exp $ */
|
||||
/* $NetBSD: netcmds.c,v 1.24 2022/10/28 05:27:17 ozaki-r Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1980, 1992, 1993
|
||||
|
@ -34,7 +34,7 @@
|
|||
#if 0
|
||||
static char sccsid[] = "@(#)netcmds.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
__RCSID("$NetBSD: netcmds.c,v 1.23 2022/10/28 05:24:08 ozaki-r Exp $");
|
||||
__RCSID("$NetBSD: netcmds.c,v 1.24 2022/10/28 05:27:17 ozaki-r Exp $");
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
|
@ -331,8 +331,8 @@ checkhost(struct inpcb *inp)
|
|||
if (((struct sockaddr *)&p->addr)->sa_family != AF_INET)
|
||||
continue;
|
||||
s_in = (struct sockaddr_in *)&p->addr;
|
||||
if (s_in->sin_addr.s_addr == inp->inp_laddr.s_addr ||
|
||||
s_in->sin_addr.s_addr == inp->inp_faddr.s_addr)
|
||||
if (s_in->sin_addr.s_addr == in4p_laddr(inp).s_addr ||
|
||||
s_in->sin_addr.s_addr == in4p_faddr(inp).s_addr)
|
||||
return (p->onoff);
|
||||
}
|
||||
return (1);
|
||||
|
@ -350,8 +350,8 @@ checkhost6(struct inpcb *inp)
|
|||
if (((struct sockaddr *)&p->addr)->sa_family != AF_INET6)
|
||||
continue;
|
||||
sin6 = (struct sockaddr_in6 *)&p->addr;
|
||||
if (IN6_ARE_ADDR_EQUAL(&sin6->sin6_addr, &inp->inp_laddr6) ||
|
||||
IN6_ARE_ADDR_EQUAL(&sin6->sin6_addr, &inp->inp_faddr6))
|
||||
if (IN6_ARE_ADDR_EQUAL(&sin6->sin6_addr, &in6p_laddr(inp)) ||
|
||||
IN6_ARE_ADDR_EQUAL(&sin6->sin6_addr, &in6p_faddr(inp)))
|
||||
return (p->onoff);
|
||||
}
|
||||
return (1);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: netstat.c,v 1.31 2022/10/28 05:24:08 ozaki-r Exp $ */
|
||||
/* $NetBSD: netstat.c,v 1.32 2022/10/28 05:27:17 ozaki-r Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1980, 1992, 1993
|
||||
|
@ -34,7 +34,7 @@
|
|||
#if 0
|
||||
static char sccsid[] = "@(#)netstat.c 8.1 (Berkeley) 6/6/93";
|
||||
#endif
|
||||
__RCSID("$NetBSD: netstat.c,v 1.31 2022/10/28 05:24:08 ozaki-r Exp $");
|
||||
__RCSID("$NetBSD: netstat.c,v 1.32 2022/10/28 05:27:17 ozaki-r Exp $");
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
|
@ -215,7 +215,8 @@ fetchnetstat4(void *off, int istcp)
|
|||
struct inpcbtable pcbtable;
|
||||
struct inpcb **pprev, *next;
|
||||
struct netinfo *p;
|
||||
struct inpcb inpcb, *inpcbp;
|
||||
struct inpcb *inpcbp, *inp;
|
||||
struct in4pcb in4pcb;
|
||||
struct socket sockb;
|
||||
struct tcpcb tcpcb;
|
||||
|
||||
|
@ -224,30 +225,31 @@ fetchnetstat4(void *off, int istcp)
|
|||
next = TAILQ_FIRST(&pcbtable.inpt_queue);
|
||||
while (next != TAILQ_END(&pcbtable.inpt_queue)) {
|
||||
inpcbp = (struct inpcb *)next;
|
||||
KREAD(inpcbp, &inpcb, sizeof (inpcb));
|
||||
if (inpcb.inp_queue.tqe_prev != pprev) {
|
||||
KREAD(inpcbp, &in4pcb, sizeof (in4pcb));
|
||||
inp = (struct inpcb *)&in4pcb;
|
||||
if (inp->inp_queue.tqe_prev != pprev) {
|
||||
for (p = netcb.ni_forw; p != nhead; p = p->ni_forw)
|
||||
p->ni_seen = 1;
|
||||
error("Kernel state in transition");
|
||||
return;
|
||||
}
|
||||
pprev = &next->inp_queue.tqe_next;
|
||||
next = inpcb.inp_queue.tqe_next;
|
||||
next = inp->inp_queue.tqe_next;
|
||||
|
||||
if (inpcb.inp_af != AF_INET)
|
||||
if (inp->inp_af != AF_INET)
|
||||
continue;
|
||||
if (!aflag && inet_lnaof(inpcb.inp_laddr) == INADDR_ANY)
|
||||
if (!aflag && inet_lnaof(in4p_laddr(inp)) == INADDR_ANY)
|
||||
continue;
|
||||
if (nhosts && !checkhost(&inpcb))
|
||||
if (nhosts && !checkhost(inp))
|
||||
continue;
|
||||
if (nports && !checkport(&inpcb))
|
||||
if (nports && !checkport(inp))
|
||||
continue;
|
||||
KREAD(inpcb.inp_socket, &sockb, sizeof (sockb));
|
||||
KREAD(inp->inp_socket, &sockb, sizeof (sockb));
|
||||
if (istcp) {
|
||||
KREAD(inpcb.inp_ppcb, &tcpcb, sizeof (tcpcb));
|
||||
enter(&inpcb, &sockb, tcpcb.t_state, "tcp");
|
||||
KREAD(inp->inp_ppcb, &tcpcb, sizeof (tcpcb));
|
||||
enter(inp, &sockb, tcpcb.t_state, "tcp");
|
||||
} else
|
||||
enter(&inpcb, &sockb, 0, "udp");
|
||||
enter(inp, &sockb, 0, "udp");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -260,37 +262,39 @@ fetchnetstat6(void *off, int istcp)
|
|||
struct netinfo *p;
|
||||
struct socket sockb;
|
||||
struct tcpcb tcpcb;
|
||||
struct inpcb inpcb, *inpcbp;
|
||||
struct inpcb *inp, *inpcbp;
|
||||
struct in6pcb in6pcb;
|
||||
|
||||
KREAD(off, &pcbtable, sizeof pcbtable);
|
||||
pprev = &((struct inpcbtable *)off)->inpt_queue.tqh_first;
|
||||
next = TAILQ_FIRST(&pcbtable.inpt_queue);
|
||||
while (next != TAILQ_END(&pcbtable.inpt_queue)) {
|
||||
inpcbp = (struct inpcb *)next;
|
||||
KREAD(inpcbp, &inpcb, sizeof (inpcb));
|
||||
if (inpcb.inp_queue.tqe_prev != pprev) {
|
||||
KREAD(inpcbp, &in6pcb, sizeof (in6pcb));
|
||||
inp = (struct inpcb *)&in6pcb;
|
||||
if (inp->inp_queue.tqe_prev != pprev) {
|
||||
for (p = netcb.ni_forw; p != nhead; p = p->ni_forw)
|
||||
p->ni_seen = 1;
|
||||
error("Kernel state in transition");
|
||||
return;
|
||||
}
|
||||
pprev = &next->inp_queue.tqe_next;
|
||||
next = inpcb.inp_queue.tqe_next;
|
||||
next = inp->inp_queue.tqe_next;
|
||||
|
||||
if (inpcb.inp_af != AF_INET6)
|
||||
if (inp->inp_af != AF_INET6)
|
||||
continue;
|
||||
if (!aflag && IN6_IS_ADDR_UNSPECIFIED(&inpcb.inp_laddr6))
|
||||
if (!aflag && IN6_IS_ADDR_UNSPECIFIED(&in6p_laddr(inp)))
|
||||
continue;
|
||||
if (nhosts && !checkhost(&inpcb))
|
||||
if (nhosts && !checkhost(inp))
|
||||
continue;
|
||||
if (nports && !checkport(&inpcb))
|
||||
if (nports && !checkport(inp))
|
||||
continue;
|
||||
KREAD(inpcb.inp_socket, &sockb, sizeof (sockb));
|
||||
KREAD(inp->inp_socket, &sockb, sizeof (sockb));
|
||||
if (istcp) {
|
||||
KREAD(inpcb.inp_ppcb, &tcpcb, sizeof (tcpcb));
|
||||
enter6(&inpcb, &sockb, tcpcb.t_state, "tcp");
|
||||
KREAD(inp->inp_ppcb, &tcpcb, sizeof (tcpcb));
|
||||
enter6(inp, &sockb, tcpcb.t_state, "tcp");
|
||||
} else
|
||||
enter6(&inpcb, &sockb, 0, "udp");
|
||||
enter6(inp, &sockb, 0, "udp");
|
||||
}
|
||||
}
|
||||
#endif /*INET6*/
|
||||
|
@ -313,9 +317,9 @@ enter(struct inpcb *inp, struct socket *so, int state, const char *proto)
|
|||
if (!streq(proto, p->ni_proto))
|
||||
continue;
|
||||
if (p->ni_lport != inp->inp_lport ||
|
||||
p->ni_laddr.s_addr != inp->inp_laddr.s_addr)
|
||||
p->ni_laddr.s_addr != in4p_laddr(inp).s_addr)
|
||||
continue;
|
||||
if (p->ni_faddr.s_addr == inp->inp_faddr.s_addr &&
|
||||
if (p->ni_faddr.s_addr == in4p_faddr(inp).s_addr &&
|
||||
p->ni_fport == inp->inp_fport)
|
||||
break;
|
||||
}
|
||||
|
@ -329,9 +333,9 @@ enter(struct inpcb *inp, struct socket *so, int state, const char *proto)
|
|||
netcb.ni_forw->ni_prev = p;
|
||||
netcb.ni_forw = p;
|
||||
p->ni_line = -1;
|
||||
p->ni_laddr = inp->inp_laddr;
|
||||
p->ni_laddr = in4p_laddr(inp);
|
||||
p->ni_lport = inp->inp_lport;
|
||||
p->ni_faddr = inp->inp_faddr;
|
||||
p->ni_faddr = in4p_faddr(inp);
|
||||
p->ni_fport = inp->inp_fport;
|
||||
p->ni_proto = proto;
|
||||
p->ni_flags = NIF_LACHG | NIF_FACHG;
|
||||
|
@ -362,9 +366,9 @@ enter6(struct inpcb *inp, struct socket *so, int state, const char *proto)
|
|||
if (!streq(proto, p->ni_proto))
|
||||
continue;
|
||||
if (p->ni_lport != inp->inp_lport ||
|
||||
!IN6_ARE_ADDR_EQUAL(&p->ni_laddr6, &inp->inp_laddr6))
|
||||
!IN6_ARE_ADDR_EQUAL(&p->ni_laddr6, &in6p_laddr(inp)))
|
||||
continue;
|
||||
if (IN6_ARE_ADDR_EQUAL(&p->ni_faddr6, &inp->inp_faddr6) &&
|
||||
if (IN6_ARE_ADDR_EQUAL(&p->ni_faddr6, &in6p_faddr(inp)) &&
|
||||
p->ni_fport == inp->inp_fport)
|
||||
break;
|
||||
}
|
||||
|
@ -378,9 +382,9 @@ enter6(struct inpcb *inp, struct socket *so, int state, const char *proto)
|
|||
netcb.ni_forw->ni_prev = p;
|
||||
netcb.ni_forw = p;
|
||||
p->ni_line = -1;
|
||||
p->ni_laddr6 = inp->inp_laddr6;
|
||||
p->ni_laddr6 = in6p_laddr(inp);
|
||||
p->ni_lport = inp->inp_lport;
|
||||
p->ni_faddr6 = inp->inp_faddr6;
|
||||
p->ni_faddr6 = in6p_faddr(inp);
|
||||
p->ni_fport = inp->inp_fport;
|
||||
p->ni_proto = proto;
|
||||
p->ni_flags = NIF_LACHG | NIF_FACHG;
|
||||
|
|
Loading…
Reference in New Issue