From 2cf4b1eef29e8fc00a7db6761c54c7568ab1c15e Mon Sep 17 00:00:00 2001 From: Xin Long Date: Wed, 29 Jan 2025 17:22:54 -0500 Subject: [PATCH 1/2] add linuxquic implementation Add linuxquic-interop docker image in implementations_quic.json, and skip it if the uapi header file /usr/include/linux/quic.h (kernel module) doesn't exist in implementations.py. Signed-off-by: Xin Long --- implementations.py | 3 +++ implementations_quic.json | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/implementations.py b/implementations.py index 5eb43cc7..3ed020e9 100644 --- a/implementations.py +++ b/implementations.py @@ -2,6 +2,7 @@ import json from enum import Enum from typing import Dict +import os class Role(Enum): @@ -23,6 +24,8 @@ def get_implementations(filename: str) -> Dict[str, Dict[str, str | Role]]: with open(filename, "r") as f: data = json.load(f) for name, val in data.items(): + if name == "linuxquic" and not os.path.exists("/usr/include/linux/quic.h"): + continue implementations[name] = {"image": val["image"], "url": val["url"]} role = val["role"] if role == "server": diff --git a/implementations_quic.json b/implementations_quic.json index 7df33f8e..12981861 100644 --- a/implementations_quic.json +++ b/implementations_quic.json @@ -83,5 +83,10 @@ "image": "us-central1-docker.pkg.dev/golang-interop-testing/quic/go-x-net:latest", "url": "https://pkg.go.dev/golang.org/x/net/internal/quic", "role": "both" + }, + "linuxquic": { + "image": "quay.io/lxin/linuxquic-interop:latest", + "url": "https://github.com/lxin/quic", + "role": "both" } } From b4d500b5cb443bb3b968c85cbfd70319964d8143 Mon Sep 17 00:00:00 2001 From: Xin Long Date: Sun, 1 Mar 2026 10:46:26 -0500 Subject: [PATCH 2/2] ci: enable linuxquic in interop tests Build and install the Linux QUIC module in CI interop tests when either the client or server is Linux QUIC, ensuring its availability in interop CI. Note if the kernel already supports QUIC (the uapi header file /usr/include/linux/quic.h exists), it will not clone and build the Linux QUIC module from lxin/quic repo. Signed-off-by: Xin Long --- .github/workflows/interop-test.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/interop-test.yml b/.github/workflows/interop-test.yml index cb34996e..e6eef727 100644 --- a/.github/workflows/interop-test.yml +++ b/.github/workflows/interop-test.yml @@ -77,6 +77,15 @@ jobs: sudo add-apt-repository ppa:wireshark-dev/nightly sudo apt-get update sudo apt-get install -y --no-install-recommends tshark + - name: Install Linux QUIC module + if: ${{ matrix.client == 'linuxquic' || inputs.server == 'linuxquic' }} + run: | + [ -f /usr/include/linux/quic.h ] && exit 0 + git clone https://github.com/lxin/quic.git + cd quic && sed -i '/LIBGNUTLS/d' configure.ac + ./autogen.sh && ./configure --prefix=/usr + sudo make -C modules install + cd ../ && rm -r quic - name: Install Python packages run: | pip install -U pip