diff options
| author | Garrett D'Amore <garrett@damore.org> | 2024-11-09 15:24:43 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2024-11-09 16:27:45 -0800 |
| commit | 0058b766b91f08b34dcef3c7bb55b216099f3f66 (patch) | |
| tree | 5ac1fa105d707018cdfa9f5244da5837a8c31601 /src/core | |
| parent | 150d80c2c62ce3693dbbd0256c16337879c7d825 (diff) | |
| download | nng-0058b766b91f08b34dcef3c7bb55b216099f3f66.tar.gz nng-0058b766b91f08b34dcef3c7bb55b216099f3f66.tar.bz2 nng-0058b766b91f08b34dcef3c7bb55b216099f3f66.zip | |
TLS configuration changed to use discret _set_tls and _get_tls functions.
This is simpler, and more reliable than using socket options.
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/dialer.c | 18 | ||||
| -rw-r--r-- | src/core/dialer.h | 4 | ||||
| -rw-r--r-- | src/core/listener.c | 19 | ||||
| -rw-r--r-- | src/core/listener.h | 2 | ||||
| -rw-r--r-- | src/core/stream.c | 60 | ||||
| -rw-r--r-- | src/core/stream.h | 8 |
6 files changed, 110 insertions, 1 deletions
diff --git a/src/core/dialer.c b/src/core/dialer.c index 722a0868..0ee2d361 100644 --- a/src/core/dialer.c +++ b/src/core/dialer.c @@ -558,6 +558,24 @@ nni_dialer_getopt( return (nni_sock_getopt(d->d_sock, name, valp, szp, t)); } +int +nni_dialer_get_tls(nni_dialer *d, nng_tls_config **cfgp) +{ + if (d->d_ops.d_get_tls == NULL) { + return (NNG_ENOTSUP); + } + return (d->d_ops.d_get_tls(d->d_data, cfgp)); +} + +int +nni_dialer_set_tls(nni_dialer *d, nng_tls_config *cfg) +{ + if (d->d_ops.d_set_tls == NULL) { + return (NNG_ENOTSUP); + } + return (d->d_ops.d_set_tls(d->d_data, cfg)); +} + void nni_dialer_add_stat(nni_dialer *d, nni_stat_item *item) { diff --git a/src/core/dialer.h b/src/core/dialer.h index 7bc1547d..97a24e4a 100644 --- a/src/core/dialer.h +++ b/src/core/dialer.h @@ -1,5 +1,5 @@ // -// Copyright 2021 Staysail Systems, Inc. <info@staysail.tech> +// Copyright 2024 Staysail Systems, Inc. <info@staysail.tech> // Copyright 2018 Capitar IT Group BV <info@capitar.com> // Copyright 2018 Devolutions <info@devolutions.net> // @@ -25,6 +25,8 @@ extern int nni_dialer_setopt( nni_dialer *, const char *, const void *, size_t, nni_type); extern int nni_dialer_getopt( nni_dialer *, const char *, void *, size_t *, nni_type); +extern int nni_dialer_get_tls(nni_dialer *, nng_tls_config **); +extern int nni_dialer_set_tls(nni_dialer *, nng_tls_config *); extern void nni_dialer_add_stat(nni_dialer *, nni_stat_item *); extern void nni_dialer_bump_error(nni_dialer *, int); diff --git a/src/core/listener.c b/src/core/listener.c index 65fe5a9f..38a7d323 100644 --- a/src/core/listener.c +++ b/src/core/listener.c @@ -9,6 +9,7 @@ // found online at https://opensource.org/licenses/MIT. // +#include "core/defs.h" #include "core/nng_impl.h" #include "core/strs.h" #include "nng/nng.h" @@ -507,6 +508,24 @@ nni_listener_getopt( return (nni_sock_getopt(l->l_sock, name, val, szp, t)); } +int +nni_listener_get_tls(nni_listener *l, nng_tls_config **cfgp) +{ + if (l->l_ops.l_get_tls == NULL) { + return (NNG_ENOTSUP); + } + return (l->l_ops.l_get_tls(l->l_data, cfgp)); +} + +int +nni_listener_set_tls(nni_listener *l, nng_tls_config *cfg) +{ + if (l->l_ops.l_set_tls == NULL) { + return (NNG_ENOTSUP); + } + return (l->l_ops.l_set_tls(l->l_data, cfg)); +} + void nni_listener_add_stat(nni_listener *l, nni_stat_item *item) { diff --git a/src/core/listener.h b/src/core/listener.h index c6c0b5d3..67c80be0 100644 --- a/src/core/listener.h +++ b/src/core/listener.h @@ -25,6 +25,8 @@ extern int nni_listener_setopt( nni_listener *, const char *, const void *, size_t, nni_type); extern int nni_listener_getopt( nni_listener *, const char *, void *, size_t *, nni_type); +extern int nni_listener_get_tls(nni_listener *, nng_tls_config **); +extern int nni_listener_set_tls(nni_listener *, nng_tls_config *); extern void nni_listener_add_stat(nni_listener *, nni_stat_item *); extern void nni_listener_bump_error(nni_listener *, int); diff --git a/src/core/stream.c b/src/core/stream.c index 4ac27705..78029ddc 100644 --- a/src/core/stream.c +++ b/src/core/stream.c @@ -214,6 +214,24 @@ nni_stream_dialer_set(nng_stream_dialer *d, const char *nm, const void *data, return (d->sd_set(d, nm, data, sz, t)); } +int +nni_stream_dialer_get_tls(nng_stream_dialer *d, nng_tls_config **cfgp) +{ + if (d->sd_get_tls == NULL) { + return (NNG_ENOTSUP); + } + return (d->sd_get_tls(d, cfgp)); +} + +int +nni_stream_dialer_set_tls(nng_stream_dialer *d, nng_tls_config *cfg) +{ + if (d->sd_set_tls == NULL) { + return (NNG_ENOTSUP); + } + return (d->sd_set_tls(d, cfg)); +} + void nng_stream_listener_close(nng_stream_listener *l) { @@ -253,6 +271,24 @@ nni_stream_listener_set(nng_stream_listener *l, const char *nm, } int +nni_stream_listener_get_tls(nng_stream_listener *l, nng_tls_config **cfgp) +{ + if (l->sl_get_tls == NULL) { + return (NNG_ENOTSUP); + } + return (l->sl_get_tls(l, cfgp)); +} + +int +nni_stream_listener_set_tls(nng_stream_listener *l, nng_tls_config *cfg) +{ + if (l->sl_set_tls == NULL) { + return (NNG_ENOTSUP); + } + return (l->sl_set_tls(l, cfg)); +} + +int nng_stream_listener_alloc_url(nng_stream_listener **lp, const nng_url *url) { int rv; @@ -387,6 +423,12 @@ nng_stream_dialer_get_addr( } int +nng_stream_dialer_get_tls(nng_stream_dialer *d, nng_tls_config **cfgp) +{ + return (nni_stream_dialer_get_tls(d, cfgp)); +} + +int nng_stream_listener_get_int(nng_stream_listener *l, const char *n, int *v) { return (nni_stream_listener_get(l, n, v, NULL, NNI_TYPE_INT32)); @@ -438,6 +480,12 @@ nng_stream_listener_get_addr( } int +nng_stream_listener_get_tls(nng_stream_listener *l, nng_tls_config **cfgp) +{ + return (nni_stream_listener_get_tls(l, cfgp)); +} + +int nng_stream_dialer_set_int(nng_stream_dialer *d, const char *n, int v) { return (nni_stream_dialer_set(d, n, &v, sizeof(v), NNI_TYPE_INT32)); @@ -489,6 +537,12 @@ nng_stream_dialer_set_addr( } int +nng_stream_dialer_set_tls(nng_stream_dialer *d, nng_tls_config *cfg) +{ + return (nni_stream_dialer_set_tls(d, cfg)); +} + +int nng_stream_listener_set_int(nng_stream_listener *l, const char *n, int v) { return (nni_stream_listener_set(l, n, &v, sizeof(v), NNI_TYPE_INT32)); @@ -543,3 +597,9 @@ nng_stream_listener_set_addr( return ( nni_stream_listener_set(l, n, v, sizeof(*v), NNI_TYPE_SOCKADDR)); } + +int +nng_stream_listener_set_tls(nng_stream_listener *l, nng_tls_config *cfg) +{ + return (nni_stream_listener_set_tls(l, cfg)); +} diff --git a/src/core/stream.h b/src/core/stream.h index eb3cb93b..0fa79a47 100644 --- a/src/core/stream.h +++ b/src/core/stream.h @@ -25,11 +25,15 @@ extern int nni_stream_dialer_get( nng_stream_dialer *, const char *, void *, size_t *, nni_type); extern int nni_stream_dialer_set( nng_stream_dialer *, const char *, const void *, size_t, nni_type); +extern int nni_stream_dialer_set_tls(nng_stream_dialer *, nng_tls_config *); +extern int nni_stream_dialer_get_tls(nng_stream_dialer *, nng_tls_config **); extern int nni_stream_listener_get( nng_stream_listener *, const char *, void *, size_t *, nni_type); extern int nni_stream_listener_set( nng_stream_listener *, const char *, const void *, size_t, nni_type); +extern int nni_stream_listener_set_tls(nng_stream_listener *, nng_tls_config *); +extern int nni_stream_listener_get_tls(nng_stream_listener *, nng_tls_config **); // This is the common implementation of a connected byte stream. It should be // the first element of any implementation. Applications are not permitted to @@ -50,6 +54,8 @@ struct nng_stream_dialer { void (*sd_dial)(void *, nng_aio *); int (*sd_get)(void *, const char *, void *, size_t *, nni_type); int (*sd_set)(void *, const char *, const void *, size_t, nni_type); + int (*sd_get_tls)(void *, nng_tls_config **); + int (*sd_set_tls)(void *, nng_tls_config *); }; // Listener implementation. Stream listeners accept connections and create @@ -61,6 +67,8 @@ struct nng_stream_listener { void (*sl_accept)(void *, nng_aio *); int (*sl_get)(void *, const char *, void *, size_t *, nni_type); int (*sl_set)(void *, const char *, const void *, size_t, nni_type); + int (*sl_get_tls)(void *, nng_tls_config **); + int (*sl_set_tls)(void *, nng_tls_config *); }; #endif // CORE_STREAM_H |
