X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fstubs.c;h=06a86008058a5af35047b6f0e2374e744c7f3e69;hp=24f60427b707243ab3a8ab07642b1e69d9367225;hb=6085137e65cb63aaf725207f2929a571d1149420;hpb=73d6932ab2dd3f9120a1f4a532621c07cb174705;ds=sidebyside diff --git a/daemon/stubs.c b/daemon/stubs.c index 24f6042..06a8600 100644 --- a/daemon/stubs.c +++ b/daemon/stubs.c @@ -201,7 +201,7 @@ static void list_partitions_stub (XDR *xdr_in) static void pvs_stub (XDR *xdr_in) { - guestfs_lvm_int_pv_list *r; + char **r; r = do_pvs (); if (r == NULL) @@ -209,14 +209,15 @@ static void pvs_stub (XDR *xdr_in) return; struct guestfs_pvs_ret ret; - ret.physvols = *r; + ret.physvols.physvols_len = count_strings (r); + ret.physvols.physvols_val = r; reply ((xdrproc_t) &xdr_guestfs_pvs_ret, (char *) &ret); - xdr_free ((xdrproc_t) xdr_guestfs_pvs_ret, (char *) &ret); + free_strings (r); } static void vgs_stub (XDR *xdr_in) { - guestfs_lvm_int_vg_list *r; + char **r; r = do_vgs (); if (r == NULL) @@ -224,14 +225,15 @@ static void vgs_stub (XDR *xdr_in) return; struct guestfs_vgs_ret ret; - ret.volgroups = *r; + ret.volgroups.volgroups_len = count_strings (r); + ret.volgroups.volgroups_val = r; reply ((xdrproc_t) &xdr_guestfs_vgs_ret, (char *) &ret); - xdr_free ((xdrproc_t) xdr_guestfs_vgs_ret, (char *) &ret); + free_strings (r); } static void lvs_stub (XDR *xdr_in) { - guestfs_lvm_int_lv_list *r; + char **r; r = do_lvs (); if (r == NULL) @@ -239,9 +241,55 @@ static void lvs_stub (XDR *xdr_in) return; struct guestfs_lvs_ret ret; - ret.logvols = *r; + ret.logvols.logvols_len = count_strings (r); + ret.logvols.logvols_val = r; reply ((xdrproc_t) &xdr_guestfs_lvs_ret, (char *) &ret); - xdr_free ((xdrproc_t) xdr_guestfs_lvs_ret, (char *) &ret); + free_strings (r); +} + +static void pvs_full_stub (XDR *xdr_in) +{ + guestfs_lvm_int_pv_list *r; + + r = do_pvs_full (); + if (r == NULL) + /* do_pvs_full has already called reply_with_error, so just return */ + return; + + struct guestfs_pvs_full_ret ret; + ret.physvols = *r; + reply ((xdrproc_t) &xdr_guestfs_pvs_full_ret, (char *) &ret); + xdr_free ((xdrproc_t) xdr_guestfs_pvs_full_ret, (char *) &ret); +} + +static void vgs_full_stub (XDR *xdr_in) +{ + guestfs_lvm_int_vg_list *r; + + r = do_vgs_full (); + if (r == NULL) + /* do_vgs_full has already called reply_with_error, so just return */ + return; + + struct guestfs_vgs_full_ret ret; + ret.volgroups = *r; + reply ((xdrproc_t) &xdr_guestfs_vgs_full_ret, (char *) &ret); + xdr_free ((xdrproc_t) xdr_guestfs_vgs_full_ret, (char *) &ret); +} + +static void lvs_full_stub (XDR *xdr_in) +{ + guestfs_lvm_int_lv_list *r; + + r = do_lvs_full (); + if (r == NULL) + /* do_lvs_full has already called reply_with_error, so just return */ + return; + + struct guestfs_lvs_full_ret ret; + ret.logvols = *r; + reply ((xdrproc_t) &xdr_guestfs_lvs_full_ret, (char *) &ret); + xdr_free ((xdrproc_t) xdr_guestfs_lvs_full_ret, (char *) &ret); } void dispatch_incoming_message (XDR *xdr_in) @@ -280,6 +328,15 @@ void dispatch_incoming_message (XDR *xdr_in) case GUESTFS_PROC_LVS: lvs_stub (xdr_in); break; + case GUESTFS_PROC_PVS_FULL: + pvs_full_stub (xdr_in); + break; + case GUESTFS_PROC_VGS_FULL: + vgs_full_stub (xdr_in); + break; + case GUESTFS_PROC_LVS_FULL: + lvs_full_stub (xdr_in); + break; default: reply_with_error ("dispatch_incoming_message: unknown procedure number %d", proc_nr); }