On 9/24/19 4:07 PM, Richard W.M. Jones wrote: > Diff against libnbd’s copy of this file, and change this one until it > matches. > --- > common/protocol/nbd-protocol.h | 76 +++++++++++++++++----------- > server/protocol-handshake-newstyle.c | 26 +++++----- > server/protocol-handshake-oldstyle.c | 4 +- > server/protocol.c | 25 ++++----- > tests/test-layers.c | 14 ++--- > 5 files changed, 81 insertions(+), 64 deletions(-) > > diff --git a/common/protocol/nbd-protocol.h b/common/protocol/nbd-protocol.h > index 60d35d0..724ffb6 100644 > --- a/common/protocol/nbd-protocol.h > +++ b/common/protocol/nbd-protocol.h > @@ -40,37 +40,46 @@ > * these structures. > */ > > +#define NBD_MAX_STRING 4096 /* Maximum length of a string field */ > + > /* Old-style handshake. */ > -struct old_handshake { > +struct nbd_old_handshake { > char nbdmagic[8]; /* "NBDMAGIC" */ > - uint64_t version; /* OLD_VERSION */ > + uint64_t version; /* NBD_OLD_VERSION */ > uint64_t exportsize; > uint16_t gflags; /* global flags */ > uint16_t eflags; /* per-export flags */
Different from the current NBD protocol spec, which calls out uint64_t exportsize, uint32_t eflags (partly to emphasize that no oldstyle server will ever set gflags). The difference is not fatal. > > +/* Newstyle handshake OPT_EXPORT_NAME reply message. */ > +struct nbd_export_name_option_reply { > + uint64_t exportsize; /* size of export */ > + uint16_t eflags; /* per-export flags */ > + char zeroes[124]; /* optional zeroes */ > +} __attribute__((packed));; Double ;; > > #define NBD_INFO_EXPORT 0 We're missing other defined NBD_INFO_* constants (from both projects); we'll get there when we add support for block size constraints, but could add them now (even if they remain unused a bit longer) if desired. Probably as a separate patch. > @@ -144,14 +157,14 @@ struct block_descriptor { > /* New-style handshake server reply when using NBD_OPT_EXPORT_NAME. > * Modern clients use NBD_OPT_GO instead of this. > */ > -struct new_handshake_finish { > +struct nbd_new_handshake_finish { > uint64_t exportsize; > uint16_t eflags; /* per-export flags */ > char zeroes[124]; /* must be sent as zero bytes */ > } __attribute__((packed)); Redundant with nbd_export_name_option_reply. Otherwise looks good. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://www.redhat.com/mailman/listinfo/libguestfs