Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge branch 'extension-info'
Signed-off-by: Wouter Verhelst <w@uter.be>
  • Loading branch information
yoe committed Apr 30, 2017
1 parent 1406502 commit e6b56c1
Show file tree
Hide file tree
Showing 4 changed files with 1,423 additions and 878 deletions.
39 changes: 25 additions & 14 deletions cliserv.h
Expand Up @@ -94,24 +94,35 @@ void writeit(int f, void *buf, size_t len);
* served */

/* Options that the client can select to the server */
#define NBD_OPT_EXPORT_NAME (1) /** Client wants to select a named export (is followed by name of export) */
#define NBD_OPT_ABORT (2) /** Client wishes to abort negotiation */
#define NBD_OPT_LIST (3) /** Client request list of supported exports (not followed by data) */
#define NBD_OPT_STARTTLS (5) /** Client wishes to initiate TLS */
#define NBD_OPT_EXPORT_NAME (1) /**< Client wants to select a named export (is followed by name of export) */
#define NBD_OPT_ABORT (2) /**< Client wishes to abort negotiation */
#define NBD_OPT_LIST (3) /**< Client request list of supported exports (not followed by data) */
#define NBD_OPT_STARTTLS (5) /**< Client wishes to initiate TLS */
#define NBD_OPT_INFO (6) /**< Client wants information about the given export */
#define NBD_OPT_GO (7) /**< Client wants to select the given and move to the transmission phase */

/* Replies the server can send during negotiation */
#define NBD_REP_ACK (1) /** ACK a request. Data: option number to be acked */
#define NBD_REP_SERVER (2) /** Reply to NBD_OPT_LIST (one of these per server; must be followed by NBD_REP_ACK to signal the end of the list */
#define NBD_REP_ACK (1) /**< ACK a request. Data: option number to be acked */
#define NBD_REP_SERVER (2) /**< Reply to NBD_OPT_LIST (one of these per server; must be followed by NBD_REP_ACK to signal the end of the list */
#define NBD_REP_INFO (3) /**< Reply to NBD_OPT_INFO */
#define NBD_REP_FLAG_ERROR (1 << 31) /** If the high bit is set, the reply is an error */
#define NBD_REP_ERR_UNSUP (1 | NBD_REP_FLAG_ERROR) /** Client requested an option not understood by this version of the server */
#define NBD_REP_ERR_POLICY (2 | NBD_REP_FLAG_ERROR) /** Client requested an option not allowed by server configuration. (e.g., the option was disabled) */
#define NBD_REP_ERR_INVALID (3 | NBD_REP_FLAG_ERROR) /** Client issued an invalid request */
#define NBD_REP_ERR_PLATFORM (4 | NBD_REP_FLAG_ERROR) /** Option not supported on this platform */
#define NBD_REP_ERR_TLS_REQD (5 | NBD_REP_FLAG_ERROR) /** TLS required */
#define NBD_REP_ERR_UNSUP (1 | NBD_REP_FLAG_ERROR) /**< Client requested an option not understood by this version of the server */
#define NBD_REP_ERR_POLICY (2 | NBD_REP_FLAG_ERROR) /**< Client requested an option not allowed by server configuration. (e.g., the option was disabled) */
#define NBD_REP_ERR_INVALID (3 | NBD_REP_FLAG_ERROR) /**< Client issued an invalid request */
#define NBD_REP_ERR_PLATFORM (4 | NBD_REP_FLAG_ERROR) /**< Option not supported on this platform */
#define NBD_REP_ERR_TLS_REQD (5 | NBD_REP_FLAG_ERROR) /**< TLS required */
#define NBD_REP_ERR_UNKNOWN (6 | NBD_REP_FLAG_ERROR) /**< NBD_OPT_INFO or ..._GO requested on unknown export */
#define NBD_REP_ERR_BLOCK_SIZE_REQD (8 | NBD_REP_FLAG_ERROR) /**< Server is not willing to serve the export without the block size being negotiated */

/* Global flags */
#define NBD_FLAG_FIXED_NEWSTYLE (1 << 0) /* new-style export that actually supports extending */
#define NBD_FLAG_NO_ZEROES (1 << 1) /* we won't send the 128 bits of zeroes if the client sends NBD_FLAG_C_NO_ZEROES */
/* Flags from client to server. Only one such option currently. */
#define NBD_FLAG_FIXED_NEWSTYLE (1 << 0) /**< new-style export that actually supports extending */
#define NBD_FLAG_NO_ZEROES (1 << 1) /**< we won't send the 128 bits of zeroes if the client sends NBD_FLAG_C_NO_ZEROES */
/* Flags from client to server. */
#define NBD_FLAG_C_FIXED_NEWSTYLE NBD_FLAG_FIXED_NEWSTYLE
#define NBD_FLAG_C_NO_ZEROES NBD_FLAG_NO_ZEROES

/* Info types */
#define NBD_INFO_EXPORT (0)
#define NBD_INFO_NAME (1)
#define NBD_INFO_DESCRIPTION (2)
#define NBD_INFO_BLOCK_SIZE (3)

0 comments on commit e6b56c1

Please sign in to comment.