Changeset 1601 for pjproject/trunk/pjlib/src/pj/ip_helper_generic.c
- Timestamp:
- Dec 1, 2007 8:52:57 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjlib/src/pj/ip_helper_generic.c
r1599 r1601 24 24 #include <pj/compat/socket.h> 25 25 26 static pj_status_t dummy_enum_ip_interface(unsigned *p_cnt, 27 pj_in_addr ifs[]) 26 static pj_status_t dummy_enum_ip_interface(int af, 27 unsigned *p_cnt, 28 pj_sockaddr ifs[]) 28 29 { 29 30 pj_status_t status; … … 34 35 35 36 /* Just get one default route */ 36 status = pj_getdefaultipinterface( &ifs[0]);37 status = pj_getdefaultipinterface(af, &ifs[0]); 37 38 if (status != PJ_SUCCESS) 38 39 return status; … … 43 44 44 45 #ifdef SIOCGIFCONF 45 static pj_status_t sock_enum_ip_interface(unsigned *p_cnt, 46 pj_in_addr ifs[]) 46 static pj_status_t sock_enum_ip_interface(int af, 47 unsigned *p_cnt, 48 pj_sockaddr ifs[]) 47 49 { 48 50 pj_sock_t sock; … … 53 55 pj_status_t status; 54 56 55 status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0, &sock); 57 PJ_ASSERT_RETURN(af==PJ_AF_INET || af==PJ_AF_INET6, PJ_EINVAL); 58 59 status = pj_sock_socket(af, PJ_SOCK_DGRAM, 0, &sock); 56 60 if (status != PJ_SUCCESS) 57 61 return status; … … 79 83 for (i=0; i<count; ++i) { 80 84 struct ifreq *itf = &ifr[i]; 81 ifs[i].s_addr = ((struct sockaddr_in *)&itf->ifr_addr)->sin_addr.s_addr; 85 struct sockaddr *ad = itf->ifr_addr; 86 87 ifs[i].addr.sa_family = ad->sa_family; 88 pj_memcpy(pj_sockaddr_get_addr(&ifs[i]), 89 pj_sockaddr_get_addr(ad), 90 pj_sockaddr_get_addr_len(ad)); 82 91 } 83 92 … … 89 98 * Enumerate the local IP interface currently active in the host. 90 99 */ 91 PJ_DEF(pj_status_t) pj_enum_ip_interface(unsigned *p_cnt, 92 pj_in_addr ifs[]) 100 PJ_DEF(pj_status_t) pj_enum_ip_interface(int af, 101 unsigned *p_cnt, 102 pj_sockaddr ifs[]) 93 103 { 94 104 #ifdef SIOCGIFCONF 95 if (sock_enum_ip_interface( p_cnt, ifs) == PJ_SUCCESS)105 if (sock_enum_ip_interface(af, p_cnt, ifs) == PJ_SUCCESS) 96 106 return PJ_SUCCESS; 97 107 #endif 98 return dummy_enum_ip_interface( p_cnt, ifs);108 return dummy_enum_ip_interface(af, p_cnt, ifs); 99 109 } 100 110 … … 105 115 pj_ip_route_entry routes[]) 106 116 { 117 pj_sockaddr itf; 107 118 pj_status_t status; 108 119 … … 112 123 113 124 /* Just get one default route */ 114 status = pj_getdefaultipinterface( &routes[0].ipv4.if_addr);125 status = pj_getdefaultipinterface(PJ_AF_INET, &itf); 115 126 if (status != PJ_SUCCESS) 116 127 return status; 117 128 129 routes[0].ipv4.if_addr.s_addr = itf.ipv4.sin_addr.s_addr; 118 130 routes[0].ipv4.dst_addr.s_addr = 0; 119 131 routes[0].ipv4.mask.s_addr = 0;
Note: See TracChangeset
for help on using the changeset viewer.