summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-16 22:05:20 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-16 22:05:20 +0000
commit71ef4b2e33e682ead93afc90409e5e55e0f83fab (patch)
treea0e3b8c2f40011eeb98851744e8689513d4d1e2e
parent7c925059f0d92d7f6f2400c8102e5ccec1f1bffb (diff)
automatic import of freerouter
-rw-r--r--.gitignore1
-rw-r--r--freerouter-p4dpdk-pkt.service34
-rw-r--r--freerouter-p4dpdk.service19
-rw-r--r--freerouter-p4emu.service34
-rw-r--r--freerouter-p4mnl.service37
-rw-r--r--freerouter-p4udp.service38
-rw-r--r--freerouter-p4urng.service34
-rw-r--r--freerouter-p4xdp.service37
-rw-r--r--freerouter-p4xsk.service37
-rw-r--r--freerouter.spec161
-rw-r--r--sources1
11 files changed, 433 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..7064160 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/v24.8.15.tar.gz
diff --git a/freerouter-p4dpdk-pkt.service b/freerouter-p4dpdk-pkt.service
new file mode 100644
index 0000000..d809f87
--- /dev/null
+++ b/freerouter-p4dpdk-pkt.service
@@ -0,0 +1,34 @@
+[Unit]
+Description=p4dpdk specific process of freerouter
+Requires=freerouter.service freerouter-native@cpu_port.service network.target
+After=freerouter.service freerouter-native@cpu_port.service network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/p4dpdk.bin -m 2048 --no-huge --no-pci --vdev=net_af_packet0,iface=eth1,blocksz=16384,framesz=16384 --vdev=net_af_packet1,iface=eth2,blocksz=16384,framesz=16384 --vdev=net_af_packet2,iface=veth250,blocksz=16384,framesz=16384 -- 127.0.0.1 9080 2 0 1 2 1 3 4 -2 65407 0 -9 256 0 -4 512 0
+Restart=always
+RestartSec=5
+WorkingDirectory=/var/lib/freerouter
+User=freerouter
+Group=freerouter
+CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK
+AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK
+NoNewPrivileges=true
+ProtectSystem=strict
+ProtectHome=true
+ReadWritePaths=/var/lib/freerouter /etc/freerouter
+PrivateTmp=true
+# PrivateDevices is not possible because some types need access to a physical device.
+PrivateDevices=false
+PrivateNetwork=false
+# Private Users clears all capabilities.
+PrivateUsers=false
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectControlGroups=true
+RestrictNamespaces=true
+LockPersonality=true
+RemoveIPC=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/freerouter-p4dpdk.service b/freerouter-p4dpdk.service
new file mode 100644
index 0000000..1269eb3
--- /dev/null
+++ b/freerouter-p4dpdk.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=p4dpdk specific process of freerouter
+Requires=freerouter.service freerouter-native@cpu_port.service network.target
+After=freerouter.service freerouter-native@cpu_port.service network.target
+
+[Service]
+Type=simple
+StandardOutput=file:/var/log/p4dpdk.log
+ExecStartPre=-/sbin/modprobe uio_pci_generic
+ExecStartPre=-/usr/bin/dpdk-devbind.py -b uio_pci_generic 0000:00:05.0
+ExecStartPre=-/usr/bin/dpdk-devbind.py -b uio_pci_generic 0000:00:06.0
+ExecStart=/usr/bin/p4dpdk.bin -a 0000:00:05.0 -a 0000:00:06.0 --vdev=net_af_packet0,iface=veth250,blocksz=16384,framesz=16384 -- 127.0.0.1 9080 2 0 1 2 1 3 4 -2 65407 0 -9 256 0 -4 512 0
+ExecStopPost=-/usr/bin/dpdk-devbind.py -b virtio-pci 0000:00:05.0
+ExecStopPost=-/usr/bin/dpdk-devbind.py -b virtio-pci 0000:00:06.0
+Restart=always
+RestartSec=5
+
+[Install]
+WantedBy=multi-user.target
diff --git a/freerouter-p4emu.service b/freerouter-p4emu.service
new file mode 100644
index 0000000..647f60d
--- /dev/null
+++ b/freerouter-p4emu.service
@@ -0,0 +1,34 @@
+[Unit]
+Description=p4emu specific process of freerouter
+Requires=freerouter.service freerouter-native@cpu_port.service network.target
+After=freerouter.service freerouter-native@cpu_port.service network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/p4emu.bin 127.0.0.1 9080 2 eth1 eth2 veth250
+Restart=always
+RestartSec=5
+WorkingDirectory=/var/lib/freerouter
+User=freerouter
+Group=freerouter
+CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK
+AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK
+NoNewPrivileges=true
+ProtectSystem=strict
+ProtectHome=true
+ReadWritePaths=/var/lib/freerouter /etc/freerouter
+PrivateTmp=true
+# PrivateDevices is not possible because some types need access to a physical device.
+PrivateDevices=false
+PrivateNetwork=false
+# Private Users clears all capabilities.
+PrivateUsers=false
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectControlGroups=true
+RestrictNamespaces=true
+LockPersonality=true
+RemoveIPC=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/freerouter-p4mnl.service b/freerouter-p4mnl.service
new file mode 100644
index 0000000..82c3c4e
--- /dev/null
+++ b/freerouter-p4mnl.service
@@ -0,0 +1,37 @@
+[Unit]
+Description=p4mnl specific process of freerouter
+Requires=freerouter.service freerouter-native@cpu_port.service network.target
+After=freerouter.service freerouter-native@cpu_port.service network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/p4mnl_user.bin 127.0.0.1 9080 2 eth1 eth2 veth250
+ExecStopPost=-/usr/sbin/ip link set dev eth1 xdpgeneric off
+ExecStopPost=-/usr/sbin/ip link set dev eth2 xdpgeneric off
+ExecStopPost=-/usr/sbin/ip link set dev veth250 xdpgeneric off
+Restart=always
+RestartSec=5
+WorkingDirectory=/var/lib/freerouter
+User=freerouter
+Group=freerouter
+CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN
+AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN
+NoNewPrivileges=true
+ProtectSystem=strict
+ProtectHome=true
+ReadWritePaths=/var/lib/freerouter /etc/freerouter
+PrivateTmp=true
+# PrivateDevices is not possible because some types need access to a physical device.
+PrivateDevices=false
+PrivateNetwork=false
+# Private Users clears all capabilities.
+PrivateUsers=false
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectControlGroups=true
+RestrictNamespaces=true
+LockPersonality=true
+RemoveIPC=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/freerouter-p4udp.service b/freerouter-p4udp.service
new file mode 100644
index 0000000..7ea4a56
--- /dev/null
+++ b/freerouter-p4udp.service
@@ -0,0 +1,38 @@
+[Unit]
+Description=p4udp specific process of freerouter
+Requires=freerouter.service network.target
+After=freerouter.service network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/p4udp.bin 127.0.0.1 9080 2 127.0.0.1 127.0.0.1 1101 1102 1103 1104 22709 22710
+# remote UDP sockets
+# qemu1: -netdev socket,id=net0,udp=127.0.0.1:1101,localaddr=127.0.0.1:1102
+# qemu2: -netdev socket,id=net0,udp=127.0.0.1:1103,localaddr=127.0.0.1:1104
+# or
+# socat interface:eth1 udp4-connect:127.0.0.1:1101,bind=127.0.0.1:1102
+# socat interface:eth2 udp4-connect:127.0.0.1:1103,bind=127.0.0.1:1104
+Restart=always
+RestartSec=5
+WorkingDirectory=/var/lib/freerouter
+User=freerouter
+Group=freerouter
+NoNewPrivileges=true
+ProtectSystem=strict
+ProtectHome=true
+ReadWritePaths=/var/lib/freerouter /etc/freerouter
+PrivateTmp=true
+# PrivateDevices is not possible because some types need access to a physical device.
+PrivateDevices=false
+PrivateNetwork=false
+# Private Users clears all capabilities.
+PrivateUsers=false
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectControlGroups=true
+RestrictNamespaces=true
+LockPersonality=true
+RemoveIPC=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/freerouter-p4urng.service b/freerouter-p4urng.service
new file mode 100644
index 0000000..e9cdb28
--- /dev/null
+++ b/freerouter-p4urng.service
@@ -0,0 +1,34 @@
+[Unit]
+Description=p4urng specific process of freerouter
+Requires=freerouter.service freerouter-native@cpu_port.service network.target
+After=freerouter.service freerouter-native@cpu_port.service network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/p4urng.bin 127.0.0.1 9080 2 eth1 eth2 veth250
+Restart=always
+RestartSec=5
+WorkingDirectory=/var/lib/freerouter
+User=freerouter
+Group=freerouter
+CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK
+AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK
+NoNewPrivileges=true
+ProtectSystem=strict
+ProtectHome=true
+ReadWritePaths=/var/lib/freerouter /etc/freerouter
+PrivateTmp=true
+# PrivateDevices is not possible because some types need access to a physical device.
+PrivateDevices=false
+PrivateNetwork=false
+# Private Users clears all capabilities.
+PrivateUsers=false
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectControlGroups=true
+RestrictNamespaces=true
+LockPersonality=true
+RemoveIPC=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/freerouter-p4xdp.service b/freerouter-p4xdp.service
new file mode 100644
index 0000000..bfee29c
--- /dev/null
+++ b/freerouter-p4xdp.service
@@ -0,0 +1,37 @@
+[Unit]
+Description=p4xdp specific process of freerouter
+Requires=freerouter.service freerouter-native@cpu_port.service network.target
+After=freerouter.service freerouter-native@cpu_port.service network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/p4xdp_user.bin 127.0.0.1 9080 2 skb eth1 eth2 veth250
+ExecStopPost=-/usr/sbin/ip link set dev eth1 xdpgeneric off
+ExecStopPost=-/usr/sbin/ip link set dev eth2 xdpgeneric off
+ExecStopPost=-/usr/sbin/ip link set dev veth250 xdpgeneric off
+Restart=always
+RestartSec=5
+WorkingDirectory=/var/lib/freerouter
+User=freerouter
+Group=freerouter
+CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN
+AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN
+NoNewPrivileges=true
+ProtectSystem=strict
+ProtectHome=true
+ReadWritePaths=/var/lib/freerouter /etc/freerouter
+PrivateTmp=true
+# PrivateDevices is not possible because some types need access to a physical device.
+PrivateDevices=false
+PrivateNetwork=false
+# Private Users clears all capabilities.
+PrivateUsers=false
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectControlGroups=true
+RestrictNamespaces=true
+LockPersonality=true
+RemoveIPC=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/freerouter-p4xsk.service b/freerouter-p4xsk.service
new file mode 100644
index 0000000..c5f8c6f
--- /dev/null
+++ b/freerouter-p4xsk.service
@@ -0,0 +1,37 @@
+[Unit]
+Description=p4xsk specific process of freerouter
+Requires=freerouter.service freerouter-native@cpu_port.service network.target
+After=freerouter.service freerouter-native@cpu_port.service network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/p4xsk.bin 127.0.0.1 9080 2 skb eth1 eth2 veth250
+ExecStopPost=-/usr/sbin/ip link set dev eth1 xdpgeneric off
+ExecStopPost=-/usr/sbin/ip link set dev eth2 xdpgeneric off
+ExecStopPost=-/usr/sbin/ip link set dev veth250 xdpgeneric off
+Restart=always
+RestartSec=5
+WorkingDirectory=/var/lib/freerouter
+User=freerouter
+Group=freerouter
+CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN
+AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN CAP_IPC_LOCK CAP_SYS_ADMIN
+NoNewPrivileges=true
+ProtectSystem=strict
+ProtectHome=true
+ReadWritePaths=/var/lib/freerouter /etc/freerouter
+PrivateTmp=true
+# PrivateDevices is not possible because some types need access to a physical device.
+PrivateDevices=false
+PrivateNetwork=false
+# Private Users clears all capabilities.
+PrivateUsers=false
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectControlGroups=true
+RestrictNamespaces=true
+LockPersonality=true
+RemoveIPC=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/freerouter.spec b/freerouter.spec
new file mode 100644
index 0000000..2bb9345
--- /dev/null
+++ b/freerouter.spec
@@ -0,0 +1,161 @@
+%undefine _missing_build_ids_terminate_build
+%undefine _debugsource_packages
+
+Name: freerouter
+Version: 24.8.15
+Release: 1%{?dist}
+Summary: Free, open source router OS process
+
+License: CC-BY-SA
+URL: http://www.freertr.org/
+Source0: https://github.com/mc36/freeRtr/archive/refs/tags/v%{?version}.tar.gz
+Source1: freerouter-p4dpdk.service
+Source2: freerouter-p4dpdk-pkt.service
+Source3: freerouter-p4emu.service
+Source4: freerouter-p4mnl.service
+Source5: freerouter-p4udp.service
+Source6: freerouter-p4urng.service
+Source7: freerouter-p4xdp.service
+Source8: freerouter-p4xsk.service
+%if 0%{?fedora} || 0%{?rhel} > 7 || 0%{?openEuler}
+Recommends: socat
+Recommends: freerouter-native
+BuildRequires: liburing-devel
+BuildRequires: libxdp-devel
+BuildRequires: openssl-devel
+%else
+BuildRequires: openssl1.1-devel
+%endif
+BuildRequires: systemd
+BuildRequires: clang llvm
+BuildRequires: dpdk-devel
+BuildRequires: libpcap-devel
+BuildRequires: libmnl-devel
+BuildRequires: java-11-openjdk-devel
+Requires: java-11-openjdk-headless
+
+%description
+freeRouter speaks routing protocols, and (re)encapsulates packets on
+interfaces since it handles packets itself, it is independent of
+underlaying os capabilities (optionally, it can export forwarding tables
+through openflow to external switch) since it is an unprivilegized process,
+it receives and sends packets through sockets there are external, privileged
+processes that place traffic to these sockets (it means that internet can
+be used as backplane for router processes) the command line tries to
+mimic the industry standards with one exception: no global routing table:
+every routed interface must be in a virtual routing table positive side
+effect: there are no vrf-awareness questions
+
+%package native
+Summary: Native tools for better performance than socat
+Requires: %{name} = %{version}-%{release}
+%if 0%{?fedora} || 0%{?rhel} > 7 || 0%{?openEuler}
+Recommends: dpdk-tools xdp-tools
+%endif
+
+%description native
+These tools are completely optional but should deliver better performance
+than socat.
+
+
+%package doc
+BuildArch: noarch
+Summary: Examples of freeRouter test configurations
+Requires: %{name} = %{version}-%{release}
+
+%description doc
+Examples of freeRouter test configurations.
+
+
+%prep
+%setup -q -n freeRtr-%{?version}
+cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7} %{SOURCE8} .
+
+%build
+pushd src
+./cj.sh
+./cp.sh
+popd
+
+pushd misc/native
+sed -i '/^strip/d' c.sh
+./c.sh
+popd
+
+%install
+find binTmp -size 0 -print -delete
+find misc/demo -type f -not -name '*.txt' -delete
+sed -i 's|/usr/bin/freerouter|/usr/lib/jvm/jre-11-openjdk/bin/java -jar /usr/share/java/rtr.jar|g' misc/debian2/freerouter.service
+
+mkdir -p %{buildroot}%{_bindir}
+mkdir -p %{buildroot}%{_libdir}
+mkdir -p %{buildroot}%{_javadir}
+mkdir -p %{buildroot}%{_unitdir}
+mkdir -p %{buildroot}%{_datadir}/freerouter
+mkdir -p %{buildroot}%{_sysconfdir}/freerouter/interfaces
+mkdir -p %{buildroot}%{_sharedstatedir}/freerouter
+
+install -m644 src/rtr.jar %{buildroot}%{_javadir}
+cp binTmp/*.bin %{buildroot}%{_bindir}
+install -m755 binTmp/*.so %{buildroot}%{_libdir}
+install -m755 misc/debian2/interface.sh %{buildroot}%{_datadir}/freerouter/
+install -m644 misc/debian2/interface.cpu_port %{buildroot}%{_sysconfdir}/freerouter/interfaces/cpu_port
+install -m644 misc/debian2/rtr-hw.txt misc/debian2/rtr-sw.txt %{buildroot}%{_sysconfdir}/freerouter
+install -m644 misc/debian2/freerouter-native@.service %{buildroot}%{_unitdir}
+install -m644 misc/debian2/freerouter.service %{buildroot}%{_unitdir}
+install -m644 misc/debian2/freerouter.service %{buildroot}%{_unitdir}/freerouter@.service
+sed -i 's|rtr-|%i-|g' %{buildroot}%{_unitdir}/freerouter@.service
+
+%pre
+getent group freerouter >/dev/null 2>&1 || groupadd -r freerouter >/dev/null 2>&1 || :
+getent passwd freerouter >/dev/null 2>&1 || useradd -M -r -g freerouter -s /sbin/nologin \
+ -c "freeRouter OS process" -d %{_sharedstatedir}/freerouter freerouter || :
+usermod -aG dialout freerouter
+
+%post
+%systemd_post freerouter.service
+%systemd_post freerouter@\*.service
+
+%preun
+%systemd_preun freerouter.service
+%systemd_preun freerouter@\*.service
+
+%postun
+%systemd_postun_with_restart freerouter.service
+%systemd_postun_with_restart freerouter@\*.service
+
+%post native
+%systemd_post freerouter-native@\*.service
+
+%preun native
+%systemd_preun freerouter-native@\*.service
+
+%postun native
+%systemd_postun_with_restart freerouter-native@\*.service
+
+
+%files
+%license misc/debian2/copyright
+%doc misc/demo misc/captures readme.md changelog.txt todo.txt
+%dir %attr(0755,freerouter,freerouter) %{_sharedstatedir}/freerouter
+%dir %attr(0770,freerouter,freerouter) %{_sysconfdir}/freerouter
+%attr(0644,freerouter,freerouter) %config(noreplace) %{_sysconfdir}/freerouter/rtr-hw.txt
+%attr(0644,freerouter,freerouter) %config(noreplace) %{_sysconfdir}/freerouter/rtr-sw.txt
+%{_javadir}/rtr.jar
+%{_unitdir}/freerouter.service
+%{_unitdir}/freerouter@.service
+
+%files native
+%doc freerouter-p4dpdk.service freerouter-p4dpdk-pkt.service
+%doc freerouter-p4emu.service freerouter-p4mnl.service
+%doc freerouter-p4udp.service freerouter-p4urng.service
+%doc freerouter-p4xdp.service freerouter-p4xsk.service
+%dir %{_sysconfdir}/freerouter/interfaces
+%config(noreplace) %{_sysconfdir}/freerouter/interfaces/cpu_port
+%{_bindir}/*.bin
+%{_libdir}/*.so
+%{_datadir}/freerouter/
+%{_unitdir}/freerouter-native@.service
+
+%files doc
+%doc cfg
diff --git a/sources b/sources
new file mode 100644
index 0000000..a9d6c26
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+ee0719c75b54166072332ec57062d1a3 v24.8.15.tar.gz