mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 04:25:18 +00:00
build: don't hand-roll cloexec code
No need to repeat common code. * bootstrap.conf (gnulib_modules): Import calloc-posix. * src/util/bridge.c (brInit): Use virSetCloseExec. (brSetInterfaceUp): Adjust flags name. * src/uml/uml_driver.c (umlSetCloseExec): Delete. (umlStartVMDaemon): Use util version instead.
This commit is contained in:
parent
e17d3e7fe7
commit
ff98359d51
@ -27,6 +27,7 @@ byteswap
|
||||
c-ctype
|
||||
c-strcase
|
||||
c-strcasestr
|
||||
calloc-posix
|
||||
canonicalize-lgpl
|
||||
chown
|
||||
close
|
||||
|
@ -114,19 +114,6 @@ static int umlOpenMonitor(struct uml_driver *driver,
|
||||
static int umlReadPidFile(struct uml_driver *driver,
|
||||
virDomainObjPtr vm);
|
||||
|
||||
static int umlSetCloseExec(int fd) {
|
||||
int flags;
|
||||
if ((flags = fcntl(fd, F_GETFD)) < 0)
|
||||
goto error;
|
||||
flags |= FD_CLOEXEC;
|
||||
if ((fcntl(fd, F_SETFD, flags)) < 0)
|
||||
goto error;
|
||||
return 0;
|
||||
error:
|
||||
VIR_ERROR(_("Failed to set close-on-exec file descriptor flag"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int umlStartVMDaemon(virConnectPtr conn,
|
||||
struct uml_driver *driver,
|
||||
virDomainObjPtr vm);
|
||||
@ -889,9 +876,9 @@ static int umlStartVMDaemon(virConnectPtr conn,
|
||||
}
|
||||
VIR_FREE(logfile);
|
||||
|
||||
if (umlSetCloseExec(logfd) < 0) {
|
||||
virReportSystemError(errno,
|
||||
"%s", _("Unable to set VM logfile close-on-exec flag"));
|
||||
if (virSetCloseExec(logfd) < 0) {
|
||||
virReportSystemError(errno, "%s",
|
||||
_("Unable to set VM logfile close-on-exec flag"));
|
||||
VIR_FORCE_CLOSE(logfd);
|
||||
return -1;
|
||||
}
|
||||
|
@ -72,25 +72,16 @@ int
|
||||
brInit(brControl **ctlp)
|
||||
{
|
||||
int fd;
|
||||
int flags;
|
||||
|
||||
if (!ctlp || *ctlp)
|
||||
return EINVAL;
|
||||
|
||||
fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (fd < 0)
|
||||
if (fd < 0 ||
|
||||
virSetCloseExec(fd) < 0 ||
|
||||
VIR_ALLOC(*ctlp) < 0) {
|
||||
VIR_FORCE_CLOSE(fd);
|
||||
return errno;
|
||||
|
||||
if ((flags = fcntl(fd, F_GETFD)) < 0 ||
|
||||
fcntl(fd, F_SETFD, flags | FD_CLOEXEC) < 0) {
|
||||
int err = errno;
|
||||
VIR_FORCE_CLOSE(fd);
|
||||
return err;
|
||||
}
|
||||
|
||||
if (VIR_ALLOC(*ctlp) < 0) {
|
||||
VIR_FORCE_CLOSE(fd);
|
||||
return ENOMEM;
|
||||
}
|
||||
|
||||
(*ctlp)->fd = fd;
|
||||
@ -599,7 +590,7 @@ brSetInterfaceUp(brControl *ctl,
|
||||
int up)
|
||||
{
|
||||
struct ifreq ifr;
|
||||
int flags;
|
||||
int ifflags;
|
||||
|
||||
if (!ctl || !ifname)
|
||||
return EINVAL;
|
||||
@ -612,10 +603,10 @@ brSetInterfaceUp(brControl *ctl,
|
||||
if (ioctl(ctl->fd, SIOCGIFFLAGS, &ifr) < 0)
|
||||
return errno;
|
||||
|
||||
flags = up ? (ifr.ifr_flags | IFF_UP) : (ifr.ifr_flags & ~IFF_UP);
|
||||
ifflags = up ? (ifr.ifr_flags | IFF_UP) : (ifr.ifr_flags & ~IFF_UP);
|
||||
|
||||
if (ifr.ifr_flags != flags) {
|
||||
ifr.ifr_flags = flags;
|
||||
if (ifr.ifr_flags != ifflags) {
|
||||
ifr.ifr_flags = ifflags;
|
||||
|
||||
if (ioctl(ctl->fd, SIOCSIFFLAGS, &ifr) < 0)
|
||||
return errno;
|
||||
|
Loading…
x
Reference in New Issue
Block a user