mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-21 19:02:25 +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>
|
||||
|
||||
* src/xml.c: fix some error strings
|
||||
|
@ -279,6 +279,7 @@ virCondBroadcast;
|
||||
|
||||
# util.h
|
||||
virFileReadAll;
|
||||
virFileWriteStr;
|
||||
virStrToLong_i;
|
||||
virStrToLong_ll;
|
||||
virStrToLong_ull;
|
||||
|
@ -794,33 +794,11 @@ networkRemoveIptablesRules(struct network_driver *driver,
|
||||
iptablesSaveRules(driver->iptables);
|
||||
}
|
||||
|
||||
/* Enable IP Forwarding.
|
||||
Return 0 for success, nonzero for failure.
|
||||
Be careful to preserve any errno value upon failure. */
|
||||
/* Enable IP Forwarding. Return 0 for success, nonzero for failure. */
|
||||
static int
|
||||
networkEnableIpForwarding(void)
|
||||
{
|
||||
#define PROC_IP_FORWARD "/proc/sys/net/ipv4/ip_forward"
|
||||
|
||||
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
|
||||
return virFileWriteStr("/proc/sys/net/ipv4/ip_forward", "1\n");
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
/* 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,
|
||||
const char *name,
|
||||
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 virFileWriteStr(const char *path, const char *str);
|
||||
|
||||
int virFileMatchesNameSuffix(const char *file,
|
||||
const char *name,
|
||||
const char *suffix);
|
||||
|
Loading…
x
Reference in New Issue
Block a user