+ 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)) << 16;
+
+ /* reserved for future use*/
+ write(sock, &reserved, sizeof(reserved));
+
+ /* Write the export name that we're after */
+ magic = ntohll(opts_magic);
+ write(sock, &magic, sizeof(magic));
+ opt = ntohl(NBD_OPT_EXPORT_NAME);
+ write(sock, &opt, sizeof(opt));
+ namesize = (u32)strlen(name);
+ namesize = ntohl(namesize);
+ write(sock, &namesize, sizeof(namesize));
+ write(sock, name, strlen(name));
+ } else {
+ if (magic != cliserv_magic)
+ err("Not enough cliserv_magic");
+ printf(".");
+ }