aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/defs.h34
-rw-r--r--src/core/endpt.c44
-rw-r--r--src/core/endpt.h14
-rw-r--r--src/core/options.c96
-rw-r--r--src/core/options.h31
-rw-r--r--src/core/pipe.c13
-rw-r--r--src/core/pipe.h3
-rw-r--r--src/core/protocol.h25
-rw-r--r--src/core/socket.c466
-rw-r--r--src/core/socket.h19
-rw-r--r--src/core/transport.c18
-rw-r--r--src/core/transport.h134
-rw-r--r--src/protocol/bus0/bus.c4
-rw-r--r--src/protocol/pair0/pair.c4
-rw-r--r--src/protocol/pair1/pair.c36
-rw-r--r--src/protocol/pipeline0/pull.c4
-rw-r--r--src/protocol/pipeline0/push.c4
-rw-r--r--src/protocol/pubsub0/pub.c4
-rw-r--r--src/protocol/pubsub0/sub.c26
-rw-r--r--src/protocol/reqrep0/rep.c42
-rw-r--r--src/protocol/reqrep0/req.c78
-rw-r--r--src/protocol/reqrep0/xrep.c20
-rw-r--r--src/protocol/reqrep0/xreq.c20
-rw-r--r--src/protocol/survey0/respond.c44
-rw-r--r--src/protocol/survey0/survey.c79
-rw-r--r--src/protocol/survey0/xrespond.c20
-rw-r--r--src/protocol/survey0/xsurvey.c20
-rw-r--r--src/transport/inproc/inproc.c24
-rw-r--r--src/transport/ipc/ipc.c451
-rw-r--r--src/transport/tcp/tcp.c451
-rw-r--r--src/transport/tls/tls.c606
-rw-r--r--src/transport/ws/websocket.c318
-rw-r--r--src/transport/zerotier/zerotier.c341
33 files changed, 1770 insertions, 1723 deletions
diff --git a/src/core/defs.h b/src/core/defs.h
index 29d1b826..77078a7a 100644
--- a/src/core/defs.h
+++ b/src/core/defs.h
@@ -40,22 +40,20 @@ typedef struct nng_event nni_event;
typedef struct nng_notify nni_notify;
// These are our own names.
-typedef struct nni_socket nni_sock;
-typedef struct nni_ctx nni_ctx;
-typedef struct nni_ep nni_ep;
-typedef struct nni_pipe nni_pipe;
-typedef struct nni_tran nni_tran;
-typedef struct nni_tran_ep_ops nni_tran_ep_ops;
-typedef struct nni_tran_ep_option nni_tran_ep_option;
-typedef struct nni_tran_pipe_ops nni_tran_pipe_ops;
-typedef struct nni_tran_pipe_option nni_tran_pipe_option;
-
-typedef struct nni_proto_ctx_option nni_proto_ctx_option;
-typedef struct nni_proto_ctx_ops nni_proto_ctx_ops;
-typedef struct nni_proto_sock_ops nni_proto_sock_ops;
-typedef struct nni_proto_pipe_ops nni_proto_pipe_ops;
-typedef struct nni_proto_sock_option nni_proto_sock_option;
-typedef struct nni_proto nni_proto;
+typedef struct nni_socket nni_sock;
+typedef struct nni_ctx nni_ctx;
+typedef struct nni_ep nni_ep;
+typedef struct nni_pipe nni_pipe;
+typedef struct nni_tran nni_tran;
+typedef struct nni_tran_option nni_tran_option;
+typedef struct nni_tran_ep_ops nni_tran_ep_ops;
+typedef struct nni_tran_pipe_ops nni_tran_pipe_ops;
+
+typedef struct nni_proto_option nni_proto_option;
+typedef struct nni_proto_ctx_ops nni_proto_ctx_ops;
+typedef struct nni_proto_sock_ops nni_proto_sock_ops;
+typedef struct nni_proto_pipe_ops nni_proto_pipe_ops;
+typedef struct nni_proto nni_proto;
typedef struct nni_plat_mtx nni_mtx;
typedef struct nni_plat_cv nni_cv;
@@ -140,7 +138,7 @@ typedef struct {
// Types. These are used to provide more structured access to options
// (and maybe later statistics). For now these are internal only.
-enum nni_type {
+typedef enum nni_opt_type {
NNI_TYPE_OPAQUE,
NNI_TYPE_BOOL,
NNI_TYPE_INT32,
@@ -152,6 +150,6 @@ enum nni_type {
NNI_TYPE_STRING,
NNI_TYPE_SOCKADDR,
NNI_TYPE_POINTER,
-};
+} nni_opt_type;
#endif // CORE_DEFS_H
diff --git a/src/core/endpt.c b/src/core/endpt.c
index 9fc26cf3..8e678fb0 100644
--- a/src/core/endpt.c
+++ b/src/core/endpt.c
@@ -582,26 +582,27 @@ nni_ep_pipe_remove(nni_ep *ep, nni_pipe *pipe)
}
int
-nni_ep_setopt(nni_ep *ep, const char *name, const void *val, size_t sz, int t)
+nni_ep_setopt(
+ nni_ep *ep, const char *name, const void *val, size_t sz, nni_opt_type t)
{
- nni_tran_ep_option *eo;
+ nni_tran_option *o;
if (strcmp(name, NNG_OPT_URL) == 0) {
return (NNG_EREADONLY);
}
- for (eo = ep->ep_ops.ep_options; eo && eo->eo_name; eo++) {
+ for (o = ep->ep_ops.ep_options; o && o->o_name; o++) {
int rv;
- if (strcmp(eo->eo_name, name) != 0) {
+ if (strcmp(o->o_name, name) != 0) {
continue;
}
- if (eo->eo_setopt == NULL) {
+ if (o->o_set == NULL) {
return (NNG_EREADONLY);
}
nni_mtx_lock(&ep->ep_mtx);
- rv = eo->eo_setopt(ep->ep_data, val, sz, t);
+ rv = o->o_set(ep->ep_data, val, sz, t);
nni_mtx_unlock(&ep->ep_mtx);
return (rv);
}
@@ -616,38 +617,21 @@ nni_ep_mode(nni_ep *ep)
}
int
-nni_ep_opttype(nni_ep *ep, const char *name, int *tp)
+nni_ep_getopt(
+ nni_ep *ep, const char *name, void *valp, size_t *szp, nni_opt_type t)
{
- nni_tran_ep_option *eo;
+ nni_tran_option *o;
- for (eo = ep->ep_ops.ep_options; eo && eo->eo_name; eo++) {
- if (strcmp(eo->eo_name, name) == 0) {
- *tp = eo->eo_type;
- return (0);
- }
- }
- if (strcmp(name, NNG_OPT_URL) == 0) {
- *tp = NNI_TYPE_STRING;
- return (0);
- }
- return (NNG_ENOTSUP);
-}
-
-int
-nni_ep_getopt(nni_ep *ep, const char *name, void *valp, size_t *szp, int t)
-{
- nni_tran_ep_option *eo;
-
- for (eo = ep->ep_ops.ep_options; eo && eo->eo_name; eo++) {
+ for (o = ep->ep_ops.ep_options; o && o->o_name; o++) {
int rv;
- if (strcmp(eo->eo_name, name) != 0) {
+ if (strcmp(o->o_name, name) != 0) {
continue;
}
- if (eo->eo_getopt == NULL) {
+ if (o->o_get == NULL) {
return (NNG_EWRITEONLY);
}
nni_mtx_lock(&ep->ep_mtx);
- rv = eo->eo_getopt(ep->ep_data, valp, szp, t);
+ rv = o->o_get(ep->ep_data, valp, szp, t);
nni_mtx_unlock(&ep->ep_mtx);
return (rv);
}
diff --git a/src/core/endpt.h b/src/core/endpt.h
index 2511c1ff..bf251d41 100644
--- a/src/core/endpt.h
+++ b/src/core/endpt.h
@@ -26,12 +26,14 @@ extern void nni_ep_close(nni_ep *);
extern int nni_ep_dial(nni_ep *, int);
extern int nni_ep_listen(nni_ep *, int);
extern void nni_ep_list_init(nni_list *);
-extern int nni_ep_setopt(nni_ep *, const char *, const void *, size_t, int);
-extern int nni_ep_getopt(nni_ep *, const char *, void *, size_t *, int);
-extern int nni_ep_opttype(nni_ep *, const char *, int *);
-extern int nni_ep_pipe_add(nni_ep *ep, nni_pipe *);
-extern void nni_ep_pipe_remove(nni_ep *, nni_pipe *);
-extern int nni_ep_mode(nni_ep *);
+extern int nni_ep_pipe_add(nni_ep *ep, nni_pipe *);
+extern void nni_ep_pipe_remove(nni_ep *, nni_pipe *);
+extern int nni_ep_mode(nni_ep *);
+
+extern int nni_ep_setopt(
+ nni_ep *, const char *, const void *, size_t, nni_opt_type);
+extern int nni_ep_getopt(
+ nni_ep *, const char *, void *, size_t *, nni_opt_type);
// Endpoint modes. Currently used by transports. Remove this when we make
// transport dialers and listeners explicit.
diff --git a/src/core/options.c b/src/core/options.c
index e0c72d25..3e35f44c 100644
--- a/src/core/options.c
+++ b/src/core/options.c
@@ -14,11 +14,11 @@
#include <string.h>
int
-nni_copyin_ms(nni_duration *dp, const void *v, size_t sz, int typ)
+nni_copyin_ms(nni_duration *dp, const void *v, size_t sz, nni_opt_type t)
{
nni_duration dur;
- switch (typ) {
+ switch (t) {
case NNI_TYPE_DURATION:
dur = *(nng_duration *) v;
break;
@@ -35,22 +35,28 @@ nni_copyin_ms(nni_duration *dp, const void *v, size_t sz, int typ)
if (dur < -1) {
return (NNG_EINVAL);
}
- *dp = dur;
+ if (dp != NULL) {
+ *dp = dur;
+ }
return (0);
}
int
-nni_copyin_bool(bool *bp, const void *v, size_t sz, int typ)
+nni_copyin_bool(bool *bp, const void *v, size_t sz, nni_opt_type t)
{
- switch (typ) {
+ switch (t) {
case NNI_TYPE_BOOL:
- *bp = *(bool *) v;
+ if (bp != NULL) {
+ *bp = *(bool *) v;
+ }
break;
case NNI_TYPE_OPAQUE:
if (sz != sizeof(bool)) {
return (NNG_EINVAL);
}
- memcpy(bp, v, sz);
+ if (bp != NULL) {
+ memcpy(bp, v, sz);
+ }
break;
default:
return (NNG_EBADTYPE);
@@ -60,11 +66,12 @@ nni_copyin_bool(bool *bp, const void *v, size_t sz, int typ)
}
int
-nni_copyin_int(int *ip, const void *v, size_t sz, int minv, int maxv, int typ)
+nni_copyin_int(
+ int *ip, const void *v, size_t sz, int minv, int maxv, nni_opt_type t)
{
int i;
- switch (typ) {
+ switch (t) {
case NNI_TYPE_INT32:
i = *(int *) v;
break;
@@ -83,17 +90,19 @@ nni_copyin_int(int *ip, const void *v, size_t sz, int minv, int maxv, int typ)
if (i < minv) {
return (NNG_EINVAL);
}
- *ip = i;
+ if (ip != NULL) {
+ *ip = i;
+ }
return (0);
}
int
-nni_copyin_size(
- size_t *sp, const void *v, size_t sz, size_t minv, size_t maxv, int typ)
+nni_copyin_size(size_t *sp, const void *v, size_t sz, size_t minv, size_t maxv,
+ nni_opt_type t)
{
size_t val;
- switch (typ) {
+ switch (t) {
case NNI_TYPE_SIZE:
val = *(size_t *) v;
break;
@@ -111,16 +120,18 @@ nni_copyin_size(
if ((val > maxv) || (val < minv)) {
return (NNG_EINVAL);
}
- *sp = val;
+ if (sp != NULL) {
+ *sp = val;
+ }
return (0);
}
int
-nni_copyin_ptr(void **pp, const void *v, size_t sz, int typ)
+nni_copyin_ptr(void **pp, const void *v, size_t sz, nni_opt_type t)
{
void *p;
- switch (typ) {
+ switch (t) {
case NNI_TYPE_POINTER:
p = *(void **) v;
break;
@@ -133,16 +144,18 @@ nni_copyin_ptr(void **pp, const void *v, size_t sz, int typ)
default:
return (NNG_EBADTYPE);
}
- *pp = p;
+ if (pp != NULL) {
+ *pp = p;
+ }
return (0);
}
int
-nni_copyin_str(char *s, const void *v, size_t sz, size_t maxsz, int typ)
+nni_copyin_str(char *s, const void *v, size_t sz, size_t maxsz, nni_opt_type t)
{
size_t z;
- switch (typ) {
+ switch (t) {
case NNI_TYPE_STRING:
z = strlen(v) + 1;
NNI_ASSERT(sz == z);
@@ -158,16 +171,18 @@ nni_copyin_str(char *s, const void *v, size_t sz, size_t maxsz, int typ)
if (z > maxsz) {
return (NNG_EINVAL); // too long
}
- memcpy(s, v, z);
+ if (s != NULL) {
+ memcpy(s, v, z);
+ }
return (0);
}
int
-nni_copyin_u64(uint64_t *up, const void *v, size_t sz, int typ)
+nni_copyin_u64(uint64_t *up, const void *v, size_t sz, nni_opt_type t)
{
uint64_t u;
- switch (typ) {
+ switch (t) {
case NNI_TYPE_UINT64:
u = *(uint64_t *) v;
break;
@@ -180,7 +195,9 @@ nni_copyin_u64(uint64_t *up, const void *v, size_t sz, int typ)
default:
return (NNG_EBADTYPE);
}
- *up = u;
+ if (up != NULL) {
+ *up = u;
+ }
return (0);
}
@@ -202,9 +219,9 @@ nni_copyout(const void *src, size_t srcsz, void *dst, size_t *dstszp)
}
int
-nni_copyout_bool(bool b, void *dst, size_t *szp, int typ)
+nni_copyout_bool(bool b, void *dst, size_t *szp, nni_opt_type t)
{
- switch (typ) {
+ switch (t) {
case NNI_TYPE_BOOL:
NNI_ASSERT(*szp == sizeof(b));
*(bool *) dst = b;
@@ -217,9 +234,9 @@ nni_copyout_bool(bool b, void *dst, size_t *szp, int typ)
}
int
-nni_copyout_int(int i, void *dst, size_t *szp, int typ)
+nni_copyout_int(int i, void *dst, size_t *szp, nni_opt_type t)
{
- switch (typ) {
+ switch (t) {
case NNI_TYPE_INT32:
NNI_ASSERT(*szp == sizeof(i));
*(int *) dst = i;
@@ -232,9 +249,9 @@ nni_copyout_int(int i, void *dst, size_t *szp, int typ)
}
int
-nni_copyout_ms(nng_duration d, void *dst, size_t *szp, int typ)
+nni_copyout_ms(nng_duration d, void *dst, size_t *szp, nni_opt_type t)
{
- switch (typ) {
+ switch (t) {
case NNI_TYPE_DURATION:
NNI_ASSERT(*szp == sizeof(d));
*(nng_duration *) dst = d;
@@ -247,9 +264,9 @@ nni_copyout_ms(nng_duration d, void *dst, size_t *szp, int typ)
}
int
-nni_copyout_ptr(void *p, void *dst, size_t *szp, int typ)
+nni_copyout_ptr(void *p, void *dst, size_t *szp, nni_opt_type t)
{
- switch (typ) {
+ switch (t) {
case NNI_TYPE_POINTER:
NNI_ASSERT(*szp == sizeof(p));
*(void **) dst = p;
@@ -262,9 +279,9 @@ nni_copyout_ptr(void *p, void *dst, size_t *szp, int typ)
}
int
-nni_copyout_size(size_t s, void *dst, size_t *szp, int typ)
+nni_copyout_size(size_t s, void *dst, size_t *szp, nni_opt_type t)
{
- switch (typ) {
+ switch (t) {
case NNI_TYPE_SIZE:
NNI_ASSERT(*szp == sizeof(s));
*(size_t *) dst = s;
@@ -277,9 +294,10 @@ nni_copyout_size(size_t s, void *dst, size_t *szp, int typ)
}
int
-nni_copyout_sockaddr(const nng_sockaddr *sap, void *dst, size_t *szp, int typ)
+nni_copyout_sockaddr(
+ const nng_sockaddr *sap, void *dst, size_t *szp, nni_opt_type t)
{
- switch (typ) {
+ switch (t) {
case NNI_TYPE_SOCKADDR:
NNI_ASSERT(*szp == sizeof(*sap));
*(nng_sockaddr *) dst = *sap;
@@ -292,9 +310,9 @@ nni_copyout_sockaddr(const nng_sockaddr *sap, void *dst, size_t *szp, int typ)
}
int
-nni_copyout_u64(uint64_t u, void *dst, size_t *szp, int typ)
+nni_copyout_u64(uint64_t u, void *dst, size_t *szp, nni_opt_type t)
{
- switch (typ) {
+ switch (t) {
case NNI_TYPE_UINT64:
NNI_ASSERT(*szp == sizeof(u));
*(uint64_t *) dst = u;
@@ -307,11 +325,11 @@ nni_copyout_u64(uint64_t u, void *dst, size_t *szp, int typ)
}
int
-nni_copyout_str(const char *str, void *dst, size_t *szp, int typ)
+nni_copyout_str(const char *str, void *dst, size_t *szp, nni_opt_type t)
{
char *s;
- switch (typ) {
+ switch (t) {
case NNI_TYPE_STRING:
NNI_ASSERT(*szp == sizeof(char *));
if ((s = nni_strdup(str)) == NULL) {
diff --git a/src/core/options.h b/src/core/options.h
index dfc15d31..2a21a039 100644
--- a/src/core/options.h
+++ b/src/core/options.h
@@ -24,28 +24,29 @@
// in their own option handling, centralizing the logic for dealing with
// variable sized options.
-extern int nni_copyin_ms(nni_duration *, const void *, size_t, int);
-extern int nni_copyin_bool(bool *, const void *, size_t, int);
-extern int nni_copyin_int(int *, const void *, size_t, int, int, int);
+extern int nni_copyin_ms(nni_duration *, const void *, size_t, nni_opt_type);
+extern int nni_copyin_bool(bool *, const void *, size_t, nni_opt_type);
+extern int nni_copyin_int(int *, const void *, size_t, int, int, nni_opt_type);
extern int nni_copyin_size(
- size_t *, const void *, size_t, size_t, size_t, int);
-extern int nni_copyin_str(char *, const void *, size_t, size_t, int);
-extern int nni_copyin_ptr(void **, const void *, size_t, int);
-extern int nni_copyin_u64(uint64_t *, const void *, size_t, int);
+ size_t *, const void *, size_t, size_t, size_t, nni_opt_type);
+extern int nni_copyin_str(char *, const void *, size_t, size_t, nni_opt_type);
+extern int nni_copyin_ptr(void **, const void *, size_t, nni_opt_type);
+extern int nni_copyin_u64(uint64_t *, const void *, size_t, nni_opt_type);
// nni_copyout_xxx copies out a type of the named value. It assumes that
// the type is aligned and the size correct, unless NNI_TYPE_OPAQUE is passed.
extern int nni_copyout(const void *, size_t, void *, size_t *);
-extern int nni_copyout_bool(bool, void *, size_t *, int);
-extern int nni_copyout_int(int, void *, size_t *, int);
-extern int nni_copyout_ms(nng_duration, void *, size_t *, int);
-extern int nni_copyout_ptr(void *, void *, size_t *, int);
-extern int nni_copyout_size(size_t, void *, size_t *, int);
-extern int nni_copyout_sockaddr(const nng_sockaddr *, void *, size_t *, int);
-extern int nni_copyout_u64(uint64_t, void *, size_t *, int);
+extern int nni_copyout_bool(bool, void *, size_t *, nni_opt_type);
+extern int nni_copyout_int(int, void *, size_t *, nni_opt_type);
+extern int nni_copyout_ms(nng_duration, void *, size_t *, nni_opt_type);
+extern int nni_copyout_ptr(void *, void *, size_t *, nni_opt_type);
+extern int nni_copyout_size(size_t, void *, size_t *, nni_opt_type);
+extern int nni_copyout_sockaddr(
+ const nng_sockaddr *, void *, size_t *, nni_opt_type);
+extern int nni_copyout_u64(uint64_t, void *, size_t *, nni_opt_type);
// nni_copyout_str copies out a string. If the type is NNI_TYPE_STRING,
// then it passes through a pointer, created by nni_strdup().
-extern int nni_copyout_str(const char *, void *, size_t *, int);
+extern int nni_copyout_str(const char *, void *, size_t *, nni_opt_type);
#endif // CORE_OPTIONS_H
diff --git a/src/core/pipe.c b/src/core/pipe.c
index ccd0dbe7..93fbae99 100644
--- a/src/core/pipe.c
+++ b/src/core/pipe.c
@@ -359,18 +359,19 @@ nni_pipe_create(nni_ep *ep, void *tdata)
}
int
-nni_pipe_getopt(nni_pipe *p, const char *name, void *val, size_t *szp, int typ)
+nni_pipe_getopt(
+ nni_pipe *p, const char *name, void *val, size_t *szp, nni_opt_type t)
{
- nni_tran_pipe_option *po;
+ nni_tran_option *o;
- for (po = p->p_tran_ops.p_options; po && po->po_name; po++) {
- if (strcmp(po->po_name, name) != 0) {
+ for (o = p->p_tran_ops.p_options; o && o->o_name; o++) {
+ if (strcmp(o->o_name, name) != 0) {
continue;
}
- return (po->po_getopt(p->p_tran_data, val, szp, typ));
+ return (o->o_get(p->p_tran_data, val, szp, t));
}
// Maybe the endpoint knows?
- return (nni_ep_getopt(p->p_ep, name, val, szp, typ));
+ return (nni_ep_getopt(p->p_ep, name, val, szp, t));
}
void
diff --git a/src/core/pipe.h b/src/core/pipe.h
index 4ccbeae2..bd66d4ed 100644
--- a/src/core/pipe.h
+++ b/src/core/pipe.h
@@ -60,7 +60,8 @@ extern uint16_t nni_pipe_peer(nni_pipe *);
// nni_pipe_getopt looks up the option. The last argument is the type,
// which. If the type is NNI_TYPE_OPAQUE, then no format check is performed.
-extern int nni_pipe_getopt(nni_pipe *, const char *, void *, size_t *, int);
+extern int nni_pipe_getopt(
+ nni_pipe *, const char *, void *, size_t *, nni_opt_type);
// nni_pipe_get_proto_data gets the protocol private data set with the
// nni_pipe_set_proto_data function. No locking is performed.
diff --git a/src/core/protocol.h b/src/core/protocol.h
index 9c3b4d33..12ca7e71 100644
--- a/src/core/protocol.h
+++ b/src/core/protocol.h
@@ -21,6 +21,13 @@
// As a consequence, most of the concurrency in nng exists in the protocol
// implementations.
+struct nni_proto_option {
+ const char *o_name;
+ int o_type;
+ int (*o_get)(void *, void *, size_t *, nni_opt_type);
+ int (*o_set)(void *, const void *, size_t, nni_opt_type);
+};
+
// nni_proto_pipe contains protocol-specific per-pipe operations.
struct nni_proto_pipe_ops {
// pipe_init creates the protocol-specific per pipe data structure.
@@ -50,13 +57,6 @@ struct nni_proto_pipe_ops {
void (*pipe_stop)(void *);
};
-struct nni_proto_ctx_option {
- const char *co_name;
- int co_type;
- int (*co_getopt)(void *, void *, size_t *, int);
- int (*co_setopt)(void *, const void *, size_t, int);
-};
-
struct nni_proto_ctx_ops {
// ctx_init creates a new context. The second argument is the
// protocol specific socket structure.
@@ -80,14 +80,7 @@ struct nni_proto_ctx_ops {
void (*ctx_drain)(void *, nni_aio *);
// ctx_options array.
- nni_proto_ctx_option *ctx_options;
-};
-
-struct nni_proto_sock_option {
- const char *pso_name;
- int pso_type;
- int (*pso_getopt)(void *, void *, size_t *, int);
- int (*pso_setopt)(void *, const void *, size_t, int);
+ nni_proto_option *ctx_options;
};
struct nni_proto_sock_ops {
@@ -130,7 +123,7 @@ struct nni_proto_sock_ops {
void (*sock_drain)(void *, nni_aio *);
// Options. Must not be NULL. Final entry should have NULL name.
- nni_proto_sock_option *sock_options;
+ nni_proto_option *sock_options;
};
typedef struct nni_proto_id {
diff --git a/src/core/socket.c b/src/core/socket.c
index bc94056f..4cf624e2 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -15,10 +15,10 @@
// Socket implementation.
-static nni_list nni_sock_list;
-static nni_idhash *nni_sock_hash;
-static nni_mtx nni_sock_lk;
-static nni_idhash *nni_ctx_hash;
+static nni_list sock_list;
+static nni_idhash *sock_hash;
+static nni_mtx sock_lk;
+static nni_idhash *ctx_hash;
struct nni_ctx {
nni_list_node c_node;
@@ -32,12 +32,12 @@ struct nni_ctx {
nng_duration c_rcvtimeo;
};
-typedef struct nni_socket_option {
- const char *so_name;
- int so_type;
- int (*so_getopt)(nni_sock *, void *, size_t *, int);
- int (*so_setopt)(nni_sock *, const void *, size_t, int);
-} nni_socket_option;
+typedef struct sock_option {
+ const char *o_name;
+ int o_type;
+ int (*o_get)(nni_sock *, void *, size_t *, nni_opt_type);
+ int (*o_set)(nni_sock *, const void *, size_t, nni_opt_type);
+} sock_option;
typedef struct nni_sockopt {
nni_list_node node;
@@ -84,7 +84,7 @@ struct nni_socket {
nni_list s_eps; // active endpoints
nni_list s_pipes; // active pipes
- nni_list s_ctxs; // active contexts (protected by global nni_sock_lk)
+ nni_list s_ctxs; // active contexts (protected by global sock_lk)
bool s_closing; // Socket is closing
bool s_closed; // Socket closed, protected by global lock
@@ -97,7 +97,7 @@ struct nni_socket {
static void nni_ctx_destroy(nni_ctx *);
static int
-nni_sock_get_fd(nni_sock *s, int flag, int *fdp)
+sock_get_fd(nni_sock *s, int flag, int *fdp)
{
int rv;
nni_pollable *p;
@@ -126,248 +126,241 @@ nni_sock_get_fd(nni_sock *s, int flag, int *fdp)
}
static int
-nni_sock_getopt_sendfd(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_sendfd(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
int fd;
int rv;
- if ((rv = nni_sock_get_fd(s, NNI_PROTO_FLAG_SND, &fd)) != 0) {
+ if ((rv = sock_get_fd(s, NNI_PROTO_FLAG_SND, &fd)) != 0) {
return (rv);
}
- return (nni_copyout_int(fd, buf, szp, typ));
+ return (nni_copyout_int(fd, buf, szp, t));
}
static int
-nni_sock_getopt_recvfd(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_recvfd(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
int fd;
int rv;
- if ((rv = nni_sock_get_fd(s, NNI_PROTO_FLAG_RCV, &fd)) != 0) {
+ if ((rv = sock_get_fd(s, NNI_PROTO_FLAG_RCV, &fd)) != 0) {
return (rv);
}
- return (nni_copyout_int(fd, buf, szp, typ));
+ return (nni_copyout_int(fd, buf, szp, t));
}
static int
-nni_sock_getopt_raw(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_raw(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
bool raw = ((nni_sock_flags(s) & NNI_PROTO_FLAG_RAW) != 0);
- return (nni_copyout_bool(raw, buf, szp, typ));
+ return (nni_copyout_bool(raw, buf, szp, t));
}
static int
-nni_sock_setopt_recvtimeo(nni_sock *s, const void *buf, size_t sz, int typ)
+sock_set_recvtimeo(nni_sock *s, const void *buf, size_t sz, nni_opt_type t)
{
- return (nni_copyin_ms(&s->s_rcvtimeo, buf, sz, typ));
+ return (nni_copyin_ms(&s->s_rcvtimeo, buf, sz, t));
}
static int
-nni_sock_getopt_recvtimeo(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_recvtimeo(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
- return (nni_copyout_ms(s->s_rcvtimeo, buf, szp, typ));
+ return (nni_copyout_ms(s->s_rcvtimeo, buf, szp, t));
}
static int
-nni_sock_setopt_sendtimeo(nni_sock *s, const void *buf, size_t sz, int typ)
+sock_set_sendtimeo(nni_sock *s, const void *buf, size_t sz, nni_opt_type t)
{
- return (nni_copyin_ms(&s->s_sndtimeo, buf, sz, typ));
+ return (nni_copyin_ms(&s->s_sndtimeo, buf, sz, t));
}
static int
-nni_sock_getopt_sendtimeo(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_sendtimeo(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
- return (nni_copyout_ms(s->s_sndtimeo, buf, szp, typ));
+ return (nni_copyout_ms(s->s_sndtimeo, buf, szp, t));
}
static int
-nni_sock_setopt_reconnmint(nni_sock *s, const void *buf, size_t sz, int typ)
+sock_set_reconnmint(nni_sock *s, const void *buf, size_t sz, nni_opt_type t)
{
- return (nni_copyin_ms(&s->s_reconn, buf, sz, typ));
+ return (nni_copyin_ms(&s->s_reconn, buf, sz, t));
}
static int
-nni_sock_getopt_reconnmint(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_reconnmint(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
- return (nni_copyout_ms(s->s_reconn, buf, szp, typ));
+ return (nni_copyout_ms(s->s_reconn, buf, szp, t));
}
static int
-nni_sock_setopt_reconnmaxt(nni_sock *s, const void *buf, size_t sz, int typ)
+sock_set_reconnmaxt(nni_sock *s, const void *buf, size_t sz, nni_opt_type t)
{
- return (nni_copyin_ms(&s->s_reconnmax, buf, sz, typ));
+ return (nni_copyin_ms(&s->s_reconnmax, buf, sz, t));
}
static int
-nni_sock_getopt_reconnmaxt(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_reconnmaxt(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
- return (nni_copyout_ms(s->s_reconnmax, buf, szp, typ));
+ return (nni_copyout_ms(s->s_reconnmax, buf, szp, t));
}
static int
-nni_sock_setopt_recvbuf(nni_sock *s, const void *buf, size_t sz, int typ)
+sock_set_recvbuf(nni_sock *s, const void *buf, size_t sz, nni_opt_type t)
{
int len;
int rv;
- if ((rv = nni_copyin_int(&len, buf, sz, 0, 8192, typ)) != 0) {
+ if ((rv = nni_copyin_int(&len, buf, sz, 0, 8192, t)) != 0) {
return (rv);
}
return (nni_msgq_resize(s->s_urq, len));
}
static int
-nni_sock_getopt_recvbuf(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_recvbuf(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
int len = nni_msgq_cap(s->s_urq);
- return (nni_copyout_int(len, buf, szp, typ));
+ return (nni_copyout_int(len, buf, szp, t));
}
static int
-nni_sock_setopt_sendbuf(nni_sock *s, const void *buf, size_t sz, int typ)
+sock_set_sendbuf(nni_sock *s, const void *buf, size_t sz, nni_opt_type t)
{
int len;
int rv;
- if ((rv = nni_copyin_int(&len, buf, sz, 0, 8192, typ)) != 0) {
+ if ((rv = nni_copyin_int(&len, buf, sz, 0, 8192, t)) != 0) {
return (rv);
}
return (nni_msgq_resize(s->s_uwq, len));
}
static int
-nni_sock_getopt_sendbuf(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_sendbuf(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
int len = nni_msgq_cap(s->s_uwq);
- return (nni_copyout_int(len, buf, szp, typ));
+ return (nni_copyout_int(len, buf, szp, t));
}
static int
-nni_sock_getopt_sockname(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_sockname(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
- return (nni_copyout_str(s->s_name, buf, szp, typ));
+ return (nni_copyout_str(s->s_name, buf, szp, t));
}
static int
-nni_sock_setopt_sockname(nni_sock *s, const void *buf, size_t sz, int typ)
+sock_set_sockname(nni_sock *s, const void *buf, size_t sz, nni_opt_type t)
{
- return (nni_copyin_str(s->s_name, buf, sizeof(s->s_name), sz, typ));
+ return (nni_copyin_str(s->s_name, buf, sizeof(s->s_name), sz, t));
}
static int
-nni_sock_getopt_proto(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_proto(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
- return (nni_copyout_int(nni_sock_proto_id(s), buf, szp, typ));
+ return (nni_copyout_int(nni_sock_proto_id(s), buf, szp, t));
}
static int
-nni_sock_getopt_peer(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_peer(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
- return (nni_copyout_int(nni_sock_peer_id(s), buf, szp, typ));
+ return (nni_copyout_int(nni_sock_peer_id(s), buf, szp, t));
}
static int
-nni_sock_getopt_protoname(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_protoname(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
- return (nni_copyout_str(nni_sock_proto_name(s), buf, szp, typ));
+ return (nni_copyout_str(nni_sock_proto_name(s), buf, szp, t));
}
static int
-nni_sock_getopt_peername(nni_sock *s, void *buf, size_t *szp, int typ)
+sock_get_peername(nni_sock *s, void *buf, size_t *szp, nni_opt_type t)
{
- return (nni_copyout_str(nni_sock_peer_name(s), buf, szp, typ));
+ return (nni_copyout_str(nni_sock_peer_name(s), buf, szp, t));
}
-static const nni_socket_option nni_sock_options[] = {
+static const sock_option sock_options[] = {
{
- .so_name = NNG_OPT_RECVTIMEO,
- .so_type = NNI_TYPE_DURATION,
- .so_getopt = nni_sock_getopt_recvtimeo,
- .so_setopt = nni_sock_setopt_recvtimeo,
+ .o_name = NNG_OPT_RECVTIMEO,
+ .o_type = NNI_TYPE_DURATION,
+ .o_get = sock_get_recvtimeo,
+ .o_set = sock_set_recvtimeo,
},
{
- .so_name = NNG_OPT_SENDTIMEO,
- .so_type = NNI_TYPE_DURATION,
- .so_getopt = nni_sock_getopt_sendtimeo,
- .so_setopt = nni_sock_setopt_sendtimeo,
+ .o_name = NNG_OPT_SENDTIMEO,
+ .o_type = NNI_TYPE_DURATION,
+ .o_get = sock_get_sendtimeo,
+ .o_set = sock_set_sendtimeo,
},
{
- .so_name = NNG_OPT_RECVFD,
- .so_type = NNI_TYPE_INT32,
- .so_getopt = nni_sock_getopt_recvfd,
- .so_setopt = NULL,
+ .o_name = NNG_OPT_RECVFD,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = sock_get_recvfd,
},
{
- .so_name = NNG_OPT_SENDFD,
- .so_type = NNI_TYPE_INT32,
- .so_getopt = nni_sock_getopt_sendfd,
- .so_setopt = NULL,
+ .o_name = NNG_OPT_SENDFD,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = sock_get_sendfd,
},
{
- .so_name = NNG_OPT_RECVBUF,
- .so_type = NNI_TYPE_INT32,
- .so_getopt = nni_sock_getopt_recvbuf,
- .so_setopt = nni_sock_setopt_recvbuf,
+ .o_name = NNG_OPT_RECVBUF,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = sock_get_recvbuf,
+ .o_set = sock_set_recvbuf,
},
{
- .so_name = NNG_OPT_SENDBUF,
- .so_type = NNI_TYPE_INT32,
- .so_getopt = nni_sock_getopt_sendbuf,
- .so_setopt = nni_sock_setopt_sendbuf,
+ .o_name = NNG_OPT_SENDBUF,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = sock_get_sendbuf,
+ .o_set = sock_set_sendbuf,
},
{
- .so_name = NNG_OPT_RECONNMINT,
- .so_type = NNI_TYPE_DURATION,
- .so_getopt = nni_sock_getopt_reconnmint,
- .so_setopt = nni_sock_setopt_reconnmint,
+ .o_name = NNG_OPT_RECONNMINT,
+ .o_type = NNI_TYPE_DURATION,
+ .o_get = sock_get_reconnmint,
+ .o_set = sock_set_reconnmint,
},
{
- .so_name = NNG_OPT_RECONNMAXT,
- .so_type = NNI_TYPE_DURATION,
- .so_getopt = nni_sock_getopt_reconnmaxt,
- .so_setopt = nni_sock_setopt_reconnmaxt,
+ .o_name = NNG_OPT_RECONNMAXT,
+ .o_type = NNI_TYPE_DURATION,
+ .o_get = sock_get_reconnmaxt,
+ .o_set = sock_set_reconnmaxt,
},
{
- .so_name = NNG_OPT_SOCKNAME,
- .so_type = NNI_TYPE_STRING,
- .so_getopt = nni_sock_getopt_sockname,
- .so_setopt = nni_sock_setopt_sockname,
+ .o_name = NNG_OPT_SOCKNAME,
+ .o_type = NNI_TYPE_STRING,
+ .o_get = sock_get_sockname,
+ .o_set = sock_set_sockname,
},
{
- .so_name = NNG_OPT_RAW,
- .so_type = NNI_TYPE_BOOL,
- .so_getopt = nni_sock_getopt_raw,
- .so_setopt = NULL,
+ .o_name = NNG_OPT_RAW,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = sock_get_raw,
},
{
- .so_name = NNG_OPT_PROTO,
- .so_type = NNI_TYPE_INT32,
- .so_getopt = nni_sock_getopt_proto,
- .so_setopt = NULL,
+ .o_name = NNG_OPT_PROTO,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = sock_get_proto,
},
{
- .so_name = NNG_OPT_PEER,
- .so_type = NNI_TYPE_INT32,
- .so_getopt = nni_sock_getopt_peer,
- .so_setopt = NULL,
+ .o_name = NNG_OPT_PEER,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = sock_get_peer,
},
{
- .so_name = NNG_OPT_PROTONAME,
- .so_type = NNI_TYPE_STRING,
- .so_getopt = nni_sock_getopt_protoname,
- .so_setopt = NULL,
+ .o_name = NNG_OPT_PROTONAME,
+ .o_type = NNI_TYPE_STRING,
+ .o_get = sock_get_protoname,
},
{
- .so_name = NNG_OPT_PEERNAME,
- .so_type = NNI_TYPE_STRING,
- .so_getopt = nni_sock_getopt_peername,
- .so_setopt = NULL,
+ .o_name = NNG_OPT_PEERNAME,
+ .o_type = NNI_TYPE_STRING,
+ .o_get = sock_get_peername,
},
// terminate list
{
- .so_name = NULL,
+ .o_name = NULL,
},
};
@@ -408,8 +401,8 @@ nni_sock_find(nni_sock **sockp, uint32_t id)
if ((rv = nni_init()) != 0) {
return (rv);
}
- nni_mtx_lock(&nni_sock_lk);
- if ((rv = nni_idhash_find(nni_sock_hash, id, (void **) &s)) == 0) {
+ nni_mtx_lock(&sock_lk);
+ if ((rv = nni_idhash_find(sock_hash, id, (void **) &s)) == 0) {
if (s->s_closed) {
rv = NNG_ECLOSED;
} else {
@@ -417,7 +410,7 @@ nni_sock_find(nni_sock **sockp, uint32_t id)
*sockp = s;
}
}
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
if (rv == NNG_ENOENT) {
rv = NNG_ECLOSED;
@@ -429,12 +422,12 @@ nni_sock_find(nni_sock **sockp, uint32_t id)
void
nni_sock_rele(nni_sock *s)
{
- nni_mtx_lock(&nni_sock_lk);
+ nni_mtx_lock(&sock_lk);
s->s_refcnt--;
if (s->s_closed && (s->s_refcnt < 2)) {
nni_cv_wake(&s->s_close_cv);
}
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
}
bool
@@ -500,7 +493,7 @@ nni_sock_pipe_remove(nni_sock *s, nni_pipe *p)
}
static void
-nni_sock_destroy(nni_sock *s)
+sock_destroy(nni_sock *s)
{
nni_sockopt *sopt;
@@ -569,7 +562,7 @@ nni_sock_create(nni_sock **sp, const nni_proto *proto)
nni_mtx_init(&s->s_mx);
nni_mtx_init(&s->s_pipe_cbs_mtx);
nni_cv_init(&s->s_cv, &s->s_mx);
- nni_cv_init(&s->s_close_cv, &nni_sock_lk);
+ nni_cv_init(&s->s_close_cv, &sock_lk);
if (((rv = nni_msgq_init(&s->s_uwq, 0)) != 0) ||
((rv = nni_msgq_init(&s->s_urq, 1)) != 0) ||
@@ -584,7 +577,7 @@ nni_sock_create(nni_sock **sp, const nni_proto *proto)
sizeof(nni_duration), NNI_TYPE_DURATION)) != 0) ||
((rv = nni_sock_setopt(s, NNG_OPT_RECVMAXSZ, &s->s_rcvmaxsz,
sizeof(size_t), NNI_TYPE_SIZE)) != 0)) {
- nni_sock_destroy(s);
+ sock_destroy(s);
return (rv);
}
@@ -612,31 +605,31 @@ nni_sock_sys_init(void)
{
int rv;
- NNI_LIST_INIT(&nni_sock_list, nni_sock, s_node);
- nni_mtx_init(&nni_sock_lk);
+ NNI_LIST_INIT(&sock_list, nni_sock, s_node);
+ nni_mtx_init(&sock_lk);
- if (((rv = nni_idhash_init(&nni_sock_hash)) != 0) ||
- ((rv = nni_idhash_init(&nni_ctx_hash)) != 0)) {
+ if (((rv = nni_idhash_init(&sock_hash)) != 0) ||
+ ((rv = nni_idhash_init(&ctx_hash)) != 0)) {
nni_sock_sys_fini();
return (rv);
}
- nni_idhash_set_limits(nni_sock_hash, 1, 0x7fffffff, 1);
- nni_idhash_set_limits(nni_ctx_hash, 1, 0x7fffffff, 1);
+ nni_idhash_set_limits(sock_hash, 1, 0x7fffffff, 1);
+ nni_idhash_set_limits(ctx_hash, 1, 0x7fffffff, 1);
return (0);
}
void
nni_sock_sys_fini(void)
{
- if (nni_sock_hash != NULL) {
- nni_idhash_fini(nni_sock_hash);
- nni_sock_hash = NULL;
+ if (sock_hash != NULL) {
+ nni_idhash_fini(sock_hash);
+ sock_hash = NULL;
}
- if (nni_ctx_hash != NULL) {
- nni_idhash_fini(nni_ctx_hash);
- nni_ctx_hash = NULL;
+ if (ctx_hash != NULL) {
+ nni_idhash_fini(ctx_hash);
+ ctx_hash = NULL;
}
- nni_mtx_fini(&nni_sock_lk);
+ nni_mtx_fini(&sock_lk);
}
int
@@ -655,15 +648,15 @@ nni_sock_open(nni_sock **sockp, const nni_proto *proto)
return (rv);
}
- nni_mtx_lock(&nni_sock_lk);
- if ((rv = nni_idhash_alloc(nni_sock_hash, &s->s_id, s)) != 0) {
- nni_sock_destroy(s);
+ nni_mtx_lock(&sock_lk);
+ if ((rv = nni_idhash_alloc(sock_hash, &s->s_id, s)) != 0) {
+ sock_destroy(s);
} else {
- nni_list_append(&nni_sock_list, s);
+ nni_list_append(&sock_list, s);
s->s_sock_ops.sock_open(s->s_data);
*sockp = s;
}
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
// Set the sockname.
(void) snprintf(
@@ -702,33 +695,33 @@ nni_sock_shutdown(nni_sock *sock)
// We now mark any owned contexts as closing.
// XXX: Add context draining support here!
- nni_mtx_lock(&nni_sock_lk);
+ nni_mtx_lock(&sock_lk);
nctx = nni_list_first(&sock->s_ctxs);
while ((ctx = nctx) != NULL) {
nctx = nni_list_next(&sock->s_ctxs, ctx);
ctx->c_closed = true;
if (ctx->c_refcnt == 0) {
// No open operations. So close it.
- nni_idhash_remove(nni_ctx_hash, ctx->c_id);
+ nni_idhash_remove(ctx_hash, ctx->c_id);
nni_list_remove(&sock->s_ctxs, ctx);
nni_ctx_destroy(ctx);
}
// If still has a reference count, then wait for last
// reference to close before nuking it.
}
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
// Generally, unless the protocol is blocked trying to perform
// writes (e.g. a slow reader on the other side), it should be
// trying to shut things down. We wait to give it
// a chance to do so gracefully.
- nni_mtx_lock(&nni_sock_lk);
+ nni_mtx_lock(&sock_lk);
while (!nni_list_empty(&sock->s_ctxs)) {
sock->s_ctxwait = true;
nni_cv_wait(&sock->s_close_cv);
}
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
nni_mtx_lock(&sock->s_mx);
@@ -792,16 +785,16 @@ nni_sock_close(nni_sock *s)
// is idempotent.
nni_sock_shutdown(s);
- nni_mtx_lock(&nni_sock_lk);
+ nni_mtx_lock(&sock_lk);
if (s->s_closed) {
// Some other thread called close. All we need to do
// is drop our reference count.
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
nni_sock_rele(s);
return;
}
s->s_closed = true;
- nni_idhash_remove(nni_sock_hash, s->s_id);
+ nni_idhash_remove(sock_hash, s->s_id);
// We might have been removed from the list already, e.g. by
// nni_sock_closeall. This is idempotent.
@@ -813,7 +806,7 @@ nni_sock_close(nni_sock *s)
while ((s->s_refcnt > 1) || (!nni_list_empty(&s->s_ctxs))) {
nni_cv_wait(&s->s_close_cv);
}
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
// Wait for pipes, eps, and contexts to finish closing.
nni_mtx_lock(&s->s_mx);
@@ -823,7 +816,7 @@ nni_sock_close(nni_sock *s)
}
nni_mtx_unlock(&s->s_mx);
- nni_sock_destroy(s);
+ sock_destroy(s);
}
void
@@ -831,20 +824,20 @@ nni_sock_closeall(void)
{
nni_sock *s;
- if (nni_sock_hash == NULL) {
+ if (sock_hash == NULL) {
return;
}
for (;;) {
- nni_mtx_lock(&nni_sock_lk);
- if ((s = nni_list_first(&nni_sock_list)) == NULL) {
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_lock(&sock_lk);
+ if ((s = nni_list_first(&sock_list)) == NULL) {
+ nni_mtx_unlock(&sock_lk);
return;
}
// Bump the reference count. The close call below
// will drop it.
s->s_refcnt++;
nni_list_node_remove(&s->s_node);
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
nni_sock_close(s);
}
}
@@ -925,7 +918,7 @@ nni_sock_ep_add(nni_sock *s, nni_ep *ep)
NNI_LIST_FOREACH (&s->s_options, sopt) {
int rv;
rv = nni_ep_setopt(
- ep, sopt->name, sopt->data, sopt->sz, NNI_TYPE_OPAQUE);
+ ep, sopt->name, sopt->data, sopt->sz, sopt->typ);
if ((rv != 0) && (rv != NNG_ENOTSUP)) {
nni_mtx_unlock(&s->s_mx);
return (rv);
@@ -951,14 +944,15 @@ nni_sock_ep_remove(nni_sock *sock, nni_ep *ep)
}
int
-nni_sock_setopt(nni_sock *s, const char *name, const void *v, size_t sz, int t)
+nni_sock_setopt(
+ nni_sock *s, const char *name, const void *v, size_t sz, nni_opt_type t)
{
- int rv = NNG_ENOTSUP;
- nni_ep * ep;
- nni_sockopt * optv;
- nni_sockopt * oldv = NULL;
- const nni_socket_option * sso;
- const nni_proto_sock_option *pso;
+ int rv = NNG_ENOTSUP;
+ nni_ep * ep;
+ nni_sockopt * optv;
+ nni_sockopt * oldv = NULL;
+ const sock_option * sso;
+ const nni_proto_option *pso;
nni_mtx_lock(&s->s_mx);
if (s->s_closing) {
@@ -969,30 +963,30 @@ nni_sock_setopt(nni_sock *s, const char *name, const void *v, size_t sz, int t)
// Protocol options. The protocol can override options that
// the socket framework would otherwise supply, like buffer
// sizes.
- for (pso = s->s_sock_ops.sock_options; pso->pso_name != NULL; pso++) {
- if (strcmp(pso->pso_name, name) != 0) {
+ for (pso = s->s_sock_ops.sock_options; pso->o_name != NULL; pso++) {
+ if (strcmp(pso->o_name, name) != 0) {
continue;
}
- if (pso->pso_setopt == NULL) {
+ if (pso->o_set == NULL) {
nni_mtx_unlock(&s->s_mx);
return (NNG_EREADONLY);
}
- rv = pso->pso_setopt(s->s_data, v, sz, t);
+ rv = pso->o_set(s->s_data, v, sz, t);
nni_mtx_unlock(&s->s_mx);
return (rv);
}
// Some options do not go down to transports. Handle them
// directly.
- for (sso = nni_sock_options; sso->so_name != NULL; sso++) {
- if (strcmp(sso->so_name, name) != 0) {
+ for (sso = sock_options; sso->o_name != NULL; sso++) {
+ if (strcmp(sso->o_name, name) != 0) {
continue;
}
- if (sso->so_setopt == NULL) {
+ if (sso->o_set == NULL) {
nni_mtx_unlock(&s->s_mx);
return (NNG_EREADONLY);
}
- rv = sso->so_setopt(s, v, sz, t);
+ rv = sso->o_set(s, v, sz, t);
nni_mtx_unlock(&s->s_mx);
return (rv);
}
@@ -1007,22 +1001,7 @@ nni_sock_setopt(nni_sock *s, const char *name, const void *v, size_t sz, int t)
// Validation of transport options. This is stateless, so
// transports should not fail to set an option later if they
// passed it here.
- rv = nni_tran_chkopt(name, v, sz, t);
-
- // Also check a few generic things. We do this if no
- // transport was found, or even if a transport rejected one of
- // the settings.
- if ((rv == NNG_ENOTSUP) || (rv == 0)) {
- if (strcmp(name, NNG_OPT_RECVMAXSZ) == 0) {
- size_t z;
- // just a sanity test on the size; it also
- // ensures that a size can be set even with no
- // transport configured.
- rv = nni_copyin_size(&z, v, sz, 0, NNI_MAXSZ, t);
- }
- }
-
- if (rv != 0) {
+ if ((rv = nni_tran_chkopt(name, v, sz, t)) != 0) {
return (rv);
}
@@ -1065,16 +1044,6 @@ nni_sock_setopt(nni_sock *s, const char *name, const void *v, size_t sz, int t)
// properly pre-validate.
NNI_LIST_FOREACH (&s->s_eps, ep) {
int x;
- if (optv->typ == NNI_TYPE_OPAQUE) {
- int t2;
- if (nni_ep_opttype(ep, optv->name, &t2) ==
- NNG_ENOTSUP) {
- continue;
- }
- // This allows us to determine what the type
- // *should* be.
- optv->typ = t2;
- }
x = nni_ep_setopt(ep, optv->name, optv->data, sz, t);
if (x != NNG_ENOTSUP) {
if ((rv = x) != 0) {
@@ -1086,8 +1055,7 @@ nni_sock_setopt(nni_sock *s, const char *name, const void *v, size_t sz, int t)
}
if (rv == 0) {
- // Remove and toss the old value, we are using a new
- // one.
+ // Remove and toss the old value; we are using a new one.
if (oldv != NULL) {
nni_list_remove(&s->s_options, oldv);
nni_free_opt(oldv);
@@ -1106,12 +1074,13 @@ nni_sock_setopt(nni_sock *s, const char *name, const void *v, size_t sz, int t)
}
int
-nni_sock_getopt(nni_sock *s, const char *name, void *val, size_t *szp, int t)
+nni_sock_getopt(
+ nni_sock *s, const char *name, void *val, size_t *szp, nni_opt_type t)
{
- int rv = NNG_ENOTSUP;
- nni_sockopt * sopt;
- const nni_socket_option * sso;
- const nni_proto_sock_option *pso;
+ int rv = NNG_ENOTSUP;
+ nni_sockopt * sopt;
+ const sock_option * sso;
+ const nni_proto_option *pso;
nni_mtx_lock(&s->s_mx);
if (s->s_closing) {
@@ -1122,29 +1091,29 @@ nni_sock_getopt(nni_sock *s, const char *name, void *val, size_t *szp, int t)
// Protocol specific options. The protocol can override
// options like the send buffer or notification descriptors
// this way.
- for (pso = s->s_sock_ops.sock_options; pso->pso_name != NULL; pso++) {
- if (strcmp(name, pso->pso_name) != 0) {
+ for (pso = s->s_sock_ops.sock_options; pso->o_name != NULL; pso++) {
+ if (strcmp(name, pso->o_name) != 0) {
continue;
}
- if (pso->pso_getopt == NULL) {
+ if (pso->o_get == NULL) {
nni_mtx_unlock(&s->s_mx);
return (NNG_EWRITEONLY);
}
- rv = pso->pso_getopt(s->s_data, val, szp, t);
+ rv = pso->o_get(s->s_data, val, szp, t);
nni_mtx_unlock(&s->s_mx);
return (rv);
}
// Socket generic options.
- for (sso = nni_sock_options; sso->so_name != NULL; sso++) {
- if (strcmp(name, sso->so_name) != 0) {
+ for (sso = sock_options; sso->o_name != NULL; sso++) {
+ if (strcmp(name, sso->o_name) != 0) {
continue;
}
- if (sso->so_getopt == NULL) {
+ if (sso->o_get == NULL) {
nni_mtx_unlock(&s->s_mx);
return (NNG_EWRITEONLY);
}
- rv = sso->so_getopt(s, val, szp, t);
+ rv = sso->o_get(s, val, szp, t);
nni_mtx_unlock(&s->s_mx);
return (rv);
}
@@ -1198,8 +1167,8 @@ nni_ctx_find(nni_ctx **ctxp, uint32_t id, bool closing)
if ((rv = nni_init()) != 0) {
return (rv);
}
- nni_mtx_lock(&nni_sock_lk);
- if ((rv = nni_idhash_find(nni_ctx_hash, id, (void **) &ctx)) == 0) {
+ nni_mtx_lock(&sock_lk);
+ if ((rv = nni_idhash_find(ctx_hash, id, (void **) &ctx)) == 0) {
// We refuse a reference if either the socket is
// closed, or the context is closed. (If the socket
// is closed, and we are only getting the reference so
@@ -1213,7 +1182,7 @@ nni_ctx_find(nni_ctx **ctxp, uint32_t id, bool closing)
*ctxp = ctx;
}
}
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
if (rv == NNG_ENOENT) {
rv = NNG_ECLOSED;
@@ -1237,24 +1206,24 @@ void
nni_ctx_rele(nni_ctx *ctx)
{
nni_sock *sock = ctx->c_sock;
- nni_mtx_lock(&nni_sock_lk);
+ nni_mtx_lock(&sock_lk);
ctx->c_refcnt--;
if ((ctx->c_refcnt > 0) || (!ctx->c_closed)) {
// Either still have an active reference, or not
// actually closing yet.
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
return;
}
// Remove us from the hash, so we can't be found any more.
// This allows our ID to be reused later, although the system
// tries to avoid ID reuse.
- nni_idhash_remove(nni_ctx_hash, ctx->c_id);
+ nni_idhash_remove(ctx_hash, ctx->c_id);
nni_list_remove(&sock->s_ctxs, ctx);
if (sock->s_closed || sock->s_ctxwait) {
nni_cv_wake(&sock->s_close_cv);
}
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
nni_ctx_destroy(ctx);
}
@@ -1273,22 +1242,22 @@ nni_ctx_open(nni_ctx **ctxp, nni_sock *sock)
return (NNG_ENOMEM);
}
- nni_mtx_lock(&nni_sock_lk);
+ nni_mtx_lock(&sock_lk);
if (sock->s_closed) {
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
NNI_FREE_STRUCT(ctx);
return (NNG_ECLOSED);
}
- if ((rv = nni_idhash_alloc(nni_ctx_hash, &id, ctx)) != 0) {
- nni_mtx_unlock(&nni_sock_lk);
+ if ((rv = nni_idhash_alloc(ctx_hash, &id, ctx)) != 0) {
+ nni_mtx_unlock(&sock_lk);
NNI_FREE_STRUCT(ctx);
return (rv);
}
ctx->c_id = (uint32_t) id;
if ((rv = sock->s_ctx_ops.ctx_init(&ctx->c_data, sock->s_data)) != 0) {
- nni_idhash_remove(nni_ctx_hash, ctx->c_id);
- nni_mtx_unlock(&nni_sock_lk);
+ nni_idhash_remove(ctx_hash, ctx->c_id);
+ nni_mtx_unlock(&sock_lk);
NNI_FREE_STRUCT(ctx);
return (rv);
}
@@ -1301,7 +1270,7 @@ nni_ctx_open(nni_ctx **ctxp, nni_sock *sock)
ctx->c_sndtimeo = sock->s_sndtimeo;
nni_list_append(&sock->s_ctxs, ctx);
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
// Paranoia, fixing a possible race in close. Don't let us
// give back a context if the socket is being shutdown (it
@@ -1321,9 +1290,9 @@ nni_ctx_open(nni_ctx **ctxp, nni_sock *sock)
void
nni_ctx_close(nni_ctx *ctx)
{
- nni_mtx_lock(&nni_sock_lk);
+ nni_mtx_lock(&sock_lk);
ctx->c_closed = true;
- nni_mtx_unlock(&nni_sock_lk);
+ nni_mtx_unlock(&sock_lk);
nni_ctx_rele(ctx);
}
@@ -1349,27 +1318,28 @@ nni_ctx_recv(nni_ctx *ctx, nni_aio *aio)
}
int
-nni_ctx_getopt(nni_ctx *ctx, const char *opt, void *v, size_t *szp, int typ)
+nni_ctx_getopt(
+ nni_ctx *ctx, const char *opt, void *v, size_t *szp, nni_opt_type t)
{
- nni_sock * sock = ctx->c_sock;
- nni_proto_ctx_option *co;
- int rv = NNG_ENOTSUP;
+ nni_sock * sock = ctx->c_sock;
+ nni_proto_option *o;
+ int rv = NNG_ENOTSUP;
nni_mtx_lock(&sock->s_mx);
if (strcmp(opt, NNG_OPT_RECVTIMEO) == 0) {
- rv = nni_copyout_ms(ctx->c_rcvtimeo, v, szp, typ);
+ rv = nni_copyout_ms(ctx->c_rcvtimeo, v, szp, t);
} else if (strcmp(opt, NNG_OPT_SENDTIMEO) == 0) {
- rv = nni_copyout_ms(ctx->c_sndtimeo, v, szp, typ);
+ rv = nni_copyout_ms(ctx->c_sndtimeo, v, szp, t);
} else if (ctx->c_ops.ctx_options != NULL) {
- for (co = ctx->c_ops.ctx_options; co->co_name != NULL; co++) {
- if (strcmp(opt, co->co_name) != 0) {
+ for (o = ctx->c_ops.ctx_options; o->o_name != NULL; o++) {
+ if (strcmp(opt, o->o_name) != 0) {
continue;
}
- if (co->co_getopt == NULL) {
+ if (o->o_get == NULL) {
rv = NNG_EWRITEONLY;
break;
}
- rv = co->co_getopt(ctx->c_data, v, szp, typ);
+ rv = o->o_get(ctx->c_data, v, szp, t);
break;
}
}
@@ -1379,27 +1349,27 @@ nni_ctx_getopt(nni_ctx *ctx, const char *opt, void *v, size_t *szp, int typ)
int
nni_ctx_setopt(
- nni_ctx *ctx, const char *opt, const void *v, size_t sz, int typ)
+ nni_ctx *ctx, const char *opt, const void *v, size_t sz, nni_opt_type t)
{
- nni_sock * sock = ctx->c_sock;
- nni_proto_ctx_option *co;
- int rv = NNG_ENOTSUP;
+ nni_sock * sock = ctx->c_sock;
+ nni_proto_option *o;
+ int rv = NNG_ENOTSUP;
nni_mtx_lock(&sock->s_mx);
if (strcmp(opt, NNG_OPT_RECVTIMEO) == 0) {
- rv = nni_copyin_ms(&ctx->c_rcvtimeo, v, sz, typ);
+ rv = nni_copyin_ms(&ctx->c_rcvtimeo, v, sz, t);
} else if (strcmp(opt, NNG_OPT_SENDTIMEO) == 0) {
- rv = nni_copyin_ms(&ctx->c_sndtimeo, v, sz, typ);
+ rv = nni_copyin_ms(&ctx->c_sndtimeo, v, sz, t);
} else if (ctx->c_ops.ctx_options != NULL) {
- for (co = ctx->c_ops.ctx_options; co->co_name != NULL; co++) {
- if (strcmp(opt, co->co_name) != 0) {
+ for (o = ctx->c_ops.ctx_options; o->o_name != NULL; o++) {
+ if (strcmp(opt, o->o_name) != 0) {
continue;
}
- if (co->co_setopt == NULL) {
+ if (o->o_set == NULL) {
rv = NNG_EREADONLY;
break;
}
- rv = co->co_setopt(ctx->c_data, v, sz, typ);
+ rv = o->o_set(ctx->c_data, v, sz, t);
break;
}
}
diff --git a/src/core/socket.h b/src/core/socket.h
index 833129fa..7c10b195 100644
--- a/src/core/socket.h
+++ b/src/core/socket.h
@@ -29,12 +29,13 @@ extern void * nni_sock_proto_data(nni_sock *);
extern struct nni_proto_pipe_ops *nni_sock_proto_pipe_ops(nni_sock *);
extern int nni_sock_setopt(
- nni_sock *, const char *, const void *, size_t, int);
-extern int nni_sock_getopt(nni_sock *, const char *, void *, size_t *, int);
-extern int nni_sock_recvmsg(nni_sock *, nni_msg **, int);
-extern int nni_sock_sendmsg(nni_sock *, nni_msg *, int);
-extern void nni_sock_send(nni_sock *, nni_aio *);
-extern void nni_sock_recv(nni_sock *, nni_aio *);
+ nni_sock *, const char *, const void *, size_t, nni_opt_type);
+extern int nni_sock_getopt(
+ nni_sock *, const char *, void *, size_t *, nni_opt_type);
+extern int nni_sock_recvmsg(nni_sock *, nni_msg **, int);
+extern int nni_sock_sendmsg(nni_sock *, nni_msg *, int);
+extern void nni_sock_send(nni_sock *, nni_aio *);
+extern void nni_sock_recv(nni_sock *, nni_aio *);
extern uint32_t nni_sock_id(nni_sock *);
// nni_sock_pipe_add adds the pipe to the socket. It is called by
@@ -114,9 +115,11 @@ extern void nni_ctx_recv(nni_ctx *, nni_aio *);
extern void nni_ctx_send(nni_ctx *, nni_aio *);
// nni_ctx_getopt is used to get a context option.
-extern int nni_ctx_getopt(nni_ctx *, const char *, void *, size_t *, int);
+extern int nni_ctx_getopt(
+ nni_ctx *, const char *, void *, size_t *, nni_opt_type);
// nni_ctx_setopt is used to set a context option.
-extern int nni_ctx_setopt(nni_ctx *, const char *, const void *, size_t, int);
+extern int nni_ctx_setopt(
+ nni_ctx *, const char *, const void *, size_t, nni_opt_type);
#endif // CORE_SOCKET_H
diff --git a/src/core/transport.c b/src/core/transport.c
index 0cd84461..4733b6bd 100644
--- a/src/core/transport.c
+++ b/src/core/transport.c
@@ -118,23 +118,23 @@ nni_tran_chkopt(const char *name, const void *v, size_t sz, int typ)
nni_mtx_lock(&nni_tran_lk);
NNI_LIST_FOREACH (&nni_tran_list, t) {
- const nni_tran_ep_ops * ep;
- const nni_tran_ep_option *eo;
+ const nni_tran_ep_ops *ep;
+ const nni_tran_option *o;
// Generally we look for endpoint options.
ep = t->t_tran.tran_ep;
- for (eo = ep->ep_options; eo && eo->eo_name != NULL; eo++) {
- if (strcmp(name, eo->eo_name) != 0) {
+ for (o = ep->ep_options; o && o->o_name != NULL; o++) {
+ if (strcmp(name, o->o_name) != 0) {
continue;
}
- if (eo->eo_setopt == NULL) {
+ if (o->o_set == NULL) {
nni_mtx_unlock(&nni_tran_lk);
return (NNG_EREADONLY);
}
- if ((rv = eo->eo_setopt(NULL, v, sz, typ)) != 0) {
- nni_mtx_unlock(&nni_tran_lk);
- return (rv);
- }
+
+ rv = (o->o_chk != NULL) ? o->o_chk(v, sz, typ) : 0;
+ nni_mtx_unlock(&nni_tran_lk);
+ return (rv);
}
}
nni_mtx_unlock(&nni_tran_lk);
diff --git a/src/core/transport.h b/src/core/transport.h
index 1046901c..e45aa7ec 100644
--- a/src/core/transport.h
+++ b/src/core/transport.h
@@ -47,39 +47,44 @@ struct nni_tran {
// older versions in the future.
#define NNI_TRANSPORT_V0 0x54520000
#define NNI_TRANSPORT_V1 0x54520001
-#define NNI_TRANSPORT_VERSION NNI_TRANSPORT_V1
+#define NNI_TRANSPORT_V2 0x54520002
+#define NNI_TRANSPORT_VERSION NNI_TRANSPORT_V2
-// Endpoint option handlers.
-struct nni_tran_ep_option {
- // eo_name is the name of the option.
- const char *eo_name;
+// Option handlers.
+struct nni_tran_option {
+ // o_name is the name of the option.
+ const char *o_name;
- // eo_type is the type of the option.
- int eo_type;
+ // o_type is the type of the option.
+ nni_opt_type o_type;
- // eo_getopt retrieves the value of the option.
- int (*eo_getopt)(void *, void *, size_t *, int);
+ // o_get retrieves the value of the option. The first argument is the
+ // dialer, listener, or pipe where the request is being made.
+ int (*o_get)(void *, void *, size_t *, nni_opt_type);
- // eo_set sets the value of the option. If the first argument
- // (the endpoint) is NULL, then no actual set operation should be
- // performed, but the option should be sanity tested for presence
- // and size. (This permits the core to validate that an option
- // is reasonable and be set even before endpoints are created.)
- int (*eo_setopt)(void *, const void *, size_t, int);
+ // o_set sets the value of the option. The first argument is the
+ // dialer, listener, or pipe where the request is being made.
+ int (*o_set)(void *, const void *, size_t, nni_opt_type);
+
+ // o_chk checks to see if the proposed value is legal -- this is
+ // checks only the type, size, and generic range validation. This
+ // function can be called before any transport objects are created.
+ int (*o_chk)(const void *, size_t, nni_opt_type);
};
-// Endpoint operations are called by the socket in a protocol-independent
-// fashion. The socket makes individual calls, which are expected to block
-// if appropriate (except for destroy), or run asynchronously if an aio
-// is provided. Endpoints are unable to call back into the socket, to prevent
-// recusive entry and deadlock.
+// Endpoint operations are called by the socket in a
+// protocol-independent fashion. The socket makes individual calls,
+// which are expected to block if appropriate (except for destroy), or
+// run asynchronously if an aio is provided. Endpoints are unable to
+// call back into the socket, to prevent recusive entry and deadlock.
//
// For a given endpoint, the framework holds a lock so that each entry
// point is run exclusively of the others. (Transports must still guard
// against any asynchronous operations they manage themselves, though.)
struct nni_tran_ep_ops {
// ep_init creates a vanilla endpoint. The value created is
- // used for the first argument for all other endpoint functions.
+ // used for the first argument for all other endpoint
+ // functions.
int (*ep_init)(void **, nni_url *, nni_sock *, int);
// ep_fini frees the resources associated with the endpoint.
@@ -87,8 +92,8 @@ struct nni_tran_ep_ops {
void (*ep_fini)(void *);
// ep_connect establishes a connection. It can return errors
- // NNG_EACCESS, NNG_ECONNREFUSED, NNG_EBADADDR, NNG_ECONNFAILED,
- // NNG_ETIMEDOUT, and NNG_EPROTO.
+ // NNG_EACCESS, NNG_ECONNREFUSED, NNG_EBADADDR,
+ // NNG_ECONNFAILED, NNG_ETIMEDOUT, and NNG_EPROTO.
void (*ep_connect)(void *, nni_aio *);
// ep_bind just does the bind() and listen() work,
@@ -101,45 +106,34 @@ struct nni_tran_ep_ops {
// ep_accept accepts an inbound connection.
void (*ep_accept)(void *, nni_aio *);
- // ep_close stops the endpoint from operating altogether. It does
- // not affect pipes that have already been created. It is nonblocking.
+ // ep_close stops the endpoint from operating altogether. It
+ // does not affect pipes that have already been created. It is
+ // nonblocking.
void (*ep_close)(void *);
- // ep_options is an array of endpoint options. The final element must
- // have a NULL name. If this member is NULL, then no transport specific
- // options are available.
- nni_tran_ep_option *ep_options;
-};
-
-// Pipe option handlers. We only have get for pipes; once a pipe is created
-// no options may be set on it.
-struct nni_tran_pipe_option {
- // po_name is the name of the option.
- const char *po_name;
-
- // po_type is the type of the option.
- int po_type;
-
- // po_getopt retrieves the value of the option.
- int (*po_getopt)(void *, void *, size_t *, int);
+ // ep_options is an array of endpoint options. The final
+ // element must have a NULL name. If this member is NULL, then
+ // no transport specific options are available.
+ nni_tran_option *ep_options;
};
-// Pipe operations are entry points called by the socket. These may be called
-// with socket locks held, so it is forbidden for the transport to call
-// back into the socket at this point. (Which is one reason pointers back
-// to socket or even enclosing pipe state, are not provided.)
+// Pipe operations are entry points called by the socket. These may be
+// called with socket locks held, so it is forbidden for the transport
+// to call back into the socket at this point. (Which is one reason
+// pointers back to socket or even enclosing pipe state, are not
+// provided.)
struct nni_tran_pipe_ops {
// p_fini destroys the pipe. This should clean up all local
- // resources, including closing files and freeing memory, used by
- // the pipe. After this call returns, the system will not make
- // further calls on the same pipe.
+ // resources, including closing files and freeing memory, used
+ // by the pipe. After this call returns, the system will not
+ // make further calls on the same pipe.
void (*p_fini)(void *);
// p_start starts the pipe running. This gives the transport a
- // chance to hook into any transport specific negotiation phase.
- // The pipe will not have its p_send or p_recv calls started, and
- // will not be access by the "socket" until the pipe has indicated
- // its readiness by finishing the aio.
+ // chance to hook into any transport specific negotiation
+ // phase. The pipe will not have its p_send or p_recv calls
+ // started, and will not be access by the "socket" until the
+ // pipe has indicated its readiness by finishing the aio.
void (*p_start)(void *, nni_aio *);
// p_stop stops the pipe, waiting for any callbacks that are
@@ -147,31 +141,31 @@ struct nni_tran_pipe_ops {
// resources with p_fini.
void (*p_stop)(void *);
- // p_aio_send queues the message for transmit. If this fails, then
- // the caller may try again with the same message (or free it). If
- // the call succeeds, then the transport has taken ownership of the
- // message, and the caller may not use it again. The transport will
- // have the responsibility to free the message (nng_msg_free()) when
- // it is finished with it.
+ // p_aio_send queues the message for transmit. If this fails,
+ // then the caller may try again with the same message (or free
+ // it). If the call succeeds, then the transport has taken
+ // ownership of the message, and the caller may not use it
+ // again. The transport will have the responsibility to free
+ // the message (nng_msg_free()) when it is finished with it.
void (*p_send)(void *, nni_aio *);
- // p_recv schedules a message receive. This will be performed even for
- // cases where no data is expected, to allow detection of a remote
- // disconnect.
+ // p_recv schedules a message receive. This will be performed
+ // even for cases where no data is expected, to allow detection
+ // of a remote disconnect.
void (*p_recv)(void *, nni_aio *);
- // p_close closes the pipe. Further recv or send operations should
- // return back NNG_ECLOSED.
+ // p_close closes the pipe. Further recv or send operations
+ // should return back NNG_ECLOSED.
void (*p_close)(void *);
- // p_peer returns the peer protocol. This may arrive in whatever
- // transport specific manner is appropriate.
+ // p_peer returns the peer protocol. This may arrive in
+ // whatever transport specific manner is appropriate.
uint16_t (*p_peer)(void *);
- // p_options is an array of pipe options. The final element must have
- // a NULL name. If this member is NULL, then no transport specific
- // options are available.
- nni_tran_pipe_option *p_options;
+ // p_options is an array of pipe options. The final element
+ // must have a NULL name. If this member is NULL, then no
+ // transport specific options are available.
+ nni_tran_option *p_options;
};
// These APIs are used by the framework internally, and not for use by
diff --git a/src/protocol/bus0/bus.c b/src/protocol/bus0/bus.c
index 2427e836..ba719e49 100644
--- a/src/protocol/bus0/bus.c
+++ b/src/protocol/bus0/bus.c
@@ -439,10 +439,10 @@ static nni_proto_pipe_ops bus0_pipe_ops = {
.pipe_stop = bus0_pipe_stop,
};
-static nni_proto_sock_option bus0_sock_options[] = {
+static nni_proto_option bus0_sock_options[] = {
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/pair0/pair.c b/src/protocol/pair0/pair.c
index 87900793..4ab9f9e8 100644
--- a/src/protocol/pair0/pair.c
+++ b/src/protocol/pair0/pair.c
@@ -269,10 +269,10 @@ static nni_proto_pipe_ops pair0_pipe_ops = {
.pipe_stop = pair0_pipe_stop,
};
-static nni_proto_sock_option pair0_sock_options[] = {
+static nni_proto_option pair0_sock_options[] = {
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
}
};
diff --git a/src/protocol/pair1/pair.c b/src/protocol/pair1/pair.c
index 584c147d..0c6a4867 100644
--- a/src/protocol/pair1/pair.c
+++ b/src/protocol/pair1/pair.c
@@ -428,39 +428,39 @@ pair1_sock_close(void *arg)
}
static int
-pair1_sock_setopt_maxttl(void *arg, const void *buf, size_t sz, int typ)
+pair1_sock_set_maxttl(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
pair1_sock *s = arg;
int rv;
nni_mtx_lock(&s->mtx); // Have to be locked against recv cb.
- rv = nni_copyin_int(&s->ttl, buf, sz, 1, 255, typ);
+ rv = nni_copyin_int(&s->ttl, buf, sz, 1, 255, t);
nni_mtx_unlock(&s->mtx);
return (rv);
}
static int
-pair1_sock_getopt_maxttl(void *arg, void *buf, size_t *szp, int typ)
+pair1_sock_get_maxttl(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
pair1_sock *s = arg;
- return (nni_copyout_int(s->ttl, buf, szp, typ));
+ return (nni_copyout_int(s->ttl, buf, szp, t));
}
static int
-pair1_sock_setopt_poly(void *arg, const void *buf, size_t sz, int typ)
+pair1_sock_set_poly(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
pair1_sock *s = arg;
int rv;
nni_mtx_lock(&s->mtx);
- rv = s->started ? NNG_ESTATE : nni_copyin_bool(&s->poly, buf, sz, typ);
+ rv = s->started ? NNG_ESTATE : nni_copyin_bool(&s->poly, buf, sz, t);
nni_mtx_unlock(&s->mtx);
return (rv);
}
static int
-pair1_sock_getopt_poly(void *arg, void *buf, size_t *szp, int typ)
+pair1_sock_get_poly(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
pair1_sock *s = arg;
- return (nni_copyout_bool(s->poly, buf, szp, typ));
+ return (nni_copyout_bool(s->poly, buf, szp, t));
}
static void
@@ -487,22 +487,22 @@ static nni_proto_pipe_ops pair1_pipe_ops = {
.pipe_stop = pair1_pipe_stop,
};
-static nni_proto_sock_option pair1_sock_options[] = {
+static nni_proto_option pair1_sock_options[] = {
{
- .pso_name = NNG_OPT_MAXTTL,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = pair1_sock_getopt_maxttl,
- .pso_setopt = pair1_sock_setopt_maxttl,
+ .o_name = NNG_OPT_MAXTTL,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = pair1_sock_get_maxttl,
+ .o_set = pair1_sock_set_maxttl,
},
{
- .pso_name = NNG_OPT_PAIR1_POLY,
- .pso_type = NNI_TYPE_BOOL,
- .pso_getopt = pair1_sock_getopt_poly,
- .pso_setopt = pair1_sock_setopt_poly,
+ .o_name = NNG_OPT_PAIR1_POLY,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = pair1_sock_get_poly,
+ .o_set = pair1_sock_set_poly,
},
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/pipeline0/pull.c b/src/protocol/pipeline0/pull.c
index f7d5d9a2..63243cb5 100644
--- a/src/protocol/pipeline0/pull.c
+++ b/src/protocol/pipeline0/pull.c
@@ -216,10 +216,10 @@ static nni_proto_pipe_ops pull0_pipe_ops = {
.pipe_stop = pull0_pipe_stop,
};
-static nni_proto_sock_option pull0_sock_options[] = {
+static nni_proto_option pull0_sock_options[] = {
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/pipeline0/push.c b/src/protocol/pipeline0/push.c
index e413cf46..9585b86c 100644
--- a/src/protocol/pipeline0/push.c
+++ b/src/protocol/pipeline0/push.c
@@ -228,10 +228,10 @@ static nni_proto_pipe_ops push0_pipe_ops = {
.pipe_stop = push0_pipe_stop,
};
-static nni_proto_sock_option push0_sock_options[] = {
+static nni_proto_option push0_sock_options[] = {
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/pubsub0/pub.c b/src/protocol/pubsub0/pub.c
index 4db48754..72cd1daa 100644
--- a/src/protocol/pubsub0/pub.c
+++ b/src/protocol/pubsub0/pub.c
@@ -304,10 +304,10 @@ static nni_proto_pipe_ops pub0_pipe_ops = {
.pipe_stop = pub0_pipe_stop,
};
-static nni_proto_sock_option pub0_sock_options[] = {
+static nni_proto_option pub0_sock_options[] = {
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/pubsub0/sub.c b/src/protocol/pubsub0/sub.c
index a7d6b9f5..2e8be4be 100644
--- a/src/protocol/pubsub0/sub.c
+++ b/src/protocol/pubsub0/sub.c
@@ -194,12 +194,12 @@ sub0_recv_cb(void *arg)
// to replace this with a patricia trie, like old nanomsg had.
static int
-sub0_subscribe(void *arg, const void *buf, size_t sz, int typ)
+sub0_subscribe(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
sub0_sock * s = arg;
sub0_topic *topic;
sub0_topic *newtopic;
- NNI_ARG_UNUSED(typ);
+ NNI_ARG_UNUSED(t);
nni_mtx_lock(&s->lk);
NNI_LIST_FOREACH (&s->topics, topic) {
@@ -245,12 +245,12 @@ sub0_subscribe(void *arg, const void *buf, size_t sz, int typ)
}
static int
-sub0_unsubscribe(void *arg, const void *buf, size_t sz, int typ)
+sub0_unsubscribe(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
sub0_sock * s = arg;
sub0_topic *topic;
int rv;
- NNI_ARG_UNUSED(typ);
+ NNI_ARG_UNUSED(t);
nni_mtx_lock(&s->lk);
NNI_LIST_FOREACH (&s->topics, topic) {
@@ -348,22 +348,20 @@ static nni_proto_pipe_ops sub0_pipe_ops = {
.pipe_stop = sub0_pipe_stop,
};
-static nni_proto_sock_option sub0_sock_options[] = {
+static nni_proto_option sub0_sock_options[] = {
{
- .pso_name = NNG_OPT_SUB_SUBSCRIBE,
- .pso_type = NNI_TYPE_OPAQUE,
- .pso_getopt = NULL,
- .pso_setopt = sub0_subscribe,
+ .o_name = NNG_OPT_SUB_SUBSCRIBE,
+ .o_type = NNI_TYPE_OPAQUE,
+ .o_set = sub0_subscribe,
},
{
- .pso_name = NNG_OPT_SUB_UNSUBSCRIBE,
- .pso_type = NNI_TYPE_OPAQUE,
- .pso_getopt = NULL,
- .pso_setopt = sub0_unsubscribe,
+ .o_name = NNG_OPT_SUB_UNSUBSCRIBE,
+ .o_type = NNI_TYPE_OPAQUE,
+ .o_set = sub0_unsubscribe,
},
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/reqrep0/rep.c b/src/protocol/reqrep0/rep.c
index 33c9efcd..1f4f0b33 100644
--- a/src/protocol/reqrep0/rep.c
+++ b/src/protocol/reqrep0/rep.c
@@ -605,23 +605,23 @@ drop:
}
static int
-rep0_sock_setopt_maxttl(void *arg, const void *buf, size_t sz, int typ)
+rep0_sock_set_maxttl(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
rep0_sock *s = arg;
- return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, typ));
+ return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, t));
}
static int
-rep0_sock_getopt_maxttl(void *arg, void *buf, size_t *szp, int typ)
+rep0_sock_get_maxttl(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
rep0_sock *s = arg;
- return (nni_copyout_int(s->ttl, buf, szp, typ));
+ return (nni_copyout_int(s->ttl, buf, szp, t));
}
static int
-rep0_sock_getopt_sendfd(void *arg, void *buf, size_t *szp, int typ)
+rep0_sock_get_sendfd(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
rep0_sock *s = arg;
int rv;
@@ -630,11 +630,11 @@ rep0_sock_getopt_sendfd(void *arg, void *buf, size_t *szp, int typ)
if ((rv = nni_pollable_getfd(s->sendable, &fd)) != 0) {
return (rv);
}
- return (nni_copyout_int(fd, buf, szp, typ));
+ return (nni_copyout_int(fd, buf, szp, t));
}
static int
-rep0_sock_getopt_recvfd(void *arg, void *buf, size_t *szp, int typ)
+rep0_sock_get_recvfd(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
rep0_sock *s = arg;
int rv;
@@ -644,7 +644,7 @@ rep0_sock_getopt_recvfd(void *arg, void *buf, size_t *szp, int typ)
return (rv);
}
- return (nni_copyout_int(fd, buf, szp, typ));
+ return (nni_copyout_int(fd, buf, szp, t));
}
static void
@@ -680,28 +680,26 @@ static nni_proto_ctx_ops rep0_ctx_ops = {
.ctx_recv = rep0_ctx_recv,
};
-static nni_proto_sock_option rep0_sock_options[] = {
+static nni_proto_option rep0_sock_options[] = {
{
- .pso_name = NNG_OPT_MAXTTL,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = rep0_sock_getopt_maxttl,
- .pso_setopt = rep0_sock_setopt_maxttl,
+ .o_name = NNG_OPT_MAXTTL,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = rep0_sock_get_maxttl,
+ .o_set = rep0_sock_set_maxttl,
},
{
- .pso_name = NNG_OPT_RECVFD,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = rep0_sock_getopt_recvfd,
- .pso_setopt = NULL,
+ .o_name = NNG_OPT_RECVFD,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = rep0_sock_get_recvfd,
},
{
- .pso_name = NNG_OPT_SENDFD,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = rep0_sock_getopt_sendfd,
- .pso_setopt = NULL,
+ .o_name = NNG_OPT_SENDFD,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = rep0_sock_get_sendfd,
},
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/reqrep0/req.c b/src/protocol/reqrep0/req.c
index fc9d7271..8a0dd4d8 100644
--- a/src/protocol/reqrep0/req.c
+++ b/src/protocol/reqrep0/req.c
@@ -479,17 +479,17 @@ req0_ctx_fini(void *arg)
}
static int
-req0_ctx_setopt_resendtime(void *arg, const void *buf, size_t sz, int typ)
+req0_ctx_set_resendtime(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
req0_ctx *ctx = arg;
- return (nni_copyin_ms(&ctx->retry, buf, sz, typ));
+ return (nni_copyin_ms(&ctx->retry, buf, sz, t));
}
static int
-req0_ctx_getopt_resendtime(void *arg, void *buf, size_t *szp, int typ)
+req0_ctx_get_resendtime(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
req0_ctx *ctx = arg;
- return (nni_copyout_ms(ctx->retry, buf, szp, typ));
+ return (nni_copyout_ms(ctx->retry, buf, szp, t));
}
static void
@@ -782,38 +782,38 @@ req0_sock_recv(void *arg, nni_aio *aio)
}
static int
-req0_sock_setopt_maxttl(void *arg, const void *buf, size_t sz, int typ)
+req0_sock_set_maxttl(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
req0_sock *s = arg;
- return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, typ));
+ return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, t));
}
static int
-req0_sock_getopt_maxttl(void *arg, void *buf, size_t *szp, int typ)
+req0_sock_get_maxttl(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
req0_sock *s = arg;
- return (nni_copyout_int(s->ttl, buf, szp, typ));
+ return (nni_copyout_int(s->ttl, buf, szp, t));
}
static int
-req0_sock_setopt_resendtime(void *arg, const void *buf, size_t sz, int typ)
+req0_sock_set_resendtime(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
req0_sock *s = arg;
int rv;
- rv = req0_ctx_setopt_resendtime(s->ctx, buf, sz, typ);
+ rv = req0_ctx_set_resendtime(s->ctx, buf, sz, t);
s->retry = s->ctx->retry;
return (rv);
}
static int
-req0_sock_getopt_resendtime(void *arg, void *buf, size_t *szp, int typ)
+req0_sock_get_resendtime(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
req0_sock *s = arg;
- return (req0_ctx_getopt_resendtime(s->ctx, buf, szp, typ));
+ return (req0_ctx_get_resendtime(s->ctx, buf, szp, t));
}
static int
-req0_sock_getopt_sendfd(void *arg, void *buf, size_t *szp, int typ)
+req0_sock_get_sendfd(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
req0_sock *s = arg;
int rv;
@@ -822,11 +822,11 @@ req0_sock_getopt_sendfd(void *arg, void *buf, size_t *szp, int typ)
if ((rv = nni_pollable_getfd(s->sendable, &fd)) != 0) {
return (rv);
}
- return (nni_copyout_int(fd, buf, szp, typ));
+ return (nni_copyout_int(fd, buf, szp, t));
}
static int
-req0_sock_getopt_recvfd(void *arg, void *buf, size_t *szp, int typ)
+req0_sock_get_recvfd(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
req0_sock *s = arg;
int rv;
@@ -836,7 +836,7 @@ req0_sock_getopt_recvfd(void *arg, void *buf, size_t *szp, int typ)
return (rv);
}
- return (nni_copyout_int(fd, buf, szp, typ));
+ return (nni_copyout_int(fd, buf, szp, t));
}
static nni_proto_pipe_ops req0_pipe_ops = {
@@ -847,15 +847,15 @@ static nni_proto_pipe_ops req0_pipe_ops = {
.pipe_stop = req0_pipe_stop,
};
-static nni_proto_ctx_option req0_ctx_options[] = {
+static nni_proto_option req0_ctx_options[] = {
{
- .co_name = NNG_OPT_REQ_RESENDTIME,
- .co_type = NNI_TYPE_DURATION,
- .co_getopt = req0_ctx_getopt_resendtime,
- .co_setopt = req0_ctx_setopt_resendtime,
+ .o_name = NNG_OPT_REQ_RESENDTIME,
+ .o_type = NNI_TYPE_DURATION,
+ .o_get = req0_ctx_get_resendtime,
+ .o_set = req0_ctx_set_resendtime,
},
{
- .co_name = NULL,
+ .o_name = NULL,
},
};
@@ -867,34 +867,32 @@ static nni_proto_ctx_ops req0_ctx_ops = {
.ctx_options = req0_ctx_options,
};
-static nni_proto_sock_option req0_sock_options[] = {
+static nni_proto_option req0_sock_options[] = {
{
- .pso_name = NNG_OPT_MAXTTL,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = req0_sock_getopt_maxttl,
- .pso_setopt = req0_sock_setopt_maxttl,
+ .o_name = NNG_OPT_MAXTTL,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = req0_sock_get_maxttl,
+ .o_set = req0_sock_set_maxttl,
},
{
- .pso_name = NNG_OPT_REQ_RESENDTIME,
- .pso_type = NNI_TYPE_DURATION,
- .pso_getopt = req0_sock_getopt_resendtime,
- .pso_setopt = req0_sock_setopt_resendtime,
+ .o_name = NNG_OPT_REQ_RESENDTIME,
+ .o_type = NNI_TYPE_DURATION,
+ .o_get = req0_sock_get_resendtime,
+ .o_set = req0_sock_set_resendtime,
},
{
- .pso_name = NNG_OPT_RECVFD,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = req0_sock_getopt_recvfd,
- .pso_setopt = NULL,
+ .o_name = NNG_OPT_RECVFD,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = req0_sock_get_recvfd,
},
{
- .pso_name = NNG_OPT_SENDFD,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = req0_sock_getopt_sendfd,
- .pso_setopt = NULL,
+ .o_name = NNG_OPT_SENDFD,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = req0_sock_get_sendfd,
},
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/reqrep0/xrep.c b/src/protocol/reqrep0/xrep.c
index f6cd29eb..e3b9b605 100644
--- a/src/protocol/reqrep0/xrep.c
+++ b/src/protocol/reqrep0/xrep.c
@@ -369,17 +369,17 @@ xrep0_pipe_putq_cb(void *arg)
}
static int
-xrep0_sock_setopt_maxttl(void *arg, const void *buf, size_t sz, int typ)
+xrep0_sock_set_maxttl(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
xrep0_sock *s = arg;
- return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, typ));
+ return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, t));
}
static int
-xrep0_sock_getopt_maxttl(void *arg, void *buf, size_t *szp, int typ)
+xrep0_sock_get_maxttl(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
xrep0_sock *s = arg;
- return (nni_copyout_int(s->ttl, buf, szp, typ));
+ return (nni_copyout_int(s->ttl, buf, szp, t));
}
static void
@@ -408,16 +408,16 @@ static nni_proto_pipe_ops xrep0_pipe_ops = {
.pipe_stop = xrep0_pipe_stop,
};
-static nni_proto_sock_option xrep0_sock_options[] = {
+static nni_proto_option xrep0_sock_options[] = {
{
- .pso_name = NNG_OPT_MAXTTL,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = xrep0_sock_getopt_maxttl,
- .pso_setopt = xrep0_sock_setopt_maxttl,
+ .o_name = NNG_OPT_MAXTTL,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = xrep0_sock_get_maxttl,
+ .o_set = xrep0_sock_set_maxttl,
},
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/reqrep0/xreq.c b/src/protocol/reqrep0/xreq.c
index 793411af..2f0a3652 100644
--- a/src/protocol/reqrep0/xreq.c
+++ b/src/protocol/reqrep0/xreq.c
@@ -268,17 +268,17 @@ xreq0_sock_recv(void *arg, nni_aio *aio)
}
static int
-xreq0_sock_setopt_maxttl(void *arg, const void *buf, size_t sz, int typ)
+xreq0_sock_set_maxttl(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
xreq0_sock *s = arg;
- return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, typ));
+ return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, t));
}
static int
-xreq0_sock_getopt_maxttl(void *arg, void *buf, size_t *szp, int typ)
+xreq0_sock_get_maxttl(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
xreq0_sock *s = arg;
- return (nni_copyout_int(s->ttl, buf, szp, typ));
+ return (nni_copyout_int(s->ttl, buf, szp, t));
}
static nni_proto_pipe_ops xreq0_pipe_ops = {
@@ -289,16 +289,16 @@ static nni_proto_pipe_ops xreq0_pipe_ops = {
.pipe_stop = xreq0_pipe_stop,
};
-static nni_proto_sock_option xreq0_sock_options[] = {
+static nni_proto_option xreq0_sock_options[] = {
{
- .pso_name = NNG_OPT_MAXTTL,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = xreq0_sock_getopt_maxttl,
- .pso_setopt = xreq0_sock_setopt_maxttl,
+ .o_name = NNG_OPT_MAXTTL,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = xreq0_sock_get_maxttl,
+ .o_set = xreq0_sock_set_maxttl,
},
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/survey0/respond.c b/src/protocol/survey0/respond.c
index 569fd4ea..db18a4e8 100644
--- a/src/protocol/survey0/respond.c
+++ b/src/protocol/survey0/respond.c
@@ -587,21 +587,21 @@ drop:
}
static int
-resp0_sock_setopt_maxttl(void *arg, const void *buf, size_t sz, int typ)
+resp0_sock_set_maxttl(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
resp0_sock *s = arg;
- return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, typ));
+ return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, t));
}
static int
-resp0_sock_getopt_maxttl(void *arg, void *buf, size_t *szp, int typ)
+resp0_sock_get_maxttl(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
resp0_sock *s = arg;
- return (nni_copyout_int(s->ttl, buf, szp, typ));
+ return (nni_copyout_int(s->ttl, buf, szp, t));
}
static int
-resp0_sock_getopt_sendfd(void *arg, void *buf, size_t *szp, int typ)
+resp0_sock_get_sendfd(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
resp0_sock *s = arg;
int rv;
@@ -610,11 +610,11 @@ resp0_sock_getopt_sendfd(void *arg, void *buf, size_t *szp, int typ)
if ((rv = nni_pollable_getfd(s->sendable, &fd)) != 0) {
return (rv);
}
- return (nni_copyout_int(fd, buf, szp, typ));
+ return (nni_copyout_int(fd, buf, szp, t));
}
static int
-resp0_sock_getopt_recvfd(void *arg, void *buf, size_t *szp, int typ)
+resp0_sock_get_recvfd(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
resp0_sock *s = arg;
int rv;
@@ -623,7 +623,7 @@ resp0_sock_getopt_recvfd(void *arg, void *buf, size_t *szp, int typ)
if ((rv = nni_pollable_getfd(s->recvable, &fd)) != 0) {
return (rv);
}
- return (nni_copyout_int(fd, buf, szp, typ));
+ return (nni_copyout_int(fd, buf, szp, t));
}
static void
@@ -657,28 +657,28 @@ static nni_proto_ctx_ops resp0_ctx_ops = {
.ctx_recv = resp0_ctx_recv,
};
-static nni_proto_sock_option resp0_sock_options[] = {
+static nni_proto_option resp0_sock_options[] = {
{
- .pso_name = NNG_OPT_MAXTTL,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = resp0_sock_getopt_maxttl,
- .pso_setopt = resp0_sock_setopt_maxttl,
+ .o_name = NNG_OPT_MAXTTL,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = resp0_sock_get_maxttl,
+ .o_set = resp0_sock_set_maxttl,
},
{
- .pso_name = NNG_OPT_RECVFD,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = resp0_sock_getopt_recvfd,
- .pso_setopt = NULL,
+ .o_name = NNG_OPT_RECVFD,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = resp0_sock_get_recvfd,
+ .o_set = NULL,
},
{
- .pso_name = NNG_OPT_SENDFD,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = resp0_sock_getopt_sendfd,
- .pso_setopt = NULL,
+ .o_name = NNG_OPT_SENDFD,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = resp0_sock_get_sendfd,
+ .o_set = NULL,
},
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/survey0/survey.c b/src/protocol/survey0/survey.c
index 24a35003..42d88f13 100644
--- a/src/protocol/survey0/survey.c
+++ b/src/protocol/survey0/survey.c
@@ -449,49 +449,50 @@ surv0_pipe_recv_cb(void *arg)
}
static int
-surv0_ctx_setopt_surveytime(void *arg, const void *buf, size_t sz, int typ)
+surv0_ctx_set_surveytime(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
surv0_ctx *ctx = arg;
- return (nni_copyin_ms(&ctx->survtime, buf, sz, typ));
+ return (nni_copyin_ms(&ctx->survtime, buf, sz, t));
}
static int
-surv0_ctx_getopt_surveytime(void *arg, void *buf, size_t *szp, int typ)
+surv0_ctx_get_surveytime(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
surv0_ctx *ctx = arg;
- return (nni_copyout_ms(ctx->survtime, buf, szp, typ));
+ return (nni_copyout_ms(ctx->survtime, buf, szp, t));
}
static int
-surv0_sock_setopt_maxttl(void *arg, const void *buf, size_t sz, int typ)
+surv0_sock_set_maxttl(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
surv0_sock *s = arg;
- return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, typ));
+ return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, t));
}
static int
-surv0_sock_getopt_maxttl(void *arg, void *buf, size_t *szp, int typ)
+surv0_sock_get_maxttl(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
surv0_sock *s = arg;
- return (nni_copyout_int(s->ttl, buf, szp, typ));
+ return (nni_copyout_int(s->ttl, buf, szp, t));
}
static int
-surv0_sock_setopt_surveytime(void *arg, const void *buf, size_t sz, int typ)
+surv0_sock_set_surveytime(
+ void *arg, const void *buf, size_t sz, nni_opt_type t)
{
surv0_sock *s = arg;
- return (surv0_ctx_setopt_surveytime(s->ctx, buf, sz, typ));
+ return (surv0_ctx_set_surveytime(s->ctx, buf, sz, t));
}
static int
-surv0_sock_getopt_surveytime(void *arg, void *buf, size_t *szp, int typ)
+surv0_sock_get_surveytime(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
surv0_sock *s = arg;
- return (surv0_ctx_getopt_surveytime(s->ctx, buf, szp, typ));
+ return (surv0_ctx_get_surveytime(s->ctx, buf, szp, t));
}
static int
-surv0_sock_getopt_sendfd(void *arg, void *buf, size_t *szp, int typ)
+surv0_sock_get_sendfd(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
surv0_sock *sock = arg;
int rv;
@@ -510,11 +511,11 @@ surv0_sock_getopt_sendfd(void *arg, void *buf, size_t *szp, int typ)
if ((rv = nni_pollable_getfd(sock->sendable, &fd)) != 0) {
return (rv);
}
- return (nni_copyout_int(fd, buf, szp, typ));
+ return (nni_copyout_int(fd, buf, szp, t));
}
static int
-surv0_sock_getopt_recvfd(void *arg, void *buf, size_t *szp, int typ)
+surv0_sock_get_recvfd(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
surv0_sock * sock = arg;
nni_pollable *recvable;
@@ -525,7 +526,7 @@ surv0_sock_getopt_recvfd(void *arg, void *buf, size_t *szp, int typ)
((rv = nni_pollable_getfd(recvable, &fd)) != 0)) {
return (rv);
}
- return (nni_copyout_int(fd, buf, szp, typ));
+ return (nni_copyout_int(fd, buf, szp, t));
}
static void
@@ -550,15 +551,15 @@ static nni_proto_pipe_ops surv0_pipe_ops = {
.pipe_stop = surv0_pipe_stop,
};
-static nni_proto_ctx_option surv0_ctx_options[] = {
+static nni_proto_option surv0_ctx_options[] = {
{
- .co_name = NNG_OPT_SURVEYOR_SURVEYTIME,
- .co_type = NNI_TYPE_DURATION,
- .co_getopt = surv0_ctx_getopt_surveytime,
- .co_setopt = surv0_ctx_setopt_surveytime,
+ .o_name = NNG_OPT_SURVEYOR_SURVEYTIME,
+ .o_type = NNI_TYPE_DURATION,
+ .o_get = surv0_ctx_get_surveytime,
+ .o_set = surv0_ctx_set_surveytime,
},
{
- .co_name = NULL,
+ .o_name = NULL,
}
};
static nni_proto_ctx_ops surv0_ctx_ops = {
@@ -569,34 +570,32 @@ static nni_proto_ctx_ops surv0_ctx_ops = {
.ctx_options = surv0_ctx_options,
};
-static nni_proto_sock_option surv0_sock_options[] = {
+static nni_proto_option surv0_sock_options[] = {
{
- .pso_name = NNG_OPT_SURVEYOR_SURVEYTIME,
- .pso_type = NNI_TYPE_DURATION,
- .pso_getopt = surv0_sock_getopt_surveytime,
- .pso_setopt = surv0_sock_setopt_surveytime,
+ .o_name = NNG_OPT_SURVEYOR_SURVEYTIME,
+ .o_type = NNI_TYPE_DURATION,
+ .o_get = surv0_sock_get_surveytime,
+ .o_set = surv0_sock_set_surveytime,
},
{
- .pso_name = NNG_OPT_MAXTTL,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = surv0_sock_getopt_maxttl,
- .pso_setopt = surv0_sock_setopt_maxttl,
+ .o_name = NNG_OPT_MAXTTL,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = surv0_sock_get_maxttl,
+ .o_set = surv0_sock_set_maxttl,
},
{
- .pso_name = NNG_OPT_RECVFD,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = surv0_sock_getopt_recvfd,
- .pso_setopt = NULL,
+ .o_name = NNG_OPT_RECVFD,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = surv0_sock_get_recvfd,
},
{
- .pso_name = NNG_OPT_SENDFD,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = surv0_sock_getopt_sendfd,
- .pso_setopt = NULL,
+ .o_name = NNG_OPT_SENDFD,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = surv0_sock_get_sendfd,
},
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/survey0/xrespond.c b/src/protocol/survey0/xrespond.c
index 13a3d759..03a47e92 100644
--- a/src/protocol/survey0/xrespond.c
+++ b/src/protocol/survey0/xrespond.c
@@ -348,17 +348,17 @@ xresp0_putq_cb(void *arg)
}
static int
-xresp0_sock_setopt_maxttl(void *arg, const void *buf, size_t sz, int typ)
+xresp0_sock_set_maxttl(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
xresp0_sock *s = arg;
- return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, typ));
+ return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, t));
}
static int
-xresp0_sock_getopt_maxttl(void *arg, void *buf, size_t *szp, int typ)
+xresp0_sock_get_maxttl(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
xresp0_sock *s = arg;
- return (nni_copyout_int(s->ttl, buf, szp, typ));
+ return (nni_copyout_int(s->ttl, buf, szp, t));
}
static void
@@ -385,16 +385,16 @@ static nni_proto_pipe_ops xresp0_pipe_ops = {
.pipe_stop = xresp0_pipe_stop,
};
-static nni_proto_sock_option xresp0_sock_options[] = {
+static nni_proto_option xresp0_sock_options[] = {
{
- .pso_name = NNG_OPT_MAXTTL,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = xresp0_sock_getopt_maxttl,
- .pso_setopt = xresp0_sock_setopt_maxttl,
+ .o_name = NNG_OPT_MAXTTL,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = xresp0_sock_get_maxttl,
+ .o_set = xresp0_sock_set_maxttl,
},
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/protocol/survey0/xsurvey.c b/src/protocol/survey0/xsurvey.c
index db21e688..bad24042 100644
--- a/src/protocol/survey0/xsurvey.c
+++ b/src/protocol/survey0/xsurvey.c
@@ -280,17 +280,17 @@ xsurv0_recv_cb(void *arg)
}
static int
-xsurv0_sock_setopt_maxttl(void *arg, const void *buf, size_t sz, int typ)
+xsurv0_sock_set_maxttl(void *arg, const void *buf, size_t sz, nni_opt_type t)
{
xsurv0_sock *s = arg;
- return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, typ));
+ return (nni_copyin_int(&s->ttl, buf, sz, 1, 255, t));
}
static int
-xsurv0_sock_getopt_maxttl(void *arg, void *buf, size_t *szp, int typ)
+xsurv0_sock_get_maxttl(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
xsurv0_sock *s = arg;
- return (nni_copyout_int(s->ttl, buf, szp, typ));
+ return (nni_copyout_int(s->ttl, buf, szp, t));
}
static void
@@ -356,16 +356,16 @@ static nni_proto_pipe_ops xsurv0_pipe_ops = {
.pipe_stop = xsurv0_pipe_stop,
};
-static nni_proto_sock_option xsurv0_sock_options[] = {
+static nni_proto_option xsurv0_sock_options[] = {
{
- .pso_name = NNG_OPT_MAXTTL,
- .pso_type = NNI_TYPE_INT32,
- .pso_getopt = xsurv0_sock_getopt_maxttl,
- .pso_setopt = xsurv0_sock_setopt_maxttl,
+ .o_name = NNG_OPT_MAXTTL,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = xsurv0_sock_get_maxttl,
+ .o_set = xsurv0_sock_set_maxttl,
},
// terminate list
{
- .pso_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/transport/inproc/inproc.c b/src/transport/inproc/inproc.c
index bc51d971..7a52d89f 100644
--- a/src/transport/inproc/inproc.c
+++ b/src/transport/inproc/inproc.c
@@ -177,7 +177,7 @@ nni_inproc_pipe_peer(void *arg)
}
static int
-nni_inproc_pipe_get_addr(void *arg, void *buf, size_t *szp, int typ)
+nni_inproc_pipe_get_addr(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
nni_inproc_pipe *p = arg;
nni_sockaddr sa;
@@ -185,7 +185,7 @@ nni_inproc_pipe_get_addr(void *arg, void *buf, size_t *szp, int typ)
memset(&sa, 0, sizeof(sa));
sa.s_inproc.sa_family = NNG_AF_INPROC;
nni_strlcpy(sa.s_inproc.sa_name, p->addr, sizeof(sa.s_inproc.sa_name));
- return (nni_copyout_sockaddr(&sa, buf, szp, typ));
+ return (nni_copyout_sockaddr(&sa, buf, szp, t));
}
static int
@@ -435,20 +435,20 @@ nni_inproc_ep_accept(void *arg, nni_aio *aio)
nni_mtx_unlock(&nni_inproc.mx);
}
-static nni_tran_pipe_option nni_inproc_pipe_options[] = {
+static nni_tran_option nni_inproc_pipe_options[] = {
{
- .po_name = NNG_OPT_LOCADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = nni_inproc_pipe_get_addr,
+ .o_name = NNG_OPT_LOCADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = nni_inproc_pipe_get_addr,
},
{
- .po_name = NNG_OPT_REMADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = nni_inproc_pipe_get_addr,
+ .o_name = NNG_OPT_REMADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = nni_inproc_pipe_get_addr,
},
// terminate list
{
- .po_name = NULL,
+ .o_name = NULL,
},
};
@@ -461,10 +461,10 @@ static nni_tran_pipe_ops nni_inproc_pipe_ops = {
.p_options = nni_inproc_pipe_options,
};
-static nni_tran_ep_option nni_inproc_ep_options[] = {
+static nni_tran_option nni_inproc_ep_options[] = {
// terminate list
{
- .eo_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/transport/ipc/ipc.c b/src/transport/ipc/ipc.c
index 6191dea6..c5c7032a 100644
--- a/src/transport/ipc/ipc.c
+++ b/src/transport/ipc/ipc.c
@@ -20,11 +20,11 @@
// Windows named pipes. Other platforms could use other mechanisms,
// but all implementations on the platform must use the same mechanism.
-typedef struct nni_ipc_pipe nni_ipc_pipe;
-typedef struct nni_ipc_ep nni_ipc_ep;
+typedef struct ipc_pipe ipc_pipe;
+typedef struct ipc_ep ipc_ep;
-// nni_ipc_pipe is one end of an IPC connection.
-struct nni_ipc_pipe {
+// ipc_pipe is one end of an IPC connection.
+struct ipc_pipe {
nni_plat_ipc_pipe *ipp;
uint16_t peer;
uint16_t proto;
@@ -48,7 +48,7 @@ struct nni_ipc_pipe {
nni_mtx mtx;
};
-struct nni_ipc_ep {
+struct ipc_ep {
nni_sockaddr sa;
nni_plat_ipc_ep *iep;
uint16_t proto;
@@ -58,28 +58,28 @@ struct nni_ipc_ep {
nni_mtx mtx;
};
-static void nni_ipc_pipe_dosend(nni_ipc_pipe *, nni_aio *);
-static void nni_ipc_pipe_dorecv(nni_ipc_pipe *);
-static void nni_ipc_pipe_send_cb(void *);
-static void nni_ipc_pipe_recv_cb(void *);
-static void nni_ipc_pipe_nego_cb(void *);
-static void nni_ipc_ep_cb(void *);
+static void ipc_pipe_dosend(ipc_pipe *, nni_aio *);
+static void ipc_pipe_dorecv(ipc_pipe *);
+static void ipc_pipe_send_cb(void *);
+static void ipc_pipe_recv_cb(void *);
+static void ipc_pipe_nego_cb(void *);
+static void ipc_ep_cb(void *);
static int
-nni_ipc_tran_init(void)
+ipc_tran_init(void)
{
return (0);
}
static void
-nni_ipc_tran_fini(void)
+ipc_tran_fini(void)
{
}
static void
-nni_ipc_pipe_close(void *arg)
+ipc_pipe_close(void *arg)
{
- nni_ipc_pipe *pipe = arg;
+ ipc_pipe *pipe = arg;
nni_aio_close(pipe->rxaio);
nni_aio_close(pipe->txaio);
@@ -89,9 +89,9 @@ nni_ipc_pipe_close(void *arg)
}
static void
-nni_ipc_pipe_stop(void *arg)
+ipc_pipe_stop(void *arg)
{
- nni_ipc_pipe *pipe = arg;
+ ipc_pipe *pipe = arg;
nni_aio_stop(pipe->rxaio);
nni_aio_stop(pipe->txaio);
@@ -99,9 +99,9 @@ nni_ipc_pipe_stop(void *arg)
}
static void
-nni_ipc_pipe_fini(void *arg)
+ipc_pipe_fini(void *arg)
{
- nni_ipc_pipe *pipe = arg;
+ ipc_pipe *pipe = arg;
nni_aio_fini(pipe->rxaio);
nni_aio_fini(pipe->txaio);
@@ -117,19 +117,19 @@ nni_ipc_pipe_fini(void *arg)
}
static int
-nni_ipc_pipe_init(nni_ipc_pipe **pipep, nni_ipc_ep *ep, void *ipp)
+ipc_pipe_init(ipc_pipe **pipep, ipc_ep *ep, void *ipp)
{
- nni_ipc_pipe *p;
- int rv;
+ ipc_pipe *p;
+ int rv;
if ((p = NNI_ALLOC_STRUCT(p)) == NULL) {
return (NNG_ENOMEM);
}
nni_mtx_init(&p->mtx);
- if (((rv = nni_aio_init(&p->txaio, nni_ipc_pipe_send_cb, p)) != 0) ||
- ((rv = nni_aio_init(&p->rxaio, nni_ipc_pipe_recv_cb, p)) != 0) ||
- ((rv = nni_aio_init(&p->negaio, nni_ipc_pipe_nego_cb, p)) != 0)) {
- nni_ipc_pipe_fini(p);
+ if (((rv = nni_aio_init(&p->txaio, ipc_pipe_send_cb, p)) != 0) ||
+ ((rv = nni_aio_init(&p->rxaio, ipc_pipe_recv_cb, p)) != 0) ||
+ ((rv = nni_aio_init(&p->negaio, ipc_pipe_nego_cb, p)) != 0)) {
+ ipc_pipe_fini(p);
return (rv);
}
nni_aio_list_init(&p->sendq);
@@ -146,9 +146,9 @@ nni_ipc_pipe_init(nni_ipc_pipe **pipep, nni_ipc_ep *ep, void *ipp)
}
static void
-nni_ipc_cancel_start(nni_aio *aio, int rv)
+ipc_cancel_start(nni_aio *aio, int rv)
{
- nni_ipc_pipe *pipe = nni_aio_get_prov_data(aio);
+ ipc_pipe *pipe = nni_aio_get_prov_data(aio);
nni_mtx_lock(&pipe->mtx);
if (pipe->user_negaio != aio) {
@@ -163,11 +163,11 @@ nni_ipc_cancel_start(nni_aio *aio, int rv)
}
static void
-nni_ipc_pipe_nego_cb(void *arg)
+ipc_pipe_nego_cb(void *arg)
{
- nni_ipc_pipe *pipe = arg;
- nni_aio * aio = pipe->negaio;
- int rv;
+ ipc_pipe *pipe = arg;
+ nni_aio * aio = pipe->negaio;
+ int rv;
nni_mtx_lock(&pipe->mtx);
if ((rv = nni_aio_result(aio)) != 0) {
@@ -220,14 +220,14 @@ done:
}
static void
-nni_ipc_pipe_send_cb(void *arg)
+ipc_pipe_send_cb(void *arg)
{
- nni_ipc_pipe *pipe = arg;
- nni_aio * aio;
- nni_aio * txaio = pipe->txaio;
- nni_msg * msg;
- int rv;
- size_t n;
+ ipc_pipe *pipe = arg;
+ nni_aio * aio;
+ nni_aio * txaio = pipe->txaio;
+ nni_msg * msg;
+ int rv;
+ size_t n;
nni_mtx_lock(&pipe->mtx);
aio = nni_list_first(&pipe->sendq);
@@ -255,7 +255,7 @@ nni_ipc_pipe_send_cb(void *arg)
nni_aio_list_remove(aio);
if (!nni_list_empty(&pipe->sendq)) {
// schedule next send
- nni_ipc_pipe_dosend(pipe, nni_list_first(&pipe->sendq));
+ ipc_pipe_dosend(pipe, nni_list_first(&pipe->sendq));
}
nni_mtx_unlock(&pipe->mtx);
@@ -267,14 +267,14 @@ nni_ipc_pipe_send_cb(void *arg)
}
static void
-nni_ipc_pipe_recv_cb(void *arg)
+ipc_pipe_recv_cb(void *arg)
{
- nni_ipc_pipe *pipe = arg;
- nni_aio * aio;
- int rv;
- size_t n;
- nni_msg * msg;
- nni_aio * rxaio = pipe->rxaio;
+ ipc_pipe *pipe = arg;
+ nni_aio * aio;
+ int rv;
+ size_t n;
+ nni_msg * msg;
+ nni_aio * rxaio = pipe->rxaio;
nni_mtx_lock(&pipe->mtx);
aio = nni_list_first(&pipe->recvq);
@@ -346,7 +346,7 @@ nni_ipc_pipe_recv_cb(void *arg)
msg = pipe->rxmsg;
pipe->rxmsg = NULL;
if (!nni_list_empty(&pipe->recvq)) {
- nni_ipc_pipe_dorecv(pipe);
+ ipc_pipe_dorecv(pipe);
}
nni_mtx_unlock(&pipe->mtx);
@@ -367,9 +367,9 @@ recv_error:
}
static void
-nni_ipc_cancel_tx(nni_aio *aio, int rv)
+ipc_cancel_tx(nni_aio *aio, int rv)
{
- nni_ipc_pipe *pipe = nni_aio_get_prov_data(aio);
+ ipc_pipe *pipe = nni_aio_get_prov_data(aio);
nni_mtx_lock(&pipe->mtx);
if (!nni_aio_list_active(aio)) {
@@ -390,7 +390,7 @@ nni_ipc_cancel_tx(nni_aio *aio, int rv)
}
static void
-nni_ipc_pipe_dosend(nni_ipc_pipe *pipe, nni_aio *aio)
+ipc_pipe_dosend(ipc_pipe *pipe, nni_aio *aio)
{
nni_aio *txaio;
nni_msg *msg;
@@ -425,31 +425,31 @@ nni_ipc_pipe_dosend(nni_ipc_pipe *pipe, nni_aio *aio)
}
static void
-nni_ipc_pipe_send(void *arg, nni_aio *aio)
+ipc_pipe_send(void *arg, nni_aio *aio)
{
- nni_ipc_pipe *pipe = arg;
- int rv;
+ ipc_pipe *pipe = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
}
nni_mtx_lock(&pipe->mtx);
- if ((rv = nni_aio_schedule(aio, nni_ipc_cancel_tx, pipe)) != 0) {
+ if ((rv = nni_aio_schedule(aio, ipc_cancel_tx, pipe)) != 0) {
nni_mtx_unlock(&pipe->mtx);
nni_aio_finish_error(aio, rv);
return;
}
nni_list_append(&pipe->sendq, aio);
if (nni_list_first(&pipe->sendq) == aio) {
- nni_ipc_pipe_dosend(pipe, aio);
+ ipc_pipe_dosend(pipe, aio);
}
nni_mtx_unlock(&pipe->mtx);
}
static void
-nni_ipc_cancel_rx(nni_aio *aio, int rv)
+ipc_cancel_rx(nni_aio *aio, int rv)
{
- nni_ipc_pipe *pipe = nni_aio_get_prov_data(aio);
+ ipc_pipe *pipe = nni_aio_get_prov_data(aio);
nni_mtx_lock(&pipe->mtx);
if (!nni_aio_list_active(aio)) {
@@ -470,7 +470,7 @@ nni_ipc_cancel_rx(nni_aio *aio, int rv)
}
static void
-nni_ipc_pipe_dorecv(nni_ipc_pipe *pipe)
+ipc_pipe_dorecv(ipc_pipe *pipe)
{
nni_aio *rxaio;
nni_iov iov;
@@ -486,17 +486,17 @@ nni_ipc_pipe_dorecv(nni_ipc_pipe *pipe)
}
static void
-nni_ipc_pipe_recv(void *arg, nni_aio *aio)
+ipc_pipe_recv(void *arg, nni_aio *aio)
{
- nni_ipc_pipe *pipe = arg;
- int rv;
+ ipc_pipe *pipe = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
}
nni_mtx_lock(&pipe->mtx);
- if ((rv = nni_aio_schedule(aio, nni_ipc_cancel_rx, pipe)) != 0) {
+ if ((rv = nni_aio_schedule(aio, ipc_cancel_rx, pipe)) != 0) {
nni_mtx_unlock(&pipe->mtx);
nni_aio_finish_error(aio, rv);
return;
@@ -504,24 +504,24 @@ nni_ipc_pipe_recv(void *arg, nni_aio *aio)
nni_list_append(&pipe->recvq, aio);
if (nni_list_first(&pipe->recvq) == aio) {
- nni_ipc_pipe_dorecv(pipe);
+ ipc_pipe_dorecv(pipe);
}
nni_mtx_unlock(&pipe->mtx);
}
static void
-nni_ipc_pipe_start(void *arg, nni_aio *aio)
+ipc_pipe_start(void *arg, nni_aio *aio)
{
- nni_ipc_pipe *pipe = arg;
- nni_aio * negaio;
- nni_iov iov;
- int rv;
+ ipc_pipe *pipe = arg;
+ nni_aio * negaio;
+ nni_iov iov;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
}
nni_mtx_lock(&pipe->mtx);
- if ((rv = nni_aio_schedule(aio, nni_ipc_cancel_start, pipe)) != 0) {
+ if ((rv = nni_aio_schedule(aio, ipc_cancel_start, pipe)) != 0) {
nni_mtx_unlock(&pipe->mtx);
nni_aio_finish_error(aio, rv);
return;
@@ -547,72 +547,72 @@ nni_ipc_pipe_start(void *arg, nni_aio *aio)
}
static uint16_t
-nni_ipc_pipe_peer(void *arg)
+ipc_pipe_peer(void *arg)
{
- nni_ipc_pipe *pipe = arg;
+ ipc_pipe *pipe = arg;
return (pipe->peer);
}
static int
-nni_ipc_pipe_get_addr(void *arg, void *buf, size_t *szp, int typ)
+ipc_pipe_get_addr(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
- nni_ipc_pipe *p = arg;
- return (nni_copyout_sockaddr(&p->sa, buf, szp, typ));
+ ipc_pipe *p = arg;
+ return (nni_copyout_sockaddr(&p->sa, buf, szp, t));
}
static int
-nni_ipc_pipe_get_peer_uid(void *arg, void *buf, size_t *szp, int typ)
+ipc_pipe_get_peer_uid(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
- nni_ipc_pipe *p = arg;
- uint64_t id;
- int rv;
+ ipc_pipe *p = arg;
+ uint64_t id;
+ int rv;
if ((rv = nni_plat_ipc_pipe_get_peer_uid(p->ipp, &id)) != 0) {
return (rv);
}
- return (nni_copyout_u64(id, buf, szp, typ));
+ return (nni_copyout_u64(id, buf, szp, t));
}
static int
-nni_ipc_pipe_get_peer_gid(void *arg, void *buf, size_t *szp, int typ)
+ipc_pipe_get_peer_gid(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
- nni_ipc_pipe *p = arg;
- uint64_t id;
- int rv;
+ ipc_pipe *p = arg;
+ uint64_t id;
+ int rv;
if ((rv = nni_plat_ipc_pipe_get_peer_gid(p->ipp, &id)) != 0) {
return (rv);
}
- return (nni_copyout_u64(id, buf, szp, typ));
+ return (nni_copyout_u64(id, buf, szp, t));
}
static int
-nni_ipc_pipe_get_peer_pid(void *arg, void *buf, size_t *szp, int typ)
+ipc_pipe_get_peer_pid(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
- nni_ipc_pipe *p = arg;
- uint64_t id;
- int rv;
+ ipc_pipe *p = arg;
+ uint64_t id;
+ int rv;
if ((rv = nni_plat_ipc_pipe_get_peer_pid(p->ipp, &id)) != 0) {
return (rv);
}
- return (nni_copyout_u64(id, buf, szp, typ));
+ return (nni_copyout_u64(id, buf, szp, t));
}
static int
-nni_ipc_pipe_get_peer_zoneid(void *arg, void *buf, size_t *szp, int typ)
+ipc_pipe_get_peer_zoneid(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
- nni_ipc_pipe *p = arg;
- uint64_t id;
- int rv;
+ ipc_pipe *p = arg;
+ uint64_t id;
+ int rv;
if ((rv = nni_plat_ipc_pipe_get_peer_zoneid(p->ipp, &id)) != 0) {
return (rv);
}
- return (nni_copyout_u64(id, buf, szp, typ));
+ return (nni_copyout_u64(id, buf, szp, t));
}
static void
-nni_ipc_ep_fini(void *arg)
+ipc_ep_fini(void *arg)
{
- nni_ipc_ep *ep = arg;
+ ipc_ep *ep = arg;
nni_aio_stop(ep->aio);
nni_plat_ipc_ep_fini(ep->iep);
@@ -622,11 +622,11 @@ nni_ipc_ep_fini(void *arg)
}
static int
-nni_ipc_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
+ipc_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
{
- nni_ipc_ep *ep;
- int rv;
- size_t sz;
+ ipc_ep *ep;
+ int rv;
+ size_t sz;
if ((ep = NNI_ALLOC_STRUCT(ep)) == NULL) {
return (NNG_ENOMEM);
@@ -637,17 +637,17 @@ nni_ipc_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
ep->sa.s_ipc.sa_family = NNG_AF_IPC;
if (nni_strlcpy(ep->sa.s_ipc.sa_path, url->u_path, sz) >= sz) {
- nni_ipc_ep_fini(ep);
+ ipc_ep_fini(ep);
return (NNG_EADDRINVAL);
}
if ((rv = nni_plat_ipc_ep_init(&ep->iep, &ep->sa, mode)) != 0) {
- nni_ipc_ep_fini(ep);
+ ipc_ep_fini(ep);
return (rv);
}
- if ((rv = nni_aio_init(&ep->aio, nni_ipc_ep_cb, ep)) != 0) {
- nni_ipc_ep_fini(ep);
+ if ((rv = nni_aio_init(&ep->aio, ipc_ep_cb, ep)) != 0) {
+ ipc_ep_fini(ep);
return (rv);
}
ep->proto = nni_sock_proto_id(sock);
@@ -657,9 +657,9 @@ nni_ipc_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
}
static void
-nni_ipc_ep_close(void *arg)
+ipc_ep_close(void *arg)
{
- nni_ipc_ep *ep = arg;
+ ipc_ep *ep = arg;
nni_aio_close(ep->aio);
@@ -669,10 +669,10 @@ nni_ipc_ep_close(void *arg)
}
static int
-nni_ipc_ep_bind(void *arg)
+ipc_ep_bind(void *arg)
{
- nni_ipc_ep *ep = arg;
- int rv;
+ ipc_ep *ep = arg;
+ int rv;
nni_mtx_lock(&ep->mtx);
rv = nni_plat_ipc_ep_listen(ep->iep);
@@ -681,11 +681,11 @@ nni_ipc_ep_bind(void *arg)
}
static void
-nni_ipc_ep_finish(nni_ipc_ep *ep)
+ipc_ep_finish(ipc_ep *ep)
{
- nni_aio * aio;
- int rv;
- nni_ipc_pipe *pipe = NULL;
+ nni_aio * aio;
+ int rv;
+ ipc_pipe *pipe = NULL;
if ((rv = nni_aio_result(ep->aio)) != 0) {
goto done;
@@ -694,7 +694,7 @@ nni_ipc_ep_finish(nni_ipc_ep *ep)
// Attempt to allocate the parent pipe. If this fails we'll
// drop the connection (ENOMEM probably).
- rv = nni_ipc_pipe_init(&pipe, ep, nni_aio_get_output(ep->aio, 0));
+ rv = ipc_pipe_init(&pipe, ep, nni_aio_get_output(ep->aio, 0));
done:
aio = ep->user_aio;
@@ -708,7 +708,7 @@ done:
}
if (pipe != NULL) {
- nni_ipc_pipe_fini(pipe);
+ ipc_pipe_fini(pipe);
}
if (aio != NULL) {
NNI_ASSERT(rv != 0);
@@ -717,19 +717,19 @@ done:
}
static void
-nni_ipc_ep_cb(void *arg)
+ipc_ep_cb(void *arg)
{
- nni_ipc_ep *ep = arg;
+ ipc_ep *ep = arg;
nni_mtx_lock(&ep->mtx);
- nni_ipc_ep_finish(ep);
+ ipc_ep_finish(ep);
nni_mtx_unlock(&ep->mtx);
}
static void
-nni_ipc_cancel_ep(nni_aio *aio, int rv)
+ipc_cancel_ep(nni_aio *aio, int rv)
{
- nni_ipc_ep *ep = nni_aio_get_prov_data(aio);
+ ipc_ep *ep = nni_aio_get_prov_data(aio);
NNI_ASSERT(rv != 0);
nni_mtx_lock(&ep->mtx);
@@ -745,10 +745,10 @@ nni_ipc_cancel_ep(nni_aio *aio, int rv)
}
static void
-nni_ipc_ep_accept(void *arg, nni_aio *aio)
+ipc_ep_accept(void *arg, nni_aio *aio)
{
- nni_ipc_ep *ep = arg;
- int rv;
+ ipc_ep *ep = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
@@ -756,7 +756,7 @@ nni_ipc_ep_accept(void *arg, nni_aio *aio)
nni_mtx_lock(&ep->mtx);
NNI_ASSERT(ep->user_aio == NULL);
- if ((rv = nni_aio_schedule(aio, nni_ipc_cancel_ep, ep)) != 0) {
+ if ((rv = nni_aio_schedule(aio, ipc_cancel_ep, ep)) != 0) {
nni_mtx_unlock(&ep->mtx);
nni_aio_finish_error(aio, rv);
return;
@@ -768,10 +768,10 @@ nni_ipc_ep_accept(void *arg, nni_aio *aio)
}
static void
-nni_ipc_ep_connect(void *arg, nni_aio *aio)
+ipc_ep_connect(void *arg, nni_aio *aio)
{
- nni_ipc_ep *ep = arg;
- int rv;
+ ipc_ep *ep = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
@@ -779,7 +779,7 @@ nni_ipc_ep_connect(void *arg, nni_aio *aio)
nni_mtx_lock(&ep->mtx);
NNI_ASSERT(ep->user_aio == NULL);
- if ((rv = nni_aio_schedule(aio, nni_ipc_cancel_ep, ep)) != 0) {
+ if ((rv = nni_aio_schedule(aio, ipc_cancel_ep, ep)) != 0) {
nni_mtx_unlock(&ep->mtx);
nni_aio_finish_error(aio, rv);
return;
@@ -791,14 +791,13 @@ nni_ipc_ep_connect(void *arg, nni_aio *aio)
}
static int
-nni_ipc_ep_setopt_recvmaxsz(void *arg, const void *data, size_t sz, int typ)
+ipc_ep_set_recvmaxsz(void *arg, const void *data, size_t sz, nni_opt_type t)
{
- nni_ipc_ep *ep = arg;
- size_t val;
- int rv;
+ ipc_ep *ep = arg;
+ size_t val;
+ int rv;
- rv = nni_copyin_size(&val, data, sz, 0, NNI_MAXSZ, typ);
- if ((rv == 0) && (ep != NULL)) {
+ if ((rv = nni_copyin_size(&val, data, sz, 0, NNI_MAXSZ, t)) == 0) {
nni_mtx_lock(&ep->mtx);
ep->rcvmax = val;
nni_mtx_unlock(&ep->mtx);
@@ -807,30 +806,35 @@ nni_ipc_ep_setopt_recvmaxsz(void *arg, const void *data, size_t sz, int typ)
}
static int
-nni_ipc_ep_getopt_recvmaxsz(void *arg, void *data, size_t *szp, int typ)
+ipc_ep_chk_recvmaxsz(const void *data, size_t sz, nni_opt_type t)
{
- nni_ipc_ep *ep = arg;
- return (nni_copyout_size(ep->rcvmax, data, szp, typ));
+ return (nni_copyin_size(NULL, data, sz, 0, NNI_MAXSZ, t));
}
static int
-nni_ipc_ep_get_addr(void *arg, void *data, size_t *szp, int typ)
+ipc_ep_get_recvmaxsz(void *arg, void *data, size_t *szp, nni_opt_type t)
{
- nni_ipc_ep *ep = arg;
- return (nni_copyout_sockaddr(&ep->sa, data, szp, typ));
+ ipc_ep *ep = arg;
+ return (nni_copyout_size(ep->rcvmax, data, szp, t));
}
static int
-nni_ipc_ep_setopt_permissions(void *arg, const void *data, size_t sz, int typ)
+ipc_ep_get_addr(void *arg, void *data, size_t *szp, nni_opt_type t)
{
- nni_ipc_ep *ep = arg;
- int val;
- int rv;
+ ipc_ep *ep = arg;
+ return (nni_copyout_sockaddr(&ep->sa, data, szp, t));
+}
+
+static int
+ipc_ep_set_perms(void *arg, const void *data, size_t sz, nni_opt_type t)
+{
+ ipc_ep *ep = arg;
+ int val;
+ int rv;
// Probably we could further limit this -- most systems don't have
// meaningful chmod beyond the lower 9 bits.
- rv = nni_copyin_int(&val, data, sz, 0, 0x7FFFFFFF, typ);
- if ((rv == 0) && (ep != NULL)) {
+ if ((rv = nni_copyin_int(&val, data, sz, 0, 0x7FFFFFFF, t)) == 0) {
nni_mtx_lock(&ep->mtx);
rv = nni_plat_ipc_ep_set_permissions(ep->iep, val);
nni_mtx_unlock(&ep->mtx);
@@ -839,123 +843,132 @@ nni_ipc_ep_setopt_permissions(void *arg, const void *data, size_t sz, int typ)
}
static int
-nni_ipc_ep_setopt_security_desc(
- void *arg, const void *data, size_t sz, int typ)
+ipc_ep_chk_perms(const void *data, size_t sz, nni_opt_type t)
{
- nni_ipc_ep *ep = arg;
- void * ptr;
- int rv;
+ return (nni_copyin_int(NULL, data, sz, 0, 0x7FFFFFFF, t));
+}
- if ((rv = nni_copyin_ptr((void **) &ptr, data, sz, typ)) != 0) {
- return (rv);
- }
+static int
+ipc_ep_set_sec_desc(void *arg, const void *data, size_t sz, nni_opt_type t)
+{
+ ipc_ep *ep = arg;
+ void * ptr;
+ int rv;
- if (ep == NULL) {
- return (0);
+ if ((rv = nni_copyin_ptr(&ptr, data, sz, t)) == 0) {
+ rv = nni_plat_ipc_ep_set_security_descriptor(ep->iep, ptr);
}
- return (nni_plat_ipc_ep_set_security_descriptor(ep->iep, ptr));
+ return (rv);
+}
+
+static int
+ipc_ep_chk_sec_desc(const void *data, size_t sz, nni_opt_type t)
+{
+ return (nni_copyin_ptr(NULL, data, sz, t));
}
-static nni_tran_pipe_option nni_ipc_pipe_options[] = {
+static nni_tran_option ipc_pipe_options[] = {
{
- .po_name = NNG_OPT_REMADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = nni_ipc_pipe_get_addr,
+ .o_name = NNG_OPT_REMADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = ipc_pipe_get_addr,
},
{
- .po_name = NNG_OPT_LOCADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = nni_ipc_pipe_get_addr,
+ .o_name = NNG_OPT_LOCADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = ipc_pipe_get_addr,
},
{
- .po_name = NNG_OPT_IPC_PEER_UID,
- .po_type = NNI_TYPE_UINT64,
- .po_getopt = nni_ipc_pipe_get_peer_uid,
+ .o_name = NNG_OPT_IPC_PEER_UID,
+ .o_type = NNI_TYPE_UINT64,
+ .o_get = ipc_pipe_get_peer_uid,
},
{
- .po_name = NNG_OPT_IPC_PEER_GID,
- .po_type = NNI_TYPE_UINT64,
- .po_getopt = nni_ipc_pipe_get_peer_gid,
+ .o_name = NNG_OPT_IPC_PEER_GID,
+ .o_type = NNI_TYPE_UINT64,
+ .o_get = ipc_pipe_get_peer_gid,
},
{
- .po_name = NNG_OPT_IPC_PEER_PID,
- .po_type = NNI_TYPE_UINT64,
- .po_getopt = nni_ipc_pipe_get_peer_pid,
+ .o_name = NNG_OPT_IPC_PEER_PID,
+ .o_type = NNI_TYPE_UINT64,
+ .o_get = ipc_pipe_get_peer_pid,
},
{
- .po_name = NNG_OPT_IPC_PEER_ZONEID,
- .po_type = NNI_TYPE_UINT64,
- .po_getopt = nni_ipc_pipe_get_peer_zoneid,
+ .o_name = NNG_OPT_IPC_PEER_ZONEID,
+ .o_type = NNI_TYPE_UINT64,
+ .o_get = ipc_pipe_get_peer_zoneid,
},
// terminate list
{
- .po_name = NULL,
+ .o_name = NULL,
},
};
-static nni_tran_pipe_ops nni_ipc_pipe_ops = {
- .p_fini = nni_ipc_pipe_fini,
- .p_start = nni_ipc_pipe_start,
- .p_stop = nni_ipc_pipe_stop,
- .p_send = nni_ipc_pipe_send,
- .p_recv = nni_ipc_pipe_recv,
- .p_close = nni_ipc_pipe_close,
- .p_peer = nni_ipc_pipe_peer,
- .p_options = nni_ipc_pipe_options,
+static nni_tran_pipe_ops ipc_pipe_ops = {
+ .p_fini = ipc_pipe_fini,
+ .p_start = ipc_pipe_start,
+ .p_stop = ipc_pipe_stop,
+ .p_send = ipc_pipe_send,
+ .p_recv = ipc_pipe_recv,
+ .p_close = ipc_pipe_close,
+ .p_peer = ipc_pipe_peer,
+ .p_options = ipc_pipe_options,
};
-static nni_tran_ep_option nni_ipc_ep_options[] = {
+static nni_tran_option ipc_ep_options[] = {
{
- .eo_name = NNG_OPT_RECVMAXSZ,
- .eo_type = NNI_TYPE_SIZE,
- .eo_getopt = nni_ipc_ep_getopt_recvmaxsz,
- .eo_setopt = nni_ipc_ep_setopt_recvmaxsz,
+ .o_name = NNG_OPT_RECVMAXSZ,
+ .o_type = NNI_TYPE_SIZE,
+ .o_get = ipc_ep_get_recvmaxsz,
+ .o_set = ipc_ep_set_recvmaxsz,
+ .o_chk = ipc_ep_chk_recvmaxsz,
},
{
- .eo_name = NNG_OPT_LOCADDR,
- .eo_type = NNI_TYPE_SOCKADDR,
- .eo_getopt = nni_ipc_ep_get_addr,
- .eo_setopt = NULL,
+ .o_name = NNG_OPT_LOCADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = ipc_ep_get_addr,
},
{
- .eo_name = NNG_OPT_IPC_SECURITY_DESCRIPTOR,
- .eo_type = NNI_TYPE_POINTER,
- .eo_getopt = NULL,
- .eo_setopt = nni_ipc_ep_setopt_security_desc,
+ .o_name = NNG_OPT_IPC_SECURITY_DESCRIPTOR,
+ .o_type = NNI_TYPE_POINTER,
+ .o_get = NULL,
+ .o_set = ipc_ep_set_sec_desc,
+ .o_chk = ipc_ep_chk_sec_desc,
},
{
- .eo_name = NNG_OPT_IPC_PERMISSIONS,
- .eo_type = NNI_TYPE_INT32,
- .eo_getopt = NULL,
- .eo_setopt = nni_ipc_ep_setopt_permissions,
+ .o_name = NNG_OPT_IPC_PERMISSIONS,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = NULL,
+ .o_set = ipc_ep_set_perms,
+ .o_chk = ipc_ep_chk_perms,
},
// terminate list
{
- .eo_name = NULL,
+ .o_name = NULL,
},
};
-static nni_tran_ep_ops nni_ipc_ep_ops = {
- .ep_init = nni_ipc_ep_init,
- .ep_fini = nni_ipc_ep_fini,
- .ep_connect = nni_ipc_ep_connect,
- .ep_bind = nni_ipc_ep_bind,
- .ep_accept = nni_ipc_ep_accept,
- .ep_close = nni_ipc_ep_close,
- .ep_options = nni_ipc_ep_options,
+static nni_tran_ep_ops ipc_ep_ops = {
+ .ep_init = ipc_ep_init,
+ .ep_fini = ipc_ep_fini,
+ .ep_connect = ipc_ep_connect,
+ .ep_bind = ipc_ep_bind,
+ .ep_accept = ipc_ep_accept,
+ .ep_close = ipc_ep_close,
+ .ep_options = ipc_ep_options,
};
-static nni_tran nni_ipc_tran = {
+static nni_tran ipc_tran = {
.tran_version = NNI_TRANSPORT_VERSION,
.tran_scheme = "ipc",
- .tran_ep = &nni_ipc_ep_ops,
- .tran_pipe = &nni_ipc_pipe_ops,
- .tran_init = nni_ipc_tran_init,
- .tran_fini = nni_ipc_tran_fini,
+ .tran_ep = &ipc_ep_ops,
+ .tran_pipe = &ipc_pipe_ops,
+ .tran_init = ipc_tran_init,
+ .tran_fini = ipc_tran_fini,
};
int
nng_ipc_register(void)
{
- return (nni_tran_register(&nni_ipc_tran));
+ return (nni_tran_register(&ipc_tran));
}
diff --git a/src/transport/tcp/tcp.c b/src/transport/tcp/tcp.c
index be0dd2b5..f23d5b3a 100644
--- a/src/transport/tcp/tcp.c
+++ b/src/transport/tcp/tcp.c
@@ -17,11 +17,11 @@
// TCP transport. Platform specific TCP operations must be
// supplied as well.
-typedef struct nni_tcp_pipe nni_tcp_pipe;
-typedef struct nni_tcp_ep nni_tcp_ep;
+typedef struct tcp_pipe tcp_pipe;
+typedef struct tcp_ep tcp_ep;
-// nni_tcp_pipe is one end of a TCP connection.
-struct nni_tcp_pipe {
+// tcp_pipe is one end of a TCP connection.
+struct tcp_pipe {
nni_plat_tcp_pipe *tpp;
uint16_t peer;
uint16_t proto;
@@ -46,7 +46,7 @@ struct nni_tcp_pipe {
nni_mtx mtx;
};
-struct nni_tcp_ep {
+struct tcp_ep {
nni_plat_tcp_ep *tep;
uint16_t proto;
size_t rcvmax;
@@ -60,28 +60,28 @@ struct nni_tcp_ep {
nni_mtx mtx;
};
-static void nni_tcp_pipe_dosend(nni_tcp_pipe *, nni_aio *);
-static void nni_tcp_pipe_dorecv(nni_tcp_pipe *);
-static void nni_tcp_pipe_send_cb(void *);
-static void nni_tcp_pipe_recv_cb(void *);
-static void nni_tcp_pipe_nego_cb(void *);
-static void nni_tcp_ep_cb(void *arg);
+static void tcp_pipe_dosend(tcp_pipe *, nni_aio *);
+static void tcp_pipe_dorecv(tcp_pipe *);
+static void tcp_pipe_send_cb(void *);
+static void tcp_pipe_recv_cb(void *);
+static void tcp_pipe_nego_cb(void *);
+static void tcp_ep_cb(void *arg);
static int
-nni_tcp_tran_init(void)
+tcp_tran_init(void)
{
return (0);
}
static void
-nni_tcp_tran_fini(void)
+tcp_tran_fini(void)
{
}
static void
-nni_tcp_pipe_close(void *arg)
+tcp_pipe_close(void *arg)
{
- nni_tcp_pipe *p = arg;
+ tcp_pipe *p = arg;
nni_aio_close(p->rxaio);
nni_aio_close(p->txaio);
@@ -91,9 +91,9 @@ nni_tcp_pipe_close(void *arg)
}
static void
-nni_tcp_pipe_stop(void *arg)
+tcp_pipe_stop(void *arg)
{
- nni_tcp_pipe *p = arg;
+ tcp_pipe *p = arg;
nni_aio_stop(p->rxaio);
nni_aio_stop(p->txaio);
@@ -101,9 +101,9 @@ nni_tcp_pipe_stop(void *arg)
}
static void
-nni_tcp_pipe_fini(void *arg)
+tcp_pipe_fini(void *arg)
{
- nni_tcp_pipe *p = arg;
+ tcp_pipe *p = arg;
nni_aio_fini(p->rxaio);
nni_aio_fini(p->txaio);
@@ -119,19 +119,19 @@ nni_tcp_pipe_fini(void *arg)
}
static int
-nni_tcp_pipe_init(nni_tcp_pipe **pipep, nni_tcp_ep *ep, void *tpp)
+tcp_pipe_init(tcp_pipe **pipep, tcp_ep *ep, void *tpp)
{
- nni_tcp_pipe *p;
- int rv;
+ tcp_pipe *p;
+ int rv;
if ((p = NNI_ALLOC_STRUCT(p)) == NULL) {
return (NNG_ENOMEM);
}
nni_mtx_init(&p->mtx);
- if (((rv = nni_aio_init(&p->txaio, nni_tcp_pipe_send_cb, p)) != 0) ||
- ((rv = nni_aio_init(&p->rxaio, nni_tcp_pipe_recv_cb, p)) != 0) ||
- ((rv = nni_aio_init(&p->negaio, nni_tcp_pipe_nego_cb, p)) != 0)) {
- nni_tcp_pipe_fini(p);
+ if (((rv = nni_aio_init(&p->txaio, tcp_pipe_send_cb, p)) != 0) ||
+ ((rv = nni_aio_init(&p->rxaio, tcp_pipe_recv_cb, p)) != 0) ||
+ ((rv = nni_aio_init(&p->negaio, tcp_pipe_nego_cb, p)) != 0)) {
+ tcp_pipe_fini(p);
return (rv);
}
nni_aio_list_init(&p->recvq);
@@ -154,9 +154,9 @@ nni_tcp_pipe_init(nni_tcp_pipe **pipep, nni_tcp_ep *ep, void *tpp)
}
static void
-nni_tcp_cancel_nego(nni_aio *aio, int rv)
+tcp_cancel_nego(nni_aio *aio, int rv)
{
- nni_tcp_pipe *p = nni_aio_get_prov_data(aio);
+ tcp_pipe *p = nni_aio_get_prov_data(aio);
nni_mtx_lock(&p->mtx);
if (p->user_negaio != aio) {
@@ -171,11 +171,11 @@ nni_tcp_cancel_nego(nni_aio *aio, int rv)
}
static void
-nni_tcp_pipe_nego_cb(void *arg)
+tcp_pipe_nego_cb(void *arg)
{
- nni_tcp_pipe *p = arg;
- nni_aio * aio = p->negaio;
- int rv;
+ tcp_pipe *p = arg;
+ nni_aio * aio = p->negaio;
+ int rv;
nni_mtx_lock(&p->mtx);
if ((rv = nni_aio_result(aio)) != 0) {
@@ -228,14 +228,14 @@ done:
}
static void
-nni_tcp_pipe_send_cb(void *arg)
+tcp_pipe_send_cb(void *arg)
{
- nni_tcp_pipe *p = arg;
- int rv;
- nni_aio * aio;
- size_t n;
- nni_msg * msg;
- nni_aio * txaio = p->txaio;
+ tcp_pipe *p = arg;
+ int rv;
+ nni_aio * aio;
+ size_t n;
+ nni_msg * msg;
+ nni_aio * txaio = p->txaio;
nni_mtx_lock(&p->mtx);
aio = nni_list_first(&p->sendq);
@@ -263,7 +263,7 @@ nni_tcp_pipe_send_cb(void *arg)
nni_aio_list_remove(aio);
if (!nni_list_empty(&p->sendq)) {
// schedule next send
- nni_tcp_pipe_dosend(p, nni_list_first(&p->sendq));
+ tcp_pipe_dosend(p, nni_list_first(&p->sendq));
}
nni_mtx_unlock(&p->mtx);
@@ -275,14 +275,14 @@ nni_tcp_pipe_send_cb(void *arg)
}
static void
-nni_tcp_pipe_recv_cb(void *arg)
+tcp_pipe_recv_cb(void *arg)
{
- nni_tcp_pipe *p = arg;
- nni_aio * aio;
- int rv;
- size_t n;
- nni_msg * msg;
- nni_aio * rxaio = p->rxaio;
+ tcp_pipe *p = arg;
+ nni_aio * aio;
+ int rv;
+ size_t n;
+ nni_msg * msg;
+ nni_aio * rxaio = p->rxaio;
nni_mtx_lock(&p->mtx);
aio = nni_list_first(&p->recvq);
@@ -337,7 +337,7 @@ nni_tcp_pipe_recv_cb(void *arg)
msg = p->rxmsg;
p->rxmsg = NULL;
if (!nni_list_empty(&p->recvq)) {
- nni_tcp_pipe_dorecv(p);
+ tcp_pipe_dorecv(p);
}
nni_mtx_unlock(&p->mtx);
@@ -358,9 +358,9 @@ recv_error:
}
static void
-nni_tcp_cancel_tx(nni_aio *aio, int rv)
+tcp_cancel_tx(nni_aio *aio, int rv)
{
- nni_tcp_pipe *p = nni_aio_get_prov_data(aio);
+ tcp_pipe *p = nni_aio_get_prov_data(aio);
nni_mtx_lock(&p->mtx);
if (!nni_aio_list_active(aio)) {
@@ -382,7 +382,7 @@ nni_tcp_cancel_tx(nni_aio *aio, int rv)
}
static void
-nni_tcp_pipe_dosend(nni_tcp_pipe *p, nni_aio *aio)
+tcp_pipe_dosend(tcp_pipe *p, nni_aio *aio)
{
nni_aio *txaio;
nni_msg *msg;
@@ -416,31 +416,31 @@ nni_tcp_pipe_dosend(nni_tcp_pipe *p, nni_aio *aio)
}
static void
-nni_tcp_pipe_send(void *arg, nni_aio *aio)
+tcp_pipe_send(void *arg, nni_aio *aio)
{
- nni_tcp_pipe *p = arg;
- int rv;
+ tcp_pipe *p = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
}
nni_mtx_lock(&p->mtx);
- if ((rv = nni_aio_schedule(aio, nni_tcp_cancel_tx, p)) != 0) {
+ if ((rv = nni_aio_schedule(aio, tcp_cancel_tx, p)) != 0) {
nni_mtx_unlock(&p->mtx);
nni_aio_finish_error(aio, rv);
return;
}
nni_list_append(&p->sendq, aio);
if (nni_list_first(&p->sendq) == aio) {
- nni_tcp_pipe_dosend(p, aio);
+ tcp_pipe_dosend(p, aio);
}
nni_mtx_unlock(&p->mtx);
}
static void
-nni_tcp_cancel_rx(nni_aio *aio, int rv)
+tcp_cancel_rx(nni_aio *aio, int rv)
{
- nni_tcp_pipe *p = nni_aio_get_prov_data(aio);
+ tcp_pipe *p = nni_aio_get_prov_data(aio);
nni_mtx_lock(&p->mtx);
if (!nni_aio_list_active(aio)) {
@@ -461,7 +461,7 @@ nni_tcp_cancel_rx(nni_aio *aio, int rv)
}
static void
-nni_tcp_pipe_dorecv(nni_tcp_pipe *p)
+tcp_pipe_dorecv(tcp_pipe *p)
{
nni_aio *rxaio;
nni_iov iov;
@@ -477,16 +477,16 @@ nni_tcp_pipe_dorecv(nni_tcp_pipe *p)
}
static void
-nni_tcp_pipe_recv(void *arg, nni_aio *aio)
+tcp_pipe_recv(void *arg, nni_aio *aio)
{
- nni_tcp_pipe *p = arg;
- int rv;
+ tcp_pipe *p = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
}
nni_mtx_lock(&p->mtx);
- if ((rv = nni_aio_schedule(aio, nni_tcp_cancel_rx, p)) != 0) {
+ if ((rv = nni_aio_schedule(aio, tcp_cancel_rx, p)) != 0) {
nni_mtx_unlock(&p->mtx);
nni_aio_finish_error(aio, rv);
return;
@@ -494,75 +494,75 @@ nni_tcp_pipe_recv(void *arg, nni_aio *aio)
nni_list_append(&p->recvq, aio);
if (nni_list_first(&p->recvq) == aio) {
- nni_tcp_pipe_dorecv(p);
+ tcp_pipe_dorecv(p);
}
nni_mtx_unlock(&p->mtx);
}
static uint16_t
-nni_tcp_pipe_peer(void *arg)
+tcp_pipe_peer(void *arg)
{
- nni_tcp_pipe *p = arg;
+ tcp_pipe *p = arg;
return (p->peer);
}
static int
-nni_tcp_pipe_getopt_locaddr(void *arg, void *v, size_t *szp, int typ)
+tcp_pipe_get_locaddr(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tcp_pipe *p = arg;
- int rv;
- nni_sockaddr sa;
+ tcp_pipe * p = arg;
+ int rv;
+ nni_sockaddr sa;
memset(&sa, 0, sizeof(sa));
if ((rv = nni_plat_tcp_pipe_sockname(p->tpp, &sa)) == 0) {
- rv = nni_copyout_sockaddr(&sa, v, szp, typ);
+ rv = nni_copyout_sockaddr(&sa, v, szp, t);
}
return (rv);
}
static int
-nni_tcp_pipe_getopt_remaddr(void *arg, void *v, size_t *szp, int typ)
+tcp_pipe_get_remaddr(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tcp_pipe *p = arg;
- int rv;
- nni_sockaddr sa;
+ tcp_pipe * p = arg;
+ int rv;
+ nni_sockaddr sa;
memset(&sa, 0, sizeof(sa));
if ((rv = nni_plat_tcp_pipe_peername(p->tpp, &sa)) == 0) {
- rv = nni_copyout_sockaddr(&sa, v, szp, typ);
+ rv = nni_copyout_sockaddr(&sa, v, szp, t);
}
return (rv);
}
static int
-nni_tcp_pipe_getopt_keepalive(void *arg, void *v, size_t *szp, int typ)
+tcp_pipe_get_keepalive(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tcp_pipe *p = arg;
- return (nni_copyout_bool(p->keepalive, v, szp, typ));
+ tcp_pipe *p = arg;
+ return (nni_copyout_bool(p->keepalive, v, szp, t));
}
static int
-nni_tcp_pipe_getopt_nodelay(void *arg, void *v, size_t *szp, int typ)
+tcp_pipe_get_nodelay(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tcp_pipe *p = arg;
- return (nni_copyout_bool(p->nodelay, v, szp, typ));
+ tcp_pipe *p = arg;
+ return (nni_copyout_bool(p->nodelay, v, szp, t));
}
// Note that the url *must* be in a modifiable buffer.
static void
-nni_tcp_pipe_start(void *arg, nni_aio *aio)
+tcp_pipe_start(void *arg, nni_aio *aio)
{
- nni_tcp_pipe *p = arg;
- nni_aio * negaio;
- nni_iov iov;
- int rv;
+ tcp_pipe *p = arg;
+ nni_aio * negaio;
+ nni_iov iov;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
}
nni_mtx_lock(&p->mtx);
- if ((rv = nni_aio_schedule(aio, nni_tcp_cancel_nego, p)) != 0) {
+ if ((rv = nni_aio_schedule(aio, tcp_cancel_nego, p)) != 0) {
nni_mtx_unlock(&p->mtx);
nni_aio_finish_error(aio, rv);
return;
@@ -588,9 +588,9 @@ nni_tcp_pipe_start(void *arg, nni_aio *aio)
}
static void
-nni_tcp_ep_fini(void *arg)
+tcp_ep_fini(void *arg)
{
- nni_tcp_ep *ep = arg;
+ tcp_ep *ep = arg;
nni_aio_stop(ep->aio);
if (ep->tep != NULL) {
@@ -602,9 +602,9 @@ nni_tcp_ep_fini(void *arg)
}
static int
-nni_tcp_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
+tcp_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
{
- nni_tcp_ep * ep;
+ tcp_ep * ep;
int rv;
char * host;
char * serv;
@@ -679,12 +679,12 @@ nni_tcp_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
ep->url = url;
if ((rv = nni_plat_tcp_ep_init(&ep->tep, &lsa, &rsa, mode)) != 0) {
- nni_tcp_ep_fini(ep);
+ tcp_ep_fini(ep);
return (rv);
}
- if ((rv = nni_aio_init(&ep->aio, nni_tcp_ep_cb, ep)) != 0) {
- nni_tcp_ep_fini(ep);
+ if ((rv = nni_aio_init(&ep->aio, tcp_ep_cb, ep)) != 0) {
+ tcp_ep_fini(ep);
return (rv);
}
ep->proto = nni_sock_proto_id(sock);
@@ -697,9 +697,9 @@ nni_tcp_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
}
static void
-nni_tcp_ep_close(void *arg)
+tcp_ep_close(void *arg)
{
- nni_tcp_ep *ep = arg;
+ tcp_ep *ep = arg;
nni_aio_close(ep->aio);
@@ -709,10 +709,10 @@ nni_tcp_ep_close(void *arg)
}
static int
-nni_tcp_ep_bind(void *arg)
+tcp_ep_bind(void *arg)
{
- nni_tcp_ep *ep = arg;
- int rv;
+ tcp_ep *ep = arg;
+ int rv;
nni_mtx_lock(&ep->mtx);
rv = nni_plat_tcp_ep_listen(ep->tep, &ep->bsa);
@@ -722,11 +722,11 @@ nni_tcp_ep_bind(void *arg)
}
static void
-nni_tcp_ep_finish(nni_tcp_ep *ep)
+tcp_ep_finish(tcp_ep *ep)
{
- nni_aio * aio;
- int rv;
- nni_tcp_pipe *pipe = NULL;
+ nni_aio * aio;
+ int rv;
+ tcp_pipe *pipe = NULL;
if ((rv = nni_aio_result(ep->aio)) != 0) {
goto done;
@@ -735,7 +735,7 @@ nni_tcp_ep_finish(nni_tcp_ep *ep)
// Attempt to allocate the parent pipe. If this fails we'll
// drop the connection (ENOMEM probably).
- rv = nni_tcp_pipe_init(&pipe, ep, nni_aio_get_output(ep->aio, 0));
+ rv = tcp_pipe_init(&pipe, ep, nni_aio_get_output(ep->aio, 0));
done:
aio = ep->user_aio;
@@ -747,7 +747,7 @@ done:
return;
}
if (pipe != NULL) {
- nni_tcp_pipe_fini(pipe);
+ tcp_pipe_fini(pipe);
}
if (aio != NULL) {
NNI_ASSERT(rv != 0);
@@ -756,19 +756,19 @@ done:
}
static void
-nni_tcp_ep_cb(void *arg)
+tcp_ep_cb(void *arg)
{
- nni_tcp_ep *ep = arg;
+ tcp_ep *ep = arg;
nni_mtx_lock(&ep->mtx);
- nni_tcp_ep_finish(ep);
+ tcp_ep_finish(ep);
nni_mtx_unlock(&ep->mtx);
}
static void
-nni_tcp_cancel_ep(nni_aio *aio, int rv)
+tcp_cancel_ep(nni_aio *aio, int rv)
{
- nni_tcp_ep *ep = nni_aio_get_prov_data(aio);
+ tcp_ep *ep = nni_aio_get_prov_data(aio);
nni_mtx_lock(&ep->mtx);
if (ep->user_aio != aio) {
@@ -783,10 +783,10 @@ nni_tcp_cancel_ep(nni_aio *aio, int rv)
}
static void
-nni_tcp_ep_accept(void *arg, nni_aio *aio)
+tcp_ep_accept(void *arg, nni_aio *aio)
{
- nni_tcp_ep *ep = arg;
- int rv;
+ tcp_ep *ep = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
@@ -794,7 +794,7 @@ nni_tcp_ep_accept(void *arg, nni_aio *aio)
nni_mtx_lock(&ep->mtx);
NNI_ASSERT(ep->user_aio == NULL);
- if ((rv = nni_aio_schedule(aio, nni_tcp_cancel_ep, ep)) != 0) {
+ if ((rv = nni_aio_schedule(aio, tcp_cancel_ep, ep)) != 0) {
nni_mtx_unlock(&ep->mtx);
nni_aio_finish_error(aio, rv);
return;
@@ -806,10 +806,10 @@ nni_tcp_ep_accept(void *arg, nni_aio *aio)
}
static void
-nni_tcp_ep_connect(void *arg, nni_aio *aio)
+tcp_ep_connect(void *arg, nni_aio *aio)
{
- nni_tcp_ep *ep = arg;
- int rv;
+ tcp_ep *ep = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
@@ -817,7 +817,7 @@ nni_tcp_ep_connect(void *arg, nni_aio *aio)
nni_mtx_lock(&ep->mtx);
NNI_ASSERT(ep->user_aio == NULL);
- if ((rv = nni_aio_schedule(aio, nni_tcp_cancel_ep, ep)) != 0) {
+ if ((rv = nni_aio_schedule(aio, tcp_cancel_ep, ep)) != 0) {
nni_mtx_unlock(&ep->mtx);
nni_aio_finish_error(aio, rv);
return;
@@ -829,13 +829,12 @@ nni_tcp_ep_connect(void *arg, nni_aio *aio)
}
static int
-nni_tcp_ep_setopt_recvmaxsz(void *arg, const void *v, size_t sz, int typ)
+tcp_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_opt_type t)
{
- nni_tcp_ep *ep = arg;
- size_t val;
- int rv;
- rv = nni_copyin_size(&val, v, sz, 0, NNI_MAXSZ, typ);
- if ((rv == 0) && (ep != NULL)) {
+ tcp_ep *ep = arg;
+ size_t val;
+ int rv;
+ if ((rv = nni_copyin_size(&val, v, sz, 0, NNI_MAXSZ, t)) == 0) {
nni_mtx_lock(&ep->mtx);
ep->rcvmax = val;
nni_mtx_unlock(&ep->mtx);
@@ -844,13 +843,18 @@ nni_tcp_ep_setopt_recvmaxsz(void *arg, const void *v, size_t sz, int typ)
}
static int
-nni_tcp_ep_setopt_nodelay(void *arg, const void *v, size_t sz, int typ)
+tcp_ep_chk_recvmaxsz(const void *v, size_t sz, nni_opt_type t)
+{
+ return (nni_copyin_size(NULL, v, sz, 0, NNI_MAXSZ, t));
+}
+
+static int
+tcp_ep_set_nodelay(void *arg, const void *v, size_t sz, nni_opt_type t)
{
- nni_tcp_ep *ep = arg;
- bool val;
- int rv;
- rv = nni_copyin_bool(&val, v, sz, typ);
- if ((rv == 0) && (ep != NULL)) {
+ tcp_ep *ep = arg;
+ bool val;
+ int rv;
+ if ((rv = nni_copyin_bool(&val, v, sz, t)) == 0) {
nni_mtx_lock(&ep->mtx);
ep->nodelay = val;
nni_mtx_unlock(&ep->mtx);
@@ -859,20 +863,25 @@ nni_tcp_ep_setopt_nodelay(void *arg, const void *v, size_t sz, int typ)
}
static int
-nni_tcp_ep_getopt_nodelay(void *arg, void *v, size_t *szp, int typ)
+tcp_ep_chk_bool(const void *v, size_t sz, nni_opt_type t)
+{
+ return (nni_copyin_bool(NULL, v, sz, t));
+}
+
+static int
+tcp_ep_get_nodelay(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tcp_ep *ep = arg;
- return (nni_copyout_bool(ep->nodelay, v, szp, typ));
+ tcp_ep *ep = arg;
+ return (nni_copyout_bool(ep->nodelay, v, szp, t));
}
static int
-nni_tcp_ep_setopt_keepalive(void *arg, const void *v, size_t sz, int typ)
+tcp_ep_set_keepalive(void *arg, const void *v, size_t sz, nni_opt_type t)
{
- nni_tcp_ep *ep = arg;
- bool val;
- int rv;
- rv = nni_copyin_bool(&val, v, sz, typ);
- if ((rv == 0) && (ep != NULL)) {
+ tcp_ep *ep = arg;
+ bool val;
+ int rv;
+ if ((rv = nni_copyin_bool(&val, v, sz, t)) == 0) {
nni_mtx_lock(&ep->mtx);
ep->keepalive = val;
nni_mtx_unlock(&ep->mtx);
@@ -881,148 +890,150 @@ nni_tcp_ep_setopt_keepalive(void *arg, const void *v, size_t sz, int typ)
}
static int
-nni_tcp_ep_getopt_keepalive(void *arg, void *v, size_t *szp, int typ)
+tcp_ep_get_keepalive(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tcp_ep *ep = arg;
- return (nni_copyout_bool(ep->keepalive, v, szp, typ));
+ tcp_ep *ep = arg;
+ return (nni_copyout_bool(ep->keepalive, v, szp, t));
}
static int
-nni_tcp_ep_getopt_url(void *arg, void *v, size_t *szp, int typ)
+tcp_ep_get_url(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tcp_ep *ep = arg;
- char ustr[128];
- char ipstr[48]; // max for IPv6 addresses including []
- char portstr[6]; // max for 16-bit port
+ tcp_ep *ep = arg;
+ char ustr[128];
+ char ipstr[48]; // max for IPv6 addresses including []
+ char portstr[6]; // max for 16-bit port
if (ep->mode == NNI_EP_MODE_DIAL) {
- return (nni_copyout_str(ep->url->u_rawurl, v, szp, typ));
+ return (nni_copyout_str(ep->url->u_rawurl, v, szp, t));
}
nni_plat_tcp_ntop(&ep->bsa, ipstr, portstr);
snprintf(ustr, sizeof(ustr), "tcp://%s:%s", ipstr, portstr);
- return (nni_copyout_str(ustr, v, szp, typ));
+ return (nni_copyout_str(ustr, v, szp, t));
}
static int
-nni_tcp_ep_getopt_recvmaxsz(void *arg, void *v, size_t *szp, int typ)
+tcp_ep_get_recvmaxsz(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tcp_ep *ep = arg;
- return (nni_copyout_size(ep->rcvmax, v, szp, typ));
+ tcp_ep *ep = arg;
+ return (nni_copyout_size(ep->rcvmax, v, szp, t));
}
-static nni_tran_pipe_option nni_tcp_pipe_options[] = {
+static nni_tran_option tcp_pipe_options[] = {
{
- .po_name = NNG_OPT_LOCADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = nni_tcp_pipe_getopt_locaddr,
+ .o_name = NNG_OPT_LOCADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = tcp_pipe_get_locaddr,
},
{
- .po_name = NNG_OPT_REMADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = nni_tcp_pipe_getopt_remaddr,
+ .o_name = NNG_OPT_REMADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = tcp_pipe_get_remaddr,
},
{
- .po_name = NNG_OPT_TCP_KEEPALIVE,
- .po_type = NNI_TYPE_BOOL,
- .po_getopt = nni_tcp_pipe_getopt_keepalive,
+ .o_name = NNG_OPT_TCP_KEEPALIVE,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = tcp_pipe_get_keepalive,
},
{
- .po_name = NNG_OPT_TCP_NODELAY,
- .po_type = NNI_TYPE_BOOL,
- .po_getopt = nni_tcp_pipe_getopt_nodelay,
+ .o_name = NNG_OPT_TCP_NODELAY,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = tcp_pipe_get_nodelay,
},
// terminate list
{
- .po_name = NULL,
+ .o_name = NULL,
},
};
-static nni_tran_pipe_ops nni_tcp_pipe_ops = {
- .p_fini = nni_tcp_pipe_fini,
- .p_start = nni_tcp_pipe_start,
- .p_stop = nni_tcp_pipe_stop,
- .p_send = nni_tcp_pipe_send,
- .p_recv = nni_tcp_pipe_recv,
- .p_close = nni_tcp_pipe_close,
- .p_peer = nni_tcp_pipe_peer,
- .p_options = nni_tcp_pipe_options,
+static nni_tran_pipe_ops tcp_pipe_ops = {
+ .p_fini = tcp_pipe_fini,
+ .p_start = tcp_pipe_start,
+ .p_stop = tcp_pipe_stop,
+ .p_send = tcp_pipe_send,
+ .p_recv = tcp_pipe_recv,
+ .p_close = tcp_pipe_close,
+ .p_peer = tcp_pipe_peer,
+ .p_options = tcp_pipe_options,
};
-static nni_tran_ep_option nni_tcp_ep_options[] = {
+static nni_tran_option tcp_ep_options[] = {
{
- .eo_name = NNG_OPT_RECVMAXSZ,
- .eo_type = NNI_TYPE_SIZE,
- .eo_getopt = nni_tcp_ep_getopt_recvmaxsz,
- .eo_setopt = nni_tcp_ep_setopt_recvmaxsz,
+ .o_name = NNG_OPT_RECVMAXSZ,
+ .o_type = NNI_TYPE_SIZE,
+ .o_get = tcp_ep_get_recvmaxsz,
+ .o_set = tcp_ep_set_recvmaxsz,
+ .o_chk = tcp_ep_chk_recvmaxsz,
},
{
- .eo_name = NNG_OPT_URL,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = nni_tcp_ep_getopt_url,
- .eo_setopt = NULL,
+ .o_name = NNG_OPT_URL,
+ .o_type = NNI_TYPE_STRING,
+ .o_get = tcp_ep_get_url,
},
{
- .eo_name = NNG_OPT_TCP_NODELAY,
- .eo_type = NNI_TYPE_BOOL,
- .eo_getopt = nni_tcp_ep_getopt_nodelay,
- .eo_setopt = nni_tcp_ep_setopt_nodelay,
+ .o_name = NNG_OPT_TCP_NODELAY,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = tcp_ep_get_nodelay,
+ .o_set = tcp_ep_set_nodelay,
+ .o_chk = tcp_ep_chk_bool,
},
{
- .eo_name = NNG_OPT_TCP_KEEPALIVE,
- .eo_type = NNI_TYPE_BOOL,
- .eo_getopt = nni_tcp_ep_getopt_keepalive,
- .eo_setopt = nni_tcp_ep_setopt_keepalive,
+ .o_name = NNG_OPT_TCP_KEEPALIVE,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = tcp_ep_get_keepalive,
+ .o_set = tcp_ep_set_keepalive,
+ .o_chk = tcp_ep_chk_bool,
},
// terminate list
{
- .eo_name = NULL,
+ .o_name = NULL,
},
};
-static nni_tran_ep_ops nni_tcp_ep_ops = {
- .ep_init = nni_tcp_ep_init,
- .ep_fini = nni_tcp_ep_fini,
- .ep_connect = nni_tcp_ep_connect,
- .ep_bind = nni_tcp_ep_bind,
- .ep_accept = nni_tcp_ep_accept,
- .ep_close = nni_tcp_ep_close,
- .ep_options = nni_tcp_ep_options,
+static nni_tran_ep_ops tcp_ep_ops = {
+ .ep_init = tcp_ep_init,
+ .ep_fini = tcp_ep_fini,
+ .ep_connect = tcp_ep_connect,
+ .ep_bind = tcp_ep_bind,
+ .ep_accept = tcp_ep_accept,
+ .ep_close = tcp_ep_close,
+ .ep_options = tcp_ep_options,
};
-static nni_tran nni_tcp_tran = {
+static nni_tran tcp_tran = {
.tran_version = NNI_TRANSPORT_VERSION,
.tran_scheme = "tcp",
- .tran_ep = &nni_tcp_ep_ops,
- .tran_pipe = &nni_tcp_pipe_ops,
- .tran_init = nni_tcp_tran_init,
- .tran_fini = nni_tcp_tran_fini,
+ .tran_ep = &tcp_ep_ops,
+ .tran_pipe = &tcp_pipe_ops,
+ .tran_init = tcp_tran_init,
+ .tran_fini = tcp_tran_fini,
};
-static nni_tran nni_tcp4_tran = {
+static nni_tran tcp4_tran = {
.tran_version = NNI_TRANSPORT_VERSION,
.tran_scheme = "tcp4",
- .tran_ep = &nni_tcp_ep_ops,
- .tran_pipe = &nni_tcp_pipe_ops,
- .tran_init = nni_tcp_tran_init,
- .tran_fini = nni_tcp_tran_fini,
+ .tran_ep = &tcp_ep_ops,
+ .tran_pipe = &tcp_pipe_ops,
+ .tran_init = tcp_tran_init,
+ .tran_fini = tcp_tran_fini,
};
-static nni_tran nni_tcp6_tran = {
+static nni_tran tcp6_tran = {
.tran_version = NNI_TRANSPORT_VERSION,
.tran_scheme = "tcp6",
- .tran_ep = &nni_tcp_ep_ops,
- .tran_pipe = &nni_tcp_pipe_ops,
- .tran_init = nni_tcp_tran_init,
- .tran_fini = nni_tcp_tran_fini,
+ .tran_ep = &tcp_ep_ops,
+ .tran_pipe = &tcp_pipe_ops,
+ .tran_init = tcp_tran_init,
+ .tran_fini = tcp_tran_fini,
};
int
nng_tcp_register(void)
{
int rv;
- if (((rv = nni_tran_register(&nni_tcp_tran)) != 0) ||
- ((rv = nni_tran_register(&nni_tcp4_tran)) != 0) ||
- ((rv = nni_tran_register(&nni_tcp6_tran)) != 0)) {
+ if (((rv = nni_tran_register(&tcp_tran)) != 0) ||
+ ((rv = nni_tran_register(&tcp4_tran)) != 0) ||
+ ((rv = nni_tran_register(&tcp6_tran)) != 0)) {
return (rv);
}
return (0);
diff --git a/src/transport/tls/tls.c b/src/transport/tls/tls.c
index d1d21f6d..35f88e25 100644
--- a/src/transport/tls/tls.c
+++ b/src/transport/tls/tls.c
@@ -22,11 +22,11 @@
// supplied as well, and uses the supplemental TLS v1.2 code. It is not
// an accident that this very closely resembles the TCP transport itself.
-typedef struct nni_tls_pipe nni_tls_pipe;
-typedef struct nni_tls_ep nni_tls_ep;
+typedef struct tls_pipe tls_pipe;
+typedef struct tls_ep tls_ep;
-// nni_tls_pipe is one end of a TLS connection.
-struct nni_tls_pipe {
+// tls_pipe is one end of a TLS connection.
+struct tls_pipe {
nni_plat_tcp_pipe *tcp;
uint16_t peer;
uint16_t proto;
@@ -52,7 +52,7 @@ struct nni_tls_pipe {
nni_tls *tls;
};
-struct nni_tls_ep {
+struct tls_ep {
nni_plat_tcp_ep *tep;
uint16_t proto;
size_t rcvmax;
@@ -68,28 +68,28 @@ struct nni_tls_ep {
bool keepalive;
};
-static void nni_tls_pipe_dorecv(nni_tls_pipe *);
-static void nni_tls_pipe_dosend(nni_tls_pipe *, nni_aio *);
-static void nni_tls_pipe_send_cb(void *);
-static void nni_tls_pipe_recv_cb(void *);
-static void nni_tls_pipe_nego_cb(void *);
-static void nni_tls_ep_cb(void *arg);
+static void tls_pipe_dorecv(tls_pipe *);
+static void tls_pipe_dosend(tls_pipe *, nni_aio *);
+static void tls_pipe_send_cb(void *);
+static void tls_pipe_recv_cb(void *);
+static void tls_pipe_nego_cb(void *);
+static void tls_ep_cb(void *arg);
static int
-nni_tls_tran_init(void)
+tls_tran_init(void)
{
return (0);
}
static void
-nni_tls_tran_fini(void)
+tls_tran_fini(void)
{
}
static void
-nni_tls_pipe_close(void *arg)
+tls_pipe_close(void *arg)
{
- nni_tls_pipe *p = arg;
+ tls_pipe *p = arg;
nni_aio_close(p->rxaio);
nni_aio_close(p->txaio);
@@ -99,9 +99,9 @@ nni_tls_pipe_close(void *arg)
}
static void
-nni_tls_pipe_stop(void *arg)
+tls_pipe_stop(void *arg)
{
- nni_tls_pipe *p = arg;
+ tls_pipe *p = arg;
nni_aio_stop(p->rxaio);
nni_aio_stop(p->txaio);
@@ -109,9 +109,9 @@ nni_tls_pipe_stop(void *arg)
}
static void
-nni_tls_pipe_fini(void *arg)
+tls_pipe_fini(void *arg)
{
- nni_tls_pipe *p = arg;
+ tls_pipe *p = arg;
nni_aio_fini(p->rxaio);
nni_aio_fini(p->txaio);
@@ -125,9 +125,9 @@ nni_tls_pipe_fini(void *arg)
}
static int
-nni_tls_pipe_init(nni_tls_pipe **pipep, nni_tls_ep *ep, void *tpp)
+tls_pipe_init(tls_pipe **pipep, tls_ep *ep, void *tpp)
{
- nni_tls_pipe * p;
+ tls_pipe * p;
nni_plat_tcp_pipe *tcp = tpp;
int rv;
@@ -137,10 +137,10 @@ nni_tls_pipe_init(nni_tls_pipe **pipep, nni_tls_ep *ep, void *tpp)
nni_mtx_init(&p->mtx);
if (((rv = nni_tls_init(&p->tls, ep->cfg, tcp)) != 0) ||
- ((rv = nni_aio_init(&p->txaio, nni_tls_pipe_send_cb, p)) != 0) ||
- ((rv = nni_aio_init(&p->rxaio, nni_tls_pipe_recv_cb, p)) != 0) ||
- ((rv = nni_aio_init(&p->negaio, nni_tls_pipe_nego_cb, p)) != 0)) {
- nni_tls_pipe_fini(p);
+ ((rv = nni_aio_init(&p->txaio, tls_pipe_send_cb, p)) != 0) ||
+ ((rv = nni_aio_init(&p->rxaio, tls_pipe_recv_cb, p)) != 0) ||
+ ((rv = nni_aio_init(&p->negaio, tls_pipe_nego_cb, p)) != 0)) {
+ tls_pipe_fini(p);
return (rv);
}
nni_aio_list_init(&p->recvq);
@@ -157,9 +157,9 @@ nni_tls_pipe_init(nni_tls_pipe **pipep, nni_tls_ep *ep, void *tpp)
}
static void
-nni_tls_cancel_nego(nni_aio *aio, int rv)
+tls_cancel_nego(nni_aio *aio, int rv)
{
- nni_tls_pipe *p = nni_aio_get_prov_data(aio);
+ tls_pipe *p = nni_aio_get_prov_data(aio);
nni_mtx_lock(&p->mtx);
if (p->user_negaio != aio) {
@@ -174,11 +174,11 @@ nni_tls_cancel_nego(nni_aio *aio, int rv)
}
static void
-nni_tls_pipe_nego_cb(void *arg)
+tls_pipe_nego_cb(void *arg)
{
- nni_tls_pipe *p = arg;
- nni_aio * aio = p->negaio;
- int rv;
+ tls_pipe *p = arg;
+ nni_aio * aio = p->negaio;
+ int rv;
nni_mtx_lock(&p->mtx);
if ((rv = nni_aio_result(aio)) != 0) {
@@ -237,14 +237,14 @@ done:
}
static void
-nni_tls_pipe_send_cb(void *arg)
+tls_pipe_send_cb(void *arg)
{
- nni_tls_pipe *p = arg;
- int rv;
- nni_aio * aio;
- size_t n;
- nni_msg * msg;
- nni_aio * txaio = p->txaio;
+ tls_pipe *p = arg;
+ int rv;
+ nni_aio * aio;
+ size_t n;
+ nni_msg * msg;
+ nni_aio * txaio = p->txaio;
nni_mtx_lock(&p->mtx);
aio = nni_list_first(&p->sendq);
@@ -270,7 +270,7 @@ nni_tls_pipe_send_cb(void *arg)
}
nni_aio_list_remove(aio);
if (!nni_list_empty(&p->sendq)) {
- nni_tls_pipe_dosend(p, nni_list_first(&p->sendq));
+ tls_pipe_dosend(p, nni_list_first(&p->sendq));
}
nni_mtx_unlock(&p->mtx);
@@ -282,14 +282,14 @@ nni_tls_pipe_send_cb(void *arg)
}
static void
-nni_tls_pipe_recv_cb(void *arg)
+tls_pipe_recv_cb(void *arg)
{
- nni_tls_pipe *p = arg;
- nni_aio * aio;
- int rv;
- size_t n;
- nni_msg * msg;
- nni_aio * rxaio = p->rxaio;
+ tls_pipe *p = arg;
+ nni_aio * aio;
+ int rv;
+ size_t n;
+ nni_msg * msg;
+ nni_aio * rxaio = p->rxaio;
nni_mtx_lock(&p->mtx);
aio = nni_list_first(&p->recvq);
@@ -345,7 +345,7 @@ nni_tls_pipe_recv_cb(void *arg)
msg = p->rxmsg;
p->rxmsg = NULL;
if (!nni_list_empty(&p->recvq)) {
- nni_tls_pipe_dorecv(p);
+ tls_pipe_dorecv(p);
}
nni_mtx_unlock(&p->mtx);
@@ -365,9 +365,9 @@ recv_error:
}
static void
-nni_tls_cancel_tx(nni_aio *aio, int rv)
+tls_cancel_tx(nni_aio *aio, int rv)
{
- nni_tls_pipe *p = nni_aio_get_prov_data(aio);
+ tls_pipe *p = nni_aio_get_prov_data(aio);
nni_mtx_lock(&p->mtx);
if (!nni_aio_list_active(aio)) {
@@ -389,7 +389,7 @@ nni_tls_cancel_tx(nni_aio *aio, int rv)
}
static void
-nni_tls_pipe_dosend(nni_tls_pipe *p, nni_aio *aio)
+tls_pipe_dosend(tls_pipe *p, nni_aio *aio)
{
nni_aio *txaio;
nni_msg *msg;
@@ -423,31 +423,31 @@ nni_tls_pipe_dosend(nni_tls_pipe *p, nni_aio *aio)
}
static void
-nni_tls_pipe_send(void *arg, nni_aio *aio)
+tls_pipe_send(void *arg, nni_aio *aio)
{
- nni_tls_pipe *p = arg;
- int rv;
+ tls_pipe *p = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
}
nni_mtx_lock(&p->mtx);
- if ((rv = nni_aio_schedule(aio, nni_tls_cancel_tx, p)) != 0) {
+ if ((rv = nni_aio_schedule(aio, tls_cancel_tx, p)) != 0) {
nni_mtx_unlock(&p->mtx);
nni_aio_finish_error(aio, rv);
return;
}
nni_list_append(&p->sendq, aio);
if (nni_list_first(&p->sendq) == aio) {
- nni_tls_pipe_dosend(p, aio);
+ tls_pipe_dosend(p, aio);
}
nni_mtx_unlock(&p->mtx);
}
static void
-nni_tls_cancel_rx(nni_aio *aio, int rv)
+tls_cancel_rx(nni_aio *aio, int rv)
{
- nni_tls_pipe *p = nni_aio_get_prov_data(aio);
+ tls_pipe *p = nni_aio_get_prov_data(aio);
nni_mtx_lock(&p->mtx);
if (!nni_aio_list_active(aio)) {
@@ -468,7 +468,7 @@ nni_tls_cancel_rx(nni_aio *aio, int rv)
}
static void
-nni_tls_pipe_dorecv(nni_tls_pipe *p)
+tls_pipe_dorecv(tls_pipe *p)
{
nni_aio *rxaio;
nni_iov iov;
@@ -484,16 +484,16 @@ nni_tls_pipe_dorecv(nni_tls_pipe *p)
}
static void
-nni_tls_pipe_recv(void *arg, nni_aio *aio)
+tls_pipe_recv(void *arg, nni_aio *aio)
{
- nni_tls_pipe *p = arg;
- int rv;
+ tls_pipe *p = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
}
nni_mtx_lock(&p->mtx);
- if ((rv = nni_aio_schedule(aio, nni_tls_cancel_rx, p)) != 0) {
+ if ((rv = nni_aio_schedule(aio, tls_cancel_rx, p)) != 0) {
nni_mtx_unlock(&p->mtx);
nni_aio_finish_error(aio, rv);
return;
@@ -501,74 +501,74 @@ nni_tls_pipe_recv(void *arg, nni_aio *aio)
nni_aio_list_append(&p->recvq, aio);
if (nni_list_first(&p->recvq) == aio) {
- nni_tls_pipe_dorecv(p);
+ tls_pipe_dorecv(p);
}
nni_mtx_unlock(&p->mtx);
}
static uint16_t
-nni_tls_pipe_peer(void *arg)
+tls_pipe_peer(void *arg)
{
- nni_tls_pipe *p = arg;
+ tls_pipe *p = arg;
return (p->peer);
}
static int
-nni_tls_pipe_getopt_locaddr(void *arg, void *v, size_t *szp, int typ)
+tls_pipe_get_locaddr(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tls_pipe *p = arg;
- int rv;
- nni_sockaddr sa;
+ tls_pipe * p = arg;
+ int rv;
+ nni_sockaddr sa;
memset(&sa, 0, sizeof(sa));
if ((rv = nni_tls_sockname(p->tls, &sa)) == 0) {
- rv = nni_copyout_sockaddr(&sa, v, szp, typ);
+ rv = nni_copyout_sockaddr(&sa, v, szp, t);
}
return (rv);
}
static int
-nni_tls_pipe_getopt_remaddr(void *arg, void *v, size_t *szp, int typ)
+tls_pipe_get_remaddr(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tls_pipe *p = arg;
- int rv;
- nni_sockaddr sa;
+ tls_pipe * p = arg;
+ int rv;
+ nni_sockaddr sa;
memset(&sa, 0, sizeof(sa));
if ((rv = nni_tls_peername(p->tls, &sa)) == 0) {
- rv = nni_copyout_sockaddr(&sa, v, szp, typ);
+ rv = nni_copyout_sockaddr(&sa, v, szp, t);
}
return (rv);
}
static int
-nni_tls_pipe_getopt_keepalive(void *arg, void *v, size_t *szp, int typ)
+tls_pipe_get_keepalive(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tls_pipe *p = arg;
- return (nni_copyout_bool(p->keepalive, v, szp, typ));
+ tls_pipe *p = arg;
+ return (nni_copyout_bool(p->keepalive, v, szp, t));
}
static int
-nni_tls_pipe_getopt_nodelay(void *arg, void *v, size_t *szp, int typ)
+tls_pipe_get_nodelay(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tls_pipe *p = arg;
- return (nni_copyout_bool(p->nodelay, v, szp, typ));
+ tls_pipe *p = arg;
+ return (nni_copyout_bool(p->nodelay, v, szp, t));
}
static void
-nni_tls_pipe_start(void *arg, nni_aio *aio)
+tls_pipe_start(void *arg, nni_aio *aio)
{
- nni_tls_pipe *p = arg;
- nni_aio * negaio;
- nni_iov iov;
- int rv;
+ tls_pipe *p = arg;
+ nni_aio * negaio;
+ nni_iov iov;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
}
nni_mtx_lock(&p->mtx);
- if ((rv = nni_aio_schedule(aio, nni_tls_cancel_nego, p)) != 0) {
+ if ((rv = nni_aio_schedule(aio, tls_cancel_nego, p)) != 0) {
nni_mtx_unlock(&p->mtx);
nni_aio_finish_error(aio, rv);
return;
@@ -594,9 +594,9 @@ nni_tls_pipe_start(void *arg, nni_aio *aio)
}
static void
-nni_tls_ep_fini(void *arg)
+tls_ep_fini(void *arg)
{
- nni_tls_ep *ep = arg;
+ tls_ep *ep = arg;
nni_aio_stop(ep->aio);
if (ep->tep != NULL) {
@@ -611,9 +611,9 @@ nni_tls_ep_fini(void *arg)
}
static int
-nni_tls_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
+tls_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
{
- nni_tls_ep * ep;
+ tls_ep * ep;
int rv;
char * host;
char * serv;
@@ -698,13 +698,13 @@ nni_tls_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
if (((rv = nni_plat_tcp_ep_init(&ep->tep, &lsa, &rsa, mode)) != 0) ||
((rv = nni_tls_config_init(&ep->cfg, tlsmode)) != 0) ||
((rv = nng_tls_config_auth_mode(ep->cfg, authmode)) != 0) ||
- ((rv = nni_aio_init(&ep->aio, nni_tls_ep_cb, ep)) != 0)) {
- nni_tls_ep_fini(ep);
+ ((rv = nni_aio_init(&ep->aio, tls_ep_cb, ep)) != 0)) {
+ tls_ep_fini(ep);
return (rv);
}
if ((tlsmode == NNG_TLS_MODE_CLIENT) && (host != NULL)) {
if ((rv = nng_tls_config_server_name(ep->cfg, host)) != 0) {
- nni_tls_ep_fini(ep);
+ tls_ep_fini(ep);
return (rv);
}
}
@@ -716,9 +716,9 @@ nni_tls_ep_init(void **epp, nni_url *url, nni_sock *sock, int mode)
}
static void
-nni_tls_ep_close(void *arg)
+tls_ep_close(void *arg)
{
- nni_tls_ep *ep = arg;
+ tls_ep *ep = arg;
nni_aio_close(ep->aio);
@@ -728,10 +728,10 @@ nni_tls_ep_close(void *arg)
}
static int
-nni_tls_ep_bind(void *arg)
+tls_ep_bind(void *arg)
{
- nni_tls_ep *ep = arg;
- int rv;
+ tls_ep *ep = arg;
+ int rv;
nni_mtx_lock(&ep->mtx);
rv = nni_plat_tcp_ep_listen(ep->tep, &ep->bsa);
@@ -741,11 +741,11 @@ nni_tls_ep_bind(void *arg)
}
static void
-nni_tls_ep_finish(nni_tls_ep *ep)
+tls_ep_finish(tls_ep *ep)
{
- nni_aio * aio;
- int rv;
- nni_tls_pipe *pipe = NULL;
+ nni_aio * aio;
+ int rv;
+ tls_pipe *pipe = NULL;
if ((rv = nni_aio_result(ep->aio)) != 0) {
goto done;
@@ -754,7 +754,7 @@ nni_tls_ep_finish(nni_tls_ep *ep)
// Attempt to allocate the parent pipe. If this fails we'll
// drop the connection (ENOMEM probably).
- rv = nni_tls_pipe_init(&pipe, ep, nni_aio_get_output(ep->aio, 0));
+ rv = tls_pipe_init(&pipe, ep, nni_aio_get_output(ep->aio, 0));
done:
aio = ep->user_aio;
@@ -766,7 +766,7 @@ done:
return;
}
if (pipe != NULL) {
- nni_tls_pipe_fini(pipe);
+ tls_pipe_fini(pipe);
}
if (aio != NULL) {
NNI_ASSERT(rv != 0);
@@ -775,19 +775,19 @@ done:
}
static void
-nni_tls_ep_cb(void *arg)
+tls_ep_cb(void *arg)
{
- nni_tls_ep *ep = arg;
+ tls_ep *ep = arg;
nni_mtx_lock(&ep->mtx);
- nni_tls_ep_finish(ep);
+ tls_ep_finish(ep);
nni_mtx_unlock(&ep->mtx);
}
static void
-nni_tls_cancel_ep(nni_aio *aio, int rv)
+tls_cancel_ep(nni_aio *aio, int rv)
{
- nni_tls_ep *ep = nni_aio_get_prov_data(aio);
+ tls_ep *ep = nni_aio_get_prov_data(aio);
nni_mtx_lock(&ep->mtx);
if (ep->user_aio != aio) {
@@ -802,17 +802,17 @@ nni_tls_cancel_ep(nni_aio *aio, int rv)
}
static void
-nni_tls_ep_accept(void *arg, nni_aio *aio)
+tls_ep_accept(void *arg, nni_aio *aio)
{
- nni_tls_ep *ep = arg;
- int rv;
+ tls_ep *ep = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
}
nni_mtx_lock(&ep->mtx);
NNI_ASSERT(ep->user_aio == NULL);
- if ((rv = nni_aio_schedule(aio, nni_tls_cancel_ep, ep)) != 0) {
+ if ((rv = nni_aio_schedule(aio, tls_cancel_ep, ep)) != 0) {
nni_mtx_unlock(&ep->mtx);
nni_aio_finish_error(aio, rv);
return;
@@ -823,17 +823,17 @@ nni_tls_ep_accept(void *arg, nni_aio *aio)
}
static void
-nni_tls_ep_connect(void *arg, nni_aio *aio)
+tls_ep_connect(void *arg, nni_aio *aio)
{
- nni_tls_ep *ep = arg;
- int rv;
+ tls_ep *ep = arg;
+ int rv;
if (nni_aio_begin(aio) != 0) {
return;
}
nni_mtx_lock(&ep->mtx);
NNI_ASSERT(ep->user_aio == NULL);
- if ((rv = nni_aio_schedule(aio, nni_tls_cancel_ep, ep)) != 0) {
+ if ((rv = nni_aio_schedule(aio, tls_cancel_ep, ep)) != 0) {
nni_mtx_unlock(&ep->mtx);
nni_aio_finish_error(aio, rv);
}
@@ -843,13 +843,18 @@ nni_tls_ep_connect(void *arg, nni_aio *aio)
}
static int
-nni_tls_ep_setopt_nodelay(void *arg, const void *v, size_t sz, int typ)
+tls_ep_chk_bool(const void *v, size_t sz, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
- bool val;
- int rv;
- rv = nni_copyin_bool(&val, v, sz, typ);
- if ((rv == 0) && (ep != NULL)) {
+ return (nni_copyin_bool(NULL, v, sz, t));
+}
+
+static int
+tls_ep_set_nodelay(void *arg, const void *v, size_t sz, nni_opt_type t)
+{
+ tls_ep *ep = arg;
+ bool val;
+ int rv;
+ if ((rv = nni_copyin_bool(&val, v, sz, t)) == 0) {
nni_mtx_lock(&ep->mtx);
ep->nodelay = val;
nni_mtx_unlock(&ep->mtx);
@@ -858,20 +863,19 @@ nni_tls_ep_setopt_nodelay(void *arg, const void *v, size_t sz, int typ)
}
static int
-nni_tls_ep_getopt_nodelay(void *arg, void *v, size_t *szp, int typ)
+tls_ep_get_nodelay(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
- return (nni_copyout_bool(ep->nodelay, v, szp, typ));
+ tls_ep *ep = arg;
+ return (nni_copyout_bool(ep->nodelay, v, szp, t));
}
static int
-nni_tls_ep_setopt_keepalive(void *arg, const void *v, size_t sz, int typ)
+tls_ep_set_keepalive(void *arg, const void *v, size_t sz, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
- bool val;
- int rv;
- rv = nni_copyin_bool(&val, v, sz, typ);
- if ((rv == 0) && (ep != NULL)) {
+ tls_ep *ep = arg;
+ bool val;
+ int rv;
+ if ((rv = nni_copyin_bool(&val, v, sz, t)) == 0) {
nni_mtx_lock(&ep->mtx);
ep->keepalive = val;
nni_mtx_unlock(&ep->mtx);
@@ -880,37 +884,36 @@ nni_tls_ep_setopt_keepalive(void *arg, const void *v, size_t sz, int typ)
}
static int
-nni_tls_ep_getopt_keepalive(void *arg, void *v, size_t *szp, int typ)
+tls_ep_get_keepalive(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
- return (nni_copyout_bool(ep->keepalive, v, szp, typ));
+ tls_ep *ep = arg;
+ return (nni_copyout_bool(ep->keepalive, v, szp, t));
}
static int
-nni_tls_ep_getopt_url(void *arg, void *v, size_t *szp, int typ)
+tls_ep_get_url(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
- char ustr[128];
- char ipstr[48]; // max for IPv6 addresses including []
- char portstr[6]; // max for 16-bit port
+ tls_ep *ep = arg;
+ char ustr[128];
+ char ipstr[48]; // max for IPv6 addresses including []
+ char portstr[6]; // max for 16-bit port
if (ep->mode == NNI_EP_MODE_DIAL) {
- return (nni_copyout_str(ep->url->u_rawurl, v, szp, typ));
+ return (nni_copyout_str(ep->url->u_rawurl, v, szp, t));
}
nni_plat_tcp_ntop(&ep->bsa, ipstr, portstr);
snprintf(ustr, sizeof(ustr), "tls+tcp://%s:%s", ipstr, portstr);
- return (nni_copyout_str(ustr, v, szp, typ));
+ return (nni_copyout_str(ustr, v, szp, t));
}
static int
-nni_tls_ep_setopt_recvmaxsz(void *arg, const void *v, size_t sz, int typ)
+tls_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
- size_t val;
- int rv;
+ tls_ep *ep = arg;
+ size_t val;
+ int rv;
- rv = nni_copyin_size(&val, v, sz, 0, NNI_MAXSZ, typ);
- if ((rv == 0) && (ep != NULL)) {
+ if ((rv = nni_copyin_size(&val, v, sz, 0, NNI_MAXSZ, t)) == 0) {
nni_mtx_lock(&ep->mtx);
ep->rcvmax = val;
nni_mtx_unlock(&ep->mtx);
@@ -919,28 +922,42 @@ nni_tls_ep_setopt_recvmaxsz(void *arg, const void *v, size_t sz, int typ)
}
static int
-nni_tls_ep_getopt_recvmaxsz(void *arg, void *v, size_t *szp, int typ)
+tls_ep_chk_recvmaxsz(const void *v, size_t sz, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
- return (nni_copyout_size(ep->rcvmax, v, szp, typ));
+ return (nni_copyin_size(NULL, v, sz, 0, NNI_MAXSZ, t));
}
static int
-tls_setopt_config(void *arg, const void *data, size_t sz, int typ)
+tls_ep_get_recvmaxsz(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tls_ep * ep = arg;
+ tls_ep *ep = arg;
+ return (nni_copyout_size(ep->rcvmax, v, szp, t));
+}
+
+static int
+tls_ep_chk_config(const void *data, size_t sz, nni_opt_type t)
+{
+ void *v;
+ int rv;
+ if (((rv = nni_copyin_ptr(&v, data, sz, t)) == 0) && (v == NULL)) {
+ rv = NNG_EINVAL;
+ }
+ return (rv);
+}
+
+static int
+tls_ep_set_config(void *arg, const void *data, size_t sz, nni_opt_type t)
+{
+ tls_ep * ep = arg;
nng_tls_config *cfg, *old;
int rv;
- if ((rv = nni_copyin_ptr((void **) &cfg, data, sz, typ)) != 0) {
+ if ((rv = nni_copyin_ptr((void **) &cfg, data, sz, t)) != 0) {
return (rv);
}
if (cfg == NULL) {
return (NNG_EINVAL);
}
- if (ep == NULL) {
- return (0);
- }
old = ep->cfg;
nni_tls_config_hold(cfg);
ep->cfg = cfg;
@@ -951,234 +968,241 @@ tls_setopt_config(void *arg, const void *data, size_t sz, int typ)
}
static int
-tls_getopt_config(void *arg, void *v, size_t *szp, int typ)
+tls_ep_get_config(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
- return (nni_copyout_ptr(ep->cfg, v, szp, typ));
+ tls_ep *ep = arg;
+ return (nni_copyout_ptr(ep->cfg, v, szp, t));
}
static int
-tls_setopt_ca_file(void *arg, const void *v, size_t sz, int typ)
+tls_ep_chk_string(const void *v, size_t sz, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
-
- if ((typ != NNI_TYPE_OPAQUE) && (typ != NNI_TYPE_STRING)) {
+ if ((t != NNI_TYPE_OPAQUE) && (t != NNI_TYPE_STRING)) {
return (NNG_EBADTYPE);
}
if (nni_strnlen(v, sz) >= sz) {
return (NNG_EINVAL);
}
- if (ep == NULL) {
- return (0);
+ return (0);
+}
+
+static int
+tls_ep_set_ca_file(void *arg, const void *v, size_t sz, nni_opt_type t)
+{
+ tls_ep *ep = arg;
+ int rv;
+
+ if ((rv = tls_ep_chk_string(v, sz, t)) == 0) {
+ rv = nng_tls_config_ca_file(ep->cfg, v);
}
- return (nng_tls_config_ca_file(ep->cfg, v));
+ return (rv);
+}
+
+static int
+tls_ep_chk_auth_mode(const void *v, size_t sz, nni_opt_type t)
+{
+ return (nni_copyin_int(NULL, v, sz, NNG_TLS_AUTH_MODE_NONE,
+ NNG_TLS_AUTH_MODE_REQUIRED, t));
}
static int
-tls_setopt_auth_mode(void *arg, const void *v, size_t sz, int typ)
+tls_ep_set_auth_mode(void *arg, const void *v, size_t sz, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
- int mode;
- int rv;
+ tls_ep *ep = arg;
+ int mode;
+ int rv;
rv = nni_copyin_int(&mode, v, sz, NNG_TLS_AUTH_MODE_NONE,
- NNG_TLS_AUTH_MODE_REQUIRED, typ);
- if ((rv != 0) || (ep == NULL)) {
- return (rv);
+ NNG_TLS_AUTH_MODE_REQUIRED, t);
+ if (rv == 0) {
+ rv = nng_tls_config_auth_mode(ep->cfg, mode);
}
- return (nng_tls_config_auth_mode(ep->cfg, mode));
+ return (rv);
}
static int
-tls_setopt_server_name(void *arg, const void *v, size_t sz, int typ)
+tls_ep_set_server_name(void *arg, const void *v, size_t sz, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
+ tls_ep *ep = arg;
+ int rv;
- if ((typ != NNI_TYPE_OPAQUE) && (typ != NNI_TYPE_STRING)) {
- return (NNG_EBADTYPE);
+ if ((rv = tls_ep_chk_string(v, sz, t)) == 0) {
+ rv = nng_tls_config_server_name(ep->cfg, v);
}
- if (nni_strnlen(v, sz) >= sz) {
- return (NNG_EINVAL);
- }
- if (ep == NULL) {
- return (0);
- }
- return (nng_tls_config_server_name(ep->cfg, v));
+ return (rv);
}
static int
-tls_setopt_cert_key_file(void *arg, const void *v, size_t sz, int typ)
+tls_ep_set_cert_key_file(void *arg, const void *v, size_t sz, nni_opt_type t)
{
- nni_tls_ep *ep = arg;
+ tls_ep *ep = arg;
+ int rv;
- if ((typ != NNI_TYPE_OPAQUE) && (typ != NNI_TYPE_STRING)) {
- return (NNG_EBADTYPE);
+ if ((rv = tls_ep_chk_string(v, sz, t)) == 0) {
+ rv = nng_tls_config_cert_key_file(ep->cfg, v, NULL);
}
- if (nni_strnlen(v, sz) >= sz) {
- return (NNG_EINVAL);
- }
- if (ep == NULL) {
- return (0);
- }
- return (nng_tls_config_cert_key_file(ep->cfg, v, NULL));
+ return (rv);
}
static int
-tls_getopt_verified(void *arg, void *v, size_t *szp, int typ)
+tls_pipe_get_verified(void *arg, void *v, size_t *szp, nni_opt_type t)
{
- nni_tls_pipe *p = arg;
+ tls_pipe *p = arg;
- return (nni_copyout_bool(nni_tls_verified(p->tls), v, szp, typ));
+ return (nni_copyout_bool(nni_tls_verified(p->tls), v, szp, t));
}
-static nni_tran_pipe_option nni_tls_pipe_options[] = {
+static nni_tran_option tls_pipe_options[] = {
{
- .po_name = NNG_OPT_LOCADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = nni_tls_pipe_getopt_locaddr,
+ .o_name = NNG_OPT_LOCADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = tls_pipe_get_locaddr,
},
{
- .po_name = NNG_OPT_REMADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = nni_tls_pipe_getopt_remaddr,
+ .o_name = NNG_OPT_REMADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = tls_pipe_get_remaddr,
},
{
- .po_name = NNG_OPT_TLS_VERIFIED,
- .po_type = NNI_TYPE_BOOL,
- .po_getopt = tls_getopt_verified,
+ .o_name = NNG_OPT_TLS_VERIFIED,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = tls_pipe_get_verified,
},
{
- .po_name = NNG_OPT_TCP_KEEPALIVE,
- .po_type = NNI_TYPE_BOOL,
- .po_getopt = nni_tls_pipe_getopt_keepalive,
+ .o_name = NNG_OPT_TCP_KEEPALIVE,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = tls_pipe_get_keepalive,
},
{
- .po_name = NNG_OPT_TCP_NODELAY,
- .po_type = NNI_TYPE_BOOL,
- .po_getopt = nni_tls_pipe_getopt_nodelay,
+ .o_name = NNG_OPT_TCP_NODELAY,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = tls_pipe_get_nodelay,
},
// terminate list
{
- .po_name = NULL,
+ .o_name = NULL,
},
};
-static nni_tran_pipe_ops nni_tls_pipe_ops = {
- .p_fini = nni_tls_pipe_fini,
- .p_start = nni_tls_pipe_start,
- .p_stop = nni_tls_pipe_stop,
- .p_send = nni_tls_pipe_send,
- .p_recv = nni_tls_pipe_recv,
- .p_close = nni_tls_pipe_close,
- .p_peer = nni_tls_pipe_peer,
- .p_options = nni_tls_pipe_options,
+static nni_tran_pipe_ops tls_pipe_ops = {
+ .p_fini = tls_pipe_fini,
+ .p_start = tls_pipe_start,
+ .p_stop = tls_pipe_stop,
+ .p_send = tls_pipe_send,
+ .p_recv = tls_pipe_recv,
+ .p_close = tls_pipe_close,
+ .p_peer = tls_pipe_peer,
+ .p_options = tls_pipe_options,
};
-static nni_tran_ep_option nni_tls_ep_options[] = {
+static nni_tran_option tls_ep_options[] = {
{
- .eo_name = NNG_OPT_RECVMAXSZ,
- .eo_type = NNI_TYPE_SIZE,
- .eo_getopt = nni_tls_ep_getopt_recvmaxsz,
- .eo_setopt = nni_tls_ep_setopt_recvmaxsz,
+ .o_name = NNG_OPT_RECVMAXSZ,
+ .o_type = NNI_TYPE_SIZE,
+ .o_get = tls_ep_get_recvmaxsz,
+ .o_set = tls_ep_set_recvmaxsz,
+ .o_chk = tls_ep_chk_recvmaxsz,
},
{
- .eo_name = NNG_OPT_URL,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = nni_tls_ep_getopt_url,
- .eo_setopt = NULL,
+ .o_name = NNG_OPT_URL,
+ .o_type = NNI_TYPE_STRING,
+ .o_get = tls_ep_get_url,
},
{
- .eo_name = NNG_OPT_TLS_CONFIG,
- .eo_type = NNI_TYPE_POINTER,
- .eo_getopt = tls_getopt_config,
- .eo_setopt = tls_setopt_config,
+ .o_name = NNG_OPT_TLS_CONFIG,
+ .o_type = NNI_TYPE_POINTER,
+ .o_get = tls_ep_get_config,
+ .o_set = tls_ep_set_config,
+ .o_chk = tls_ep_chk_config,
},
{
- .eo_name = NNG_OPT_TLS_CERT_KEY_FILE,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = NULL,
- .eo_setopt = tls_setopt_cert_key_file,
+ .o_name = NNG_OPT_TLS_CERT_KEY_FILE,
+ .o_type = NNI_TYPE_STRING,
+ .o_set = tls_ep_set_cert_key_file,
+ .o_chk = tls_ep_chk_string,
},
{
- .eo_name = NNG_OPT_TLS_CA_FILE,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = NULL,
- .eo_setopt = tls_setopt_ca_file,
+ .o_name = NNG_OPT_TLS_CA_FILE,
+ .o_type = NNI_TYPE_STRING,
+ .o_set = tls_ep_set_ca_file,
+ .o_chk = tls_ep_chk_string,
},
{
- .eo_name = NNG_OPT_TLS_AUTH_MODE,
- .eo_type = NNI_TYPE_INT32, // enum really
- .eo_getopt = NULL,
- .eo_setopt = tls_setopt_auth_mode,
+ .o_name = NNG_OPT_TLS_AUTH_MODE,
+ .o_type = NNI_TYPE_INT32, // enum really
+ .o_set = tls_ep_set_auth_mode,
+ .o_chk = tls_ep_chk_auth_mode,
},
{
- .eo_name = NNG_OPT_TLS_SERVER_NAME,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = NULL,
- .eo_setopt = tls_setopt_server_name,
+ .o_name = NNG_OPT_TLS_SERVER_NAME,
+ .o_type = NNI_TYPE_STRING,
+ .o_set = tls_ep_set_server_name,
+ .o_chk = tls_ep_chk_string,
},
{
- .eo_name = NNG_OPT_TCP_NODELAY,
- .eo_type = NNI_TYPE_BOOL,
- .eo_getopt = nni_tls_ep_getopt_nodelay,
- .eo_setopt = nni_tls_ep_setopt_nodelay,
+ .o_name = NNG_OPT_TCP_NODELAY,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = tls_ep_get_nodelay,
+ .o_set = tls_ep_set_nodelay,
+ .o_chk = tls_ep_chk_bool,
},
{
- .eo_name = NNG_OPT_TCP_KEEPALIVE,
- .eo_type = NNI_TYPE_BOOL,
- .eo_getopt = nni_tls_ep_getopt_keepalive,
- .eo_setopt = nni_tls_ep_setopt_keepalive,
+ .o_name = NNG_OPT_TCP_KEEPALIVE,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = tls_ep_get_keepalive,
+ .o_set = tls_ep_set_keepalive,
+ .o_chk = tls_ep_chk_bool,
},
// terminate list
{
- .eo_name = NULL,
+ .o_name = NULL,
},
};
-static nni_tran_ep_ops nni_tls_ep_ops = {
- .ep_init = nni_tls_ep_init,
- .ep_fini = nni_tls_ep_fini,
- .ep_connect = nni_tls_ep_connect,
- .ep_bind = nni_tls_ep_bind,
- .ep_accept = nni_tls_ep_accept,
- .ep_close = nni_tls_ep_close,
- .ep_options = nni_tls_ep_options,
+static nni_tran_ep_ops tls_ep_ops = {
+ .ep_init = tls_ep_init,
+ .ep_fini = tls_ep_fini,
+ .ep_connect = tls_ep_connect,
+ .ep_bind = tls_ep_bind,
+ .ep_accept = tls_ep_accept,
+ .ep_close = tls_ep_close,
+ .ep_options = tls_ep_options,
};
-static nni_tran nni_tls_tran = {
+static nni_tran tls_tran = {
.tran_version = NNI_TRANSPORT_VERSION,
.tran_scheme = "tls+tcp",
- .tran_ep = &nni_tls_ep_ops,
- .tran_pipe = &nni_tls_pipe_ops,
- .tran_init = nni_tls_tran_init,
- .tran_fini = nni_tls_tran_fini,
+ .tran_ep = &tls_ep_ops,
+ .tran_pipe = &tls_pipe_ops,
+ .tran_init = tls_tran_init,
+ .tran_fini = tls_tran_fini,
};
-static nni_tran nni_tls4_tran = {
+static nni_tran tls4_tran = {
.tran_version = NNI_TRANSPORT_VERSION,
.tran_scheme = "tls+tcp4",
- .tran_ep = &nni_tls_ep_ops,
- .tran_pipe = &nni_tls_pipe_ops,
- .tran_init = nni_tls_tran_init,
- .tran_fini = nni_tls_tran_fini,
+ .tran_ep = &tls_ep_ops,
+ .tran_pipe = &tls_pipe_ops,
+ .tran_init = tls_tran_init,
+ .tran_fini = tls_tran_fini,
};
-static nni_tran nni_tls6_tran = {
+static nni_tran tls6_tran = {
.tran_version = NNI_TRANSPORT_VERSION,
.tran_scheme = "tls+tcp6",
- .tran_ep = &nni_tls_ep_ops,
- .tran_pipe = &nni_tls_pipe_ops,
- .tran_init = nni_tls_tran_init,
- .tran_fini = nni_tls_tran_fini,
+ .tran_ep = &tls_ep_ops,
+ .tran_pipe = &tls_pipe_ops,
+ .tran_init = tls_tran_init,
+ .tran_fini = tls_tran_fini,
};
int
nng_tls_register(void)
{
int rv;
- if (((rv = nni_tran_register(&nni_tls_tran)) != 0) ||
- ((rv = nni_tran_register(&nni_tls4_tran)) != 0) ||
- ((rv = nni_tran_register(&nni_tls6_tran)) != 0)) {
+ if (((rv = nni_tran_register(&tls_tran)) != 0) ||
+ ((rv = nni_tran_register(&tls4_tran)) != 0) ||
+ ((rv = nni_tran_register(&tls6_tran)) != 0)) {
return (rv);
}
return (0);
diff --git a/src/transport/ws/websocket.c b/src/transport/ws/websocket.c
index 62f43fd0..7dbf6903 100644
--- a/src/transport/ws/websocket.c
+++ b/src/transport/ws/websocket.c
@@ -367,14 +367,25 @@ ws_ep_connect(void *arg, nni_aio *aio)
}
static int
-ws_ep_setopt_recvmaxsz(void *arg, const void *v, size_t sz, int typ)
+ws_ep_chk_string(const void *v, size_t sz, nni_opt_type t)
+{
+ if ((t != NNI_TYPE_OPAQUE) && (t != NNI_TYPE_STRING)) {
+ return (NNG_EBADTYPE);
+ }
+ if (nni_strnlen(v, sz) >= sz) {
+ return (NNG_EINVAL);
+ }
+ return (0);
+}
+
+static int
+ws_ep_set_recvmaxsz(void *arg, const void *v, size_t sz, nni_opt_type t)
{
ws_ep *ep = arg;
size_t val;
int rv;
- rv = nni_copyin_size(&val, v, sz, 0, NNI_MAXSZ, typ);
- if ((rv == 0) && (ep != NULL)) {
+ if ((rv = nni_copyin_size(&val, v, sz, 0, NNI_MAXSZ, t)) == 0) {
nni_mtx_lock(&ep->mtx);
ep->rcvmax = val;
nni_mtx_unlock(&ep->mtx);
@@ -388,7 +399,20 @@ ws_ep_setopt_recvmaxsz(void *arg, const void *v, size_t sz, int typ)
}
static int
-ws_ep_setopt_headers(ws_ep *ep, const char *v)
+ws_ep_chk_recvmaxsz(const void *v, size_t sz, nni_opt_type t)
+{
+ return (nni_copyin_size(NULL, v, sz, 0, NNI_MAXSZ, t));
+}
+
+static int
+ws_ep_get_recvmaxsz(void *arg, void *v, size_t *szp, nni_opt_type t)
+{
+ ws_ep *ep = arg;
+ return (nni_copyout_size(ep->rcvmax, v, szp, t));
+}
+
+static int
+ws_ep_set_headers(ws_ep *ep, const char *v)
{
char * dupstr;
size_t duplen;
@@ -471,52 +495,39 @@ done:
}
static int
-ws_ep_setopt_reqhdrs(void *arg, const void *v, size_t sz, int typ)
+ws_ep_set_reqhdrs(void *arg, const void *v, size_t sz, nni_opt_type t)
{
ws_ep *ep = arg;
+ int rv;
- if ((typ != NNI_TYPE_STRING) && (typ != NNI_TYPE_OPAQUE)) {
- return (NNG_EBADTYPE);
- }
-
- if (nni_strnlen(v, sz) >= sz) {
- return (NNG_EINVAL);
- }
-
- if ((ep != NULL) && (ep->mode == NNI_EP_MODE_LISTEN)) {
- return (NNG_EREADONLY);
+ if ((rv = ws_ep_chk_string(v, sz, t)) == 0) {
+ if (ep->mode == NNI_EP_MODE_LISTEN) {
+ rv = NNG_EREADONLY;
+ } else {
+ rv = ws_ep_set_headers(ep, v);
+ }
}
- return (ws_ep_setopt_headers(ep, v));
+ return (rv);
}
static int
-ws_ep_setopt_reshdrs(void *arg, const void *v, size_t sz, int typ)
+ws_ep_set_reshdrs(void *arg, const void *v, size_t sz, nni_opt_type t)
{
ws_ep *ep = arg;
+ int rv;
- if ((typ != NNI_TYPE_STRING) && (typ != NNI_TYPE_OPAQUE)) {
- return (NNG_EBADTYPE);
- }
-
- if (nni_strnlen(v, sz) >= sz) {
- return (NNG_EINVAL);
- }
-
- if ((ep != NULL) && (ep->mode == NNI_EP_MODE_DIAL)) {
- return (NNG_EREADONLY);
+ if ((rv = ws_ep_chk_string(v, sz, t)) == 0) {
+ if (ep->mode == NNI_EP_MODE_DIAL) {
+ rv = NNG_EREADONLY;
+ } else {
+ rv = ws_ep_set_headers(ep, v);
+ }
}
- return (ws_ep_setopt_headers(ep, v));
-}
-
-static int
-ws_ep_getopt_recvmaxsz(void *arg, void *v, size_t *szp, int typ)
-{
- ws_ep *ep = arg;
- return (nni_copyout_size(ep->rcvmax, v, szp, typ));
+ return (rv);
}
static int
-ws_pipe_getopt_locaddr(void *arg, void *v, size_t *szp, int typ)
+ws_pipe_get_locaddr(void *arg, void *v, size_t *szp, nni_opt_type t)
{
ws_pipe * p = arg;
int rv;
@@ -524,13 +535,13 @@ ws_pipe_getopt_locaddr(void *arg, void *v, size_t *szp, int typ)
memset(&sa, 0, sizeof(sa));
if ((rv = nni_ws_sock_addr(p->ws, &sa)) == 0) {
- rv = nni_copyout_sockaddr(&sa, v, szp, typ);
+ rv = nni_copyout_sockaddr(&sa, v, szp, t);
}
return (rv);
}
static int
-ws_pipe_getopt_remaddr(void *arg, void *v, size_t *szp, int typ)
+ws_pipe_get_remaddr(void *arg, void *v, size_t *szp, nni_opt_type t)
{
ws_pipe * p = arg;
int rv;
@@ -538,13 +549,13 @@ ws_pipe_getopt_remaddr(void *arg, void *v, size_t *szp, int typ)
memset(&sa, 0, sizeof(sa));
if ((rv = nni_ws_peer_addr(p->ws, &sa)) == 0) {
- rv = nni_copyout_sockaddr(&sa, v, szp, typ);
+ rv = nni_copyout_sockaddr(&sa, v, szp, t);
}
return (rv);
}
static int
-ws_pipe_getopt_reshdrs(void *arg, void *v, size_t *szp, int typ)
+ws_pipe_get_reshdrs(void *arg, void *v, size_t *szp, nni_opt_type t)
{
ws_pipe * p = arg;
const char *s;
@@ -552,11 +563,11 @@ ws_pipe_getopt_reshdrs(void *arg, void *v, size_t *szp, int typ)
if ((s = nni_ws_response_headers(p->ws)) == NULL) {
return (NNG_ENOMEM);
}
- return (nni_copyout_str(s, v, szp, typ));
+ return (nni_copyout_str(s, v, szp, t));
}
static int
-ws_pipe_getopt_reqhdrs(void *arg, void *v, size_t *szp, int typ)
+ws_pipe_get_reqhdrs(void *arg, void *v, size_t *szp, nni_opt_type t)
{
ws_pipe * p = arg;
const char *s;
@@ -564,46 +575,46 @@ ws_pipe_getopt_reqhdrs(void *arg, void *v, size_t *szp, int typ)
if ((s = nni_ws_request_headers(p->ws)) == NULL) {
return (NNG_ENOMEM);
}
- return (nni_copyout_str(s, v, szp, typ));
+ return (nni_copyout_str(s, v, szp, t));
}
static int
-ws_pipe_getopt_tls_verified(void *arg, void *v, size_t *szp, int typ)
+ws_pipe_get_tls_verified(void *arg, void *v, size_t *szp, nni_opt_type t)
{
ws_pipe *p = arg;
- return (nni_copyout_bool(nni_ws_tls_verified(p->ws), v, szp, typ));
+ return (nni_copyout_bool(nni_ws_tls_verified(p->ws), v, szp, t));
}
-static nni_tran_pipe_option ws_pipe_options[] = {
+static nni_tran_option ws_pipe_options[] = {
{
- .po_name = NNG_OPT_LOCADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = ws_pipe_getopt_locaddr,
+ .o_name = NNG_OPT_LOCADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = ws_pipe_get_locaddr,
},
{
- .po_name = NNG_OPT_REMADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = ws_pipe_getopt_remaddr,
+ .o_name = NNG_OPT_REMADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = ws_pipe_get_remaddr,
},
{
- .po_name = NNG_OPT_WS_REQUEST_HEADERS,
- .po_type = NNI_TYPE_STRING,
- .po_getopt = ws_pipe_getopt_reqhdrs,
+ .o_name = NNG_OPT_WS_REQUEST_HEADERS,
+ .o_type = NNI_TYPE_STRING,
+ .o_get = ws_pipe_get_reqhdrs,
},
{
- .po_name = NNG_OPT_WS_RESPONSE_HEADERS,
- .po_type = NNI_TYPE_STRING,
- .po_getopt = ws_pipe_getopt_reshdrs,
+ .o_name = NNG_OPT_WS_RESPONSE_HEADERS,
+ .o_type = NNI_TYPE_STRING,
+ .o_get = ws_pipe_get_reshdrs,
},
{
- .po_name = NNG_OPT_TLS_VERIFIED,
- .po_type = NNI_TYPE_BOOL,
- .po_getopt = ws_pipe_getopt_tls_verified,
+ .o_name = NNG_OPT_TLS_VERIFIED,
+ .o_type = NNI_TYPE_BOOL,
+ .o_get = ws_pipe_get_tls_verified,
},
// terminate list
{
- .po_name = NULL,
+ .o_name = NULL,
}
};
@@ -617,28 +628,29 @@ static nni_tran_pipe_ops ws_pipe_ops = {
.p_options = ws_pipe_options,
};
-static nni_tran_ep_option ws_ep_options[] = {
+static nni_tran_option ws_ep_options[] = {
{
- .eo_name = NNG_OPT_RECVMAXSZ,
- .eo_type = NNI_TYPE_SIZE,
- .eo_getopt = ws_ep_getopt_recvmaxsz,
- .eo_setopt = ws_ep_setopt_recvmaxsz,
+ .o_name = NNG_OPT_RECVMAXSZ,
+ .o_type = NNI_TYPE_SIZE,
+ .o_get = ws_ep_get_recvmaxsz,
+ .o_set = ws_ep_set_recvmaxsz,
+ .o_chk = ws_ep_chk_recvmaxsz,
},
{
- .eo_name = NNG_OPT_WS_REQUEST_HEADERS,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = NULL,
- .eo_setopt = ws_ep_setopt_reqhdrs,
+ .o_name = NNG_OPT_WS_REQUEST_HEADERS,
+ .o_type = NNI_TYPE_STRING,
+ .o_set = ws_ep_set_reqhdrs,
+ .o_chk = ws_ep_chk_string,
},
{
- .eo_name = NNG_OPT_WS_RESPONSE_HEADERS,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = NULL,
- .eo_setopt = ws_ep_setopt_reshdrs,
+ .o_name = NNG_OPT_WS_RESPONSE_HEADERS,
+ .o_type = NNI_TYPE_STRING,
+ .o_set = ws_ep_set_reshdrs,
+ .o_chk = ws_ep_chk_string,
},
// terminate list
{
- .eo_name = NULL,
+ .o_name = NULL,
},
};
@@ -858,36 +870,44 @@ wss_get_tls(ws_ep *ep, nng_tls_config **tlsp)
}
static int
-wss_ep_getopt_tlsconfig(void *arg, void *v, size_t *szp, int typ)
+wss_ep_get_tlsconfig(void *arg, void *v, size_t *szp, nni_opt_type t)
{
ws_ep * ep = arg;
nng_tls_config *tls;
int rv;
if (((rv = wss_get_tls(ep, &tls)) != 0) ||
- ((rv = nni_copyout_ptr(tls, v, szp, typ)) != 0)) {
+ ((rv = nni_copyout_ptr(tls, v, szp, t)) != 0)) {
return (rv);
}
return (0);
}
static int
-wss_ep_setopt_tlsconfig(void *arg, const void *v, size_t sz, int typ)
+wss_ep_chk_tlsconfig(const void *v, size_t sz, nni_opt_type t)
+{
+ void *p;
+ int rv;
+ if (((rv = nni_copyin_ptr(&p, v, sz, t)) == 0) && (p == NULL)) {
+ rv = NNG_EINVAL;
+ }
+ return (rv);
+}
+
+static int
+wss_ep_set_tlsconfig(void *arg, const void *v, size_t sz, nni_opt_type t)
{
ws_ep * ep = arg;
nng_tls_config *cfg;
int rv;
- if ((rv = nni_copyin_ptr((void **) &cfg, v, sz, typ)) != 0) {
+ if ((rv = nni_copyin_ptr((void **) &cfg, v, sz, t)) != 0) {
return (rv);
}
if (cfg == NULL) {
// NULL is clearly invalid.
return (NNG_EINVAL);
}
- if (ep == NULL) {
- return (0);
- }
if (ep->mode == NNI_EP_MODE_LISTEN) {
rv = nni_ws_listener_set_tls(ep->listener, cfg);
} else {
@@ -897,52 +917,42 @@ wss_ep_setopt_tlsconfig(void *arg, const void *v, size_t sz, int typ)
}
static int
-wss_ep_setopt_tls_cert_key_file(void *arg, const void *v, size_t sz, int typ)
+wss_ep_set_cert_key_file(void *arg, const void *v, size_t sz, nni_opt_type t)
{
ws_ep * ep = arg;
int rv;
nng_tls_config *tls;
- if ((typ != NNI_TYPE_OPAQUE) && (typ != NNI_TYPE_STRING)) {
- return (NNG_EBADTYPE);
- }
- if (nni_strnlen(v, sz) >= sz) {
- return (NNG_EINVAL);
- }
- if (ep == NULL) {
- return (0);
- }
- if ((rv = wss_get_tls(ep, &tls)) != 0) {
+ if (((rv = ws_ep_chk_string(v, sz, t)) != 0) ||
+ ((rv = wss_get_tls(ep, &tls)) != 0)) {
return (rv);
}
return (nng_tls_config_cert_key_file(tls, v, NULL));
}
static int
-wss_ep_setopt_tls_ca_file(void *arg, const void *v, size_t sz, int typ)
+wss_ep_set_ca_file(void *arg, const void *v, size_t sz, nni_opt_type t)
{
ws_ep * ep = arg;
int rv;
nng_tls_config *tls;
- if ((typ != NNI_TYPE_OPAQUE) && (typ != NNI_TYPE_STRING)) {
- return (NNG_EBADTYPE);
- }
-
- if (nni_strnlen(v, sz) >= sz) {
- return (NNG_EINVAL);
- }
- if (ep == NULL) {
- return (0);
- }
- if ((rv = wss_get_tls(ep, &tls)) != 0) {
+ if (((rv = ws_ep_chk_string(v, sz, t)) != 0) ||
+ ((rv = wss_get_tls(ep, &tls)) != 0)) {
return (rv);
}
return (nng_tls_config_ca_file(tls, v));
}
static int
-wss_ep_setopt_tls_auth_mode(void *arg, const void *v, size_t sz, int typ)
+wss_ep_chk_auth_mode(const void *v, size_t sz, nni_opt_type t)
+{
+ return (nni_copyin_int(NULL, v, sz, NNG_TLS_AUTH_MODE_NONE,
+ NNG_TLS_AUTH_MODE_REQUIRED, t));
+}
+
+static int
+wss_ep_set_auth_mode(void *arg, const void *v, size_t sz, nni_opt_type t)
{
ws_ep * ep = arg;
int rv;
@@ -950,91 +960,83 @@ wss_ep_setopt_tls_auth_mode(void *arg, const void *v, size_t sz, int typ)
int mode;
rv = nni_copyin_int(&mode, v, sz, NNG_TLS_AUTH_MODE_NONE,
- NNG_TLS_AUTH_MODE_REQUIRED, typ);
- if ((rv != 0) || (ep == NULL)) {
- return (rv);
- }
- if ((rv = wss_get_tls(ep, &tls)) != 0) {
+ NNG_TLS_AUTH_MODE_REQUIRED, t);
+
+ if ((rv != 0) || ((rv = wss_get_tls(ep, &tls)) != 0)) {
return (rv);
}
return (nng_tls_config_auth_mode(tls, mode));
}
static int
-wss_ep_setopt_tls_server_name(void *arg, const void *v, size_t sz, int typ)
+wss_ep_set_tls_server_name(void *arg, const void *v, size_t sz, nni_opt_type t)
{
ws_ep * ep = arg;
int rv;
nng_tls_config *tls;
- if ((typ != NNI_TYPE_OPAQUE) && (typ != NNI_TYPE_STRING)) {
- return (NNG_EBADTYPE);
- }
-
- if (nni_strnlen(v, sz) >= sz) {
- return (NNG_EINVAL);
- }
- if (ep == NULL) {
- return (0);
- }
- if ((rv = wss_get_tls(ep, &tls)) != 0) {
+ if (((rv = ws_ep_chk_string(v, sz, t)) != 0) ||
+ ((rv = wss_get_tls(ep, &tls)) != 0)) {
return (rv);
}
+
return (nng_tls_config_server_name(tls, v));
}
-static nni_tran_ep_option wss_ep_options[] = {
+static nni_tran_option wss_ep_options[] = {
{
- .eo_name = NNG_OPT_RECVMAXSZ,
- .eo_type = NNI_TYPE_SIZE,
- .eo_getopt = ws_ep_getopt_recvmaxsz,
- .eo_setopt = ws_ep_setopt_recvmaxsz,
+ .o_name = NNG_OPT_RECVMAXSZ,
+ .o_type = NNI_TYPE_SIZE,
+ .o_get = ws_ep_get_recvmaxsz,
+ .o_set = ws_ep_set_recvmaxsz,
+ .o_chk = ws_ep_chk_recvmaxsz,
},
{
- .eo_name = NNG_OPT_WS_REQUEST_HEADERS,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = NULL,
- .eo_setopt = ws_ep_setopt_reqhdrs,
+ .o_name = NNG_OPT_WS_REQUEST_HEADERS,
+ .o_type = NNI_TYPE_STRING,
+ .o_set = ws_ep_set_reqhdrs,
+ .o_chk = ws_ep_chk_string,
},
{
- .eo_name = NNG_OPT_WS_RESPONSE_HEADERS,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = NULL,
- .eo_setopt = ws_ep_setopt_reshdrs,
+ .o_name = NNG_OPT_WS_RESPONSE_HEADERS,
+ .o_type = NNI_TYPE_STRING,
+ .o_set = ws_ep_set_reshdrs,
+ .o_chk = ws_ep_chk_string,
},
{
- .eo_name = NNG_OPT_TLS_CONFIG,
- .eo_type = NNI_TYPE_POINTER,
- .eo_getopt = wss_ep_getopt_tlsconfig,
- .eo_setopt = wss_ep_setopt_tlsconfig,
+ .o_name = NNG_OPT_TLS_CONFIG,
+ .o_type = NNI_TYPE_POINTER,
+ .o_get = wss_ep_get_tlsconfig,
+ .o_set = wss_ep_set_tlsconfig,
+ .o_chk = wss_ep_chk_tlsconfig,
},
{
- .eo_name = NNG_OPT_TLS_CERT_KEY_FILE,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = NULL,
- .eo_setopt = wss_ep_setopt_tls_cert_key_file,
+ .o_name = NNG_OPT_TLS_CERT_KEY_FILE,
+ .o_type = NNI_TYPE_STRING,
+ .o_set = wss_ep_set_cert_key_file,
+ .o_chk = ws_ep_chk_string,
},
{
- .eo_name = NNG_OPT_TLS_CA_FILE,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = NULL,
- .eo_setopt = wss_ep_setopt_tls_ca_file,
+ .o_name = NNG_OPT_TLS_CA_FILE,
+ .o_type = NNI_TYPE_STRING,
+ .o_set = wss_ep_set_ca_file,
+ .o_chk = ws_ep_chk_string,
},
{
- .eo_name = NNG_OPT_TLS_AUTH_MODE,
- .eo_type = NNI_TYPE_INT32,
- .eo_getopt = NULL,
- .eo_setopt = wss_ep_setopt_tls_auth_mode,
+ .o_name = NNG_OPT_TLS_AUTH_MODE,
+ .o_type = NNI_TYPE_INT32,
+ .o_set = wss_ep_set_auth_mode,
+ .o_chk = wss_ep_chk_auth_mode,
},
{
- .eo_name = NNG_OPT_TLS_SERVER_NAME,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = NULL,
- .eo_setopt = wss_ep_setopt_tls_server_name,
+ .o_name = NNG_OPT_TLS_SERVER_NAME,
+ .o_type = NNI_TYPE_STRING,
+ .o_set = wss_ep_set_tls_server_name,
+ .o_chk = ws_ep_chk_string,
},
// terminate list
{
- .eo_name = NULL,
+ .o_name = NULL,
},
};
diff --git a/src/transport/zerotier/zerotier.c b/src/transport/zerotier/zerotier.c
index 46fe476e..fa8458c1 100644
--- a/src/transport/zerotier/zerotier.c
+++ b/src/transport/zerotier/zerotier.c
@@ -1932,8 +1932,8 @@ zt_pipe_peer(void *arg)
}
static int
-zt_getopt_nw_status(
- zt_node *ztn, uint64_t nwid, void *buf, size_t *szp, int typ)
+zt_get_nw_status(
+ zt_node *ztn, uint64_t nwid, void *buf, size_t *szp, nni_opt_type t)
{
ZT_VirtualNetworkConfig *vcfg;
int status;
@@ -1970,11 +1970,12 @@ zt_getopt_nw_status(
ZT_Node_freeQueryResult(ztn->zn_znode, vcfg);
nni_mtx_unlock(&zt_lk);
- return (nni_copyout_int(status, buf, szp, typ));
+ return (nni_copyout_int(status, buf, szp, t));
}
static int
-zt_getopt_nw_name(zt_node *ztn, uint64_t nwid, void *buf, size_t *szp, int typ)
+zt_get_nw_name(
+ zt_node *ztn, uint64_t nwid, void *buf, size_t *szp, nni_opt_type t)
{
ZT_VirtualNetworkConfig *vcfg;
int rv;
@@ -1986,7 +1987,7 @@ zt_getopt_nw_name(zt_node *ztn, uint64_t nwid, void *buf, size_t *szp, int typ)
return (NNG_ECLOSED);
}
- rv = nni_copyout_str(vcfg->name, buf, szp, typ);
+ rv = nni_copyout_str(vcfg->name, buf, szp, t);
ZT_Node_freeQueryResult(ztn->zn_znode, vcfg);
nni_mtx_unlock(&zt_lk);
@@ -1994,24 +1995,24 @@ zt_getopt_nw_name(zt_node *ztn, uint64_t nwid, void *buf, size_t *szp, int typ)
}
static int
-zt_pipe_get_recvmaxsz(void *arg, void *buf, size_t *szp, int typ)
+zt_pipe_get_recvmaxsz(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
zt_pipe *p = arg;
- return (nni_copyout_size(p->zp_rcvmax, buf, szp, typ));
+ return (nni_copyout_size(p->zp_rcvmax, buf, szp, t));
}
static int
-zt_pipe_get_nwid(void *arg, void *buf, size_t *szp, int typ)
+zt_pipe_get_nwid(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
zt_pipe *p = arg;
- return (nni_copyout_u64(p->zp_nwid, buf, szp, typ));
+ return (nni_copyout_u64(p->zp_nwid, buf, szp, t));
}
static int
-zt_pipe_get_node(void *arg, void *buf, size_t *szp, int typ)
+zt_pipe_get_node(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
zt_pipe *p = arg;
- return (nni_copyout_u64(p->zp_laddr >> 24, buf, szp, typ));
+ return (nni_copyout_u64(p->zp_laddr >> 24, buf, szp, t));
}
static void
@@ -2574,66 +2575,77 @@ zt_ep_connect(void *arg, nni_aio *aio)
}
static int
-zt_ep_setopt_recvmaxsz(void *arg, const void *data, size_t sz, int typ)
+zt_ep_chk_recvmaxsz(const void *v, size_t sz, nni_opt_type t)
+{
+ return (nni_copyin_size(NULL, v, sz, 0, NNI_MAXSZ, t));
+}
+
+static int
+zt_ep_set_recvmaxsz(void *arg, const void *data, size_t sz, nni_opt_type t)
{
zt_ep *ep = arg;
size_t val;
int rv;
- rv = nni_copyin_size(&val, data, sz, 0, 0xffffffffu, typ);
- if ((rv == 0) && (ep != NULL)) {
+ if ((rv = nni_copyin_size(&val, data, sz, 0, NNI_MAXSZ, t)) == 0) {
ep->ze_rcvmax = val;
}
return (rv);
}
static int
-zt_ep_getopt_recvmaxsz(void *arg, void *data, size_t *szp, int typ)
+zt_ep_get_recvmaxsz(void *arg, void *data, size_t *szp, nni_opt_type t)
{
zt_ep *ep = arg;
- return (nni_copyout_size(ep->ze_rcvmax, data, szp, typ));
+ return (nni_copyout_size(ep->ze_rcvmax, data, szp, t));
}
static int
-zt_ep_setopt_home(void *arg, const void *data, size_t sz, int typ)
+zt_ep_chk_string(const void *data, size_t sz, nni_opt_type t)
{
size_t len;
- int rv;
- zt_ep *ep = arg;
- if ((typ != NNI_TYPE_OPAQUE) && (typ != NNI_TYPE_STRING)) {
+ if ((t != NNI_TYPE_OPAQUE) && (t != NNI_TYPE_STRING)) {
return (NNG_EBADTYPE);
}
-
len = nni_strnlen(data, sz);
if ((len >= sz) || (len >= NNG_MAXADDRLEN)) {
return (NNG_EINVAL);
}
- if (ep != NULL) {
+ return (0);
+}
+
+static int
+zt_ep_set_home(void *arg, const void *data, size_t sz, nni_opt_type t)
+{
+ int rv;
+ zt_ep *ep = arg;
+
+ if ((rv = zt_ep_chk_string(data, sz, t)) == 0) {
if (ep->ze_running) {
- return (NNG_ESTATE);
- }
- nni_mtx_lock(&zt_lk);
- nni_strlcpy(ep->ze_home, data, sizeof(ep->ze_home));
- if ((rv = zt_node_find(ep)) != 0) {
- ep->ze_ztn = NULL;
+ rv = NNG_ESTATE;
+ } else {
+ nni_mtx_lock(&zt_lk);
+ nni_strlcpy(ep->ze_home, data, sizeof(ep->ze_home));
+ if ((rv = zt_node_find(ep)) != 0) {
+ ep->ze_ztn = NULL;
+ }
+ nni_mtx_unlock(&zt_lk);
}
- nni_mtx_unlock(&zt_lk);
- } else {
- rv = 0;
}
+
return (rv);
}
static int
-zt_ep_getopt_home(void *arg, void *data, size_t *szp, int typ)
+zt_ep_get_home(void *arg, void *data, size_t *szp, nni_opt_type t)
{
zt_ep *ep = arg;
- return (nni_copyout_str(ep->ze_home, data, szp, typ));
+ return (nni_copyout_str(ep->ze_home, data, szp, t));
}
static int
-zt_ep_getopt_url(void *arg, void *data, size_t *szp, int typ)
+zt_ep_get_url(void *arg, void *data, size_t *szp, nni_opt_type t)
{
char ustr[64]; // more than plenty
zt_ep * ep = arg;
@@ -2644,18 +2656,14 @@ zt_ep_getopt_url(void *arg, void *data, size_t *szp, int typ)
(unsigned long long) addr >> zt_port_shift,
(unsigned long long) ep->ze_nwid,
(unsigned) (addr & zt_port_mask));
- return (nni_copyout_str(ustr, data, szp, typ));
+ return (nni_copyout_str(ustr, data, szp, t));
}
static int
-zt_ep_setopt_orbit(void *arg, const void *data, size_t sz, int typ)
+zt_ep_chk_orbit(const void *data, size_t sz, nni_opt_type t)
{
- uint64_t moonid;
- uint64_t peerid;
- zt_ep * ep = arg;
- enum ZT_ResultCode zrv;
-
- switch (typ) {
+ NNI_ARG_UNUSED(data);
+ switch (t) {
case NNI_TYPE_UINT64:
NNI_ASSERT(sz == sizeof(uint64_t));
break;
@@ -2668,6 +2676,21 @@ zt_ep_setopt_orbit(void *arg, const void *data, size_t sz, int typ)
default:
return (NNG_EBADTYPE);
}
+ return (0);
+}
+
+static int
+zt_ep_set_orbit(void *arg, const void *data, size_t sz, nni_opt_type t)
+{
+ uint64_t moonid;
+ uint64_t peerid;
+ zt_ep * ep = arg;
+ int rv;
+ enum ZT_ResultCode zrv;
+
+ if ((rv = zt_ep_chk_orbit(data, sz, t)) != 0) {
+ return (rv);
+ }
if (sz == sizeof(uint64_t)) {
memcpy(&moonid, data, sizeof(moonid));
@@ -2687,15 +2710,20 @@ zt_ep_setopt_orbit(void *arg, const void *data, size_t sz, int typ)
}
static int
-zt_ep_setopt_deorbit(void *arg, const void *data, size_t sz, int typ)
+zt_ep_chk_deorbit(const void *data, size_t sz, nni_opt_type t)
+{
+ return (nni_copyin_u64(NULL, data, sz, t));
+}
+
+static int
+zt_ep_set_deorbit(void *arg, const void *data, size_t sz, nni_opt_type t)
{
uint64_t moonid;
zt_ep * ep = arg;
enum ZT_ResultCode zrv;
int rv;
- rv = nni_copyin_u64(&moonid, data, sz, typ);
- if ((rv == 0) && (ep != NULL)) {
+ if ((rv = nni_copyin_u64(&moonid, data, sz, t)) == 0) {
nni_mtx_lock(&zt_lk);
zrv = ZT_Node_deorbit(ep->ze_ztn->zn_znode, NULL, moonid);
@@ -2707,117 +2735,127 @@ zt_ep_setopt_deorbit(void *arg, const void *data, size_t sz, int typ)
}
static int
-zt_ep_getopt_node(void *arg, void *data, size_t *szp, int typ)
+zt_ep_get_node(void *arg, void *data, size_t *szp, nni_opt_type t)
{
zt_ep *ep = arg;
- return (nni_copyout_u64(ep->ze_ztn->zn_self, data, szp, typ));
+ return (nni_copyout_u64(ep->ze_ztn->zn_self, data, szp, t));
}
static int
-zt_ep_getopt_nwid(void *arg, void *data, size_t *szp, int typ)
+zt_ep_get_nwid(void *arg, void *data, size_t *szp, nni_opt_type t)
{
zt_ep *ep = arg;
- return (nni_copyout_u64(ep->ze_nwid, data, szp, typ));
+ return (nni_copyout_u64(ep->ze_nwid, data, szp, t));
}
static int
-zt_ep_getopt_nw_name(void *arg, void *buf, size_t *szp, int typ)
+zt_ep_get_nw_name(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
zt_ep *ep = arg;
- return (zt_getopt_nw_name(ep->ze_ztn, ep->ze_nwid, buf, szp, typ));
+ return (zt_get_nw_name(ep->ze_ztn, ep->ze_nwid, buf, szp, t));
}
static int
-zt_ep_getopt_nw_status(void *arg, void *buf, size_t *szp, int typ)
+zt_ep_get_nw_status(void *arg, void *buf, size_t *szp, nni_opt_type t)
{
zt_ep *ep = arg;
- return (zt_getopt_nw_status(ep->ze_ztn, ep->ze_nwid, buf, szp, typ));
+ return (zt_get_nw_status(ep->ze_ztn, ep->ze_nwid, buf, szp, t));
}
static int
-zt_ep_setopt_ping_time(void *arg, const void *data, size_t sz, int typ)
+zt_ep_chk_time(const void *data, size_t sz, nni_opt_type t)
+{
+ return (nni_copyin_ms(NULL, data, sz, t));
+}
+
+static int
+zt_ep_set_ping_time(void *arg, const void *data, size_t sz, nni_opt_type t)
{
zt_ep * ep = arg;
nng_duration val;
int rv;
- if (((rv = nni_copyin_ms(&val, data, sz, typ)) == 0) && (ep != NULL)) {
+ if ((rv = nni_copyin_ms(&val, data, sz, t)) == 0) {
ep->ze_ping_time = val;
}
return (rv);
}
static int
-zt_ep_getopt_ping_time(void *arg, void *data, size_t *szp, int typ)
+zt_ep_get_ping_time(void *arg, void *data, size_t *szp, nni_opt_type t)
{
zt_ep *ep = arg;
- return (nni_copyout_ms(ep->ze_ping_time, data, szp, typ));
+ return (nni_copyout_ms(ep->ze_ping_time, data, szp, t));
+}
+
+static int
+zt_ep_chk_tries(const void *data, size_t sz, nni_opt_type t)
+{
+ return (nni_copyin_int(NULL, data, sz, 0, 1000000, t));
}
static int
-zt_ep_setopt_ping_tries(void *arg, const void *data, size_t sz, int typ)
+zt_ep_set_ping_tries(void *arg, const void *data, size_t sz, nni_opt_type t)
{
zt_ep *ep = arg;
int val;
int rv;
- if (((rv = nni_copyin_int(&val, data, sz, 0, 1000000, typ)) == 0) &&
- (ep != NULL)) {
+ if ((rv = nni_copyin_int(&val, data, sz, 0, 1000000, t)) == 0) {
ep->ze_ping_tries = val;
}
return (rv);
}
static int
-zt_ep_getopt_ping_tries(void *arg, void *data, size_t *szp, int typ)
+zt_ep_get_ping_tries(void *arg, void *data, size_t *szp, nni_opt_type t)
{
zt_ep *ep = arg;
- return (nni_copyout_int(ep->ze_ping_tries, data, szp, typ));
+ return (nni_copyout_int(ep->ze_ping_tries, data, szp, t));
}
static int
-zt_ep_setopt_conn_time(void *arg, const void *data, size_t sz, int typ)
+zt_ep_set_conn_time(void *arg, const void *data, size_t sz, nni_opt_type t)
{
zt_ep * ep = arg;
nng_duration val;
int rv;
- if (((rv = nni_copyin_ms(&val, data, sz, typ)) == 0) && (ep != NULL)) {
+ if ((rv = nni_copyin_ms(&val, data, sz, t)) == 0) {
ep->ze_conn_time = val;
}
return (rv);
}
static int
-zt_ep_getopt_conn_time(void *arg, void *data, size_t *szp, int typ)
+zt_ep_get_conn_time(void *arg, void *data, size_t *szp, nni_opt_type t)
{
zt_ep *ep = arg;
- return (nni_copyout_ms(ep->ze_conn_time, data, szp, typ));
+ return (nni_copyout_ms(ep->ze_conn_time, data, szp, t));
}
static int
-zt_ep_setopt_conn_tries(void *arg, const void *data, size_t sz, int typ)
+zt_ep_set_conn_tries(void *arg, const void *data, size_t sz, nni_opt_type t)
{
zt_ep *ep = arg;
int val;
int rv;
- if (((rv = nni_copyin_int(&val, data, sz, 0, 1000000, typ)) == 0) &&
- (ep != NULL)) {
+ if ((rv = nni_copyin_int(&val, data, sz, 0, 1000000, t)) == 0) {
ep->ze_conn_tries = val;
}
return (rv);
}
static int
-zt_ep_getopt_conn_tries(void *arg, void *data, size_t *szp, int typ)
+zt_ep_get_conn_tries(void *arg, void *data, size_t *szp, nni_opt_type t)
{
zt_ep *ep = arg;
- return (nni_copyout_int(ep->ze_conn_tries, data, szp, typ));
+ return (nni_copyout_int(ep->ze_conn_tries, data, szp, t));
}
static int
-zt_pipe_getopt_locaddr(void *arg, void *data, size_t *szp, int typ)
+zt_pipe_get_locaddr(void *arg, void *data, size_t *szp, nni_opt_type t)
{
zt_pipe * p = arg;
nng_sockaddr sa;
@@ -2827,11 +2865,11 @@ zt_pipe_getopt_locaddr(void *arg, void *data, size_t *szp, int typ)
sa.s_zt.sa_nwid = p->zp_nwid;
sa.s_zt.sa_nodeid = p->zp_laddr >> zt_port_shift;
sa.s_zt.sa_port = p->zp_laddr & zt_port_mask;
- return (nni_copyout_sockaddr(&sa, data, szp, typ));
+ return (nni_copyout_sockaddr(&sa, data, szp, t));
}
static int
-zt_pipe_getopt_remaddr(void *arg, void *data, size_t *szp, int typ)
+zt_pipe_get_remaddr(void *arg, void *data, size_t *szp, nni_opt_type t)
{
zt_pipe * p = arg;
nng_sockaddr sa;
@@ -2841,50 +2879,50 @@ zt_pipe_getopt_remaddr(void *arg, void *data, size_t *szp, int typ)
sa.s_zt.sa_nwid = p->zp_nwid;
sa.s_zt.sa_nodeid = p->zp_raddr >> zt_port_shift;
sa.s_zt.sa_port = p->zp_raddr & zt_port_mask;
- return (nni_copyout_sockaddr(&sa, data, szp, typ));
+ return (nni_copyout_sockaddr(&sa, data, szp, t));
}
static int
-zt_pipe_getopt_mtu(void *arg, void *data, size_t *szp, int typ)
+zt_pipe_get_mtu(void *arg, void *data, size_t *szp, nni_opt_type t)
{
zt_pipe *p = arg;
- return (nni_copyout_size(p->zp_mtu, data, szp, typ));
+ return (nni_copyout_size(p->zp_mtu, data, szp, t));
}
-static nni_tran_pipe_option zt_pipe_options[] = {
+static nni_tran_option zt_pipe_options[] = {
{
- .po_name = NNG_OPT_LOCADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = zt_pipe_getopt_locaddr,
+ .o_name = NNG_OPT_LOCADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = zt_pipe_get_locaddr,
},
{
- .po_name = NNG_OPT_REMADDR,
- .po_type = NNI_TYPE_SOCKADDR,
- .po_getopt = zt_pipe_getopt_remaddr,
+ .o_name = NNG_OPT_REMADDR,
+ .o_type = NNI_TYPE_SOCKADDR,
+ .o_get = zt_pipe_get_remaddr,
},
{
- .po_name = NNG_OPT_ZT_MTU,
- .po_type = NNI_TYPE_SIZE,
- .po_getopt = zt_pipe_getopt_mtu,
+ .o_name = NNG_OPT_ZT_MTU,
+ .o_type = NNI_TYPE_SIZE,
+ .o_get = zt_pipe_get_mtu,
},
{
- .po_name = NNG_OPT_ZT_NWID,
- .po_type = NNI_TYPE_UINT64,
- .po_getopt = zt_pipe_get_nwid,
+ .o_name = NNG_OPT_ZT_NWID,
+ .o_type = NNI_TYPE_UINT64,
+ .o_get = zt_pipe_get_nwid,
},
{
- .po_name = NNG_OPT_ZT_NODE,
- .po_type = NNI_TYPE_UINT64,
- .po_getopt = zt_pipe_get_node,
+ .o_name = NNG_OPT_ZT_NODE,
+ .o_type = NNI_TYPE_UINT64,
+ .o_get = zt_pipe_get_node,
},
{
- .po_name = NNG_OPT_RECVMAXSZ,
- .po_type = NNI_TYPE_SIZE,
- .po_getopt = zt_pipe_get_recvmaxsz,
+ .o_name = NNG_OPT_RECVMAXSZ,
+ .o_type = NNI_TYPE_SIZE,
+ .o_get = zt_pipe_get_recvmaxsz,
},
// terminate list
{
- .po_name = NULL,
+ .o_name = NULL,
},
};
@@ -2898,88 +2936,89 @@ static nni_tran_pipe_ops zt_pipe_ops = {
.p_options = zt_pipe_options,
};
-static nni_tran_ep_option zt_ep_options[] = {
+static nni_tran_option zt_ep_options[] = {
{
- .eo_name = NNG_OPT_RECVMAXSZ,
- .eo_type = NNI_TYPE_SIZE,
- .eo_getopt = zt_ep_getopt_recvmaxsz,
- .eo_setopt = zt_ep_setopt_recvmaxsz,
+ .o_name = NNG_OPT_RECVMAXSZ,
+ .o_type = NNI_TYPE_SIZE,
+ .o_get = zt_ep_get_recvmaxsz,
+ .o_set = zt_ep_set_recvmaxsz,
+ .o_chk = zt_ep_chk_recvmaxsz,
},
{
- .eo_name = NNG_OPT_URL,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = zt_ep_getopt_url,
- .eo_setopt = NULL,
+ .o_name = NNG_OPT_URL,
+ .o_type = NNI_TYPE_STRING,
+ .o_get = zt_ep_get_url,
},
{
- .eo_name = NNG_OPT_ZT_HOME,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = zt_ep_getopt_home,
- .eo_setopt = zt_ep_setopt_home,
+ .o_name = NNG_OPT_ZT_HOME,
+ .o_type = NNI_TYPE_STRING,
+ .o_get = zt_ep_get_home,
+ .o_set = zt_ep_set_home,
+ .o_chk = zt_ep_chk_string,
},
{
- .eo_name = NNG_OPT_ZT_NODE,
- .eo_type = NNI_TYPE_UINT64,
- .eo_getopt = zt_ep_getopt_node,
- .eo_setopt = NULL,
+ .o_name = NNG_OPT_ZT_NODE,
+ .o_type = NNI_TYPE_UINT64,
+ .o_get = zt_ep_get_node,
},
{
- .eo_name = NNG_OPT_ZT_NWID,
- .eo_type = NNI_TYPE_UINT64,
- .eo_getopt = zt_ep_getopt_nwid,
- .eo_setopt = NULL,
+ .o_name = NNG_OPT_ZT_NWID,
+ .o_type = NNI_TYPE_UINT64,
+ .o_get = zt_ep_get_nwid,
},
{
- .eo_name = NNG_OPT_ZT_NETWORK_STATUS,
- .eo_type = NNI_TYPE_INT32, // enumeration really
- .eo_getopt = zt_ep_getopt_nw_status,
- .eo_setopt = NULL,
+ .o_name = NNG_OPT_ZT_NETWORK_STATUS,
+ .o_type = NNI_TYPE_INT32, // enumeration really
+ .o_get = zt_ep_get_nw_status,
},
{
- .eo_name = NNG_OPT_ZT_NETWORK_NAME,
- .eo_type = NNI_TYPE_STRING,
- .eo_getopt = zt_ep_getopt_nw_name,
- .eo_setopt = NULL,
+ .o_name = NNG_OPT_ZT_NETWORK_NAME,
+ .o_type = NNI_TYPE_STRING,
+ .o_get = zt_ep_get_nw_name,
},
{
- .eo_name = NNG_OPT_ZT_PING_TIME,
- .eo_type = NNI_TYPE_DURATION,
- .eo_getopt = zt_ep_getopt_ping_time,
- .eo_setopt = zt_ep_setopt_ping_time,
+ .o_name = NNG_OPT_ZT_PING_TIME,
+ .o_type = NNI_TYPE_DURATION,
+ .o_get = zt_ep_get_ping_time,
+ .o_set = zt_ep_set_ping_time,
+ .o_chk = zt_ep_chk_time,
},
{
- .eo_name = NNG_OPT_ZT_PING_TRIES,
- .eo_type = NNI_TYPE_INT32,
- .eo_getopt = zt_ep_getopt_ping_tries,
- .eo_setopt = zt_ep_setopt_ping_tries,
+ .o_name = NNG_OPT_ZT_PING_TRIES,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = zt_ep_get_ping_tries,
+ .o_set = zt_ep_set_ping_tries,
+ .o_chk = zt_ep_chk_tries,
},
{
- .eo_name = NNG_OPT_ZT_CONN_TIME,
- .eo_type = NNI_TYPE_DURATION,
- .eo_getopt = zt_ep_getopt_conn_time,
- .eo_setopt = zt_ep_setopt_conn_time,
+ .o_name = NNG_OPT_ZT_CONN_TIME,
+ .o_type = NNI_TYPE_DURATION,
+ .o_get = zt_ep_get_conn_time,
+ .o_set = zt_ep_set_conn_time,
+ .o_chk = zt_ep_chk_time,
},
{
- .eo_name = NNG_OPT_ZT_CONN_TRIES,
- .eo_type = NNI_TYPE_INT32,
- .eo_getopt = zt_ep_getopt_conn_tries,
- .eo_setopt = zt_ep_setopt_conn_tries,
+ .o_name = NNG_OPT_ZT_CONN_TRIES,
+ .o_type = NNI_TYPE_INT32,
+ .o_get = zt_ep_get_conn_tries,
+ .o_set = zt_ep_set_conn_tries,
+ .o_chk = zt_ep_chk_tries,
},
{
- .eo_name = NNG_OPT_ZT_ORBIT,
- .eo_type = NNI_TYPE_UINT64, // use opaque for two
- .eo_getopt = NULL,
- .eo_setopt = zt_ep_setopt_orbit,
+ .o_name = NNG_OPT_ZT_ORBIT,
+ .o_type = NNI_TYPE_UINT64, // use opaque for two
+ .o_set = zt_ep_set_orbit,
+ .o_chk = zt_ep_chk_orbit,
},
{
- .eo_name = NNG_OPT_ZT_DEORBIT,
- .eo_type = NNI_TYPE_UINT64,
- .eo_getopt = NULL,
- .eo_setopt = zt_ep_setopt_deorbit,
+ .o_name = NNG_OPT_ZT_DEORBIT,
+ .o_type = NNI_TYPE_UINT64,
+ .o_set = zt_ep_set_deorbit,
+ .o_chk = zt_ep_chk_deorbit,
},
// terminate list
{
- .eo_name = NULL,
+ .o_name = NULL,
},
};