Mercurial > hg > nginx
comparison src/core/ngx_inet.c @ 6593:b3b7e33083ac
Introduced ngx_inet_get_port() and ngx_inet_set_port() functions.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Mon, 20 Jun 2016 11:50:39 +0300 |
parents | 5d8f16859ced |
children | 0a820872dd4c |
comparison
equal
deleted
inserted
replaced
6592:2c7b488a61fb | 6593:b3b7e33083ac |
---|---|
527 | 527 |
528 ngx_int_t | 528 ngx_int_t |
529 ngx_parse_addr_port(ngx_pool_t *pool, ngx_addr_t *addr, u_char *text, | 529 ngx_parse_addr_port(ngx_pool_t *pool, ngx_addr_t *addr, u_char *text, |
530 size_t len) | 530 size_t len) |
531 { | 531 { |
532 u_char *p, *last; | 532 u_char *p, *last; |
533 size_t plen; | 533 size_t plen; |
534 ngx_int_t rc, port; | 534 ngx_int_t rc, port; |
535 struct sockaddr_in *sin; | |
536 #if (NGX_HAVE_INET6) | |
537 struct sockaddr_in6 *sin6; | |
538 #endif | |
539 | 535 |
540 rc = ngx_parse_addr(pool, addr, text, len); | 536 rc = ngx_parse_addr(pool, addr, text, len); |
541 | 537 |
542 if (rc != NGX_DECLINED) { | 538 if (rc != NGX_DECLINED) { |
543 return rc; | 539 return rc; |
583 | 579 |
584 if (rc != NGX_OK) { | 580 if (rc != NGX_OK) { |
585 return rc; | 581 return rc; |
586 } | 582 } |
587 | 583 |
588 switch (addr->sockaddr->sa_family) { | 584 ngx_inet_set_port(addr->sockaddr, port); |
589 | |
590 #if (NGX_HAVE_INET6) | |
591 case AF_INET6: | |
592 sin6 = (struct sockaddr_in6 *) addr->sockaddr; | |
593 sin6->sin6_port = htons((in_port_t) port); | |
594 break; | |
595 #endif | |
596 | |
597 default: /* AF_INET */ | |
598 sin = (struct sockaddr_in *) addr->sockaddr; | |
599 sin->sin_port = htons((in_port_t) port); | |
600 break; | |
601 } | |
602 | 585 |
603 return NGX_OK; | 586 return NGX_OK; |
604 } | 587 } |
605 | 588 |
606 | 589 |
1354 break; | 1337 break; |
1355 } | 1338 } |
1356 | 1339 |
1357 return NGX_OK; | 1340 return NGX_OK; |
1358 } | 1341 } |
1342 | |
1343 | |
1344 in_port_t | |
1345 ngx_inet_get_port(struct sockaddr *sa) | |
1346 { | |
1347 struct sockaddr_in *sin; | |
1348 #if (NGX_HAVE_INET6) | |
1349 struct sockaddr_in6 *sin6; | |
1350 #endif | |
1351 | |
1352 switch (sa->sa_family) { | |
1353 | |
1354 #if (NGX_HAVE_INET6) | |
1355 case AF_INET6: | |
1356 sin6 = (struct sockaddr_in6 *) sa; | |
1357 return ntohs(sin6->sin6_port); | |
1358 #endif | |
1359 | |
1360 #if (NGX_HAVE_UNIX_DOMAIN) | |
1361 case AF_UNIX: | |
1362 return 0; | |
1363 #endif | |
1364 | |
1365 default: /* AF_INET */ | |
1366 sin = (struct sockaddr_in *) sa; | |
1367 return ntohs(sin->sin_port); | |
1368 } | |
1369 } | |
1370 | |
1371 | |
1372 void | |
1373 ngx_inet_set_port(struct sockaddr *sa, in_port_t port) | |
1374 { | |
1375 struct sockaddr_in *sin; | |
1376 #if (NGX_HAVE_INET6) | |
1377 struct sockaddr_in6 *sin6; | |
1378 #endif | |
1379 | |
1380 switch (sa->sa_family) { | |
1381 | |
1382 #if (NGX_HAVE_INET6) | |
1383 case AF_INET6: | |
1384 sin6 = (struct sockaddr_in6 *) sa; | |
1385 sin6->sin6_port = htons(port); | |
1386 break; | |
1387 #endif | |
1388 | |
1389 #if (NGX_HAVE_UNIX_DOMAIN) | |
1390 case AF_UNIX: | |
1391 break; | |
1392 #endif | |
1393 | |
1394 default: /* AF_INET */ | |
1395 sin = (struct sockaddr_in *) sa; | |
1396 sin->sin_port = htons(port); | |
1397 break; | |
1398 } | |
1399 } |