+ if(name) {
+ uint32_t opt;
+ uint32_t namesize;
+ uint32_t reserved = 0;
+
+ if (magic != opts_magic)
+ err("Not enough opts_magic");
+ printf(".");
+ if(read(sock, &tmp, sizeof(uint16_t)) < 0) {
+ err("Failed reading flags: %m");
+ }
+ *flags = ((u32)ntohs(tmp));
+
+ /* reserved for future use*/
+ if (write(sock, &reserved, sizeof(reserved)) < 0)
+ err("Failed/2.1: %m");
+
+ /* Write the export name that we're after */
+ magic = ntohll(opts_magic);
+ if (write(sock, &magic, sizeof(magic)) < 0)
+ err("Failed/2.2: %m");
+ opt = ntohl(NBD_OPT_EXPORT_NAME);
+ if (write(sock, &opt, sizeof(opt)) < 0)
+ err("Failed/2.3: %m");
+ namesize = (u32)strlen(name);
+ namesize = ntohl(namesize);
+ if (write(sock, &namesize, sizeof(namesize)) < 0)
+ err("Failed/2.4: %m");
+ if (write(sock, name, strlen(name)) < 0)
+ err("Failed/2.4: %m");
+ } else {
+ if (magic != cliserv_magic)
+ err("Not enough cliserv_magic");
+ printf(".");
+ }