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 -=|