| 590 | } |
| 591 | |
| 592 | int get_local_side(int fd, EndPoint *out) { |
| 593 | struct sockaddr_storage addr; |
| 594 | socklen_t socklen = sizeof(addr); |
| 595 | const int rc = getsockname(fd, (struct sockaddr*)&addr, &socklen); |
| 596 | if (rc != 0) { |
| 597 | return rc; |
| 598 | } |
| 599 | if (out) { |
| 600 | return sockaddr2endpoint(&addr, socklen, out); |
| 601 | } |
| 602 | return 0; |
| 603 | } |
| 604 | |
| 605 | int get_remote_side(int fd, EndPoint *out) { |
| 606 | struct sockaddr_storage addr; |