mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
lxc: set a hostname based on the container name
Set a transient hostname on containers. The hostname is computed from the container name, only keeping the valid characters [a-zA-Z0-9-] in it. This filtering is based on RFC 1123 and allows a digit to start the hostname.
This commit is contained in:
parent
b475a91b77
commit
faec195861
@ -2159,6 +2159,37 @@ static int lxcContainerSetUserGroup(virCommandPtr cmd,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char hostname_validchars[] =
|
||||||
|
"abcdefghijklmnopqrstuvwxyz"
|
||||||
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
|
"0123456789-";
|
||||||
|
|
||||||
|
static int lxcContainerSetHostname(virDomainDefPtr def)
|
||||||
|
{
|
||||||
|
int ret = -1;
|
||||||
|
char *name = NULL;
|
||||||
|
char *hostname = NULL;
|
||||||
|
|
||||||
|
/* Filter the VM name to get a valid hostname */
|
||||||
|
if (VIR_STRDUP(name, def->name) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
/* RFC 1123 allows 0-9 digits as a first character in hostname */
|
||||||
|
virStringFilterChars(name, hostname_validchars);
|
||||||
|
hostname = name;
|
||||||
|
if (strlen(name) > 0 && name[0] == '-')
|
||||||
|
hostname = name + 1;
|
||||||
|
|
||||||
|
if (sethostname(hostname, strlen(hostname)) < 0) {
|
||||||
|
virReportSystemError(errno, "%s", _("Failed to set hostname"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
VIR_FREE(name);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lxcContainerChild:
|
* lxcContainerChild:
|
||||||
@ -2269,6 +2300,10 @@ static int lxcContainerChild(void *data)
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lxcContainerSetHostname(vmDef) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
|
||||||
/* drop a set of root capabilities */
|
/* drop a set of root capabilities */
|
||||||
if (lxcContainerDropCapabilities(vmDef, !!hasReboot) < 0)
|
if (lxcContainerDropCapabilities(vmDef, !!hasReboot) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user