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 ++++++++++++++++++++- src/core/socket.c | 17 ----------------- src/nng.h | 3 --- 3 files changed, 20 insertions(+), 21 deletions(-) (limited to 'src') 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); } diff --git a/src/core/socket.c b/src/core/socket.c index bf97ef8d..440f1bbf 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -37,7 +37,6 @@ struct nni_socket { nni_mtx s_mx; nni_cv s_cv; nni_cv s_close_cv; - int s_raw; uint64_t s_id; uint32_t s_flags; @@ -249,12 +248,6 @@ nni_sock_setopt_sockname(nni_sock *s, const void *buf, size_t sz) return (0); } -static int -nni_sock_getopt_domain(nni_sock *s, void *buf, size_t *szp) -{ - return (nni_getopt_int(s->s_raw + 1, buf, szp)); -} - static const nni_socket_option nni_sock_options[] = { { .so_name = NNG_OPT_RECVTIMEO, @@ -301,11 +294,6 @@ static const nni_socket_option nni_sock_options[] = { .so_getopt = nni_sock_getopt_sockname, .so_setopt = nni_sock_setopt_sockname, }, - { - .so_name = NNG_OPT_DOMAIN, - .so_getopt = nni_sock_getopt_domain, - .so_setopt = NULL, - }, // terminate list { NULL, NULL, NULL }, }; @@ -886,11 +874,6 @@ nni_sock_setopt(nni_sock *s, const char *name, const void *val, size_t size) return (NNG_EREADONLY); } rv = pso->pso_setopt(s->s_data, val, size); - if ((rv == 0) && (strcmp(name, NNG_OPT_RAW) == 0) && - (size >= sizeof(int))) { - // Save the raw option -- we use this for the DOMAIN. - memcpy(&s->s_raw, val, sizeof(int)); - } nni_mtx_unlock(&s->s_mx); return (rv); } diff --git a/src/nng.h b/src/nng.h index a581d434..84680dd1 100644 --- a/src/nng.h +++ b/src/nng.h @@ -408,7 +408,6 @@ enum nng_flag_enum { // Options. #define NNG_OPT_SOCKNAME "socket-name" -#define NNG_OPT_DOMAIN "compat:domain" // legacy compat only #define NNG_OPT_RAW "raw" #define NNG_OPT_LINGER "linger" #define NNG_OPT_RECVBUF "recv-buffer" @@ -421,8 +420,6 @@ enum nng_flag_enum { #define NNG_OPT_REMADDR "remote-address" #define NNG_OPT_URL "url" #define NNG_OPT_MAXTTL "ttl-max" -#define NNG_OPT_PROTOCOL "protocol" -#define NNG_OPT_TRANSPORT "transport" #define NNG_OPT_RECVMAXSZ "recv-size-max" #define NNG_OPT_RECONNMINT "reconnect-time-min" #define NNG_OPT_RECONNMAXT "reconnect-time-max" -- cgit v1.2.3-70-g09d2