#!/bin/sh
# ifupdown-ng does not set ADDRFAM for Debian's legacy resolvconf hooks.
# Use the legacy static record name so resolvconf orders it before DHCP.
set -eu
set -f

case "${PHASE:-}" in
    up)
        : "${IFACE:?Missing interface name}"
        nameservers="${IF_DNS_NAMESERVERS:-} ${IF_DNS_NAMESERVER:-}"
        if [ -n "${INTERFACES_FILE:-}" ]; then
            # The environment contains only the last occurrence of an option.
            # Query the same input file to retain servers from both IP stanzas.
            nameservers=$(ifquery -l -i "$INTERFACES_FILE" -p dns-nameservers "$IFACE")
            singular=$(ifquery -l -i "$INTERFACES_FILE" -p dns-nameserver "$IFACE")
            nameservers="$nameservers $singular"
        fi
        {
            for server in $nameservers; do
                printf 'nameserver %s\n' "$server"
            done
            if [ -n "${IF_DNS_DOMAIN:-}" ]; then
                printf 'domain %s\n' "$IF_DNS_DOMAIN"
            fi
            if [ -n "${IF_DNS_SEARCH:-}" ]; then
                printf 'search %s\n' "$IF_DNS_SEARCH"
            fi
            if [ -n "${IF_DNS_SORTLIST:-}" ]; then
                printf 'sortlist %s\n' "$IF_DNS_SORTLIST"
            fi
            if [ -n "${IF_DNS_OPTIONS:-}" ]; then
                printf 'options %s\n' "$IF_DNS_OPTIONS"
            fi
        } | resolvconf -a "$IFACE.inet"
        ;;
    down)
        : "${IFACE:?Missing interface name}"
        resolvconf -d "$IFACE.inet"
        ;;
esac
