diff options
author | Maxim Konovalov <maxim@FreeBSD.org> | 2005-02-14 07:37:51 +0000 |
---|---|---|
committer | Maxim Konovalov <maxim@FreeBSD.org> | 2005-02-14 07:37:51 +0000 |
commit | 9945c0e21f69eb22f3a73def4c6a14f5b88b5de2 (patch) | |
tree | a6be9f7597e232f5e70091fea00613f0423dc377 /usr.sbin | |
parent | 9271f7b6d5476a644bc9195b2093e3eee7545322 (diff) | |
download | src-9945c0e21f69eb22f3a73def4c6a14f5b88b5de2.tar.gz src-9945c0e21f69eb22f3a73def4c6a14f5b88b5de2.zip |
o Add handling of an IPv4-mapped IPv6 address.
o Use SYSCTL_IN() macro instead of direct call of copyin(9).
Submitted by: ume
o Move sysctl_drop() implementation to sys/netinet/tcp_subr.c where
most of tcp sysctls live.
o There are net.inet[6].tcp[6].getcred sysctls already, no needs in
a separate struct tcp_ident_mapping.
Suggested by: ume
Notes
Notes:
svn path=/head/; revision=141886
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/tcpdrop/tcpdrop.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/usr.sbin/tcpdrop/tcpdrop.c b/usr.sbin/tcpdrop/tcpdrop.c index cfa8c2adf367..68ef0ef1604b 100644 --- a/usr.sbin/tcpdrop/tcpdrop.c +++ b/usr.sbin/tcpdrop/tcpdrop.c @@ -38,7 +38,8 @@ int main(int argc, char *argv[]) { struct addrinfo hints, *ail, *aif, *laddr, *faddr; - struct tcp_ident_mapping tir; + /* addrs[0] is a foreign socket, addrs[1] is a local one. */ + struct sockaddr_storage addrs[2]; int mib[] = { CTL_NET, PF_INET, IPPROTO_TCP, TCPCTL_DROP }; int gaierr, rval = 0; char fhbuf[NI_MAXHOST], fsbuf[NI_MAXSERV], lhbuf[NI_MAXHOST], @@ -61,8 +62,8 @@ main(int argc, char *argv[]) for (aif = faddr; aif; aif = aif->ai_next) { if (ail->ai_family != aif->ai_family) continue; - memcpy(&tir.faddr, aif->ai_addr, aif->ai_addrlen); - memcpy(&tir.laddr, ail->ai_addr, ail->ai_addrlen); + memcpy(&addrs[0], aif->ai_addr, aif->ai_addrlen); + memcpy(&addrs[1], ail->ai_addr, ail->ai_addrlen); if (getnameinfo(aif->ai_addr, aif->ai_addrlen, fhbuf, sizeof(fhbuf), fsbuf, sizeof(fsbuf), @@ -74,7 +75,7 @@ main(int argc, char *argv[]) NI_NUMERICHOST | NI_NUMERICSERV) == -1) err(1, "getnameinfo"); if (sysctl(mib, sizeof (mib) / sizeof (int), NULL, - NULL, &tir, sizeof(tir)) == -1) { + NULL, &addrs, sizeof(addrs)) == -1) { rval = 1; warn("%s %s %s %s", lhbuf, lsbuf, fhbuf, fsbuf); } else |