MCPcopy Create free account
hub / github.com/ElementsProject/elements / GetSockAddr

Method GetSockAddr

src/netaddress.cpp:985–1013  ·  view source on GitHub ↗

* Obtain the IPv4/6 socket address this represents. * * @param[out] paddr The obtained socket address. * @param[in,out] addrlen The size, in bytes, of the address structure pointed * to by paddr. The value that's pointed to by this * parameter might change after calling this function if * the size of the corresponding addre

Source from the content-addressed store, hash-verified

983 * @returns Whether or not the operation was successful.
984 */
985bool CService::GetSockAddr(struct sockaddr* paddr, socklen_t *addrlen) const
986{
987 if (IsIPv4()) {
988 if (*addrlen < (socklen_t)sizeof(struct sockaddr_in))
989 return false;
990 *addrlen = sizeof(struct sockaddr_in);
991 struct sockaddr_in *paddrin = (struct sockaddr_in*)paddr;
992 memset(paddrin, 0, *addrlen);
993 if (!GetInAddr(&paddrin->sin_addr))
994 return false;
995 paddrin->sin_family = AF_INET;
996 paddrin->sin_port = htons(port);
997 return true;
998 }
999 if (IsIPv6() || IsCJDNS()) {
1000 if (*addrlen < (socklen_t)sizeof(struct sockaddr_in6))
1001 return false;
1002 *addrlen = sizeof(struct sockaddr_in6);
1003 struct sockaddr_in6 *paddrin6 = (struct sockaddr_in6*)paddr;
1004 memset(paddrin6, 0, *addrlen);
1005 if (!GetIn6Addr(&paddrin6->sin6_addr))
1006 return false;
1007 paddrin6->sin6_scope_id = m_scope_id;
1008 paddrin6->sin6_family = AF_INET6;
1009 paddrin6->sin6_port = htons(port);
1010 return true;
1011 }
1012 return false;
1013}
1014
1015/**
1016 * @returns An identifier unique to this service's address and port number.

Callers 4

ConnectMethod · 0.80
CreateSockTCPFunction · 0.80
ConnectSocketDirectlyFunction · 0.80
BindListenPortMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected