Replace the loop trying to find a free veth interface name for the container by assigning the container if name to parent name + 'p' by default. Interface name selection logic is susceptible to race conditions, so try to select just one name by default and use that as a template for the second name. The parent name can also be overriden in domain configuration. Signed-off-by: Oskari Saarenmaa <os@xxxxxxx> --- v2: generate first name as before (if it wasn't given by the caller), and use the parent if name as a template for the container if name so that the caller doesn't have to select two names (which is not possible at the moment.) src/util/virnetdevveth.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/util/virnetdevveth.c b/src/util/virnetdevveth.c index 039767f..91e2829 100644 --- a/src/util/virnetdevveth.c +++ b/src/util/virnetdevveth.c @@ -114,20 +114,14 @@ int virNetDevVethCreate(char** veth1, char** veth2) } argv[3] = *veth1; - while (*veth2 == NULL) { - if ((vethDev = virNetDevVethGetFreeName(veth2, vethDev)) < 0) { + if (*veth2 == NULL) { + /* Append a 'p' to veth1 if name */ + if (virAsprintf(veth2, "%sp", *veth1) < 0) { if (veth1_alloc) VIR_FREE(*veth1); goto cleanup; } - /* Just make sure they didn't accidentally get same name */ - if (STREQ(*veth1, *veth2)) { - vethDev++; - VIR_FREE(*veth2); - continue; - } - VIR_DEBUG("Assigned guest: %s", *veth2); veth2_alloc = true; } -- 1.8.3.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list