diff options
| author | ozaki-r <ozaki-r@NetBSD.org> | 2016-07-20 03:38:09 +0000 |
|---|---|---|
| committer | ozaki-r <ozaki-r@NetBSD.org> | 2016-07-20 03:38:09 +0000 |
| commit | 76e2dfd0d4ff6fa0dc5e45ab20d10aedbb9afa0b (patch) | |
| tree | 7995d3ab043bc4bd96671bb3207bad635a21c999 /sys | |
| parent | 95279f89723077ec169cbb61f1bd660b55f66908 (diff) | |
Reduce scopes of variables
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/netinet/in_pcb.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c index 74169035b58..786697c37a0 100644 --- a/sys/netinet/in_pcb.c +++ b/sys/netinet/in_pcb.c @@ -1,4 +1,4 @@ -/* $NetBSD: in_pcb.c,v 1.166 2016/07/08 04:33:30 ozaki-r Exp $ */ +/* $NetBSD: in_pcb.c,v 1.167 2016/07/20 03:38:09 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -93,7 +93,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: in_pcb.c,v 1.166 2016/07/08 04:33:30 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: in_pcb.c,v 1.167 2016/07/20 03:38:09 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -451,10 +451,9 @@ int in_pcbconnect(void *v, struct sockaddr_in *sin, struct lwp *l) { struct inpcb *inp = v; - struct in_ifaddr *ia = NULL; - struct sockaddr_in *ifaddr = NULL; vestigial_inpcb_t vestige; int error; + struct in_addr laddr; if (inp->inp_af != AF_INET) return (EINVAL); @@ -484,6 +483,7 @@ in_pcbconnect(void *v, struct sockaddr_in *sin, struct lwp *l) sin->sin_addr = IN_ADDRLIST_READER_FIRST()->ia_addr.sin_addr; } else if (sin->sin_addr.s_addr == INADDR_BROADCAST) { + struct in_ifaddr *ia; IN_ADDRLIST_READER_FOREACH(ia) { if (ia->ia_ifp->if_flags & IFF_BROADCAST) { sin->sin_addr = @@ -507,6 +507,9 @@ in_pcbconnect(void *v, struct sockaddr_in *sin, struct lwp *l) */ if (in_nullhost(inp->inp_laddr)) { int xerror; + struct sockaddr_in *ifaddr; + struct in_ifaddr *ia; + ifaddr = in_selectsrc(sin, &inp->inp_route, inp->inp_socket->so_options, inp->inp_moptions, &xerror); if (ifaddr == NULL) { @@ -517,10 +520,11 @@ in_pcbconnect(void *v, struct sockaddr_in *sin, struct lwp *l) ia = in_get_ia(ifaddr->sin_addr); if (ia == NULL) return (EADDRNOTAVAIL); - } + laddr = ifaddr->sin_addr; + } else + laddr = inp->inp_laddr; if (in_pcblookup_connect(inp->inp_table, sin->sin_addr, sin->sin_port, - !in_nullhost(inp->inp_laddr) ? inp->inp_laddr : ifaddr->sin_addr, - inp->inp_lport, &vestige) != 0 + laddr, inp->inp_lport, &vestige) != 0 || vestige.valid) return (EADDRINUSE); if (in_nullhost(inp->inp_laddr)) { @@ -535,7 +539,7 @@ in_pcbconnect(void *v, struct sockaddr_in *sin, struct lwp *l) if (error != 0) return (error); } - inp->inp_laddr = ifaddr->sin_addr; + inp->inp_laddr = laddr; } inp->inp_faddr = sin->sin_addr; inp->inp_fport = sin->sin_port; |
