diff mbox series

[meta-networking,PATCHv4] recipes-connectivity: Add tayga recipe

Message ID 20230929133310.217569-1-pawel.langowski@3mdeb.com
State Under Review
Headers show
Series [meta-networking,PATCHv4] recipes-connectivity: Add tayga recipe | expand

Commit Message

Pawel Langowski Sept. 29, 2023, 1:33 p.m. UTC
Recipe for TAYGA - an out-of-kernel stateless NAT64 implementation for Linux

Signed-off-by: Pawel Langowski <pawel.langowski@3mdeb.com>
---
 .../tayga/files/0001-include-sys-uio.patch    |  10 ++
 .../tayga/files/tayga.conf                    | 103 ++++++++++++++++++
 .../tayga/files/tayga.service                 |  12 ++
 .../recipes-connectivity/tayga/tayga_0.9.2.bb |  21 ++++
 4 files changed, 146 insertions(+)
 create mode 100644 meta-networking/recipes-connectivity/tayga/files/0001-include-sys-uio.patch
 create mode 100644 meta-networking/recipes-connectivity/tayga/files/tayga.conf
 create mode 100644 meta-networking/recipes-connectivity/tayga/files/tayga.service
 create mode 100644 meta-networking/recipes-connectivity/tayga/tayga_0.9.2.bb

Comments

Khem Raj Sept. 29, 2023, 4:49 p.m. UTC | #1
On Fri, Sep 29, 2023 at 6:33 AM Pawel Langowski
<pawel.langowski@3mdeb.com> wrote:
>
> Recipe for TAYGA - an out-of-kernel stateless NAT64 implementation for Linux
>
> Signed-off-by: Pawel Langowski <pawel.langowski@3mdeb.com>
> ---
>  .../tayga/files/0001-include-sys-uio.patch    |  10 ++
>  .../tayga/files/tayga.conf                    | 103 ++++++++++++++++++
>  .../tayga/files/tayga.service                 |  12 ++
>  .../recipes-connectivity/tayga/tayga_0.9.2.bb |  21 ++++
>  4 files changed, 146 insertions(+)
>  create mode 100644 meta-networking/recipes-connectivity/tayga/files/0001-include-sys-uio.patch
>  create mode 100644 meta-networking/recipes-connectivity/tayga/files/tayga.conf
>  create mode 100644 meta-networking/recipes-connectivity/tayga/files/tayga.service
>  create mode 100644 meta-networking/recipes-connectivity/tayga/tayga_0.9.2.bb
>
> diff --git a/meta-networking/recipes-connectivity/tayga/files/0001-include-sys-uio.patch b/meta-networking/recipes-connectivity/tayga/files/0001-include-sys-uio.patch
> new file mode 100644
> index 000000000000..ab8c6b5ca0d7

Please document this patch especially with some description, SOB and
Upstream-Status
see - https://docs.yoctoproject.org/contributor-guide/recipe-style-guide.html?highlight=upstream+status#patch-upstream-status

> --- /dev/null
> +++ b/meta-networking/recipes-connectivity/tayga/files/0001-include-sys-uio.patch
> @@ -0,0 +1,10 @@
> +--- tayga.h    2023-09-29 14:38:05.005837695 +0200
> ++++ tayga-2.h  2023-09-29 14:37:45.560837257 +0200
> +@@ -20,6 +20,7 @@
> + #include <sys/stat.h>
> + #include <sys/ioctl.h>
> + #include <sys/socket.h>
> ++#include <sys/uio.h>
> + #include <netinet/in.h>
> + #include <arpa/inet.h>
> + #include <unistd.h>
> diff --git a/meta-networking/recipes-connectivity/tayga/files/tayga.conf b/meta-networking/recipes-connectivity/tayga/files/tayga.conf
> new file mode 100644
> index 000000000000..c1b6163a4591
> --- /dev/null
> +++ b/meta-networking/recipes-connectivity/tayga/files/tayga.conf
> @@ -0,0 +1,103 @@
> +#
> +# Sample configuration file for TAYGA 0.9.2
> +#
> +# Modify this to use your own addresses!!
> +#
> +
> +#
> +# TUN device that TAYGA will use to exchange IPv4 and IPv6 packets with the
> +# kernel.  You may use any name you like, but `nat64' is recommended.
> +#
> +# This device may be created before starting the tayga daemon by running
> +# `tayga --mktun`.  This allows routing and firewall rules to be set up prior
> +# to commencement of packet translation.
> +#
> +# Mandatory.
> +#
> +tun-device nat64
> +
> +#
> +# TAYGA's IPv4 address.  This is NOT your router's IPv4 address!  TAYGA
> +# requires its own address because it acts as an IPv4 and IPv6 router, and
> +# needs to be able to send ICMP messages.  TAYGA will also respond to ICMP
> +# echo requests (ping) at this address.
> +#
> +# This address can safely be located inside the dynamic-pool prefix.
> +#
> +# Mandatory.
> +#
> +ipv4-addr 192.168.254.1
> +
> +#
> +# TAYGA's IPv6 address.  This is NOT your router's IPv6 address!  TAYGA
> +# requires its own address because it acts as an IPv4 and IPv6 router, and
> +# needs to be able to send ICMP messages.  TAYGA will also respond to ICMP
> +# echo requests (ping6) at this address.
> +#
> +# You can leave ipv6-addr unspecified and TAYGA will construct its IPv6
> +# address using ipv4-addr and the NAT64 prefix.
> +#
> +# Optional if the NAT64 prefix is specified, otherwise mandatory.  It is also
> +# mandatory if the NAT64 prefix is 64:ff9b::/96 and ipv4-addr is a private
> +# (RFC1918) address.
> +#
> +#ipv6-addr 2001:db8:1::2
> +ipv6-addr fdaa:bb:1::1
> +
> +#
> +# The NAT64 prefix.  The IPv4 address space is mapped into the IPv6 address
> +# space by prepending this prefix to the IPv4 address.  Using a /96 prefix is
> +# recommended in most situations, but all lengths specified in RFC 6052 are
> +# supported.
> +#
> +# This must be a prefix selected from your organization's IPv6 address space
> +# or the Well-Known Prefix 64:ff9b::/96.  Note that using the Well-Known
> +# Prefix will prohibit IPv6 hosts from contacting IPv4 hosts that have private
> +# (RFC1918) addresses, per RFC 6052.
> +#
> +# The NAT64 prefix need not be specified if all required address mappings are
> +# listed in `map' directives.  (See below.)
> +#
> +# Optional.
> +#
> +##prefix 2001:db8:1:ffff::/96
> +prefix 64:ff9b::/96
> +
> +#
> +# Dynamic pool prefix.  IPv6 hosts which send traffic through TAYGA (and do
> +# not correspond to a static map or an IPv4-translatable address in the NAT64
> +# prefix) will be assigned an IPv4 address from the dynamic pool.  Dynamic
> +# maps are valid for 124 minutes after the last matching packet is seen.
> +#
> +# If no unassigned addresses remain in the dynamic pool (or no dynamic pool is
> +# configured), packets from unknown IPv6 hosts will be rejected with an ICMP
> +# unreachable error.
> +#
> +# Optional.
> +#
> +dynamic-pool 192.168.254.0/24
> +
> +#
> +# Persistent data storage directory.  The dynamic.map file, which saves the
> +# dynamic maps that are created from dynamic-pool, is stored in this
> +# directory.  Omit if you do not need these maps to be persistent between
> +# instances of TAYGA.
> +#
> +# Optional.
> +#
> +data-dir /var/spool/tayga
> +
> +#
> +# Establishes a single-host map.  If an IPv6 host should be consistently
> +# reachable at a specific IPv4 address, the mapping can be specified in a
> +# `map' directive.  (IPv6 hosts numbered with an IPv4-translatable address do
> +# not need map directives.)
> +#
> +# IPv4 addresses specified in the `map' directive can safely be located inside
> +# the dynamic-pool prefix.
> +#
> +# Optional.
> +#
> +#map 192.168.5.42 2001:db8:1:4444::1
> +#map 192.168.5.43 2001:db8:1:4444::2
> +#map 192.168.255.2 2001:db8:1:569::143
> diff --git a/meta-networking/recipes-connectivity/tayga/files/tayga.service b/meta-networking/recipes-connectivity/tayga/files/tayga.service
> new file mode 100644
> index 000000000000..0bffeb92a501
> --- /dev/null
> +++ b/meta-networking/recipes-connectivity/tayga/files/tayga.service
> @@ -0,0 +1,12 @@
> +[Unit]
> +SourcePath=/usr/sbin/tayga
> +Description=LSB: userspace NAT64
> +
> +[Service]
> +Type=forking
> +ExecStart=/usr/sbin/tayga -d --config /etc/tayga.conf
> +RemainAfterExit=yes
> +TimeoutStopSec=infinity
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/meta-networking/recipes-connectivity/tayga/tayga_0.9.2.bb b/meta-networking/recipes-connectivity/tayga/tayga_0.9.2.bb
> new file mode 100644
> index 000000000000..36d35e6dee89
> --- /dev/null
> +++ b/meta-networking/recipes-connectivity/tayga/tayga_0.9.2.bb
> @@ -0,0 +1,21 @@
> +LICENSE = "GPL-2.0-only"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
> +
> +SRC_URI = " \
> +        http://www.litech.org/tayga/tayga-${PV}.tar.bz2 \
> +        file://tayga.conf \
> +        file://tayga.service \
> +        file://0001-include-sys-uio.patch;striplevel=0 \
> +        "
> +SRC_URI[sha256sum] = "2b1f7927a9d2dcff9095aff3c271924b052ccfd2faca9588b277431a44f0009c"
> +
> +SYSTEMD_PACKAGES = "${PN}"
> +SYSTEMD_SERVICE:${PN} = "tayga.service"
> +
> +do_install:append() {
> +  install -m 0644 ${WORKDIR}/tayga.conf ${D}${sysconfdir}/tayga.conf
> +  install -d ${D}${systemd_unitdir}/system/
> +  install -m 0644 ${WORKDIR}/tayga.service ${D}${systemd_unitdir}/system/
> +}
> +
> +inherit autotools systemd
> --
> 2.41.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#105242): https://lists.openembedded.org/g/openembedded-devel/message/105242
> Mute This Topic: https://lists.openembedded.org/mt/101657397/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

diff --git a/meta-networking/recipes-connectivity/tayga/files/0001-include-sys-uio.patch b/meta-networking/recipes-connectivity/tayga/files/0001-include-sys-uio.patch
new file mode 100644
index 000000000000..ab8c6b5ca0d7
--- /dev/null
+++ b/meta-networking/recipes-connectivity/tayga/files/0001-include-sys-uio.patch
@@ -0,0 +1,10 @@ 
+--- tayga.h	2023-09-29 14:38:05.005837695 +0200
++++ tayga-2.h	2023-09-29 14:37:45.560837257 +0200
+@@ -20,6 +20,7 @@
+ #include <sys/stat.h>
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
++#include <sys/uio.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <unistd.h>
diff --git a/meta-networking/recipes-connectivity/tayga/files/tayga.conf b/meta-networking/recipes-connectivity/tayga/files/tayga.conf
new file mode 100644
index 000000000000..c1b6163a4591
--- /dev/null
+++ b/meta-networking/recipes-connectivity/tayga/files/tayga.conf
@@ -0,0 +1,103 @@ 
+#
+# Sample configuration file for TAYGA 0.9.2
+#
+# Modify this to use your own addresses!!
+#
+
+#
+# TUN device that TAYGA will use to exchange IPv4 and IPv6 packets with the
+# kernel.  You may use any name you like, but `nat64' is recommended.
+#
+# This device may be created before starting the tayga daemon by running
+# `tayga --mktun`.  This allows routing and firewall rules to be set up prior
+# to commencement of packet translation.
+#
+# Mandatory.
+#
+tun-device nat64
+
+#
+# TAYGA's IPv4 address.  This is NOT your router's IPv4 address!  TAYGA
+# requires its own address because it acts as an IPv4 and IPv6 router, and
+# needs to be able to send ICMP messages.  TAYGA will also respond to ICMP
+# echo requests (ping) at this address.
+#
+# This address can safely be located inside the dynamic-pool prefix.
+#
+# Mandatory.
+#
+ipv4-addr 192.168.254.1
+
+#
+# TAYGA's IPv6 address.  This is NOT your router's IPv6 address!  TAYGA
+# requires its own address because it acts as an IPv4 and IPv6 router, and
+# needs to be able to send ICMP messages.  TAYGA will also respond to ICMP
+# echo requests (ping6) at this address.
+#
+# You can leave ipv6-addr unspecified and TAYGA will construct its IPv6
+# address using ipv4-addr and the NAT64 prefix.
+#
+# Optional if the NAT64 prefix is specified, otherwise mandatory.  It is also
+# mandatory if the NAT64 prefix is 64:ff9b::/96 and ipv4-addr is a private
+# (RFC1918) address.
+#
+#ipv6-addr 2001:db8:1::2
+ipv6-addr fdaa:bb:1::1
+
+#
+# The NAT64 prefix.  The IPv4 address space is mapped into the IPv6 address
+# space by prepending this prefix to the IPv4 address.  Using a /96 prefix is
+# recommended in most situations, but all lengths specified in RFC 6052 are
+# supported.
+#
+# This must be a prefix selected from your organization's IPv6 address space
+# or the Well-Known Prefix 64:ff9b::/96.  Note that using the Well-Known
+# Prefix will prohibit IPv6 hosts from contacting IPv4 hosts that have private
+# (RFC1918) addresses, per RFC 6052.
+#
+# The NAT64 prefix need not be specified if all required address mappings are
+# listed in `map' directives.  (See below.)
+#
+# Optional.
+#
+##prefix 2001:db8:1:ffff::/96
+prefix 64:ff9b::/96
+
+#
+# Dynamic pool prefix.  IPv6 hosts which send traffic through TAYGA (and do
+# not correspond to a static map or an IPv4-translatable address in the NAT64
+# prefix) will be assigned an IPv4 address from the dynamic pool.  Dynamic
+# maps are valid for 124 minutes after the last matching packet is seen.
+#
+# If no unassigned addresses remain in the dynamic pool (or no dynamic pool is
+# configured), packets from unknown IPv6 hosts will be rejected with an ICMP
+# unreachable error.
+#
+# Optional.
+#
+dynamic-pool 192.168.254.0/24
+
+#
+# Persistent data storage directory.  The dynamic.map file, which saves the
+# dynamic maps that are created from dynamic-pool, is stored in this
+# directory.  Omit if you do not need these maps to be persistent between
+# instances of TAYGA.
+#
+# Optional.
+#
+data-dir /var/spool/tayga
+
+#
+# Establishes a single-host map.  If an IPv6 host should be consistently
+# reachable at a specific IPv4 address, the mapping can be specified in a
+# `map' directive.  (IPv6 hosts numbered with an IPv4-translatable address do
+# not need map directives.)
+#
+# IPv4 addresses specified in the `map' directive can safely be located inside
+# the dynamic-pool prefix.
+#
+# Optional.
+#
+#map 192.168.5.42 2001:db8:1:4444::1
+#map 192.168.5.43 2001:db8:1:4444::2
+#map 192.168.255.2 2001:db8:1:569::143
diff --git a/meta-networking/recipes-connectivity/tayga/files/tayga.service b/meta-networking/recipes-connectivity/tayga/files/tayga.service
new file mode 100644
index 000000000000..0bffeb92a501
--- /dev/null
+++ b/meta-networking/recipes-connectivity/tayga/files/tayga.service
@@ -0,0 +1,12 @@ 
+[Unit]
+SourcePath=/usr/sbin/tayga
+Description=LSB: userspace NAT64
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/tayga -d --config /etc/tayga.conf
+RemainAfterExit=yes
+TimeoutStopSec=infinity
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-networking/recipes-connectivity/tayga/tayga_0.9.2.bb b/meta-networking/recipes-connectivity/tayga/tayga_0.9.2.bb
new file mode 100644
index 000000000000..36d35e6dee89
--- /dev/null
+++ b/meta-networking/recipes-connectivity/tayga/tayga_0.9.2.bb
@@ -0,0 +1,21 @@ 
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = " \
+        http://www.litech.org/tayga/tayga-${PV}.tar.bz2 \
+        file://tayga.conf \
+        file://tayga.service \
+        file://0001-include-sys-uio.patch;striplevel=0 \
+        "
+SRC_URI[sha256sum] = "2b1f7927a9d2dcff9095aff3c271924b052ccfd2faca9588b277431a44f0009c"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "tayga.service"
+
+do_install:append() {
+  install -m 0644 ${WORKDIR}/tayga.conf ${D}${sysconfdir}/tayga.conf
+  install -d ${D}${systemd_unitdir}/system/
+  install -m 0644 ${WORKDIR}/tayga.service ${D}${systemd_unitdir}/system/
+}
+
+inherit autotools systemd