Skip to content

chore(deps): update all dependencies #1364

chore(deps): update all dependencies

chore(deps): update all dependencies #1364

Workflow file for this run

name: Build and Test
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5
- name: Set up Go
uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c
with:
go-version: 1.25.4
- name: Check module vendoring
run: |
go mod tidy
go mod vendor
go mod verify
test -z "$(git status --porcelain)" || (echo "please run 'go mod tidy && go mod vendor', and submit your changes"; exit 1)
- name: Generate and build
run: |
make release
- name: Store executable
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
with:
name: pwru
path: release/pwru-linux-*.tar.gz
- name: Build test-app
shell: bash
run: |
cd test-app
for arch in amd64 arm64; do
GOARCH=${arch} go build -o test-app-${arch} .
done
- name: Store test-app
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
with:
name: test-app
path: test-app/test-app-*
test:
name: Test
needs: [build]
strategy:
fail-fast: false
matrix:
arch:
- amd64
kernel:
# renovate: datasource=docker depName=quay.io/lvh-images/kind
- 5.4-20250616.013250
# renovate: datasource=docker depName=quay.io/lvh-images/kind
- 5.10-20250616.013250
# renovate: datasource=docker depName=quay.io/lvh-images/kind
- 5.15-20250616.013250
# renovate: datasource=docker depName=quay.io/lvh-images/kind
- 6.1-20250616.013250
# renovate: datasource=docker depName=quay.io/lvh-images/kind
- 6.6-20250616.013250
# renovate: datasource=docker depName=quay.io/lvh-images/kind
- 6.12-20250616.013250
- bpf-next-20250623.155211
include:
- arch: arm64
# renovate: datasource=docker depName=quay.io/lvh-images/kind
kernel: 6.12-20250616.013250
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5
- name: Derive kernel version
id: kernel
run: |
if [[ "${{ matrix.kernel }}" == bpf-next* ]]; then
VSN="42.0"
else
VSN=$(echo -n ${{ matrix.kernel }} | cut -d- -f1)
fi
major=$(echo -n $VSN | cut -d. -f1)
minor=$(echo -n $VSN | cut -d. -f2)
if (( $minor < 10 )); then
minor="0${minor}"
fi
echo "vsn=${major}${minor}" >> "$GITHUB_OUTPUT"
if [[ "${{ matrix.arch }}" == "arm64" ]]
then
echo kernel-version=${{ matrix.kernel}} >> $GITHUB_OUTPUT
else
echo kernel-version="" >> $GITHUB_OUTPUT
fi
- name: Retrieve stored pwru executable
uses: actions/download-artifact@f093f21ca4cfa7c75ccbbc2be54da76a0c7e1f05
with:
name: pwru
- name: Retrieve stored test-app executable
uses: actions/download-artifact@f093f21ca4cfa7c75ccbbc2be54da76a0c7e1f05
with:
name: test-app
- name: Install stored executables
shell: bash
run: |
tar xfv pwru-linux-${{ matrix.arch }}.tar.gz
- name: Provision LVH VMs
uses: cilium/little-vm-helper@ad43ff511dd5365a0011ae9f864ec959c36daebf # v0.0.28
with:
# renovate: datasource=github-tags depName=cilium/little-vm-helper
lvh-version: 'v0.0.27'
mem: 4G
cpu: 2
cpu-kind: ''
test-name: pwru-test
image-version: ${{ matrix.kernel }}
kernel-version: ${{ steps.kernel.outputs.kernel-version }}
arch: ${{ matrix.arch }}
install-dependencies: true
host-mount: ./
cmd: |
mkdir /host/pwru-tmp
chmod +x /host/pwru
mv /host/pwru /host/pwru-tmp/
mv /host/pwru-tmp /host/pwru
chmod +x /host/test-app-${{ matrix.arch }}
mv /host/test-app-${{ matrix.arch }} /host/test-app/test-app
- name: Test basic IPv4
uses: ./.github/actions/pwru-test
with:
test-name: ${{ matrix.kernel }}-basic-ipv4
pwru-pcap-filter: 'dst host 1.0.0.1 and port 8080'
setup: |
iptables -w 10 -I OUTPUT 1 -m tcp --proto tcp --dst 1.0.0.1/32 --dport 8080 -j DROP
gen-traffic: |
curl -vvv -sS --fail --connect-timeout "1" -o /dev/null http://1.0.0.1:8080 || true
expected-output-pattern: '1.0.0.1:8080.*(kfree_skb_reason|kfree_skb|sk_skb_reason_drop\b)'
- name: Test basic IPv6
uses: ./.github/actions/pwru-test
with:
test-name: ${{ matrix.kernel }}-basic-ipv6
pwru-pcap-filter: 'dst host 2606:4700:4700::1001 and port 8080'
setup: |
ip6tables -I OUTPUT 1 -m tcp --proto tcp --dst 2606:4700:4700::1001 --dport 8080 -j DROP
gen-traffic: |
curl -vvv -sS --fail --connect-timeout "1" -o /dev/null http://[2606:4700:4700::1001]:8080 || true
expected-output-pattern: '\[2606:4700:4700::1001\]:8080.*(kfree_skb_reason|kfree_skb|sk_skb_reason_drop\b)'
- name: Test advanced IPv4
uses: ./.github/actions/pwru-test
with:
test-name: ${{ matrix.kernel }}-advanced-ipv4
pwru-pcap-filter: 'tcp[tcpflags] = tcp-syn'
setup: |
iptables -w 10 -I OUTPUT 1 -m tcp --proto tcp --dst 1.0.0.2/32 --dport 8080 -j DROP
gen-traffic: |
curl -vvv -sS --fail --connect-timeout "1" -o /dev/null http://1.0.0.2:8080 || true
expected-output-pattern: '1.0.0.2:8080.*(kfree_skb_reason|kfree_skb|sk_skb_reason_drop\b)'
- name: Test advanced IPv6
uses: ./.github/actions/pwru-test
with:
test-name: ${{ matrix.kernel }}-advanced-ipv6
pwru-pcap-filter: 'ip6[53] & 0x3f = 0x2'
setup: |
ip6tables -I OUTPUT 1 -m tcp --proto tcp --dst 2606:4700:4700::1002 --dport 8080 -j DROP
gen-traffic: |
curl -vvv -sS --fail --connect-timeout "1" -o /dev/null http://[2606:4700:4700::1002]:8080 || true
expected-output-pattern: '\[2606:4700:4700::1002\]:8080.*(kfree_skb_reason|kfree_skb|sk_skb_reason_drop\b)'
- name: Test pcap filter using stack
uses: ./.github/actions/pwru-test
with:
test-name: ${{ matrix.kernel }}-pcap-filter-stack
pwru-pcap-filter: '(((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
gen-traffic: curl -vvv -sS --fail --connect-timeout "1" -o /dev/null http://1.1.1.1 || true; sleep 10
expected-output-pattern: '1.1.1.1:80'
- name: Test --filter-track-skb
uses: ./.github/actions/pwru-test
with:
test-name: ${{ matrix.kernel }}-filter-track-skb
pwru-flags: --filter-track-skb
pwru-pcap-filter: dst host 10.10.20.99
setup: |
iptables -w 10 -t nat -I OUTPUT 1 -d 10.10.20.99/32 -j DNAT --to-destination 10.10.14.2
gen-traffic: |
curl -vvv -sS --fail --connect-timeout "1" -o /dev/null http://10.10.20.99:80 || true
expected-output-pattern: '10.10.14.2:80'
- name: Test ARP filter
uses: ./.github/actions/pwru-test
with:
test-name: ${{ matrix.kernel }}-filter-arp
pwru-pcap-filter: 'arp and arp[7] = 1 and arp[24]= 169 and arp[25] = 254 and arp[26] = 0 and arp[27] = 1'
setup: |
ip net a pwru
ip l a pwru-veth type veth peer name pwru-veth-peer
ip l s pwru-veth-peer up
ip l s pwru-veth netns pwru
ip net e pwru ip l s pwru-veth up
ip r a 10.0.0.1 dev pwru-veth-peer
ip net e pwru ip a a 10.0.0.1 dev pwru-veth
ip net e pwru ip r a 169.254.0.1 dev pwru-veth
ip net e pwru ip r a default via 169.254.0.1 dev pwru-veth
gen-traffic: |
ping -W1 -c1 10.0.0.1 || true
expected-output-pattern: 'arp_rcv'
- name: Derive ifindex for next test [1/2]
uses: cilium/little-vm-helper@ad43ff511dd5365a0011ae9f864ec959c36daebf # v0.0.28
with:
provision: 'false'
cmd: cat /sys/class/net/lo/ifindex >> /host/ifindex
- name: Derive ifindex for next test [2/2]
id: ifindex
shell: bash
run: echo "ifindex=$(cat ifindex)" >> $GITHUB_OUTPUT
- name: Test --filter-skb-expr
uses: ./.github/actions/pwru-test
with:
test-name: ${{ matrix.kernel }}-filter-skb-expr
pwru-flags: --filter-skb-expr 'skb->dev->ifindex == ${{ steps.ifindex.outputs.ifindex }}'
pwru-pcap-filter: icmp
gen-traffic: |
ping -W1 -c1 127.0.0.1 || true
expected-output-pattern: 'icmp'
- name: Test --filter-ifname
uses: ./.github/actions/pwru-test
with:
test-name: ${{ matrix.kernel }}-filter-ifname
pwru-flags: --filter-ifname lo
pwru-pcap-filter: icmp
gen-traffic: |
ping -W1 -c1 127.0.0.1 || true
expected-output-pattern: 'icmp'
- name: Test --backend=kprobe-multi
if: ${{ (matrix.arch == 'amd64' && steps.kernel.outputs.vsn >= 518) || (matrix.arch == 'arm64' && steps.kernel.outputs.vsn >= 614)}}
uses: ./.github/actions/pwru-test
with:
test-name: ${{ matrix.kernel }}-kprobe-multi-basic
pwru-flags: --backend=kprobe-multi
pwru-pcap-filter: 'dst host 1.0.0.1 and port 8080'
setup: |
iptables -w 10 -I OUTPUT 1 -m tcp --proto tcp --dst 1.0.0.1/32 --dport 8080 -j DROP
gen-traffic: |
curl -vvv -sS --fail --connect-timeout "1" -o /dev/null http://1.0.0.1:8080 || true
expected-output-pattern: '1.0.0.1:8080.*(kfree_skb_reason|kfree_skb|sk_skb_reason_drop\b)'
- name: Test --filter-track-{tc,xdp}
if: ${{ steps.kernel.outputs.vsn >= 606 }}
uses: ./.github/actions/pwru-test
with:
test-name: ${{ matrix.kernel }}-filter-trace-tc-xdp
pwru-flags: --filter-trace-tc --filter-trace-xdp
pwru-pcap-filter: 'dst host 1.0.0.1 and port 8080'
setup: |
# install test-app
ip link add dummy0 type dummy
ip link set dummy0 up
/host/test-app/test-app --attach-type xdp --iface dummy0
/host/test-app/test-app --attach-type tc --iface dummy0
iptables -w 10 -I OUTPUT 1 -m tcp --proto tcp --dst 1.0.0.1/32 --dport 8080 -j DROP
gen-traffic: |
curl -vvv -sS --fail --connect-timeout "1" -o /dev/null http://1.0.0.1:8080 || true
expected-output-pattern: '1.0.0.1:8080.*(kfree_skb_reason|kfree_skb|sk_skb_reason_drop\b)'
- name: Fetch artifacts
if: ${{ !success() }}
uses: cilium/little-vm-helper@ad43ff511dd5365a0011ae9f864ec959c36daebf # v0.0.28
with:
provision: 'false'
cmd: |
for i in /tmp/pwru-*.status /tmp/pwru-*.ready /tmp/pwru-*.log; do
echo "--- \$i ---"
cat \$i || true
done