rustd-resolved 0.2.1

A compatibility-oriented reimplementation of systemd-resolved
name: Live mDNS verification

on:
  push:
    branches:
      - main
  workflow_dispatch:

permissions:
  contents: read

concurrency:
  group: live-mdns-${{ github.ref }}
  cancel-in-progress: true

jobs:
  verify:
    runs-on: ubuntu-24.04
    timeout-minutes: 35
    steps:
      - name: Check out source
        uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0

      - name: Install build and network tools
        shell: bash
        run: |
          set -euo pipefail
          sudo apt-get update
          sudo apt-get install --yes --no-install-recommends \
            gfortran iproute2 libssl-dev liburing-dev

      - name: Build the release daemon and client
        run: cargo build --release --bins --locked

      - name: Exercise real multicast metadata and anti-spoofing
        shell: bash
        run: python3 tests/live-mdns.py target/release/systemd-resolved

      - name: Install external Avahi interoperability tools
        shell: bash
        run: |
          set -euo pipefail
          sudo apt-get install --yes --no-install-recommends avahi-daemon avahi-utils dbus
          sudo systemctl stop avahi-daemon.service avahi-daemon.socket 2>/dev/null || true

      - name: Exercise external Avahi mDNS/DNS-SD interoperability
        shell: bash
        run: timeout --kill-after=5s 240s bash tests/parity/llmnr_avahi_interop.sh target/release/systemd-resolved target/release/rustd-resolvectl