Changeset 3232 in MondoRescue for branches/3.2/mindi-busybox/libbb/xconnect.c
- Timestamp:
- Jan 1, 2014, 12:47:38 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.2/mindi-busybox/libbb/xconnect.c
r2725 r3232 135 135 } 136 136 137 void FAST_FUNC set_nport(len_and_sockaddr *lsa, unsigned port) 138 { 139 #if ENABLE_FEATURE_IPV6 140 if (lsa->u.sa.sa_family == AF_INET6) { 141 lsa->u.sin6.sin6_port = port; 137 void FAST_FUNC set_nport(struct sockaddr *sa, unsigned port) 138 { 139 #if ENABLE_FEATURE_IPV6 140 if (sa->sa_family == AF_INET6) { 141 struct sockaddr_in6 *sin6 = (void*) sa; 142 sin6->sin6_port = port; 142 143 return; 143 144 } 144 145 #endif 145 if (lsa->u.sa.sa_family == AF_INET) { 146 lsa->u.sin.sin_port = port; 146 if (sa->sa_family == AF_INET) { 147 struct sockaddr_in *sin = (void*) sa; 148 sin->sin_port = port; 147 149 return; 148 150 } … … 256 258 memset(&hint, 0 , sizeof(hint)); 257 259 hint.ai_family = af; 258 /* Need ed. Or else we willget each address thrice (or more)260 /* Need SOCK_STREAM, or else we get each address thrice (or more) 259 261 * for each possible socket type (tcp,udp,raw...): */ 260 262 hint.ai_socktype = SOCK_STREAM; … … 284 286 285 287 set_port: 286 set_nport( r, htons(port));288 set_nport(&r->u.sa, htons(port)); 287 289 ret: 288 freeaddrinfo(result); 290 if (result) 291 freeaddrinfo(result); 289 292 return r; 290 293 } … … 320 323 } 321 324 322 #undef xsocket_type 323 int FAST_FUNC xsocket_type(len_and_sockaddr **lsap, IF_FEATURE_IPV6(int family,) int sock_type) 324 { 325 IF_NOT_FEATURE_IPV6(enum { family = AF_INET };) 325 int FAST_FUNC xsocket_type(len_and_sockaddr **lsap, int family, int sock_type) 326 { 326 327 len_and_sockaddr *lsa; 327 328 int fd; 328 329 int len; 329 330 330 #if ENABLE_FEATURE_IPV6331 331 if (family == AF_UNSPEC) { 332 #if ENABLE_FEATURE_IPV6 332 333 fd = socket(AF_INET6, sock_type, 0); 333 334 if (fd >= 0) { … … 335 336 goto done; 336 337 } 338 #endif 337 339 family = AF_INET; 338 340 } 339 #endif 341 340 342 fd = xsocket(family, sock_type, 0); 343 341 344 len = sizeof(struct sockaddr_in); 345 if (family == AF_UNIX) 346 len = sizeof(struct sockaddr_un); 342 347 #if ENABLE_FEATURE_IPV6 343 348 if (family == AF_INET6) { … … 355 360 int FAST_FUNC xsocket_stream(len_and_sockaddr **lsap) 356 361 { 357 return xsocket_type(lsap, IF_FEATURE_IPV6(AF_UNSPEC,)SOCK_STREAM);362 return xsocket_type(lsap, AF_UNSPEC, SOCK_STREAM); 358 363 } 359 364 … … 368 373 fd = xsocket(lsa->u.sa.sa_family, sock_type, 0); 369 374 } else { 370 fd = xsocket_type(&lsa, IF_FEATURE_IPV6(AF_UNSPEC,)sock_type);371 set_nport( lsa, htons(port));375 fd = xsocket_type(&lsa, AF_UNSPEC, sock_type); 376 set_nport(&lsa->u.sa, htons(port)); 372 377 } 373 378 setsockopt_reuseaddr(fd);
Note:
See TracChangeset
for help on using the changeset viewer.