Skip to content

Commit

Permalink
add version independent ip and port lookup
Browse files Browse the repository at this point in the history
  • Loading branch information
avalanche123 committed Apr 9, 2012
1 parent e43ffd8 commit 968d223
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
2 changes: 2 additions & 0 deletions include/uv.h
Expand Up @@ -1397,10 +1397,12 @@ UV_EXTERN struct sockaddr_in uv_ip4_addr(const char* ip, int port);
UV_EXTERN struct sockaddr_in6 uv_ip6_addr(const char* ip, int port); UV_EXTERN struct sockaddr_in6 uv_ip6_addr(const char* ip, int port);


/* Convert binary addresses to strings */ /* Convert binary addresses to strings */
UV_EXTERN int uv_ip_name(struct sockaddr* src, char* dst);
UV_EXTERN int uv_ip4_name(struct sockaddr_in* src, char* dst, size_t size); UV_EXTERN int uv_ip4_name(struct sockaddr_in* src, char* dst, size_t size);
UV_EXTERN int uv_ip6_name(struct sockaddr_in6* src, char* dst, size_t size); UV_EXTERN int uv_ip6_name(struct sockaddr_in6* src, char* dst, size_t size);


/* Get binary addresses' ports */ /* Get binary addresses' ports */
UV_EXTERN u_short uv_ip_port(struct sockaddr* addr);
UV_EXTERN u_short uv_ip4_port(struct sockaddr_in* addr); UV_EXTERN u_short uv_ip4_port(struct sockaddr_in* addr);
UV_EXTERN u_short uv_ip6_port(struct sockaddr_in6* addr); UV_EXTERN u_short uv_ip6_port(struct sockaddr_in6* addr);


Expand Down
26 changes: 20 additions & 6 deletions src/uv-common.c
Expand Up @@ -187,6 +187,15 @@ struct sockaddr_in6 uv_ip6_addr(const char* ip, int port) {
} }




int uv_ip_name(struct sockaddr* src, char* dst) {
if (src->sa_family == AF_INET) {
return uv_ip4_name((struct sockaddr_in*) src, dst, INET_ADDRSTRLEN);
} else {
return uv_ip6_name((struct sockaddr_in6*) src, dst, INET6_ADDRSTRLEN);
}
}


int uv_ip4_name(struct sockaddr_in* src, char* dst, size_t size) { int uv_ip4_name(struct sockaddr_in* src, char* dst, size_t size) {
const char* d = ares_inet_ntop(AF_INET, &src->sin_addr, dst, size); const char* d = ares_inet_ntop(AF_INET, &src->sin_addr, dst, size);
return d != dst; return d != dst;
Expand All @@ -199,17 +208,22 @@ int uv_ip6_name(struct sockaddr_in6* src, char* dst, size_t size) {
} }




u_short uv_ip_port(struct sockaddr* addr) {
if (addr->sa_family == AF_INET) {
return uv_ip4_port((struct sockaddr_in*) addr);
} else {
return uv_ip6_port((struct sockaddr_in6*) addr);
}
}


u_short uv_ip4_port(struct sockaddr_in* addr) { u_short uv_ip4_port(struct sockaddr_in* addr) {
struct sockaddr_in addr4; return ntohs(addr->sin_port);
addr4 = *addr;
return ntohs(addr4.sin_port);
} }




u_short uv_ip6_port(struct sockaddr_in6* addr) { u_short uv_ip6_port(struct sockaddr_in6* addr) {
struct sockaddr_in6 addr6; return ntohs(addr->sin6_port);
addr6 = *addr;
return ntohs(addr6.sin6_port);
} }




Expand Down

0 comments on commit 968d223

Please sign in to comment.