aboutgitcodebugslistschat
path: root/passt.h
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2024-08-06 19:24:40 +0200
committerStefano Brivio <sbrivio@redhat.com>2024-08-07 09:15:25 +0200
commitfbb0c9523e416a5c1ecf42287d867fc799fbf0f9 (patch)
tree431dd7e83ef7bf0ea71fcbf39e6154924b7e0825 /passt.h
parentee36266a55478672ad2c5f4efbd6ca0bef3d37cd (diff)
downloadpasst-fbb0c9523e416a5c1ecf42287d867fc799fbf0f9.tar
passt-fbb0c9523e416a5c1ecf42287d867fc799fbf0f9.tar.gz
passt-fbb0c9523e416a5c1ecf42287d867fc799fbf0f9.tar.bz2
passt-fbb0c9523e416a5c1ecf42287d867fc799fbf0f9.tar.lz
passt-fbb0c9523e416a5c1ecf42287d867fc799fbf0f9.tar.xz
passt-fbb0c9523e416a5c1ecf42287d867fc799fbf0f9.tar.zst
passt-fbb0c9523e416a5c1ecf42287d867fc799fbf0f9.zip
conf, pasta: Make -g and -a skip route/addresses copy for matching IP version only
Paul reports that setting IPv4 address and gateway manually, using --address and --gateway, causes pasta to fail inserting IPv6 routes in a setup where multiple, inter-dependent IPv6 routes are present on the host. That's because, currently, any -g option implies --no-copy-routes altogether, and any -a implies --no-copy-addrs. Limit this implication to the matching IP version, instead, by having two copies of no_copy_routes and no_copy_addrs in the context structure, separately for IPv4 and IPv6. While at it, change them to 'bool': we had them as 'int' because getopt_long() used to set them directly, but it hasn't been the case for a while already. Reported-by: Paul Holzinger <pholzing@redhat.com> Signed-off-by: Stefano Brivio <sbrivio@redhat.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'passt.h')
-rw-r--r--passt.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/passt.h b/passt.h
index d0f31a2..12ae1b9 100644
--- a/passt.h
+++ b/passt.h
@@ -100,6 +100,8 @@ enum passt_modes {
* @dns_host: Use this DNS on the host for forwarding
* @addr_out: Optional source address for outbound traffic
* @ifname_out: Optional interface name to bind outbound sockets to
+ * @no_copy_routes: Don't copy all routes when configuring target namespace
+ * @no_copy_addrs: Don't copy all addresses when configuring namespace
*/
struct ip4_ctx {
struct in_addr addr;
@@ -112,6 +114,9 @@ struct ip4_ctx {
struct in_addr addr_out;
char ifname_out[IFNAMSIZ];
+
+ bool no_copy_routes;
+ bool no_copy_addrs;
};
/**
@@ -126,6 +131,8 @@ struct ip4_ctx {
* @dns_host: Use this DNS on the host for forwarding
* @addr_out: Optional source address for outbound traffic
* @ifname_out: Optional interface name to bind outbound sockets to
+ * @no_copy_routes: Don't copy all routes when configuring target namespace
+ * @no_copy_addrs: Don't copy all addresses when configuring namespace
*/
struct ip6_ctx {
struct in6_addr addr;
@@ -139,6 +146,9 @@ struct ip6_ctx {
struct in6_addr addr_out;
char ifname_out[IFNAMSIZ];
+
+ bool no_copy_routes;
+ bool no_copy_addrs;
};
#include <netinet/if_ether.h>
@@ -173,8 +183,6 @@ struct ip6_ctx {
* @pasta_ifn: Name of namespace interface for pasta
* @pasta_ifi: Index of namespace interface for pasta
* @pasta_conf_ns: Configure namespace after creating it
- * @no_copy_routes: Don't copy all routes when configuring target namespace
- * @no_copy_addrs: Don't copy all addresses when configuring namespace
* @no_tcp: Disable TCP operation
* @tcp: Context for TCP protocol handler
* @no_tcp: Disable UDP operation
@@ -233,8 +241,6 @@ struct ctx {
char pasta_ifn[IF_NAMESIZE];
unsigned int pasta_ifi;
int pasta_conf_ns;
- int no_copy_routes;
- int no_copy_addrs;
int no_tcp;
struct tcp_ctx tcp;