diff -ur partysip-0.5.0/partysip/psp_req.h partysip-0.5.0-jeh1/partysip/psp_req.h --- partysip-0.5.0/partysip/psp_req.h Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/partysip/psp_req.h Tue Nov 5 22:26:07 2002 @@ -28,6 +28,7 @@ #include #include +#include #include #include diff -ur partysip-0.5.0/plugin/udp/udp.c partysip-0.5.0-jeh1/plugin/udp/udp.c --- partysip-0.5.0/plugin/udp/udp.c Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/plugin/udp/udp.c Tue Nov 5 22:31:23 2002 @@ -31,7 +31,7 @@ local_ctx_init (int in_port, int out_port) { int i; - struct sockaddr_in raddr; + ppl_sockaddr_t raddr; /* int option=1; */ @@ -72,12 +72,12 @@ while (i < 0 && try < 40) { try++; - raddr.sin_addr.s_addr = htons (INADDR_ANY); - raddr.sin_port = htons ((short) ctx->out_port); - raddr.sin_family = AF_INET; + raddr.sin.sin_addr.s_addr = htons (INADDR_ANY); + raddr.sin.sin_port = htons ((short) ctx->out_port); + raddr.sin.sin_family = AF_INET; i = ppl_socket_bind (ctx->out_socket, - (struct sockaddr *) &raddr, sizeof (raddr)); + &raddr, sizeof (raddr)); if (i < 0) { #ifdef WIN32 @@ -101,12 +101,12 @@ goto lci_error3; } - raddr.sin_addr.s_addr = htons (INADDR_ANY); - raddr.sin_port = htons ((short) ctx->in_port); - raddr.sin_family = AF_INET; + raddr.sin.sin_addr.s_addr = htons (INADDR_ANY); + raddr.sin.sin_port = htons ((short) ctx->in_port); + raddr.sin.sin_family = AF_INET; if (ppl_socket_bind (ctx->in_socket, - (struct sockaddr *) &raddr, sizeof (raddr)) < 0) + &raddr, sizeof (raddr)) < 0) { #ifdef WIN32 OSIP_TRACE (osip_trace @@ -213,7 +213,7 @@ { char *buf; int i; - struct sockaddr_in sa; + ppl_sockaddr_t sa; #ifdef __linux socklen_t slen; @@ -235,7 +235,7 @@ slen = sizeof (sa); i = ppl_socket_recv (ctx->in_socket, buf, SIP_MESSAGE_MAX_LENGTH, 0, - (struct sockaddr *) &sa, &slen); + &sa, &slen); if (i > 0) { /* Message might not end with a "\0" but we know the number of */ @@ -244,7 +244,7 @@ OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO2, NULL, "udp plugin: RCV UDP MESSAGE (from %s:%i)\n", - inet_ntoa (sa.sin_addr), sa.sin_port)); + inet_ntoa (sa.sin.sin_addr), sa.sin.sin_port)); #ifndef HIDE_MESSAGE OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO1, NULL, "\n%s\n", buf)); @@ -354,7 +354,7 @@ char *buf; struct hostent *hp; struct hostent **hp_ptr; - struct sockaddr_in addr; + ppl_sockaddr_t addr; unsigned long int one_inet_addr; int sock; @@ -394,9 +394,9 @@ } } else { - addr.sin_port = htons ((short) port); - addr.sin_family = AF_INET; - addr.sin_addr.s_addr = one_inet_addr; + addr.sin.sin_port = htons ((short) port); + addr.sin.sin_family = AF_INET; + addr.sin.sin_addr.s_addr = one_inet_addr; } sock = ctx->out_socket; @@ -404,7 +404,7 @@ /* connect(sock,(struct sockaddr *) &addr,sizeof(addr)); */ if (0 > sendto (sock, (const void *) buf, strlen (buf), 0, - (struct sockaddr *) &addr, sizeof (addr))) + &addr.sa, sizeof (addr))) { sfree (buf); #ifdef WIN32 diff -ur partysip-0.5.0/ppl/unix/ppl/ppl_dns.h partysip-0.5.0-jeh1/ppl/unix/ppl/ppl_dns.h --- partysip-0.5.0/ppl/unix/ppl/ppl_dns.h Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/ppl/unix/ppl/ppl_dns.h Tue Nov 5 22:21:50 2002 @@ -101,7 +101,7 @@ unsigned int port; unsigned int weight; unsigned int rweight; - struct sockaddr_in sin; + ppl_sockaddr_t addr; ppl_dns_ip_t *next; ppl_dns_ip_t *parent; }; @@ -248,7 +248,7 @@ /** * Thread safe address resolution asking for 1 address only. */ - PPL_DECLARE (int) ppl_dns_gethostbyname (struct sockaddr_in *sin, + PPL_DECLARE (int) ppl_dns_gethostbyname (ppl_sockaddr_t *sin, char *hostname, int port); /** diff -ur partysip-0.5.0/ppl/unix/ppl/ppl_dso.h partysip-0.5.0-jeh1/ppl/unix/ppl/ppl_dso.h --- partysip-0.5.0/ppl/unix/ppl/ppl_dso.h Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/ppl/unix/ppl/ppl_dso.h Tue Nov 5 22:07:49 2002 @@ -142,7 +142,7 @@ * Structure for referencing symbols from dynamic objects * @defvar ppl_dso_handle_sym_t */ - typedef void *ppl_dso_handle_sym_t; + typedef void (*ppl_dso_handle_sym_t)(); /** * Load a DSO library. diff -ur partysip-0.5.0/ppl/unix/ppl/ppl_socket.h partysip-0.5.0-jeh1/ppl/unix/ppl/ppl_socket.h --- partysip-0.5.0/ppl/unix/ppl/ppl_socket.h Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/ppl/unix/ppl/ppl_socket.h Tue Nov 5 22:22:01 2002 @@ -79,6 +79,16 @@ typedef int ppl_socket_t; /** +* union of the various flavors of sockaddr (IPv4, IPv6) +*/ + typedef union ppl_sockaddr_t ppl_sockaddr_t; + union ppl_sockaddr_t { + struct sockaddr sa; + struct sockaddr_in sin; + struct sockaddr_in6 sin6; + }; + +/** * Get New socket. */ PPL_DECLARE (ppl_socket_t) ppl_socket (int domain, int protocol, int type); @@ -87,7 +97,7 @@ * Bind to a socket. */ PPL_DECLARE (ppl_socket_t) ppl_socket_bind (ppl_socket_t sock, - struct sockaddr *addr, int len); + ppl_sockaddr_t *addr, int len); /** * Close socket. @@ -105,7 +115,7 @@ */ PPL_DECLARE (int) ppl_socket_recv (ppl_socket_t sock, void *buf, size_t count, int flags, - struct sockaddr *from, socklen_t * fromlen); + ppl_sockaddr_t *from, socklen_t * fromlen); #ifdef __cplusplus } diff -ur partysip-0.5.0/ppl/unix/ppldns.c partysip-0.5.0-jeh1/ppl/unix/ppldns.c --- partysip-0.5.0/ppl/unix/ppldns.c Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/ppl/unix/ppldns.c Tue Nov 5 22:30:36 2002 @@ -19,8 +19,8 @@ */ -#include #include +#include #if defined(HAVE_RESOLV_H) && defined(HAVE_ARPA_NAMESER_H) @@ -140,9 +140,7 @@ if (i != 0) return -1; tmp->name = sgetcopy (ip->name); - tmp->sin.sin_family = AF_INET; - tmp->sin.sin_addr = ip->sin.sin_addr; - tmp->sin.sin_port = ip->sin.sin_port; + memcpy(&tmp->addr, &ip->addr, sizeof(ip->addr)); tmp->pref = ip->pref; tmp->port = ip->port; tmp->weight = ip->weight; @@ -352,7 +350,7 @@ qsort (array, answerno, sizeof (ppl_dns_ip_t *), compare); - // Recreate a linked list from the sorted array... + /* Recreate a linked list from the sorted array... */ array[0]->parent = NULL; for (n = 0; n < answerno; n++) { @@ -442,7 +440,7 @@ { if ((int) (one_inet_addr = inet_addr (ip->name)) == -1) { - n = ppl_dns_gethostbyname (&(ip->sin), ip->name, ip->port); + n = ppl_dns_gethostbyname (&(ip->addr), ip->name, ip->port); if (n != PPL_SUCCESS) { OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO2, NULL, @@ -452,9 +450,10 @@ } } else { - ip->sin.sin_port = htons ((short) ip->port); /* to N. byte order */ - ip->sin.sin_family = AF_INET; - ip->sin.sin_addr.s_addr = one_inet_addr; /* already in N. byte order */ + struct sockaddr_in *sin = &ip->addr.sin; + sin->sin_port = htons ((short) ip->port); /* to N. byte order */ + sin->sin_family = AF_INET; + sin->sin_addr.s_addr = one_inet_addr; /* already in N. byte order */ } } @@ -469,10 +468,11 @@ sfree (ip); } else { + char dst[128]; next = ip->next; OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO2, NULL, "Hostname '%s' resolved to '%s'\n", - ip->name, inet_ntoa (ip->sin.sin_addr))); + ip->name, inet_ntop (ip->addr.sin.sin_family, &ip->addr.sin.sin_addr, dst, sizeof(dst)))); } } @@ -573,7 +573,7 @@ #ifdef __OpenBSD__ PPL_DECLARE (ppl_status_t) -ppl_getaddrinfo (struct sockaddr_in *sin, char *hostname, char *service) +ppl_getaddrinfo (ppl_sockaddr_t *sin, char *hostname, char *service) { unsigned long int one_inet_addr; struct addrinfo hints, *res0; @@ -603,7 +603,7 @@ PPL_DECLARE (int) ppl_dns_query_host (ppl_dns_entry_t ** dest, char *hostname, int port) { - struct sockaddr_in addr; + ppl_sockaddr_t addr; ppl_dns_ip_t *dns_ip; ppl_dns_entry_t *dns; int my_error; @@ -622,8 +622,8 @@ dns_ip->next = NULL; dns_ip->parent = NULL; - dns_ip->sin.sin_family = addr.sin_family; - dns_ip->sin.sin_addr = addr.sin_addr; + dns_ip->sin.sin_family = addr.sin.sin_family; + dns_ip->sin.sin_addr = addr.sin.sin_addr; dns_ip->sin.sin_port = htons (port); dns_ip->name = sgetcopy (inet_ntoa (addr.sin_addr)); @@ -723,16 +723,16 @@ array[curaddr]->next = NULL; array[curaddr]->parent = NULL; array[curaddr]->name = sgetcopy (hostbuf); - array[curaddr]->sin.sin_family = AF_INET; - array[curaddr]->sin.sin_addr = *(struct in_addr *) result->h_addr_list[0]; - array[curaddr]->sin.sin_port = htons (port); + array[curaddr]->addr.sin.sin_family = AF_INET; + array[curaddr]->addr.sin.sin_addr = *(struct in_addr *) result->h_addr_list[0]; + array[curaddr]->addr.sin.sin_port = htons (port); ++curaddr; } qsort (array, curaddr, sizeof (ppl_dns_ip_t *), compare); - // Recreate a linked list from the sorted array... + /* Recreate a linked list from the sorted array... */ array[0]->parent = NULL; for (n = 0; n < curaddr; n++) { @@ -788,7 +788,7 @@ /* use getaddrinfo instead. */ /* I find that the BSD getaddrinfo is reentrant, but the manual say it's not? */ PPL_DECLARE (int) -ppl_dns_gethostbyname (struct sockaddr_in *sin, char *hostname, int port) +ppl_dns_gethostbyname (ppl_sockaddr_t *sin, char *hostname, int port) { struct addrinfo hints, *res0; int error; @@ -815,7 +815,7 @@ #else PPL_DECLARE (int) -ppl_dns_gethostbyname (struct sockaddr_in *sin, char *hostname, int port) +ppl_dns_gethostbyname (ppl_sockaddr_t *sin, char *hostname, int port) { struct hostent result_buffer; char tmp[GETHOSTBYNAME_BUFLEN]; @@ -849,9 +849,9 @@ { int curaddr = 0; - sin->sin_family = AF_INET; - sin->sin_addr = *(struct in_addr *) result->h_addr_list[0]; - sin->sin_port = htons (port); + sin->sa.sa_family = AF_INET; + sin->sin.sin_addr = *(struct in_addr *) result->h_addr_list[0]; + sin->sin.sin_port = htons (port); #ifdef HAVE_ARPA_INET_H OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO4, NULL, diff -ur partysip-0.5.0/ppl/unix/pplinit.c partysip-0.5.0-jeh1/ppl/unix/pplinit.c --- partysip-0.5.0/ppl/unix/pplinit.c Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/ppl/unix/pplinit.c Tue Nov 5 22:23:12 2002 @@ -21,6 +21,7 @@ #include #include +#include #include /** diff -ur partysip-0.5.0/ppl/unix/pplsocket.c partysip-0.5.0-jeh1/ppl/unix/pplsocket.c --- partysip-0.5.0/ppl/unix/pplsocket.c Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/ppl/unix/pplsocket.c Tue Nov 5 22:24:23 2002 @@ -27,9 +27,9 @@ } PPL_DECLARE (ppl_socket_t) -ppl_socket_bind (ppl_socket_t sock, struct sockaddr *addr, int len) +ppl_socket_bind (ppl_socket_t sock, ppl_sockaddr_t *addr, int len) { - return bind (sock, addr, len); + return bind (sock, &addr->sa, len); } PPL_DECLARE (int) @@ -52,7 +52,7 @@ PPL_DECLARE (int) ppl_socket_recv (ppl_socket_t sock, void *buf, size_t max, int flags, - struct sockaddr *from, socklen_t * fromlen) + ppl_sockaddr_t *from, socklen_t * fromlen) { - return recvfrom (sock, buf, max, flags, from, fromlen); + return recvfrom (sock, buf, max, flags, &from->sa, fromlen); } diff -ur partysip-0.5.0/ppl/win32/ppl/ppl_dns.h partysip-0.5.0-jeh1/ppl/win32/ppl/ppl_dns.h --- partysip-0.5.0/ppl/win32/ppl/ppl_dns.h Mon Oct 14 10:49:14 2002 +++ partysip-0.5.0-jeh1/ppl/win32/ppl/ppl_dns.h Tue Nov 5 22:19:28 2002 @@ -42,6 +42,16 @@ #endif /** +* union of the various flavors of sockaddr (IPv4, IPv6) +*/ + typedef union ppl_sockaddr_t ppl_sockaddr_t; + union ppl_sockaddr_t { + struct sockaddr sa; + struct sockaddr_in sin; + struct sockaddr_in6 sin6; + }; + +/** * Structure for referencing an ip address. * @defvar ppl_dns_ip_t */ @@ -54,7 +64,7 @@ unsigned int port; unsigned int weight; unsigned int rweight; - struct sockaddr_in sin; + ppl_sockaddr_t addr; ppl_dns_ip_t *next; ppl_dns_ip_t *parent; }; @@ -213,7 +223,7 @@ /** * Thread safe address resolution asking for 1 address only. */ - PPL_DECLARE (int) ppl_dns_gethostbyname (struct sockaddr_in *sin, + PPL_DECLARE (int) ppl_dns_gethostbyname (ppl_sockaddr_t *sin, char *hostname, int port); /** diff -ur partysip-0.5.0/ppl/win32/ppl/ppl_socket.h partysip-0.5.0-jeh1/ppl/win32/ppl/ppl_socket.h --- partysip-0.5.0/ppl/win32/ppl/ppl_socket.h Mon Oct 14 10:49:14 2002 +++ partysip-0.5.0-jeh1/ppl/win32/ppl/ppl_socket.h Tue Nov 5 22:22:37 2002 @@ -60,6 +60,16 @@ typedef int ppl_socket_t; /** + * union of the various flavors of sockaddr (IPv4, IPv6) + */ + typedef union ppl_sockaddr_t ppl_sockaddr_t; + union ppl_sockaddr_t { + struct sockaddr sa; + struct sockaddr_in sin; + struct sockaddr_in6 sin6; + }; + +/** * Get New socket. */ PPL_DECLARE (ppl_socket_t) ppl_socket (int domain, int protocol, int type); @@ -68,7 +78,7 @@ * Bind to a socket. */ PPL_DECLARE (ppl_socket_t) ppl_socket_bind (ppl_socket_t sock, - struct sockaddr *addr, int len); + ppl_sockaddr_t *addr, int len); /** * Close socket. @@ -86,7 +96,7 @@ */ PPL_DECLARE (int) ppl_socket_recv (ppl_socket_t sock, void *buf, size_t count, int flags, - struct sockaddr *from, socklen_t * fromlen); + ppl_sockaddr_t *from, socklen_t * fromlen); #ifdef __cplusplus } diff -ur partysip-0.5.0/ppl/win32/ppldns.c partysip-0.5.0-jeh1/ppl/win32/ppldns.c --- partysip-0.5.0/ppl/win32/ppldns.c Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/ppl/win32/ppldns.c Tue Nov 5 22:18:20 2002 @@ -575,7 +575,7 @@ #if defined(__OpenBSD__) || defined(WIN32) PPL_DECLARE (ppl_status_t) -ppl_getaddrinfo (struct sockaddr_in *sin, char *hostname, char *service) +ppl_getaddrinfo (ppl_sockaddr_t *sin, char *hostname, char *service) { unsigned long int one_inet_addr; struct addrinfo hints, *res0; @@ -781,7 +781,7 @@ /* use getaddrinfo instead. */ /* I find that the BSD getaddrinfo is reentrant, but the manual say it's not? */ PPL_DECLARE (int) - ppl_dns_gethostbyname (struct sockaddr_in *sin, + ppl_dns_gethostbyname (ppl_sockaddr_t *sin, char *hostname, int port) { struct addrinfo hints, *res0; @@ -804,7 +804,7 @@ #else PPL_DECLARE (int) - ppl_dns_gethostbyname (struct sockaddr_in *sin, + ppl_dns_gethostbyname (ppl_sockaddr_t *sin, char *hostname, int port) { struct hostent result_buffer; diff -ur partysip-0.5.0/ppl/win32/pplsocket.c partysip-0.5.0-jeh1/ppl/win32/pplsocket.c --- partysip-0.5.0/ppl/win32/pplsocket.c Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/ppl/win32/pplsocket.c Tue Nov 5 22:18:30 2002 @@ -33,7 +33,7 @@ } PPL_DECLARE (ppl_socket_t) -ppl_socket_bind (ppl_socket_t sock, struct sockaddr *addr, int len) +ppl_socket_bind (ppl_socket_t sock, ppl_sockaddr_t *addr, int len) { int i; @@ -55,7 +55,7 @@ PPL_DECLARE (int) ppl_socket_recv (ppl_socket_t sock, void *buf, size_t max, int flags, - struct sockaddr *from, socklen_t * fromlen) + ppl_sockaddr_t *from, socklen_t * fromlen) { return recvfrom (sock, buf, max, flags, from, fromlen); } diff -ur partysip-0.5.0/src/main.c partysip-0.5.0-jeh1/src/main.c --- partysip-0.5.0/src/main.c Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/src/main.c Tue Nov 5 22:12:24 2002 @@ -445,14 +445,14 @@ servername = tmp_name; psp_config_add_element (sgetcopy ("servername"), sgetcopy (servername)); - //printf("Autodetected servername: %s\n",servername); + /* printf("Autodetected servername: %s\n",servername); */ } if (serverip == NULL) { serverip = tmp_ip; psp_config_add_element (sgetcopy ("serverip"), sgetcopy (serverip)); - //printf("Autodetected serverip: %s\n",serverip); + /* printf("Autodetected serverip: %s\n",serverip); */ } } } diff -ur partysip-0.5.0/src/sfp.c partysip-0.5.0-jeh1/src/sfp.c --- partysip-0.5.0/src/sfp.c Mon Oct 14 10:49:13 2002 +++ partysip-0.5.0-jeh1/src/sfp.c Tue Nov 5 22:27:15 2002 @@ -982,26 +982,26 @@ So, I'll trust the port only if none is proposed in the rquri or route header. This *quick hack* won't work in all situations... TO BE FIXED. */ - if (ntohs (ips->sin.sin_port) != 5060) /* we keep it */ + if (ntohs (ips->addr.sin.sin_port) != 5060) /* we keep it */ { } else { if (br->url->port != NULL) - ips->sin.sin_port = htons ((short) satoi (br->url->port)); + ips->addr.sin.sin_port = htons ((short) satoi (br->url->port)); } if (MSG_IS_INVITE (req->request)) ict_set_destination (transaction->ict_context, - sgetcopy (inet_ntoa (ips->sin.sin_addr)), - ntohs (ips->sin.sin_port)); + sgetcopy (inet_ntoa (ips->addr.sin.sin_addr)), + ntohs (ips->addr.sin.sin_port)); else nict_set_destination (transaction->nict_context, - sgetcopy (inet_ntoa (ips->sin.sin_addr)), - ntohs (ips->sin.sin_port)); + sgetcopy (inet_ntoa (ips->addr.sin.sin_addr)), + ntohs (ips->addr.sin.sin_port)); OSIP_TRACE (osip_trace (__FILE__, __LINE__, OSIP_INFO2, NULL, "sfp module: The destination for the transaction is set to: '%s'.!\n", - inet_ntoa (ips->sin.sin_addr))); + inet_ntoa (ips->addr.sin.sin_addr))); } /* else, the usual processing is done */ evt->transactionid = transaction->transactionid;