TcpServer/TcpReactor Framework
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
#ifndef INCLUDED_C_SOCKADDRUTIL_H
|
||||
#define INCLUDED_C_SOCKADDRUTIL_H
|
||||
|
||||
#ifndef INCLUDED_C_SOCKADDR_H
|
||||
#include <c_SockAddr.h>
|
||||
#endif /*INCLUDED_C_SOCKADDR_H*/
|
||||
|
||||
|
||||
#ifndef INCLUDED_C_ADDRINFO_H
|
||||
#include <c_AddrInfo.h>
|
||||
#endif /*INCLUDED_C_ADDRINFO_H*/
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------------------------ */
|
||||
/* */
|
||||
|
||||
|
||||
/**
|
||||
* @brief Extends extraction mapping from a resolved c_AddrInfo_t instance.
|
||||
*/
|
||||
C_STATIC_FORCE_INLINE c_err_t c_SockAddrUtil_FromAddrInfo(c_SockAddr_t* sock_addr, const c_AddrInfo_t* addr) {
|
||||
if (!sock_addr || !addr || !addr->addrinfo_p) return C_ERR_PARAM;
|
||||
|
||||
size_t len = addr->addrinfo_p->ai_addrlen;
|
||||
if (addr->addrinfo_p->ai_family == AF_INET && len <= sizeof(struct sockaddr_in)) {
|
||||
memcpy(&sock_addr->ipv4, addr->addrinfo_p->ai_addr, len);
|
||||
return C_ERR_OK;
|
||||
} else if (addr->addrinfo_p->ai_family == AF_INET6 && len <= sizeof(struct sockaddr_in6)) {
|
||||
memcpy(&sock_addr->ipv6, addr->addrinfo_p->ai_addr, len);
|
||||
return C_ERR_OK;
|
||||
}
|
||||
return C_ERR_FAIL;
|
||||
}
|
||||
|
||||
#endif /*INCLUDED_C_SOCKADDRUTIL_H*/
|
||||
Reference in New Issue
Block a user