summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-02-21 04:02:12 +0100
committerLennart Poettering <lennart@poettering.net>2014-02-21 04:02:12 +0100
commit08af0da26935e827b58809ff1946e2f7d496e666 (patch)
tree1e75e2526554987e5dd87afce5cc70d3dc652e1a
parent90e633a7901060063e62bf53948c4c239a9f55d1 (diff)
nspawn: when adding a veth interface to a bridge, use the "vb-" rather than "ve-" interface name prefix
This way we can recognize the interfaces later on to apply different host-side configuration to them.
-rw-r--r--man/systemd-nspawn.xml18
-rw-r--r--src/nspawn/nspawn.c11
2 files changed, 20 insertions, 9 deletions
diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
index 6518eb819e..8f09c1b41b 100644
--- a/man/systemd-nspawn.xml
+++ b/man/systemd-nspawn.xml
@@ -321,13 +321,17 @@
<varlistentry>
<term><option>--network-bridge=</option></term>
- <listitem><para>Adds the host side of the
- Ethernet link created with
- <option>--network-veth</option>
- to the specified bridge. Note that
- <option>--network-bridge</option>
+ <listitem><para>Adds the host side of
+ the Ethernet link created with
+ <option>--network-veth</option> to the
+ specified bridge. Note that
+ <option>--network-bridge=</option>
implies
- <option>--network-veth</option>.</para></listitem>
+ <option>--network-veth</option>. If
+ this option is used the host side of
+ the Ethernet link will use the
+ <literal>vb-</literal> prefix instead
+ of <literal>ve-</literal>.</para></listitem>
</varlistentry>
<varlistentry>
@@ -466,7 +470,7 @@
destination in the container. The
<option>--bind-ro=</option> option
creates read-only bind
- mount.</para></listitem>
+ mounts.</para></listitem>
</varlistentry>
<varlistentry>
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index 0a00903ef4..2441758c2a 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -1302,7 +1302,7 @@ static int reset_audit_loginuid(void) {
return 0;
}
-static int setup_veth(pid_t pid, char iface_name[]) {
+static int setup_veth(pid_t pid, char iface_name[IFNAMSIZ]) {
_cleanup_rtnl_message_unref_ sd_rtnl_message *m = NULL;
_cleanup_rtnl_unref_ sd_rtnl *rtnl = NULL;
int r;
@@ -1313,6 +1313,13 @@ static int setup_veth(pid_t pid, char iface_name[]) {
if (!arg_network_veth)
return 0;
+ /* Use two different interface name prefixes depending whether
+ * we are in bridge mode or not. */
+ if (arg_network_bridge)
+ memcpy(iface_name, "vb-", 3);
+ else
+ memcpy(iface_name, "ve-", 3);
+
strncpy(iface_name+3, arg_machine, IFNAMSIZ - 3);
r = sd_rtnl_open(&rtnl, 0);
@@ -1587,7 +1594,7 @@ int main(int argc, char *argv[]) {
int n_fd_passed;
pid_t pid = 0;
sigset_t mask;
- char veth_name[IFNAMSIZ] = "ve-";
+ char veth_name[IFNAMSIZ];
log_parse_environment();
log_open();