- name: Add IP address
  win_shell: >
    New-NetIPAddress -InterfaceAlias {{ interface.name }}
    -AddressFamily IPv{{ address.family.value }}
    -IPAddress "{{ address.address | ipaddr("address") }}" -PrefixLength {{ address.address | ipaddr("prefix") }}
  register: result
  changed_when: "not result.stderr or 'Instance MSFT_NetIPAddress already exists' not in result.stderr"
  failed_when: false

- name: Get gateway for prefix
  set_fact:
    prefix: "{{ prefixes | selectattr('prefix', '==', address.address|ipaddr('subnet')) | first }}"

- name: Set gateway
  when: address.family.value == 4 and prefix.custom_fields.gateway
  win_shell: >
    New-NetRoute -InterfaceAlias {{ interface.name }}
    -AddressFamily IPv{{ address.family.value }}
    -DestinationPrefix {{ "0.0.0.0/0" if address.family.value == 4 else "::/0" }}
    -NextHop {{ prefix.custom_fields.gateway.address | ipaddr("address") }}
  register: result
  changed_when: "not result.stderr or 'Instance MSFT_NetRoute already exists' not in result.stderr"
  failed_when: false