# sysd-netd-debian.yml
- name: Copy the bridge script - Creates br0
  template:
    dest: /etc/systemd/network/IIAB-Bridge.netdev
    src: network/systemd-br0.j2
  when: iiab_lan_iface == "br0"

- name: Copy the bridge script - Assigns IP address
  template:
    dest: /etc/systemd/network/IIAB-Bridge.network
    src: network/systemd-br0-network.j2
  when: iiab_lan_iface == "br0"

# can be more than one wired interface
- name: Wired enslaving - Assigns lan_list_results to br0 as wired slaves if present
  template:
    src: network/systemd-br0-slave.j2
    dest: /etc/systemd/network/IIAB-Slave-{{ item|trim }}.network
  with_items:
    - "{{ lan_list_result.stdout_lines }}"
  when: iiab_wired_lan_iface is defined and num_lan_interfaces|int >= 1 and not network_manager_active

- name: Remove static WAN template
  file:
    state: absent
    dest: /etc/systemd/network/IIAB-Static.network
  when: wan_ip == "dhcp"

- name: Static IP computing CIDR
  shell: netmask {{ wan_ip }}/{{ wan_netmask }} | awk -F "/" '{print $2}'
  register: CIDR
  when: wan_ip != "dhcp"

- name: Static IP setting CIDR
  set_fact:
    wan_cidr: "{{ CIDR.stdout }}"
  when: wan_ip != "dhcp"

- name: Supply static WAN template when network_manager_active is False
  template:
    dest: /etc/systemd/network/IIAB-Static.network
    src: network/systemd-static-net.j2
  when: wan_ip != "dhcp" and not network_manager_active
  #when: wan_ip != "dhcp" and ( is_ubuntu_16 or not network_manager_active )

- name: Create networkd-dispatcher diagnostic hook for recording network events
  template:
    owner: root
    group: root
    mode: 0755
    src: "{{ item.src }}"
    dest: "{{ item.dest }}"
  with_items:
    - { src: 'hostapd/00-iiab-debug', dest: '/etc/networkd-dispatcher/carrier.d/00-iiab-debug' }
    - { src: 'hostapd/00-iiab-debug', dest: '/etc/networkd-dispatcher/degraded.d/00-iiab-debug' }
    - { src: 'hostapd/00-iiab-debug', dest: '/etc/networkd-dispatcher/dormant.d/00-iiab-debug' }
    - { src: 'hostapd/00-iiab-debug', dest: '/etc/networkd-dispatcher/no-carrier.d/00-iiab-debug' }
    - { src: 'hostapd/00-iiab-debug', dest: '/etc/networkd-dispatcher/off.d/00-iiab-debug' }
    - { src: 'hostapd/00-iiab-debug', dest: '/etc/networkd-dispatcher/routable.d/00-iiab-debug' }
  # when: discovered_wireless_iface != "none" or discovered_wired_iface != "none"

- name: Create networkd-dispatcher hook for ap0 on RPi hardware with wifi_up_down True
  template:
    owner: root
    group: root
    mode: 0755
    src: "{{ item.src }}"
    dest: "{{ item.dest }}"
  with_items:
    - { src: 'hostapd/netd-disp', dest: '/etc/networkd-dispatcher/carrier.d/iiab-wifi' }
    - { src: 'hostapd/netd-disp', dest: '/etc/networkd-dispatcher/no-carrier.d/iiab-wifi' }
    - { src: 'hostapd/netd-disp2', dest: '/etc/networkd-dispatcher/routable.d/iiab-wifi2' }
  when: discovered_wireless_iface != "none" and rpi_model != "none" and wifi_up_down

- name: Remove networkd-dispatcher hook for ap0 on RPi hardware with wifi_up_down False
  file:
    path: "{{ item.dest }}"
    state: absent
  with_items:
    - { dest: '/etc/networkd-dispatcher/carrier.d/iiab-wifi' }
    - { dest: '/etc/networkd-dispatcher/no-carrier.d/iiab-wifi' }
    - { dest: '/etc/networkd-dispatcher/routable.d/iiab-wifi' }
    - { dest: '/etc/networkd-dispatcher/routable.d/iiab-wifi2' }
  when: discovered_wireless_iface != "none" and rpi_model != "none" and not wifi_up_down

- name: Reload systemd
  systemd:
    daemon_reload: yes

- name: Clone wifi if needed
  systemd:
    name: iiab-clone-wifi
    state: restarted
  when: wifi_up_down and can_be_ap and ansible_ap0 is undefined

- name: Enable & Restart systemd-networkd.service
  systemd:
    name: systemd-networkd
    state: restarted
    enabled: yes
    masked: no

- name: Enable & Restart systemd-resolved.service
  systemd:
    name: systemd-resolved
    state: restarted
    enabled: yes
    masked: no

- name: Enable & Restart networkd-dispatcher.service
  systemd:
    name: networkd-dispatcher
    state: restarted
    enabled: yes
    masked: no
