diff options
Diffstat (limited to 'src/platform')
| -rw-r--r-- | src/platform/posix/posix_udp.c | 15 | ||||
| -rw-r--r-- | src/platform/windows/win_udp.c | 14 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/platform/posix/posix_udp.c b/src/platform/posix/posix_udp.c index 61546667..8a402acc 100644 --- a/src/platform/posix/posix_udp.c +++ b/src/platform/posix/posix_udp.c @@ -306,4 +306,19 @@ nni_plat_udp_send(nni_plat_udp *udp, nni_aio *aio) nni_mtx_unlock(&udp->udp_mtx); } +int +nni_plat_udp_sockname(nni_plat_udp *udp, nni_sockaddr *sa) +{ + struct sockaddr_storage ss; + socklen_t sz; + int rv; + + sz = sizeof(ss); + if ((rv = getsockname(udp->udp_fd, (struct sockaddr *) &ss, &sz)) < + 0) { + return (nni_plat_errno(errno)); + } + return (nni_posix_sockaddr2nn(sa, &ss)); +} + #endif // NNG_PLATFORM_POSIX diff --git a/src/platform/windows/win_udp.c b/src/platform/windows/win_udp.c index 81aa2c06..ba6b400c 100644 --- a/src/platform/windows/win_udp.c +++ b/src/platform/windows/win_udp.c @@ -290,6 +290,20 @@ nni_win_udp_finish_tx(nni_win_event *evt, nni_aio *aio) } int +nni_plat_udp_sockname(nni_plat_udp *udp, nni_sockaddr *sa) +{ + SOCKADDR_STORAGE ss; + int sz; + int rv; + + sz = sizeof(ss); + if ((rv = getsockname(udp->s, (SOCKADDR *) &ss, &sz)) < 0) { + return (nni_win_error(GetLastError())); + } + return (nni_win_sockaddr2nn(sa, &ss)); +} + +int nni_win_udp_sysinit(void) { WSADATA data; |
