Skip to content

Commit

Permalink
o Nmap now understands the RFC 4007 percent syntax for IPv6 Zone IDs.
Browse files Browse the repository at this point in the history
  On Windows, this ID has to be a numeric index.  On Linux and some
  other OS's, this ID can instead be an interface name.  Some examples
  of this syntax:
    fe80::20f:b0ff:fec6:15af%2
    fe80::20f:b0ff:fec6:15af%eth0

This was a lot simpler than the method I previously implemented and posted
to nmap-dev.  Now I just extract the zone ID from the already available
getaddrinfo() data rather than parsing it out myself.
  • Loading branch information
kris committed May 20, 2008
1 parent ce3ce4f commit 7d38c4d
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 3 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,14 @@ o We now compile in IPv6 support on Windows. In order to use this,
but must be downloaded from MS for XP. See
http://www.microsoft.com/technet/network/ipv6/ipv6faq.mspx . [Kris]

o Nmap now understands the RFC 4007 percent syntax for IPv6 Zone IDs.
On Windows, this ID has to be a numeric index. On Linux and some
other OS's, this ID can instead be an interface name. Some examples
of this syntax:
fe80::20f:b0ff:fec6:15af%2
fe80::20f:b0ff:fec6:15af%eth0
[Kris]

o The Zenmap installer and uninstaller are more careful about escaping
filenames and dealing with an installation root (DESTDIR). [David]

Expand Down
5 changes: 3 additions & 2 deletions TargetGroup.cc
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ int TargetGroup::parse_expr(const char * const target_expr, int af) {
}
assert(result->ai_addrlen == sizeof(struct sockaddr_in6));
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *) result->ai_addr;
memcpy(ip6.s6_addr, sin6->sin6_addr.s6_addr, 16);
memcpy(&ip6, sin6, sizeof(struct sockaddr_in6));
ipsleft = 1;
freeaddrinfo(result);
#else // HAVE_IPV6
Expand Down Expand Up @@ -443,7 +443,8 @@ int TargetGroup::get_next_host(struct sockaddr_storage *ss, size_t *sslen) {
#ifdef SIN_LEN
sin6->sin6_len = *sslen;
#endif /* SIN_LEN */
memcpy(sin6->sin6_addr.s6_addr, ip6.s6_addr, 16);
memcpy(sin6->sin6_addr.s6_addr, ip6.sin6_addr.s6_addr, 16);
sin6->sin6_scope_id = ip6.sin6_scope_id;
#else
fatal("IPV6 not supported on this platform");
#endif // HAVE_IPV6
Expand Down
2 changes: 1 addition & 1 deletion TargetGroup.h
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ class TargetGroup {
void Initialize();

#if HAVE_IPV6
struct in6_addr ip6;
struct sockaddr_in6 ip6;
#endif

/* These 4 are used for the '/mask' style of specifying target
Expand Down

0 comments on commit 7d38c4d

Please sign in to comment.