summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsbc <sbc@chromium.org>2014-08-28 17:08:56 -0700
committerCommit bot <commit-bot@chromium.org>2014-08-29 00:13:04 +0000
commit1e336c45912f8f9a85435bd2b348e5b7e47a34ba (patch)
tree3d11d57f43e3b0897fbdff521aa49222f5ed8678
parent52f7cef756798c453c1da702ba824133af195bfa (diff)
downloadchromium_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}
-rw-r--r--native_client_sdk/src/libraries/nacl_io/host_resolver.cc10
-rw-r--r--native_client_sdk/src/libraries/nacl_io/host_resolver.h7
-rw-r--r--native_client_sdk/src/libraries/nacl_io/kernel_intercept.cc12
-rw-r--r--native_client_sdk/src/libraries/nacl_io/kernel_intercept.h7
-rw-r--r--native_client_sdk/src/libraries/nacl_io/kernel_proxy.cc11
-rw-r--r--native_client_sdk/src/libraries/nacl_io/kernel_proxy.h7
-rw-r--r--native_client_sdk/src/libraries/nacl_io/library.dsc1
-rw-r--r--native_client_sdk/src/libraries/nacl_io/syscalls/getnameinfo.c14
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