On 29/05/15 12:59, Olga Krishtal wrote:
On 29/05/15 01:56, Eric Blake wrote:
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 <kal...@suse.com>
---
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.
Agree. Moreover, there is separate functions for inet4 and inet6.
Pls, look here
https://developer.gnome.org/libnm/stable/libnm-nm-utils.html
Here you can find nm_utils_inet4/6_ntop() description.
+ u_char *p;
u_char is not a standard typedef; uint8_t is more common.
Eric, I have looked attentively at glib utils for nm_utils_inet4/6_ntop().
Header to use this function can be found in
NetworkManager-libnm-devel.XXX.rpm.
It would be difficult to support all its functionality. So, the only
way, as I see it, to make
out own realization (may be just look at how it was implemented in
nm-utils.h )