Desde o systemd 219, você pode usar a ferramenta systemd-networkd-wait-online
do systemd diretamente, com um --interface
parâmetro para especificar a interface a ser esperada. Por exemplo:
ExecStartPre=/usr/lib/systemd/systemd-networkd-wait-online --interface=$IFACE
No entanto, há uma ressalva. Essa ferramenta precisa que systemd-networkd
esteja em execução, mesmo que não faça nada na sua configuração. Por outro lado, começando com o mesmo systemd 219, systemd-networkd
é ativável por soquete e sai automaticamente em ocioso. Então tudo que você precisa é puxar o seu encaixe.
Juntando tudo, as modificações no arquivo da unidade ficarão assim (com $IFACE
substituído com a interface desejada):
[Unit]
Requires=systemd-networkd.socket
After=systemd-networkd.socket
...
[Service]
ExecStartPre=/usr/lib/systemd/systemd-networkd-wait-online --interface=$IFACE
ExecStart=/usr/bin/hostapd ...
...