nbd.c (374c52467a38c2e811f6c0db4edc9ea7d5f34341) nbd.c (af91062ee1408f7f5bb58389d355d29a5040c648)
1/*
2 * QEMU Block driver for NBD
3 *
4 * Copyright (C) 2008 Bull S.A.S.
5 * Author: Laurent Vivier <Laurent.Vivier@bull.net>
6 *
7 * Some parts:
8 * Copyright (C) 2007 Anthony Liguori <anthony@codemonkey.ws>

--- 249 unchanged lines hidden (view full) ---

258 return true;
259}
260
261static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options,
262 Error **errp)
263{
264 SocketAddress *saddr = NULL;
265 QDict *addr = NULL;
1/*
2 * QEMU Block driver for NBD
3 *
4 * Copyright (C) 2008 Bull S.A.S.
5 * Author: Laurent Vivier <Laurent.Vivier@bull.net>
6 *
7 * Some parts:
8 * Copyright (C) 2007 Anthony Liguori <anthony@codemonkey.ws>

--- 249 unchanged lines hidden (view full) ---

258 return true;
259}
260
261static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options,
262 Error **errp)
263{
264 SocketAddress *saddr = NULL;
265 QDict *addr = NULL;
266 QObject *crumpled_addr = NULL;
267 Visitor *iv = NULL;
268 Error *local_err = NULL;
269
270 qdict_extract_subqdict(options, &addr, "server.");
271 if (!qdict_size(addr)) {
272 error_setg(errp, "NBD server address missing");
273 goto done;
274 }
275
266 Visitor *iv = NULL;
267 Error *local_err = NULL;
268
269 qdict_extract_subqdict(options, &addr, "server.");
270 if (!qdict_size(addr)) {
271 error_setg(errp, "NBD server address missing");
272 goto done;
273 }
274
276 crumpled_addr = qdict_crumple_for_keyval_qiv(addr, errp);
277 if (!crumpled_addr) {
275 iv = qobject_input_visitor_new_flat_confused(addr, errp);
276 if (!iv) {
278 goto done;
279 }
280
277 goto done;
278 }
279
281 iv = qobject_input_visitor_new_keyval(crumpled_addr);
282 visit_type_SocketAddress(iv, NULL, &saddr, &local_err);
283 if (local_err) {
284 error_propagate(errp, local_err);
285 goto done;
286 }
287
288done:
289 qobject_unref(addr);
280 visit_type_SocketAddress(iv, NULL, &saddr, &local_err);
281 if (local_err) {
282 error_propagate(errp, local_err);
283 goto done;
284 }
285
286done:
287 qobject_unref(addr);
290 qobject_unref(crumpled_addr);
291 visit_free(iv);
292 return saddr;
293}
294
295NBDClientSession *nbd_get_client_session(BlockDriverState *bs)
296{
297 BDRVNBDState *s = bs->opaque;
298 return &s->client;

--- 333 unchanged lines hidden ---
288 visit_free(iv);
289 return saddr;
290}
291
292NBDClientSession *nbd_get_client_session(BlockDriverState *bs)
293{
294 BDRVNBDState *s = bs->opaque;
295 return &s->client;

--- 333 unchanged lines hidden ---