On 08/01/2018 04:48 PM, Eric Blake wrote:
On 08/01/2018 06:44 AM, Michal Privoznik wrote:
> In virStorageBackendCreateIfaceIQN() the virRandomBits() is
> called in order to use random bits to generate random name for
> new interface. However, virAsprintf() is expecting 32 bits and we
> are requesting only 30.
>
> Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
> ---
> src/util/viriscsi.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/util/viriscsi.c b/src/util/viriscsi.c
> index 653b4fd932..f00aeb53a7 100644
> --- a/src/util/viriscsi.c
> +++ b/src/util/viriscsi.c
> @@ -221,7 +221,7 @@ virStorageBackendCreateIfaceIQN(const char
> *initiatoriqn,
> if (virAsprintf(&temp_ifacename,
> "libvirt-iface-%08llx",
> - (unsigned long long)virRandomBits(30)) < 0)
> + (unsigned long long)virRandomBits(32)) < 0)
Are we sure that this wasn't intentional that the 2 most significant
bits are supposed to be zero (to avoid broadcast interface addresses, ro
example)?
Yes we are. The random bits are used only for generating a name, not an
address. The iSCSI interfaces we use here are in fact just a separate
iSCSI connection, not real NICs. It's just bad naming on iSCSI side, but
we are already used to that (initiator/target vs client/server), aren't we?
Michal