mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-11-13 00:14:22 +08:00
3549fe5ad8
* fix(udp): preserve local destinations and unicast reply sources on Linux * fix(udp): select unicast sources for IPv6 multicast replies * fix(udp): retain interface zones for link-local multicast sessions * fix(udp): isolate interface-local multicast sessions * fix(udp): include ingress interfaces in session identity * fix(udp): restrict destination zones to IPv6 * ci(udp): follow rc5 patched Go toolchain requirement --------- Co-authored-by: sagit <36596628+Sagit-chu@users.noreply.github.com>
88 lines
2.9 KiB
YAML
88 lines
2.9 KiB
YAML
name: UDP Destination Regression
|
|
|
|
on:
|
|
push:
|
|
branches: ['main', 'fix/udp-wildcard-source', 'pr/udp-wildcard-source']
|
|
pull_request:
|
|
paths:
|
|
- 'go-gost/**'
|
|
- '.github/workflows/udp-destination.yml'
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: udp-destination-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
linux:
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 20
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: 'go-gost/go.mod'
|
|
cache-dependency-path: |
|
|
go-gost/go.sum
|
|
go-gost/x/go.sum
|
|
|
|
- name: Test agent module
|
|
working-directory: go-gost
|
|
run: go test ./...
|
|
|
|
- name: Test protocol module
|
|
working-directory: go-gost/x
|
|
run: go test ./...
|
|
|
|
- name: Check UDP races
|
|
working-directory: go-gost/x
|
|
run: go test -race ./internal/net/udp ./listener/udp
|
|
|
|
- name: Vet UDP implementation
|
|
working-directory: go-gost/x
|
|
run: go vet ./internal/net/udp ./listener/udp
|
|
|
|
- name: Build destination regression executable
|
|
working-directory: go-gost/x
|
|
run: |
|
|
go test -c -race -o "$RUNNER_TEMP/udp-destination.test" ./listener/udp
|
|
go test -c -race -o "$RUNNER_TEMP/udp-packet.test" ./internal/net/udp
|
|
|
|
- name: Test multiple destinations in isolated network namespace
|
|
run: |
|
|
sudo unshare --net -- sh -eu -c '
|
|
sysctl -qw net.ipv6.conf.all.disable_ipv6=0
|
|
ip link set lo up
|
|
ip addr add 198.18.0.1/32 dev lo
|
|
ip addr add 169.254.1.2/32 dev lo
|
|
ip -6 addr add fd00:1::1/128 dev lo nodad
|
|
ip -6 addr add fd00:2::1/128 dev lo nodad
|
|
ip -6 addr add fd00:3::1/128 dev lo nodad
|
|
for suffix in "" 2; do
|
|
ip link add "mc-tx$suffix" type veth peer name "mc-rx$suffix"
|
|
ip link set "mc-tx$suffix" addrgenmode none up
|
|
ip link set "mc-rx$suffix" addrgenmode none up
|
|
ip -6 addr add fe80::1/64 dev "mc-tx$suffix" nodad
|
|
ip -6 addr add fe80::2/64 dev "mc-rx$suffix" nodad
|
|
done
|
|
ip addr add 198.18.1.1/24 dev mc-tx
|
|
ip addr add 198.18.2.1/24 dev mc-tx2
|
|
export FLUX_TEST_IPV6_ADDRS=fd00:1::1,fd00:2::1,fd00:3::1
|
|
export FLUX_TEST_IPV4_LINK_LOCAL=169.254.1.2
|
|
export FLUX_TEST_MULTICAST_RX=mc-rx FLUX_TEST_MULTICAST_TX=mc-tx
|
|
export FLUX_TEST_MULTICAST_RX2=mc-rx2 FLUX_TEST_MULTICAST_TX2=mc-tx2
|
|
"$1" -test.v -test.timeout=60s -test.count=5
|
|
exec "$2" -test.v -test.timeout=60s -test.count=5
|
|
' sh "$RUNNER_TEMP/udp-destination.test" "$RUNNER_TEMP/udp-packet.test"
|
|
|
|
- name: Build Linux agent
|
|
working-directory: go-gost
|
|
env:
|
|
CGO_ENABLED: '0'
|
|
GOOS: linux
|
|
GOARCH: amd64
|
|
run: go build -trimpath -o "$RUNNER_TEMP/flux-agent" .
|