X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fproto.c;fp=daemon%2Fproto.c;h=f3a3b26ca2018bb27c50ab2ef36873178bf6c07e;hp=63d1cc990003652924da66ad6ed3d4b8bd7b4953;hb=3aa8182c3cc478bf723205f1a4dd84e160768448;hpb=fdc8805362c6fc587bb7985c5290362ad3094f4e diff --git a/daemon/proto.c b/daemon/proto.c index 63d1cc9..f3a3b26 100644 --- a/daemon/proto.c +++ b/daemon/proto.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include /* defines MIN */ @@ -45,6 +46,23 @@ int proc_nr; int serial; +/* Hint for implementing progress messages for uploaded/incoming data. + * The caller sets this to a value > 0 if it knows or can estimate how + * much data will be sent (this is not always known, eg. for uploads + * coming from a pipe). If this is known then we can emit progress + * messages as we write the data. + */ +uint64_t progress_hint; + +/* Optional arguments bitmask. Caller sets this to indicate which + * optional arguments in the guestfs__args structure are + * meaningful. Optional arguments not covered by the bitmask are set + * to arbitrary values and the daemon should ignore them. If the + * bitmask has bits set that the daemon doesn't understand, then the + * whole call is rejected early in processing. + */ +uint64_t optargs_bitmask; + /* Time at which we received the current request. */ static struct timeval start_t; @@ -149,9 +167,19 @@ main_loop (int _sock) reply_with_error ("unexpected message status (%d)", hdr.status); goto cont; } + /* This version of the daemon does not understand optional arguments + * at all. When we fix this, we will remove the next conditional. + */ + if (hdr.optargs_bitmask != 0) { + reply_with_error ("optargs_bitmask != 0 (%" PRIu64 ")", + hdr.optargs_bitmask); + goto cont; + } proc_nr = hdr.proc; serial = hdr.serial; + progress_hint = hdr.progress_hint; + optargs_bitmask = hdr.optargs_bitmask; /* Clear errors before we call the stub functions. This is just * to ensure that we can accurately report errors in cases where