[Libguestfs] [PATCH 1/2] Change network configuration to use macros.
Richard W.M. Jones
rjones at redhat.com
Tue May 4 15:16:27 UTC 2010
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://et.redhat.com/~rjones/libguestfs/
See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html
-------------- next part --------------
>From 8a9f2ca65521d093ac14307aca4370d9497ac840 Mon Sep 17 00:00:00 2001
From: Richard Jones <rjones at redhat.com>
Date: Tue, 4 May 2010 15:06:09 +0100
Subject: [PATCH 1/2] Change network configuration to use macros.
Change the network configuration so everything is set using
some macros at the top of src/guestfs.c.
Also, rename the macros used in the daemon so they are not the
same. It was a very long time since these sets of macros had to
match the ones defined in src/guestfs.c, despite what the comment
said.
Note that this commit should not change the semantics of the
program at all.
---
daemon/guestfsd.c | 13 +++++++++----
src/guestfs.c | 30 +++++++++++++++++++++++++-----
2 files changed, 34 insertions(+), 9 deletions(-)
diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c
index 06ad702..03a975a 100644
--- a/daemon/guestfsd.c
+++ b/daemon/guestfsd.c
@@ -55,9 +55,14 @@
static char *read_cmdline (void);
-/* Also in guestfs.c */
-#define GUESTFWD_ADDR "10.0.2.4"
-#define GUESTFWD_PORT "6666"
+/* This is the default address we connect to for very old libraries
+ * which didn't specify the address and port number explicitly on the
+ * kernel command line. It's now recommended to always specify the
+ * address and port number on the command line, so this will not be
+ * used any more.
+ */
+#define OLD_GUESTFWD_ADDR "10.0.2.4"
+#define OLD_GUESTFWD_PORT "6666"
/* This is only a hint. If not defined, ignore it. */
#ifndef AI_ADDRCONFIG
@@ -285,7 +290,7 @@ main (int argc, char *argv[])
/* Default vmchannel. */
if (vmchannel == NULL) {
- vmchannel = strdup ("tcp:" GUESTFWD_ADDR ":" GUESTFWD_PORT);
+ vmchannel = strdup ("tcp:" OLD_GUESTFWD_ADDR ":" OLD_GUESTFWD_PORT);
if (!vmchannel) {
perror ("strdup");
exit (EXIT_FAILURE);
diff --git a/src/guestfs.c b/src/guestfs.c
index fe08cb5..d68f12b 100644
--- a/src/guestfs.c
+++ b/src/guestfs.c
@@ -110,7 +110,26 @@ static int qemu_supports (guestfs_h *g, const char *option);
#define xdr_uint32_t xdr_u_int32_t
#endif
-/* Also in guestfsd.c */
+/* Network configuration of the appliance. Note these addresses are
+ * only meaningful within the context of the running appliance. QEMU
+ * translates network connections to these magic addresses into
+ * userspace calls on the host (eg. connect(2)). qemu-doc has a nice
+ * diagram which is also useful to refer to.
+ *
+ * NETWORK: The network.
+ *
+ * ROUTER: The address of the "host", ie. this library.
+ *
+ * [Note: If you change NETWORK and ROUTER then you also have to
+ * change the network configuration in appliance/init].
+ *
+ * GUESTFWD_ADDR, GUESTFWD_PORT: The guestfwd feature of qemu
+ * magically connects this pseudo-address to the guestfwd channel. In
+ * typical Linux configurations of libguestfs, guestfwd is not
+ * actually used any more.
+ */
+#define NETWORK "10.0.2.0/8"
+#define ROUTER "10.0.2.2"
#define GUESTFWD_ADDR "10.0.2.4"
#define GUESTFWD_PORT "6666"
@@ -1189,10 +1208,11 @@ guestfs__launch (guestfs_h *g)
*/
if (null_vmchannel_sock) {
add_cmdline (g, "-net");
- add_cmdline (g, "user,vlan=0,net=10.0.2.0/8");
+ add_cmdline (g, "user,vlan=0,net=" NETWORK);
snprintf (buf, sizeof buf,
- "guestfs_vmchannel=tcp:10.0.2.2:%d", null_vmchannel_sock);
+ "guestfs_vmchannel=tcp:" ROUTER ":%d",
+ null_vmchannel_sock);
vmchannel = strdup (buf);
}
@@ -1215,7 +1235,7 @@ guestfs__launch (guestfs_h *g)
add_cmdline (g, buf);
snprintf (buf, sizeof buf,
- "user,vlan=0,net=10.0.2.0/8,"
+ "user,vlan=0,net=" NETWORK ","
"guestfwd=tcp:" GUESTFWD_ADDR ":" GUESTFWD_PORT
"-chardev:guestfsvmc");
@@ -1235,7 +1255,7 @@ guestfs__launch (guestfs_h *g)
add_cmdline (g, "-net");
add_cmdline (g, buf);
add_cmdline (g, "-net");
- add_cmdline (g, "user,vlan=0,net=10.0.2.0/8");
+ add_cmdline (g, "user,vlan=0,net=" NETWORK);
vmchannel = "guestfs_vmchannel=tcp:" GUESTFWD_ADDR ":" GUESTFWD_PORT;
}
--
1.6.6.1
More information about the Libguestfs
mailing list