On 05/28/2015 12:41 PM, Kirk Allan wrote:
By default, IP addresses and prefixes will be derived from information
obtained by various calls and structures. IPv4 prefixes can be found
by matching the address to those returned by GetAdaptersInfo. IPv6
prefixes can not be matched this way due to the unpredictable order of
entries.
In Windows Visa/2008 guests and newer, it is possible to use
inet_ntop()
s/Visa/Vista/
and OnLinkPrefixLength to get IPv4 and IPv6 addresses and prefixes.
Why the double spacing?
Setting –extra-cflags in the build configuration to
Again, Unicode mdash looks odd.
”- D_WIN32_WINNT-0x600 -DWINVER=0x600” or greater enables this
functionality
for those guests. Setting –ectra-cflags is not required and if not
used,
s/ectra/extra/
the default approach will be taken.
Signed-off-by: Kirk Allan <address@hidden>
---
qga/commands-win32.c | 292
++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 290 insertions(+), 2 deletions(-)
+
+static char *guest_inet_ntop(int af, void *cp, char *buf, size_t len)
+{
+#if (_WIN32_WINNT >= 0x0600) && defined(ARCH_x86_64)
+ /* If built for 64 bit Windows Vista/2008 or newer, inet_ntop() is
+ * available for use. Otherwise, do our best to derive it.
+ */
+ return (char *)InetNtop(af, cp, buf, len);
+#else
Are you sure glib doesn't provide some sort of inet_ntop wrapper that
you could crib, instead of rolling your own? And if you must roll your
own, do it as a separate patch from the rest of this work, possibly by
copying from glibc or other existing implementation (with proper credits
to the upstream source), rather than writing it from scratch.