rustd-resolved 0.2.3

Native DNS resolver and name-service daemon for RustD
name: Live RustD mDNS verification

on:
  push:
    branches:
      - main
  workflow_dispatch:

permissions:
  contents: read

concurrency:
  group: live-rustd-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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

      - 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 native daemon and client
        run: cargo build --release --locked --bin rustd-resolved --bin rustd-resolvectl

      - name: Exercise real multicast metadata and anti-spoofing
        shell: bash
        run: python3 tests/live-mdns.py target/release/rustd-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

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