mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-26 18:41:17 +00:00
Add virFileWriteStr()
Re-factor the code from networkEnableIpForwarding() into a utility function in preparation for code which writes to sysfs files.
This commit is contained in:
parent
f6a5e8f785
commit
0bb6f816e3
@ -1,3 +1,10 @@
|
|||||||
|
Fri Feb 13 19:04:57 IST 2009 Mark McLoughlin <markmc@redhat.com>
|
||||||
|
|
||||||
|
* src/libvirt_private.syms, src/util.[ch]: add
|
||||||
|
virFileWriteStr()
|
||||||
|
|
||||||
|
* src/network_driver.c: use it here
|
||||||
|
|
||||||
Fri Feb 13 19:04:45 IST 2009 Mark McLoughlin <markmc@redhat.com>
|
Fri Feb 13 19:04:45 IST 2009 Mark McLoughlin <markmc@redhat.com>
|
||||||
|
|
||||||
* src/xml.c: fix some error strings
|
* src/xml.c: fix some error strings
|
||||||
|
@ -279,6 +279,7 @@ virCondBroadcast;
|
|||||||
|
|
||||||
# util.h
|
# util.h
|
||||||
virFileReadAll;
|
virFileReadAll;
|
||||||
|
virFileWriteStr;
|
||||||
virStrToLong_i;
|
virStrToLong_i;
|
||||||
virStrToLong_ll;
|
virStrToLong_ll;
|
||||||
virStrToLong_ull;
|
virStrToLong_ull;
|
||||||
|
@ -794,33 +794,11 @@ networkRemoveIptablesRules(struct network_driver *driver,
|
|||||||
iptablesSaveRules(driver->iptables);
|
iptablesSaveRules(driver->iptables);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Enable IP Forwarding.
|
/* Enable IP Forwarding. Return 0 for success, nonzero for failure. */
|
||||||
Return 0 for success, nonzero for failure.
|
|
||||||
Be careful to preserve any errno value upon failure. */
|
|
||||||
static int
|
static int
|
||||||
networkEnableIpForwarding(void)
|
networkEnableIpForwarding(void)
|
||||||
{
|
{
|
||||||
#define PROC_IP_FORWARD "/proc/sys/net/ipv4/ip_forward"
|
return virFileWriteStr("/proc/sys/net/ipv4/ip_forward", "1\n");
|
||||||
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
if ((fd = open(PROC_IP_FORWARD, O_WRONLY|O_TRUNC)) == -1)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (safewrite(fd, "1\n", 2) < 0) {
|
|
||||||
int saved_errno = errno;
|
|
||||||
close (fd);
|
|
||||||
errno = saved_errno;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Use errno from failed close only if there was no write error. */
|
|
||||||
if (close (fd) != 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
#undef PROC_IP_FORWARD
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int networkStartNetworkDaemon(virConnectPtr conn,
|
static int networkStartNetworkDaemon(virConnectPtr conn,
|
||||||
|
24
src/util.c
24
src/util.c
@ -774,6 +774,30 @@ int virFileReadAll(const char *path, int maxlen, char **buf)
|
|||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Truncate @path and write @str to it.
|
||||||
|
Return 0 for success, nonzero for failure.
|
||||||
|
Be careful to preserve any errno value upon failure. */
|
||||||
|
int virFileWriteStr(const char *path, const char *str)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
if ((fd = open(path, O_WRONLY|O_TRUNC)) == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (safewrite(fd, str, strlen(str)) < 0) {
|
||||||
|
int saved_errno = errno;
|
||||||
|
close (fd);
|
||||||
|
errno = saved_errno;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Use errno from failed close only if there was no write error. */
|
||||||
|
if (close (fd) != 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int virFileMatchesNameSuffix(const char *file,
|
int virFileMatchesNameSuffix(const char *file,
|
||||||
const char *name,
|
const char *name,
|
||||||
const char *suffix)
|
const char *suffix)
|
||||||
|
@ -56,6 +56,8 @@ int virFileReadLimFD(int fd, int maxlen, char **buf);
|
|||||||
|
|
||||||
int virFileReadAll(const char *path, int maxlen, char **buf);
|
int virFileReadAll(const char *path, int maxlen, char **buf);
|
||||||
|
|
||||||
|
int virFileWriteStr(const char *path, const char *str);
|
||||||
|
|
||||||
int virFileMatchesNameSuffix(const char *file,
|
int virFileMatchesNameSuffix(const char *file,
|
||||||
const char *name,
|
const char *name,
|
||||||
const char *suffix);
|
const char *suffix);
|
||||||
|
Loading…
Reference in New Issue
Block a user