RCS file: /usr/cvsroot/asterisk/pbx/pbx_dundi.c,v retrieving revision 1.3 diff -u -b -r1.3 pbx_dundi.c --- pbx/pbx_dundi.c 22 Oct 2004 14:19:11 -0000 1.3 +++ pbx/pbx_dundi.c 22 Oct 2004 21:49:12 -0000 @@ -39,13 +39,18 @@ #include #include #include -#if defined(__NetBSD__) +#if defined(__FreeBSD__) || defined(__NetBSD__) +#include #include #endif #include #include #include #include +#if defined(__FreeBSD__) +#include +#include +#endif #include #define MAX_RESULTS 64 @@ -354,7 +359,7 @@ static void reset_global_eid(void) { -#if !defined(__NetBSD__) +#if defined(SIOCGIFHWADDR) int x,s; char eid_str[20]; struct ifreq ifr; @@ -372,6 +377,27 @@ } } } +#else +#if defined(ifa_broadaddr) + char eid_str[20]; + struct ifaddrs *ifap; + + if (getifaddrs(&ifap) == 0) { + struct ifaddrs *p; + for (p = ifap; p; p = p->ifa_next) { + if (p->ifa_addr->sa_family == AF_LINK) { + struct sockaddr_dl* sdp = (struct sockaddr_dl*) p->ifa_addr; + memcpy( + &(global_eid.eid), + sdp->sdl_data + sdp->sdl_nlen, 6); + ast_log(LOG_DEBUG, "Seeding global EID '%s' from '%s'\n", dundi_eid_to_str(eid_str, sizeof(eid_str), &global_eid), ifap->ifa_name); + freeifaddrs(ifap); + return; + } + } + freeifaddrs(ifap); + } +#endif #endif ast_log(LOG_NOTICE, "No ethernet interface found for seeding global EID You will have to set it manually.\n"); }