diff options
Diffstat (limited to 'src/SocketCore.cc')
| -rw-r--r-- | src/SocketCore.cc | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/SocketCore.cc b/src/SocketCore.cc index cb6602f8..7d8b076b 100644 --- a/src/SocketCore.cc +++ b/src/SocketCore.cc @@ -341,11 +341,26 @@ void SocketCore::getAddrInfo(std::pair<std::string, uint16_t>& addrinfo) const { struct sockaddr_storage sockaddr; socklen_t len = sizeof(sockaddr); + getAddrInfo(sockaddr, len); + addrinfo = util::getNumericNameInfo + (reinterpret_cast<const struct sockaddr*>(&sockaddr), len); +} + +void SocketCore::getAddrInfo +(struct sockaddr_storage& sockaddr, socklen_t& len) const +{ struct sockaddr* addrp = reinterpret_cast<struct sockaddr*>(&sockaddr); if(getsockname(sockfd_, addrp, &len) == -1) { throw DL_ABORT_EX(StringFormat(EX_SOCKET_GET_NAME, errorMsg()).str()); } - addrinfo = util::getNumericNameInfo(addrp, len); +} + +int SocketCore::getAddressFamily() const +{ + struct sockaddr_storage sockaddr; + socklen_t len = sizeof(sockaddr); + getAddrInfo(sockaddr, len); + return sockaddr.ss_family; } void SocketCore::getPeerInfo(std::pair<std::string, uint16_t>& peerinfo) const |
