diff options
| author | Bjoern A. Zeeb <bz@FreeBSD.org> | 2010-09-28 19:17:39 +0000 |
|---|---|---|
| committer | Bjoern A. Zeeb <bz@FreeBSD.org> | 2010-09-28 19:17:39 +0000 |
| commit | 14eed132b167aa95bb2c90adbbd69e609a9a7328 (patch) | |
| tree | 437e8f1bcfdcee2255b501eec6c40c069d449173 /sys | |
| parent | bb3019e917d6a19eba26c283c56d5a7a59fe8ef1 (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/netinet/in.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/netinet/in.c b/sys/netinet/in.c index 8a1b0b6a472a..cc95f7973a00 100644 --- a/sys/netinet/in.c +++ b/sys/netinet/in.c @@ -252,12 +252,15 @@ in_control(so, cmd, data, ifp, td) * the first one on the interface, if possible. */ if (ifp) { + struct in_addr tmp; + dst = ((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr; LIST_FOREACH(iap, INADDR_HASH(dst.s_addr), ia_hash) if (iap->ia_ifp == ifp && iap->ia_addr.sin_addr.s_addr == dst.s_addr) { + tmp.s_addr = dst.s_addr; if (td == NULL || !prison_ip( - td->td_ucred, 0, &dst.s_addr)) + td->td_ucred, 0, &tmp.s_addr)) ia = iap; break; } @@ -265,9 +268,11 @@ in_control(so, cmd, data, ifp, td) TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { iap = ifatoia(ifa); if (iap->ia_addr.sin_family == AF_INET) { + tmp.s_addr = + iap->ia_addr.sin_addr.s_addr; if (td != NULL && prison_ip(td->td_ucred, 0, - &iap->ia_addr.sin_addr.s_addr)) + &tmp.s_addr)) continue; ia = iap; break; |
