
On Wed, Sep 19, 2007 at 02:51:42PM +0100, Richard W.M. Jones wrote:
Daniel P. Berrange wrote:
On Wed, Sep 19, 2007 at 02:08:33PM +0100, Richard W.M. Jones wrote:
/* Must not overlap with virDrvOpenFlags */ enum virDrvOpenRemoteFlags { VIR_DRV_OPEN_REMOTE_RO = (1 << 0), - VIR_DRV_OPEN_REMOTE_UNIX = (1 << 1), - VIR_DRV_OPEN_REMOTE_USER = (1 << 2), - VIR_DRV_OPEN_REMOTE_AUTOSTART = (1 << 3), + VIR_DRV_OPEN_REMOTE_USER = (1 << 1), + VIR_DRV_OPEN_REMOTE_AUTOSTART = (1 << 2), }; I'm just a bit worried about changing those if they end up on the wire in some ways. If that's the case then just keep he enum as-is. I don't really understand the purpose of these flags. They _do_ go over the wire in both the current and proposed implementation, but the remote end doesn't interpret them (unless I'm missing something ...?)
These flags are only used by remote_internal.c between the methods remoteOpen, remoteNetworkOpen and the doRemoteOpen call. They don't go over the wire.
NB, not to be confused with 'enum virDrvOpenFlags' which does go over the wire.
Are you sure they don't go over the wire? My reading of doRemoteOpen suggests that they do:
static int doRemoteOpen (virConnectPtr conn, struct private_data *priv, const char *uri_str, int flags) { // bunch of code which reads 'flags' but never modifies it
/* Finally we can call the remote side's open function. */ remote_open_args args = { &name, flags };
if (call (conn, priv, 1, REMOTE_PROC_OPEN, (xdrproc_t) xdr_remote_open_args, (char *) &args, (xdrproc_t) xdr_void, (char *) NULL) == -1) goto failed;
and the 'call' function just serialises whatever is in the args array. But at this point flags could contain VIR_DRV_OPEN_REMOTE_* flags.
Unless I'm reading this code wrong ...
Yep that's a bug - we're passing bogus data to the server. Fortunately its not checking any flag except _RO, but I'll fix this & repost. Dan. -- |=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=| |=- Perl modules: http://search.cpan.org/~danberr/ -=| |=- Projects: http://freshmeat.net/~danielpb/ -=| |=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|