Initial commit

This commit is contained in:
2024-10-30 01:50:38 +01:00
commit 587ca23374
147 changed files with 7521 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
---
# Don't replace current driver until it's not a *-ct one
- name: Set default extroot status fact to false
ansible.builtin.set_fact:
replace_ath10k_ct_driver: false
# Check current driver release
- name: Check current ath10k firmware release
ansible.builtin.command:
cmd: "opkg list-installed | grep ath10k-firmware | awk '{print $1}'"
uses_shell: true
register: ath10k_firmware_current_release
changed_when: ath10k_firmware_current_release.rc != 0
# Enable reinstall if installed driver contain *-ct postfix
- name: Enable replacement of current driver
ansible.builtin.set_fact:
replace_ath10k_ct_driver: true
when: "'-ct' in ath10k_firmware_current_release.stdout"
# Replace current driver with new one
- name: Replace ath10k-ct firmware and module
when: replace_ath10k_ct_driver
block:
# Get current ath10k module package name
- name: Check current ath10k module release
ansible.builtin.command:
cmd: "opkg list-installed | grep kmod-ath10k | awk '{print $1}'"
uses_shell: true
register: ath10k_kmod_current_release
# Set current ath10k module package name fact
- name: Set current ath10k module release fact
ansible.builtin.set_fact:
ath10k_kmod_pkg_name: "{{ ath10k_kmod_current_release.stdout }}"
# Set current driver release name fact
- name: Set current driver release name fact
ansible.builtin.set_fact:
ath10k_driver_pkg_name: "{{ ath10k_firmware_current_release.stdout }}"
# Remove current driver
- name: Remove current driver
opkg:
name: "{{ item }}"
state: "absent"
loop: ["{{ ath10k_kmod_pkg_name }}", "{{ ath10k_driver_pkg_name }}"]
# Update opkg cache
- name: Update opkg cache
ansible.builtin.command:
cmd: "opkg update"
changed_when: false
# Install new driver
- name: Install new driver
opkg:
name: "{{ item }}"
state: "present"
loop:
[
"{{ ath10k_kmod_pkg_name | regex_replace('-?ct', '') }}",
"{{ ath10k_driver_pkg_name | regex_replace('-?ct', '') }}",
]

View File

@@ -0,0 +1,56 @@
---
# Set state status for B.A.T.M.A.N. interface
- name: Set state status for batman interface {{ item.id }}
ansible.builtin.set_fact:
batman_interface_state: "{{ item.state | default('present') }}"
# Delete B.A.T.M.A.N. interface
- name: Delete batman interface {{ item.id }}
when: "'absent' in batman_interface_state"
uci:
command: "absent"
config: "network"
section: "{{ item.id }}"
type: "interface"
# Create and configure B.A.T.M.A.N. interface
- name: Create and configure batman interface
when: "'present' in batman_interface_state"
block:
# Create B.A.T.M.A.N. interface
- name: Create batman interface {{ item.id }}
uci:
command: "add"
config: "network"
section: "{{ item.id }}"
type: "interface"
# Configure B.A.T.M.A.N. interface
- name: Configure batman interface {{ item.id }}
uci:
command: "set"
config: "network"
section: "{{ item.id }}"
type: "interface"
value:
proto: "{{ item.proto | default(omit) }}"
aggregated_ogms: "{{ item.aggregated_ogms | default(omit) }}"
routing_algo: "{{ item.routing_algo | default(omit) }}"
bonding: "{{ item.bonding | default(omit) }}"
fragmentation: "{{ item.fragmentation | default(omit) }}"
gw_mode: "{{ item.gw_mode | default(omit) }}"
gw_bandwidth: "{{ item.gw_bandwidth | default(omit) }}"
gw_sel_class: "{{ item.gw_sel_class | default(omit) }}"
log_level: "{{ item.log_level | default(omit) }}"
orig_interval: "{{ item.orig_interval | default(omit) }}"
bridge_loop_avoidance: "{{ item.bridge_loop_avoidance | default(omit) }}"
distributed_arp_table: "{{ item.distributed_arp_table | default(omit) }}"
multicast_mode: "{{ item.multicast_mode | default(omit) }}"
multicast_fanout: "{{ item.multicast_fanout | default(omit) }}"
network_coding: "{{ item.network_coding | default(omit) }}"
hop_penalty: "{{ item.hop_penalty | default(omit) }}"
ap_isolation: "{{ item.ap_isolation | default(omit) }}"
isolation_mark: "{{ item.isolation_mark | default(omit) }}"
master: "{{ item.master | default(omit) }}"
mtu: "{{ item.mtu | default(omit) }}"
delegate: "{{ item.delegate | default(omit) }}"

View File

@@ -0,0 +1,32 @@
---
# Fix ath10k drivers
# https://openwrt.org/docs/guide-user/network/wifi/mesh/80211s#wireless_hardware_support
- name: Fix ath10k drivers
ansible.builtin.include_tasks: ath10k.yml
when: batman_enabled and ath10k_ct_fix
# Install required packages
- name: Install required packages
ansible.builtin.include_tasks: prepare.yml
when: batman_enabled
# Create B.A.T.M.A.N. wireless interfaces
- name: Create batman wireless interfaces
ansible.builtin.include_role:
name: "wireless"
vars:
wireless_interfaces: "{{ batman_wireless_interfaces | default([]) }}"
when: batman_enabled
# Configure B.A.T.M.A.N. network interfaces
- name: Configure batman network interfaces
ansible.builtin.include_tasks: interface.yml
loop: "{{ batman_network_interfaces | default([]) }}"
when: batman_enabled
# Apply changes and reload wireless service
- name: Apply changes and reload wireless
when: batman_enabled
uci:
command: commit
notify: Reload wireless

View File

@@ -0,0 +1,48 @@
---
# Remove non-mesh wpad packages
- name: Remove non-mesh wpad packages
opkg:
name: "{{ item }}"
state: "absent"
loop: "{{ non_mesh_pkgs }}"
# Update opkg cache
- name: Update opkg cache
ansible.builtin.command:
cmd: "opkg update"
changed_when: false
# Install batman packages
- name: Install batman packages
opkg:
name: "{{ item }}"
state: "present"
loop: "{{ batman_pkgs }}"
# Check B.A.T.M.A.N. LuCI package status
- name: Check batman luci package status
ansible.builtin.command:
cmd: "opkg list-installed | grep luci-proto-batman-adv | awk '{print $1}'"
uses_shell: true
register: batman_luci_package_status
changed_when: batman_luci_package_status.rc != 0
# Install B.A.T.M.A.N. LuCI package
- name: Install batman luci package
when: >
batman_luci_package_status.stdout is undefined or
batman_luci_package_status.stdout | length == 0
block:
# Copy local package file
- name: Copy luci-proto-batman-adv package file
ansible.builtin.copy:
src: "luci-proto-batman-adv.ipk"
dest: "/tmp/luci-proto-batman-adv.ipk"
owner: "root"
group: "root"
mode: "0755"
# Install B.A.T.M.A.N. LuCI package
- name: Install luci-proto-batman-adv package file
ansible.builtin.command:
cmd: "opkg install /tmp/luci-proto-batman-adv.ipk"