From 2e6f76636e2adbc5e2bc4659a0639d83eb3f2d59 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Sat, 17 Mar 2018 17:21:43 -0700 Subject: fixes #287 remove NNG_OPT_DOMAIN, NNG_OPT_PROTOCOL, and NNG_OPT_TRANSPORT While here we documented that certain options are not supported in the compatibility layer. --- src/compat/nanomsg/nn.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/compat') diff --git a/src/compat/nanomsg/nn.c b/src/compat/nanomsg/nn.c index 1d5bcfbb..01b51503 100644 --- a/src/compat/nanomsg/nn.c +++ b/src/compat/nanomsg/nn.c @@ -613,7 +613,6 @@ static const struct { { NN_SOL_SOCKET, NN_MAXTTL, NNG_OPT_MAXTTL }, { NN_SOL_SOCKET, NN_RCVTIMEO, NNG_OPT_RECVTIMEO }, { NN_SOL_SOCKET, NN_SNDTIMEO, NNG_OPT_SENDTIMEO }, - { NN_SOL_SOCKET, NN_DOMAIN, NNG_OPT_DOMAIN }, { NN_SOL_SOCKET, NN_SOCKET_NAME, NNG_OPT_SOCKNAME }, { NN_REQ, NN_REQ_RESEND_IVL, NNG_OPT_REQ_RESENDTIME }, { NN_SUB, NN_SUB_SUBSCRIBE, NNG_OPT_SUB_SUBSCRIBE }, @@ -622,6 +621,22 @@ static const struct { // XXX: IPV4ONLY, SNDPRIO, RCVPRIO }; +static int +nn_getdomain(int s, void *valp, size_t *szp) +{ + int i; + int rv; + + if ((rv = nng_getopt_int((nng_socket) s, NNG_OPT_RAW, &i)) != 0) { + nn_seterror(rv); + return (-1); + } + i = i ? AF_SP_RAW : AF_SP; + memcpy(valp, &i, *szp < sizeof(int) ? *szp : sizeof(int)); + *szp = sizeof(int); + return (0); +} + int nn_getsockopt(int s, int nnlevel, int nnopt, void *valp, size_t *szp) { @@ -637,6 +652,10 @@ nn_getsockopt(int s, int nnlevel, int nnopt, void *valp, size_t *szp) } if (name == NULL) { + if (nnlevel == NN_SOL_SOCKET && nnopt == NN_DOMAIN) { + return (nn_getdomain(s, valp, szp)); + } + errno = ENOPROTOOPT; return (-1); } -- cgit v1.2.3-70-g09d2