From 264ed002f15645193ad53d4ba51218365d979699 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Mon, 30 Apr 2018 13:15:41 -0700 Subject: fixes #384 Add NN_PROTOCOL and related --- src/compat/nanomsg/nn.c | 5 +++++ src/core/socket.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ src/nng.h | 4 ++++ 3 files changed, 57 insertions(+) (limited to 'src') diff --git a/src/compat/nanomsg/nn.c b/src/compat/nanomsg/nn.c index 0eb97298..03df279b 100644 --- a/src/compat/nanomsg/nn.c +++ b/src/compat/nanomsg/nn.c @@ -882,6 +882,11 @@ static const struct { .nnopt = NN_SNDTIMEO, .opt = NNG_OPT_SENDTIMEO, }, + { + .nnlevel = NN_SOL_SOCKET, + .nnopt = NN_PROTOCOL, + .opt = NNG_OPT_PROTO, + }, { .nnlevel = NN_SOL_SOCKET, .nnopt = NN_SOCKET_NAME, diff --git a/src/core/socket.c b/src/core/socket.c index 5a581cd3..f5acd941 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -251,6 +251,30 @@ nni_sock_setopt_sockname(nni_sock *s, const void *buf, size_t sz, int typ) return (nni_copyin_str(s->s_name, buf, sizeof(s->s_name), sz, typ)); } +static int +nni_sock_getopt_proto(nni_sock *s, void *buf, size_t *szp, int typ) +{ + return (nni_copyout_int(nni_sock_proto(s), buf, szp, typ)); +} + +static int +nni_sock_getopt_peer(nni_sock *s, void *buf, size_t *szp, int typ) +{ + return (nni_copyout_int(nni_sock_peer(s), buf, szp, typ)); +} + +static int +nni_sock_getopt_protoname(nni_sock *s, void *buf, size_t *szp, int typ) +{ + return (nni_copyout_str(nni_sock_proto_name(s), buf, szp, typ)); +} + +static int +nni_sock_getopt_peername(nni_sock *s, void *buf, size_t *szp, int typ) +{ + return (nni_copyout_str(nni_sock_peer_name(s), buf, szp, typ)); +} + static const nni_socket_option nni_sock_options[] = { { .so_name = NNG_OPT_RECVTIMEO, @@ -312,6 +336,30 @@ static const nni_socket_option nni_sock_options[] = { .so_getopt = nni_sock_getopt_raw, .so_setopt = NULL, }, + { + .so_name = NNG_OPT_PROTO, + .so_type = NNI_TYPE_INT32, + .so_getopt = nni_sock_getopt_proto, + .so_setopt = NULL, + }, + { + .so_name = NNG_OPT_PEER, + .so_type = NNI_TYPE_INT32, + .so_getopt = nni_sock_getopt_peer, + .so_setopt = NULL, + }, + { + .so_name = NNG_OPT_PROTONAME, + .so_type = NNI_TYPE_STRING, + .so_getopt = nni_sock_getopt_protoname, + .so_setopt = NULL, + }, + { + .so_name = NNG_OPT_PEERNAME, + .so_type = NNI_TYPE_STRING, + .so_getopt = nni_sock_getopt_peername, + .so_setopt = NULL, + }, // terminate list { .so_name = NULL, diff --git a/src/nng.h b/src/nng.h index 92c2f396..f45c5bff 100644 --- a/src/nng.h +++ b/src/nng.h @@ -583,6 +583,10 @@ enum nng_flag_enum { // Options. #define NNG_OPT_SOCKNAME "socket-name" #define NNG_OPT_RAW "raw" +#define NNG_OPT_PROTO "protocol" +#define NNG_OPT_PROTONAME "protocol-name" +#define NNG_OPT_PEER "peer" +#define NNG_OPT_PEERNAME "peer-name" #define NNG_OPT_RECVBUF "recv-buffer" #define NNG_OPT_SENDBUF "send-buffer" #define NNG_OPT_RECVFD "recv-fd" -- cgit v1.2.3-70-g09d2