[Nbd] [PATCHv2 1/6] Make nbd-tester-client use FIXED_NEWSTYLE negotiation
- To: "nbd-general@lists.sourceforge.net" <nbd-general@lists.sourceforge.net>
- Cc: Wouter Verhelst <w@...112...>
- Subject: [Nbd] [PATCHv2 1/6] Make nbd-tester-client use FIXED_NEWSTYLE negotiation
- From: Alex Bligh <alex@...872...>
- Date: Mon, 11 Apr 2016 18:15:34 +0100
- Message-id: <1460394939-24868-2-git-send-email-alex@...872...>
- In-reply-to: <1460394939-24868-1-git-send-email-alex@...872...>
- References: <1460394939-24868-1-git-send-email-alex@...872...>
Signed-off-by: Alex Bligh <alex@...872...>
---
tests/run/nbd-tester-client.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/tests/run/nbd-tester-client.c b/tests/run/nbd-tester-client.c
index 06396a7..4ca5064 100644
--- a/tests/run/nbd-tester-client.c
+++ b/tests/run/nbd-tester-client.c
@@ -342,6 +342,8 @@ int setup_connection_common(int sock, char* name, CONNECTION_TYPE ctype, int* se
u64 tmp64;
uint64_t mymagic = (name ? opts_magic : cliserv_magic);
uint32_t tmp32 = 0;
+ uint16_t handshakeflags = 0;
+ uint32_t negotiationflags = 0;
if(ctype<CONNECTION_TYPE_INIT_PASSWD)
goto end;
@@ -370,10 +372,14 @@ int setup_connection_common(int sock, char* name, CONNECTION_TYPE ctype, int* se
READ_ALL_ERRCHK(sock, buf, 128, err, "Could not read data: %s", strerror(errno));
goto end;
}
- /* flags */
- READ_ALL_ERRCHK(sock, buf, sizeof(uint16_t), err, "Could not read reserved field: %s", strerror(errno));
- /* reserved field */
- WRITE_ALL_ERRCHK(sock, &tmp32, sizeof(tmp32), err, "Could not write reserved field: %s", strerror(errno));
+ /* handshake flags */
+ READ_ALL_ERRCHK(sock, &handshakeflags, sizeof(handshakeflags), err, "Could not read reserved field: %s", strerror(errno));
+ handshakeflags = ntohs(handshakeflags);
+ /* negotiation flags */
+ if (handshakeflags & NBD_FLAG_FIXED_NEWSTYLE)
+ negotiationflags |= NBD_FLAG_C_FIXED_NEWSTYLE;
+ negotiationflags = htonl(negotiationflags);
+ WRITE_ALL_ERRCHK(sock, &negotiationflags, sizeof(negotiationflags), err, "Could not write reserved field: %s", strerror(errno));
/* magic */
tmp64 = htonll(opts_magic);
WRITE_ALL_ERRCHK(sock, &tmp64, sizeof(tmp64), err, "Could not write magic: %s", strerror(errno));
--
1.9.1
Reply to: