On 8/10/19 8:02 AM, Richard W.M. Jones wrote:
Previously nbd_set_tls had an integer argument which was 0 for disable, 1 for allow and 2 for require. This commit adds a proper enumerated type to describe this, defining LIBNBD_TLS_DISABLE = 0, LIBNBD_TLS_ALLOW = 1 and LIBNBD_TLS_REQUIRE = 2. (Note the C API doesn't change).
In C the enumerated type is still defined and passed as an int (not as an enum). While we could define an enum type for this, there are ABI stability problems inherent in enums in C.
In OCaml this is implemented as a variant type.
There is no equivalent for returning an enum (eg. for nbd_get_tls). We should add that later. It won't affect the C API but would change the OCaml API. --- TODO | 2 - generator/generator | 108 ++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 104 insertions(+), 6 deletions(-)
diff --git a/TODO b/TODO index 65c95ee..8e067c0 100644 --- a/TODO +++ b/TODO @@ -35,8 +35,6 @@ Suggested API improvements: - nbd_connect_command: allow passing char **env
TLS: - - nbd_set_tls: either remove optiona (1/2) interface, or - define symbols for it
Nice fix of a typo while at it :)
@@ -1029,12 +1045,12 @@ NBD server. The possible settings are:
=over 4
-=item C<tls=0> +=item C<LIBNBD_TLS_DISABLE>
Disable TLS. (The default setting, unless using C<nbd_connect_uri> with a URI that requires TLS)
-=item C<tls=1> +=item C<LIBNBD_TLS_ALLOW>
Enable TLS if possible. In some cases this will fall back to an unencrypted and/or unauthenticated connection if
While touching this, we should also call out that this is a security risk if there is any possibility of a man-in-the-middle attack. Otherwise looks good. Should we also expose an enum type for the pread_structured callback function? -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org