aboutsummaryrefslogtreecommitdiff
path: root/src/compat
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-03-17 17:21:43 -0700
committerGarrett D'Amore <garrett@damore.org>2018-03-17 17:21:43 -0700
commit2e6f76636e2adbc5e2bc4659a0639d83eb3f2d59 (patch)
tree9c4e71aba9f8209e052362be6a32d6bebcff48b8 /src/compat
parent48bda13b2f3f985389bd3caba923eea77d49c6be (diff)
downloadnng-2e6f76636e2adbc5e2bc4659a0639d83eb3f2d59.tar.gz
nng-2e6f76636e2adbc5e2bc4659a0639d83eb3f2d59.tar.bz2
nng-2e6f76636e2adbc5e2bc4659a0639d83eb3f2d59.zip
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.
Diffstat (limited to 'src/compat')
-rw-r--r--src/compat/nanomsg/nn.c21
1 files changed, 20 insertions, 1 deletions
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);
}