aboutgitcodebugslistschat
path: root/pasta.c
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2023-05-14 15:04:38 +0200
committerStefano Brivio <sbrivio@redhat.com>2023-05-23 16:13:28 +0200
commitda54641f140e2fa99f69acc436d49d792b303679 (patch)
treeef5006daf9b903cac8332d387ad12db57d6ea682 /pasta.c
parent468f19a85268ac122c2a05cf7a8552eebbbb1bbe (diff)
downloadpasst-da54641f140e2fa99f69acc436d49d792b303679.tar
passt-da54641f140e2fa99f69acc436d49d792b303679.tar.gz
passt-da54641f140e2fa99f69acc436d49d792b303679.tar.bz2
passt-da54641f140e2fa99f69acc436d49d792b303679.tar.lz
passt-da54641f140e2fa99f69acc436d49d792b303679.tar.xz
passt-da54641f140e2fa99f69acc436d49d792b303679.tar.zst
passt-da54641f140e2fa99f69acc436d49d792b303679.zip
conf, pasta: With --config-net, copy all routes by default
Use the newly-introduced NL_DUP mode for nl_route() to copy all the routes associated to the template interface in the outer namespace, unless --no-copy-routes (also implied by -g) is given. This option is introduced as deprecated right away: it's not expected to be of any use, but it's helpful to keep it around for a while to debug any suspected issue with this change. Otherwise, we can't use default gateways which are not, address-wise, on the same subnet as the container, as reported by Callum. Reported-by: Callum Parsey <callum@neoninteger.au> Link: https://github.com/containers/podman/issues/18539 Signed-off-by: Stefano Brivio <sbrivio@redhat.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'pasta.c')
-rw-r--r--pasta.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/pasta.c b/pasta.c
index c9bf1d3..c2fb1f4 100644
--- a/pasta.c
+++ b/pasta.c
@@ -273,12 +273,14 @@ void pasta_ns_conf(struct ctx *c)
nl_link(1, 1 /* lo */, MAC_ZERO, 1, 0);
if (c->pasta_conf_ns) {
+ enum nl_op op_routes = c->no_copy_routes ? NL_SET : NL_DUP;
+
nl_link(1, c->pasta_ifi, c->mac_guest, 1, c->mtu);
if (c->ifi4) {
nl_addr(1, c->pasta_ifi, AF_INET, &c->ip4.addr,
&c->ip4.prefix_len, NULL);
- nl_route(NL_SET, c->ifi4, c->pasta_ifi, AF_INET,
+ nl_route(op_routes, c->ifi4, c->pasta_ifi, AF_INET,
&c->ip4.gw);
}
@@ -286,7 +288,7 @@ void pasta_ns_conf(struct ctx *c)
int prefix_len = 64;
nl_addr(1, c->pasta_ifi, AF_INET6, &c->ip6.addr,
&prefix_len, NULL);
- nl_route(NL_SET, c->ifi6, c->pasta_ifi, AF_INET6,
+ nl_route(op_routes, c->ifi6, c->pasta_ifi, AF_INET6,
&c->ip6.gw);
}
} else {