Module Name: src Committed By: ozaki-r Date: Wed Jul 20 03:38:09 UTC 2016
Modified Files: src/sys/netinet: in_pcb.c Log Message: Reduce scopes of variables To generate a diff of this commit: cvs rdiff -u -r1.166 -r1.167 src/sys/netinet/in_pcb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netinet/in_pcb.c diff -u src/sys/netinet/in_pcb.c:1.166 src/sys/netinet/in_pcb.c:1.167 --- src/sys/netinet/in_pcb.c:1.166 Fri Jul 8 04:33:30 2016 +++ src/sys/netinet/in_pcb.c Wed Jul 20 03:38:09 2016 @@ -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_i 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_i */ 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_i 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_i 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;