diff options
author | sbc <sbc@chromium.org> | 2014-08-28 17:08:56 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-08-29 00:13:04 +0000 |
commit | 1e336c45912f8f9a85435bd2b348e5b7e47a34ba (patch) | |
tree | 3d11d57f43e3b0897fbdff521aa49222f5ed8678 | |
parent | 52f7cef756798c453c1da702ba824133af195bfa (diff) | |
download | chromium_src-1e336c45912f8f9a85435bd2b348e5b7e47a34ba.zip chromium_src-1e336c45912f8f9a85435bd2b348e5b7e47a34ba.tar.gz chromium_src-1e336c45912f8f9a85435bd2b348e5b7e47a34ba.tar.bz2 |
[NaCl SDK] nacl_io: add getnameinfo scaffolding
This initial version still returns ENOSYS.
Review URL: https://codereview.chromium.org/512603008
Cr-Commit-Position: refs/heads/master@{#292515}
8 files changed, 69 insertions, 0 deletions
diff --git a/native_client_sdk/src/libraries/nacl_io/host_resolver.cc b/native_client_sdk/src/libraries/nacl_io/host_resolver.cc index 11648f6..4dd50ac 100644 --- a/native_client_sdk/src/libraries/nacl_io/host_resolver.cc +++ b/native_client_sdk/src/libraries/nacl_io/host_resolver.cc @@ -221,6 +221,16 @@ void HostResolver::freeaddrinfo(struct addrinfo* res) { } } +int HostResolver::getnameinfo(const struct sockaddr *sa, + socklen_t salen, + char *host, + size_t hostlen, + char *serv, + size_t servlen, + int flags) { + return ENOSYS; +} + int HostResolver::getaddrinfo(const char* node, const char* service, const struct addrinfo* hints_in, diff --git a/native_client_sdk/src/libraries/nacl_io/host_resolver.h b/native_client_sdk/src/libraries/nacl_io/host_resolver.h index 2647e29..cb2365f 100644 --- a/native_client_sdk/src/libraries/nacl_io/host_resolver.h +++ b/native_client_sdk/src/libraries/nacl_io/host_resolver.h @@ -21,6 +21,13 @@ class HostResolver { void Init(PepperInterface* ppapi); void freeaddrinfo(struct addrinfo* res); + int getnameinfo(const struct sockaddr *sa, + socklen_t salen, + char *host, + size_t hostlen, + char *serv, + size_t servlen, + int flags); int getaddrinfo(const char* node, const char* service, const struct addrinfo* hints, diff --git a/native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc b/native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc index 6f5a510..7d34517 100644 --- a/native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc +++ b/native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc @@ -482,6 +482,18 @@ struct hostent* ki_gethostbyname(const char* name) { return s_state.kp->gethostbyname(name); } +int ki_getnameinfo(const struct sockaddr *sa, + socklen_t salen, + char *host, + size_t hostlen, + char *serv, + size_t servlen, + unsigned int flags) { + ON_NOSYS_RETURN(EAI_SYSTEM); + return s_state.kp->getnameinfo(sa, salen, host, hostlen, serv, servlen, + flags); +} + int ki_getaddrinfo(const char* node, const char* service, const struct addrinfo* hints, diff --git a/native_client_sdk/src/libraries/nacl_io/kernel_intercept.h b/native_client_sdk/src/libraries/nacl_io/kernel_intercept.h index ff57b88..a9ad290 100644 --- a/native_client_sdk/src/libraries/nacl_io/kernel_intercept.h +++ b/native_client_sdk/src/libraries/nacl_io/kernel_intercept.h @@ -154,6 +154,13 @@ int ki_getaddrinfo(const char* node, const struct addrinfo* hints, struct addrinfo** res); struct hostent* ki_gethostbyname(const char* name); +int ki_getnameinfo(const struct sockaddr *sa, + socklen_t salen, + char *host, + size_t hostlen, + char *serv, + size_t servlen, + unsigned int flags); int ki_getpeername(int fd, struct sockaddr* addr, socklen_t* len); int ki_getsockname(int fd, struct sockaddr* addr, socklen_t* len); int ki_getsockopt(int fd, int lvl, int optname, void* optval, socklen_t* len); diff --git a/native_client_sdk/src/libraries/nacl_io/kernel_proxy.cc b/native_client_sdk/src/libraries/nacl_io/kernel_proxy.cc index 7574d06..a35e182 100644 --- a/native_client_sdk/src/libraries/nacl_io/kernel_proxy.cc +++ b/native_client_sdk/src/libraries/nacl_io/kernel_proxy.cc @@ -1356,6 +1356,17 @@ int KernelProxy::getaddrinfo(const char* node, return host_resolver_.getaddrinfo(node, service, hints, res); } +int KernelProxy::getnameinfo(const struct sockaddr *sa, + socklen_t salen, + char *host, + size_t hostlen, + char *serv, + size_t servlen, + int flags) { + return host_resolver_.getnameinfo(sa, salen, host, hostlen, serv, servlen, + flags); +} + struct hostent* KernelProxy::gethostbyname(const char* name) { return host_resolver_.gethostbyname(name); } diff --git a/native_client_sdk/src/libraries/nacl_io/kernel_proxy.h b/native_client_sdk/src/libraries/nacl_io/kernel_proxy.h index 0ac8540..046d922 100644 --- a/native_client_sdk/src/libraries/nacl_io/kernel_proxy.h +++ b/native_client_sdk/src/libraries/nacl_io/kernel_proxy.h @@ -177,6 +177,13 @@ class KernelProxy : protected KernelObject { const char* service, const struct addrinfo* hints, struct addrinfo** res); + virtual int getnameinfo(const struct sockaddr *sa, + socklen_t salen, + char *host, + size_t hostlen, + char *serv, + size_t servlen, + int flags); virtual int getpeername(int fd, struct sockaddr* addr, socklen_t* len); virtual int getsockname(int fd, struct sockaddr* addr, socklen_t* len); virtual int getsockopt(int fd, diff --git a/native_client_sdk/src/libraries/nacl_io/library.dsc b/native_client_sdk/src/libraries/nacl_io/library.dsc index 599c789..4474c22 100644 --- a/native_client_sdk/src/libraries/nacl_io/library.dsc +++ b/native_client_sdk/src/libraries/nacl_io/library.dsc @@ -83,6 +83,7 @@ "syscalls/getaddrinfo.c", "syscalls/getcwd.c", "syscalls/gethostbyname.c", + "syscalls/getnameinfo.c", "syscalls/getpeername.c", "syscalls/getsockname.c", "syscalls/getsockopt.c", diff --git a/native_client_sdk/src/libraries/nacl_io/syscalls/getnameinfo.c b/native_client_sdk/src/libraries/nacl_io/syscalls/getnameinfo.c new file mode 100644 index 0000000..d5ac949 --- /dev/null +++ b/native_client_sdk/src/libraries/nacl_io/syscalls/getnameinfo.c @@ -0,0 +1,14 @@ +/* Copyright 2014 The Chromium Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. */ + +#include "nacl_io/kernel_intercept.h" +#include "nacl_io/kernel_wrap.h" + +#ifdef __native_client__ +int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, + socklen_t hostlen, char *serv, socklen_t servlen, + unsigned int flags) { + return ki_getnameinfo(sa, salen, host, hostlen, serv, servlen, flags); +} +#endif |