aboutsummaryrefslogtreecommitdiff
path: root/src/platform/posix
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform/posix')
-rw-r--r--src/platform/posix/posix_aio.h2
-rw-r--r--src/platform/posix/posix_pipedesc.c24
-rw-r--r--src/platform/posix/posix_tcp.c12
3 files changed, 38 insertions, 0 deletions
diff --git a/src/platform/posix/posix_aio.h b/src/platform/posix/posix_aio.h
index 6c7db9e1..fe677591 100644
--- a/src/platform/posix/posix_aio.h
+++ b/src/platform/posix/posix_aio.h
@@ -28,6 +28,8 @@ extern void nni_posix_pipedesc_fini(nni_posix_pipedesc *);
extern void nni_posix_pipedesc_recv(nni_posix_pipedesc *, nni_aio *);
extern void nni_posix_pipedesc_send(nni_posix_pipedesc *, nni_aio *);
extern void nni_posix_pipedesc_close(nni_posix_pipedesc *);
+extern int nni_posix_pipedesc_peername(nni_posix_pipedesc *, nni_sockaddr *);
+extern int nni_posix_pipedesc_sockname(nni_posix_pipedesc *, nni_sockaddr *);
extern int nni_posix_epdesc_init(nni_posix_epdesc **);
extern void nni_posix_epdesc_set_local(nni_posix_epdesc *, void *, int);
diff --git a/src/platform/posix/posix_pipedesc.c b/src/platform/posix/posix_pipedesc.c
index 8a087256..a025f83c 100644
--- a/src/platform/posix/posix_pipedesc.c
+++ b/src/platform/posix/posix_pipedesc.c
@@ -288,6 +288,30 @@ nni_posix_pipedesc_send(nni_posix_pipedesc *pd, nni_aio *aio)
}
int
+nni_posix_pipedesc_peername(nni_posix_pipedesc *pd, nni_sockaddr *sa)
+{
+ struct sockaddr_storage ss;
+ socklen_t sslen = sizeof(ss);
+
+ if (getpeername(pd->node.fd, (void *) &ss, &sslen) != 0) {
+ return (nni_plat_errno(errno));
+ }
+ return (nni_posix_sockaddr2nn(sa, &ss));
+}
+
+int
+nni_posix_pipedesc_sockname(nni_posix_pipedesc *pd, nni_sockaddr *sa)
+{
+ struct sockaddr_storage ss;
+ socklen_t sslen = sizeof(ss);
+
+ if (getsockname(pd->node.fd, (void *) &ss, &sslen) != 0) {
+ return (nni_plat_errno(errno));
+ }
+ return (nni_posix_sockaddr2nn(sa, &ss));
+}
+
+int
nni_posix_pipedesc_init(nni_posix_pipedesc **pdp, int fd)
{
nni_posix_pipedesc *pd;
diff --git a/src/platform/posix/posix_tcp.c b/src/platform/posix/posix_tcp.c
index cc5466cb..e03f8056 100644
--- a/src/platform/posix/posix_tcp.c
+++ b/src/platform/posix/posix_tcp.c
@@ -105,4 +105,16 @@ nni_plat_tcp_pipe_recv(nni_plat_tcp_pipe *p, nni_aio *aio)
nni_posix_pipedesc_recv((void *) p, aio);
}
+int
+nni_plat_tcp_pipe_peername(nni_plat_tcp_pipe *p, nni_sockaddr *sa)
+{
+ return (nni_posix_pipedesc_peername((void *) p, sa));
+}
+
+int
+nni_plat_tcp_pipe_sockname(nni_plat_tcp_pipe *p, nni_sockaddr *sa)
+{
+ return (nni_posix_pipedesc_sockname((void *) p, sa));
+}
+
#endif // NNG_PLATFORM_POSIX