diff options
| author | Garrett D'Amore <garrett@damore.org> | 2019-02-16 12:40:41 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2019-02-16 19:22:27 -0800 |
| commit | 60231f0600461a9593a8f876518874866df3387a (patch) | |
| tree | 1a91f0b65b1ad2d5b995a3db21639f4bf7032066 /src/supplemental | |
| parent | 5cf750697624d4fd63cfe26921209d7c30e1a2d2 (diff) | |
| download | nng-60231f0600461a9593a8f876518874866df3387a.tar.gz nng-60231f0600461a9593a8f876518874866df3387a.tar.bz2 nng-60231f0600461a9593a8f876518874866df3387a.zip | |
fixes #879 Desire NNG_OPT_TCP_BOUND_PORT
We also have made some support changes, including new APIs for printing
URLs, and some improvements to the NNG_OPT_URL to make use of this new
property.
Diffstat (limited to 'src/supplemental')
| -rw-r--r-- | src/supplemental/tcp/tcp.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/supplemental/tcp/tcp.c b/src/supplemental/tcp/tcp.c index 3ec396b8..21922ef6 100644 --- a/src/supplemental/tcp/tcp.c +++ b/src/supplemental/tcp/tcp.c @@ -327,10 +327,51 @@ tcp_listener_accept(void *arg, nng_aio *aio) } static int +tcp_listener_get_port(void *arg, void *buf, size_t *szp, nni_type t) +{ + tcp_listener *l = arg; + int rv; + nng_sockaddr sa; + size_t sz; + int port; + uint8_t * paddr; + + sz = sizeof(sa); + rv = nni_tcp_listener_getopt( + l->l, NNG_OPT_LOCADDR, &sa, &sz, NNI_TYPE_SOCKADDR); + if (rv != 0) { + return (rv); + } + + switch (sa.s_family) { + case NNG_AF_INET: + paddr = (void *) &sa.s_in.sa_port; + break; + + case NNG_AF_INET6: + paddr = (void *) &sa.s_in.sa_port; + break; + default: + paddr = NULL; + break; + } + + if (paddr == NULL) { + return (NNG_ESTATE); + } + + NNI_GET16(paddr, port); + return (nni_copyout_int(port, buf, szp, t)); +} + +static int tcp_listener_getx( void *arg, const char *name, void *buf, size_t *szp, nni_type t) { tcp_listener *l = arg; + if (strcmp(name, NNG_OPT_TCP_BOUND_PORT) == 0) { + return (tcp_listener_get_port(l, buf, szp, t)); + } return (nni_tcp_listener_getopt(l->l, name, buf, szp, t)); } |
