[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ö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