diff --git a/roles/router/tasks/install.yml b/roles/router/tasks/install.yml index e6f7f5c..3d6cc63 100644 --- a/roles/router/tasks/install.yml +++ b/roles/router/tasks/install.yml @@ -1,5 +1,3 @@ ---- - # TODO: running on master node for now (fix to run on multiple nodes) - set_fact: @@ -95,10 +93,12 @@ when: inventory_hostname in groups['master_nodes'] become: true -- name: copy aether-ue-nat.service to {{ systemd_system_dir }}/aether-ue-nat.service +# Use Jinja template for `aether-ue-nat.service` +- name: Generate aether-ue-nat.service dynamically template: - src: roles/router/templates/systemd/aether-ue-nat.service + src: roles/router/templates/systemd/aether-ue-nat.service.j2 dest: "{{ systemd_system_dir }}/aether-ue-nat.service" + mode: "0644" when: inventory_hostname in groups['master_nodes'] become: true @@ -122,7 +122,7 @@ when: inventory_hostname in groups['master_nodes'] become: true -- name: restart systemd-networkd +- name: Restart systemd-networkd systemd: name: systemd-networkd state: restarted diff --git a/roles/router/templates/systemd/aether-ue-nat.service b/roles/router/templates/systemd/aether-ue-nat.service deleted file mode 100644 index 50e8473..0000000 --- a/roles/router/templates/systemd/aether-ue-nat.service +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright 2022-present Open Networking Foundation -# SPDX-License-Identifier: Apache-2.0 - -[Service] -Type=oneshot -ExecStart=/bin/bash -c "sudo iptables -t nat -C POSTROUTING -s {{ core.upf.default_upf.ue_ip_pool }} -o {{ core.data_iface }} -j MASQUERADE || sudo iptables -t nat -A POSTROUTING -s {{ core.upf.default_upf.ue_ip_pool }} -o {{ core.data_iface }} -j MASQUERADE" - -[Install] -WantedBy=sys-subsystem-net-devices-core.device diff --git a/roles/router/templates/systemd/aether-ue-nat.service.j2 b/roles/router/templates/systemd/aether-ue-nat.service.j2 new file mode 100644 index 0000000..9b3945d --- /dev/null +++ b/roles/router/templates/systemd/aether-ue-nat.service.j2 @@ -0,0 +1,20 @@ +# Copyright 2022-present Open Networking Foundation +# SPDX-License-Identifier: Apache-2.0 + +[Unit] +Description=Aether UE NAT Setup +After=network.target + +[Service] +Type=oneshot +ExecStart=/bin/bash -c "\ + sudo iptables -t nat -C POSTROUTING -s {{ core.upf.default_upf.ue_ip_pool }} -o {{ core.data_iface }} -j MASQUERADE || \ + sudo iptables -t nat -A POSTROUTING -s {{ core.upf.default_upf.ue_ip_pool }} -o {{ core.data_iface }} -j MASQUERADE; \ + {% for upf_key, upf_data in core.upf.additional_upfs.items() %} \ + sudo iptables -t nat -C POSTROUTING -s {{ upf_data.ue_ip_pool }} -o {{ core.data_iface }} -j MASQUERADE || \ + sudo iptables -t nat -A POSTROUTING -s {{ upf_data.ue_ip_pool }} -o {{ core.data_iface }} -j MASQUERADE; \ + {% endfor %} \ +" + +[Install] +WantedBy=sys-subsystem-net-devices-core.device diff --git a/roles/upf/tasks/install.yml b/roles/upf/tasks/install.yml index 95b16df..bf4d41e 100644 --- a/roles/upf/tasks/install.yml +++ b/roles/upf/tasks/install.yml @@ -54,8 +54,8 @@ - name: configure route for upf traffic on gnbsim node shell: | + ip route show | grep -q "{{ item.value.ue_ip_pool }} via {{ item.value.ip.core }}" || \ ip route add {{ item.value.ue_ip_pool }} via {{ item.value.ip.core }} when: inventory_hostname in groups['master_nodes'] with_dict: "{{ core.upf.additional_upfs}}" become: true - # ignore_errors: yes