aboutgitcodebugslistschat
path: root/passt.h
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2020-07-21 10:48:24 +0200
committerStefano Brivio <sbrivio@redhat.com>2021-02-16 07:58:05 +0100
commitd02e059ddcc00fba763c995818a5884ed8e97984 (patch)
treeccfe9c33632e6741536ca2d8180f8eec131c56dd /passt.h
parent6709ade2bde563f31e8d28a27c473fe626216e5d (diff)
downloadpasst-d02e059ddcc00fba763c995818a5884ed8e97984.tar
passt-d02e059ddcc00fba763c995818a5884ed8e97984.tar.gz
passt-d02e059ddcc00fba763c995818a5884ed8e97984.tar.bz2
passt-d02e059ddcc00fba763c995818a5884ed8e97984.tar.lz
passt-d02e059ddcc00fba763c995818a5884ed8e97984.tar.xz
passt-d02e059ddcc00fba763c995818a5884ed8e97984.tar.zst
passt-d02e059ddcc00fba763c995818a5884ed8e97984.zip
passt: Add IPv6 and NDP support, further fixes for IPv4 CT
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'passt.h')
-rw-r--r--passt.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/passt.h b/passt.h
index 402c95d..904b42f 100644
--- a/passt.h
+++ b/passt.h
@@ -24,24 +24,60 @@ struct ct4 {
};
/**
+ * struct ct6 - IPv6 connection tracking entry
+ * @p: IANA protocol number
+ * @sa: Source address (as seen from tap interface)
+ * @da: Destination address
+ * @sp: Source port, network order
+ * @dp: Destination port, network order
+ * @hd: Destination MAC address
+ * @hs: Source MAC address
+ * @fd: File descriptor for corresponding AF_INET6 socket
+ */
+struct ct6 {
+ uint8_t p;
+ struct in6_addr sa;
+ struct in6_addr da;
+ uint16_t sp;
+ uint16_t dp;
+ unsigned char hd[ETH_ALEN];
+ unsigned char hs[ETH_ALEN];
+ int fd;
+};
+
+/**
* struct ctx - Execution context
* @epollfd: file descriptor for epoll instance
* @fd_unix: AF_UNIX socket for tap file descriptor
* @map4: Connection tracking table
+ * @v4: Enable IPv4 transport
* @addr4: IPv4 address for external, routable interface
* @mask4: IPv4 netmask, network order
* @gw4: Default IPv4 gateway, network order
* @dns4: IPv4 DNS address, network order
+ * @v6: Enable IPv6 transport
+ * @addr6: IPv6 address for external, routable interface
+ * @gw6: Default IPv6 gateway
+ * @dns4: IPv6 DNS address
* @ifn: Name of routable interface
*/
struct ctx {
int epollfd;
int fd_unix;
struct ct4 map4[CT_SIZE];
+ struct ct6 map6[CT_SIZE];
unsigned char mac[ETH_ALEN];
+
+ int v4;
unsigned long addr4;
unsigned long mask4;
unsigned long gw4;
unsigned long dns4;
+
+ int v6;
+ struct in6_addr addr6;
+ struct in6_addr gw6;
+ struct in6_addr dns6;
+
char ifn[IF_NAMESIZE];
};