aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2021-08-01 08:25:58 -0700
committerGarrett D'Amore <garrett@damore.org>2021-08-01 08:25:58 -0700
commit524a3f6ec6e1e921c16ff18997ae494cad09f860 (patch)
tree17eb6bf491a1c75fa510392eb7df76769e36d163 /src
parent5e5881391bfa6e261ab0f6349a5f12a526e2f293 (diff)
downloadnng-524a3f6ec6e1e921c16ff18997ae494cad09f860.tar.gz
nng-524a3f6ec6e1e921c16ff18997ae494cad09f860.tar.bz2
nng-524a3f6ec6e1e921c16ff18997ae494cad09f860.zip
Fix premature transport registration. Mark it deprecated.
Originally the idea was to better support having the transports be separate loadable modules. This isn't needed for the builtin transports, so we make the explicit initialization of them deprecated, and document it as such.
Diffstat (limited to 'src')
-rw-r--r--src/sp/transport.c55
-rw-r--r--src/sp/transport/inproc/inproc.c15
-rw-r--r--src/sp/transport/ipc/ipc.c11
-rw-r--r--src/sp/transport/tcp/tcp.c9
-rw-r--r--src/sp/transport/tls/tls.c7
-rw-r--r--src/sp/transport/ws/websocket.c30
-rw-r--r--src/sp/transport/zerotier/zerotier.c48
7 files changed, 106 insertions, 69 deletions
diff --git a/src/sp/transport.c b/src/sp/transport.c
index dba530e0..13961eaa 100644
--- a/src/sp/transport.c
+++ b/src/sp/transport.c
@@ -11,25 +11,6 @@
#include "core/nng_impl.h"
-#ifdef NNG_TRANSPORT_INPROC
-#include "nng/transport/inproc/inproc.h"
-#endif
-#ifdef NNG_TRANSPORT_IPC
-#include "nng/transport/ipc/ipc.h"
-#endif
-#ifdef NNG_TRANSPORT_TCP
-#include "nng/transport/tcp/tcp.h"
-#endif
-#ifdef NNG_TRANSPORT_TLS
-#include "nng/transport/tls/tls.h"
-#endif
-#ifdef NNG_TRANSPORT_WS
-#include "nng/transport/ws/websocket.h"
-#endif
-#ifdef NNG_TRANSPORT_ZEROTIER
-#include "nng/transport/zerotier/zerotier.h"
-#endif
-
#include <stdio.h>
#include <string.h>
@@ -67,6 +48,28 @@ nni_sp_tran_find(nni_url *url)
// nni_sp_tran_sys_init initializes the entire transport subsystem, including
// each individual transport.
+#ifdef NNG_TRANSPORT_INPROC
+extern void nni_sp_inproc_register(void);
+#endif
+#ifdef NNG_TRANSPORT_IPC
+extern void nni_sp_ipc_register(void);
+#endif
+#ifdef NNG_TRANSPORT_TCP
+extern void nni_sp_tcp_register(void);
+#endif
+#ifdef NNG_TRANSPORT_TLS
+extern void nni_sp_tls_register(void);
+#endif
+#ifdef NNG_TRANSPORT_WS
+extern void nni_sp_ws_register(void);
+#endif
+#ifdef NNG_TRANSPORT_WSS
+extern void nni_sp_wss_register(void);
+#endif
+#ifdef NNG_TRANSPORT_ZEROTIER
+extern void nni_sp_zt_register(void);
+#endif
+
int
nni_sp_tran_sys_init(void)
{
@@ -74,25 +77,25 @@ nni_sp_tran_sys_init(void)
nni_rwlock_init(&sp_tran_lk);
#ifdef NNG_TRANSPORT_INPROC
- nng_inproc_register();
+ nni_sp_inproc_register();
#endif
#ifdef NNG_TRANSPORT_IPC
- nng_ipc_register();
+ nni_sp_ipc_register();
#endif
#ifdef NNG_TRANSPORT_TCP
- nng_tcp_register();
+ nni_sp_tcp_register();
#endif
#ifdef NNG_TRANSPORT_TLS
- nng_tls_register();
+ nni_sp_tls_register();
#endif
#ifdef NNG_TRANSPORT_WS
- nng_ws_register();
+ nni_sp_ws_register();
#endif
#ifdef NNG_TRANSPORT_WSS
- nng_wss_register();
+ nni_sp_wss_register();
#endif
#ifdef NNG_TRANSPORT_ZEROTIER
- nng_zt_register();
+ nni_sp_zt_register();
#endif
return (0);
}
diff --git a/src/sp/transport/inproc/inproc.c b/src/sp/transport/inproc/inproc.c
index a67d6d18..971b8877 100644
--- a/src/sp/transport/inproc/inproc.c
+++ b/src/sp/transport/inproc/inproc.c
@@ -313,9 +313,9 @@ inproc_listener_init(void **epp, nni_url *url, nni_listener *nlistener)
}
nni_mtx_init(&ep->mtx);
- ep->listener = true;
- ep->proto = nni_sock_proto_id(sock);
- ep->rcvmax = 0;
+ ep->listener = true;
+ ep->proto = nni_sock_proto_id(sock);
+ ep->rcvmax = 0;
NNI_LIST_INIT(&ep->clients, inproc_ep, node);
nni_aio_list_init(&ep->aios);
@@ -683,9 +683,16 @@ struct nni_sp_tran nni_inproc_tran = {
.tran_fini = inproc_fini,
};
+#ifndef NNG_ELIDE_DEPRECATED
int
nng_inproc_register(void)
{
+ return (nni_init());
+}
+#endif
+
+void
+nni_sp_inproc_register(void)
+{
nni_sp_tran_register(&nni_inproc_tran);
- return (0);
}
diff --git a/src/sp/transport/ipc/ipc.c b/src/sp/transport/ipc/ipc.c
index 502943a5..8ed4ac94 100644
--- a/src/sp/transport/ipc/ipc.c
+++ b/src/sp/transport/ipc/ipc.c
@@ -1148,9 +1148,18 @@ static nni_sp_tran ipc_tran_abstract = {
};
#endif
+
+#ifndef NNG_ELIDE_DEPRECATED
int
nng_ipc_register(void)
{
+ return (nni_init());
+}
+#endif
+
+void
+nni_sp_ipc_register(void)
+{
nni_sp_tran_register(&ipc_tran);
#ifdef NNG_PLATFORM_POSIX
nni_sp_tran_register(&ipc_tran_unix);
@@ -1158,6 +1167,4 @@ nng_ipc_register(void)
#ifdef NNG_HAVE_ABSTRACT_SOCKETS
nni_sp_tran_register(&ipc_tran_abstract);
#endif
-
- return (0);
}
diff --git a/src/sp/transport/tcp/tcp.c b/src/sp/transport/tcp/tcp.c
index 3aa20f38..e2e7fbce 100644
--- a/src/sp/transport/tcp/tcp.c
+++ b/src/sp/transport/tcp/tcp.c
@@ -1247,11 +1247,18 @@ static nni_sp_tran tcp6_tran = {
.tran_fini = tcptran_fini,
};
+#ifndef NNG_ELIDE_DEPRECATED
int
nng_tcp_register(void)
{
+ return (nni_init());
+}
+#endif
+
+void
+nni_sp_tcp_register(void)
+{
nni_sp_tran_register(&tcp_tran);
nni_sp_tran_register(&tcp4_tran);
nni_sp_tran_register(&tcp6_tran);
- return (0);
}
diff --git a/src/sp/transport/tls/tls.c b/src/sp/transport/tls/tls.c
index 91c0f1c9..75858839 100644
--- a/src/sp/transport/tls/tls.c
+++ b/src/sp/transport/tls/tls.c
@@ -1279,8 +1279,13 @@ static nni_sp_tran tls6_tran = {
int
nng_tls_register(void)
{
+ return (nni_init());
+}
+
+void
+nni_sp_tls_register(void)
+{
nni_sp_tran_register(&tls_tran);
nni_sp_tran_register(&tls4_tran);
nni_sp_tran_register(&tls6_tran);
- return (0);
}
diff --git a/src/sp/transport/ws/websocket.c b/src/sp/transport/ws/websocket.c
index a3f2cd26..7cf9949f 100644
--- a/src/sp/transport/ws/websocket.c
+++ b/src/sp/transport/ws/websocket.c
@@ -667,14 +667,26 @@ static nni_sp_tran ws6_tran = {
.tran_fini = wstran_fini,
};
+#ifndef NNG_ELIDE_DEPRECATED
int
nng_ws_register(void)
{
+ return (nni_init());
+}
+
+int
+nng_wss_register(void)
+{
+ return (nni_init());
+}
+#endif
+
+void
+nni_sp_ws_register(void)
+{
nni_sp_tran_register(&ws_tran);
nni_sp_tran_register(&ws4_tran);
nni_sp_tran_register(&ws6_tran);
-
- return (0);
}
#ifdef NNG_TRANSPORT_WSS
@@ -706,22 +718,12 @@ static nni_sp_tran wss6_tran = {
.tran_fini = wstran_fini,
};
-int
-nng_wss_register(void)
+void
+nni_sp_wss_register(void)
{
nni_sp_tran_register(&wss_tran);
nni_sp_tran_register(&wss4_tran);
nni_sp_tran_register(&wss6_tran);
-
- return (0);
-}
-
-#else
-
-int
-nng_wss_register(void)
-{
- return (0);
}
#endif // NNG_TRANSPORT_WSS
diff --git a/src/sp/transport/zerotier/zerotier.c b/src/sp/transport/zerotier/zerotier.c
index 15c0fe9f..5658fb18 100644
--- a/src/sp/transport/zerotier/zerotier.c
+++ b/src/sp/transport/zerotier/zerotier.c
@@ -58,18 +58,17 @@ typedef struct zt_node zt_node;
typedef struct zt_frag zt_frag;
typedef struct zt_fraglist zt_fraglist;
-
// Port numbers are stored as 24-bit values in network byte order.
-#define ZT_GET24(ptr, v) \
- v = (((uint32_t)((uint8_t)(ptr)[0])) << 16) + \
- (((uint32_t)((uint8_t)(ptr)[1])) << 8) + \
- (((uint32_t)(uint8_t)(ptr)[2]))
-
-#define ZT_PUT24(ptr, u) \
- do { \
- (ptr)[0] = (uint8_t)(((uint32_t)(u)) >> 16); \
- (ptr)[1] = (uint8_t)(((uint32_t)(u)) >> 8); \
- (ptr)[2] = (uint8_t)((uint32_t)(u)); \
+#define ZT_GET24(ptr, v) \
+ v = (((uint32_t) ((uint8_t) (ptr)[0])) << 16) + \
+ (((uint32_t) ((uint8_t) (ptr)[1])) << 8) + \
+ (((uint32_t) (uint8_t) (ptr)[2]))
+
+#define ZT_PUT24(ptr, u) \
+ do { \
+ (ptr)[0] = (uint8_t) (((uint32_t) (u)) >> 16); \
+ (ptr)[1] = (uint8_t) (((uint32_t) (u)) >> 8); \
+ (ptr)[2] = (uint8_t) ((uint32_t) (u)); \
} while (0)
static const uint16_t zt_ethertype = 0x901;
@@ -455,7 +454,7 @@ zt_node_to_mac(uint64_t node, uint64_t nwid)
// multicast and set local administration -- this is the first
// octet of the 48 bit mac address. We also avoid 0x52, which
// is known to be used in KVM, libvirt, etc.
- mac = ((uint8_t)(nwid & 0xfe) | 0x02);
+ mac = ((uint8_t) (nwid & 0xfe) | 0x02);
if (mac == 0x52) {
mac = 0x32;
}
@@ -907,7 +906,7 @@ zt_pipe_recv_data(zt_pipe *p, const uint8_t *data, size_t len)
return;
}
- bit = (uint8_t)(1 << (fragno % 8));
+ bit = (uint8_t) (1 << (fragno % 8));
if ((fl->fl_missing[fragno / 8] & bit) == 0) {
// We've already got this fragment, ignore it. We don't
// bother to check for changed data.
@@ -1714,8 +1713,8 @@ zt_pipe_fini(void *arg)
}
static nni_reap_list zt_reap_list = {
- .rl_offset = offsetof(zt_pipe, zp_reap),
- .rl_func = zt_pipe_fini,
+ .rl_offset = offsetof(zt_pipe, zp_reap),
+ .rl_func = zt_pipe_fini,
};
static void
@@ -1841,15 +1840,15 @@ zt_pipe_send(void *arg, nni_aio *aio)
NNI_ASSERT(fragsz < 0x10000); // Because zp_mtu is 16 bits
msg_header_len = nni_msg_header_len(m);
- msg_len = nni_msg_len(m);
- bytes = msg_header_len + msg_len;
+ msg_len = nni_msg_len(m);
+ bytes = msg_header_len + msg_len;
if (bytes >= (0xfffe * fragsz)) {
nni_aio_finish_error(aio, NNG_EMSGSIZE);
nni_mtx_unlock(&zt_lk);
return;
}
// above check means nfrags will fit in 16-bits.
- nfrags = (uint16_t)((bytes + (fragsz - 1)) / fragsz);
+ nfrags = (uint16_t) ((bytes + (fragsz - 1)) / fragsz);
// get the next message ID, but skip 0
if ((id = p->zp_next_msgid++) == 0) {
@@ -1865,7 +1864,7 @@ zt_pipe_send(void *arg, nni_aio *aio)
size_t len;
// Prepend the header first.
- if ( (!offset) && (msg_header_len > 0)) {
+ if ((!offset) && (msg_header_len > 0)) {
if (msg_header_len > fragsz) {
// This shouldn't happen! SP headers are
// supposed to be quite small.
@@ -1895,7 +1894,7 @@ zt_pipe_send(void *arg, nni_aio *aio)
fragno++;
zt_send(p->zp_ztn, p->zp_nwid, zt_op_data, p->zp_raddr,
p->zp_laddr, data, fraglen + zt_offset_data_data);
- } while (msg_header_len + msg_len -offset != 0);
+ } while (msg_header_len + msg_len - offset != 0);
nni_mtx_unlock(&zt_lk);
// NB, We never bothered to call nn_aio_sched, because we run this
@@ -3240,9 +3239,16 @@ static struct nni_tran zt_tran = {
.tran_fini = zt_tran_fini,
};
+#ifndef NNG_ELIDE_DEPRECATED
int
nng_zt_register(void)
{
+ return (nni_init());
+}
+#endif
+
+void
+nni_sp_zt_register(void)
+{
nni_tran_register(&zt_tran);
- return (0);
}