[Freeswitch-users] run error after building in vs 2008!

Peter Olsson peter.olsson at visionutveckling.se
Mon May 3 13:36:18 PDT 2010


I also came across this error today on a Windows 2003 server (same issue as XP). For now I've commented out the call to inet_ntop(), but I think the code below probably could be used - I Googled it. I'll try to find some time to get it working within FS. I think there are still some XP/2003 boxes out there, so it should be worth fixing.

/Peter

/* const char *
 * inet_ntop6(src, dst, size)
 *	convert IPv6 binary address into presentation (printable) format
 * author:
 *	Paul Vixie, 1996.
 */

static const char *
inet_ntop6(src, dst, size)
	const u_char *src;
	char *dst;
	size_t size;
{
	/*
	 * Note that int32_t and int16_t need only be "at least" large enough
	 * to contain a value of the specified size.  On some systems, like
	 * Crays, there is no such thing as an integer variable with 16 bits.
	 * Keep this in mind if you think this function should have been coded
	 * to use pointer overlays.  All the world's not a VAX.
	 */
	char tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"], *tp;
	struct { int base, len; } best, cur;
	u_int words[IN6ADDRSZ / INT16SZ];
	int i;

	/*
	 * Preprocess:
	 *	Copy the input (bytewise) array into a wordwise array.
	 *	Find the longest run of 0x00's in src[] for :: shorthanding.
	 */
	memset(words, '\0', sizeof words);
	for (i = 0; i < IN6ADDRSZ; i++)
		words[i / 2] |= (src[i] << ((1 - (i % 2)) << 3));
	best.base = -1;
	cur.base = -1;
	for (i = 0; i < (IN6ADDRSZ / INT16SZ); i++) {
		if (words[i] == 0) {
			if (cur.base == -1)
				cur.base = i, cur.len = 1;
			else
				cur.len++;
		} else {
			if (cur.base != -1) {
				if (best.base == -1 || cur.len > best.len)
					best = cur;
				cur.base = -1;
			}
		}
	}
	if (cur.base != -1) {
		if (best.base == -1 || cur.len > best.len)
			best = cur;
	}
	if (best.base != -1 && best.len < 2)
		best.base = -1;

	/*
	 * Format the result.
	 */
	tp = tmp;
	for (i = 0; i < (IN6ADDRSZ / INT16SZ); i++) {
		/* Are we inside the best run of 0x00's? */
		if (best.base != -1 && i >= best.base &&
		    i < (best.base + best.len)) {
			if (i == best.base)
				*tp++ = ':';
			continue;
		}
		/* Are we following an initial run of 0x00s or any real hex? */
		if (i != 0)
			*tp++ = ':';
		/* Is this address an encapsulated IPv4? */
		if (i == 6 && best.base == 0 &&
		    (best.len == 6 || (best.len == 5 && words[5] == 0xffff))) {
			if (!inet_ntop4(src+12, tp, sizeof tmp - (tp - tmp)))
				return (NULL);
			tp += strlen(tp);
			break;
		}
		tp += SPRINTF((tp, "%x", words[i]));
	}
	/* Was it a trailing run of 0x00's? */
	if (best.base != -1 && (best.base + best.len) == (IN6ADDRSZ / INT16SZ))
		*tp++ = ':';
	*tp++ = '\0';

	/*
	 * Check for overflow, copy, and we're done.
	 */
	if ((size_t)(tp - tmp) > size) {
		errno = ENOSPC;
		return (NULL);
	}
	strcpy(dst, tmp);
	return (dst);
}

________________________________________
Från: freeswitch-users-bounces at lists.freeswitch.org [freeswitch-users-bounces at lists.freeswitch.org] f&#246;r Michael Jerris [mike at jerris.com]
Skickat: den 3 maj 2010 06:04
Till: freeswitch-users at lists.freeswitch.org
Ämne: Re: [Freeswitch-users] run error after building in vs 2008!

This was just added in :

commit f1430d521a767a13035d6d8e96686564552194fd
Author: Anthony Minessale <anthm at freeswitch.org<mailto:anthm at freeswitch.org>>
Date:   Fri Apr 30 15:01:32 2010 -0500

    fix switch_get_addr to work with v6 properly

to fix ipv6 support.  We welcome a patch to restore xp support.

Mike

On May 1, 2010, at 3:29 PM, Phillip Jones wrote:

Oh yeah - looks like that call is not supported in older os like XP.

http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/e40465f2-41b7-4243-ad33-15ae9366f4e6

FreeSWITCH does support XP though - http://wiki.freeswitch.org/wiki/Users_Guide_Introduction

So I don't know.

On Sat, May 1, 2010 at 2:31 PM, babak yakhchali <babak.freeswitch at gmail.com<mailto:babak.freeswitch at gmail.com>> wrote:
ya I've got that in place
but as I searched the web they say it's related to windows version (xp vista . . .)

!DSPAM:4bde4cca32933312412468!



More information about the FreeSWITCH-users mailing list