aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-04-30 13:15:41 -0700
committerGarrett D'Amore <garrett@damore.org>2018-04-30 13:34:04 -0700
commit264ed002f15645193ad53d4ba51218365d979699 (patch)
treec4ed06d8ffd65bbdf9d94f994c96cecb17f56c81 /src
parent2b0d31553e542c130e2595ff9a3ac9756a2c1619 (diff)
downloadnng-264ed002f15645193ad53d4ba51218365d979699.tar.gz
nng-264ed002f15645193ad53d4ba51218365d979699.tar.bz2
nng-264ed002f15645193ad53d4ba51218365d979699.zip
fixes #384 Add NN_PROTOCOL and related
Diffstat (limited to 'src')
-rw-r--r--src/compat/nanomsg/nn.c5
-rw-r--r--src/core/socket.c48
-rw-r--r--src/nng.h4
3 files changed, 57 insertions, 0 deletions
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
@@ -884,6 +884,11 @@ static const struct {
},
{
.nnlevel = NN_SOL_SOCKET,
+ .nnopt = NN_PROTOCOL,
+ .opt = NNG_OPT_PROTO,
+ },
+ {
+ .nnlevel = NN_SOL_SOCKET,
.nnopt = NN_SOCKET_NAME,
.opt = NNG_OPT_SOCKNAME,
},
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"