diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2020-07-21 10:48:24 +0200 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2021-02-16 07:58:05 +0100 |
commit | d02e059ddcc00fba763c995818a5884ed8e97984 (patch) | |
tree | ccfe9c33632e6741536ca2d8180f8eec131c56dd /passt.h | |
parent | 6709ade2bde563f31e8d28a27c473fe626216e5d (diff) | |
download | passt-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.h | 36 |
1 files changed, 36 insertions, 0 deletions
@@ -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]; }; |