diff --git a/.github/checks/check-ip-prefix-duplicates.sh b/.github/checks/check-ip-prefix-duplicates.sh new file mode 100755 index 000000000..50f7f8e33 --- /dev/null +++ b/.github/checks/check-ip-prefix-duplicates.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# Change to the locations directory +cd locations || exit 1 + +# Extract IPv4 prefixes, sort them, and check for duplicates +ipv4_duplicates=$(cat ./*.yml | sed -n 's/^\s*prefix:\s*["\']?([^"\'\s#]+)["\']?/\1/p' | sort | uniq -cd) + +# Extract IPv6 prefixes, sort them, and check for duplicates +ipv6_duplicates=$(cat ./*.yml | sed -n 's/^\s*ipv6_prefix:\s*["\']\?\([0-9a-fA-F:]\+::\/[0-9]\+\)["\']\?.*/\1/p' | sort | uniq -cd) + +if [ -n "$ipv4_duplicates" ] || [ -n "$ipv6_duplicates" ]; then + if [ -n "$ipv4_duplicates" ]; then + echo "Duplicate IPv4 prefixes found:" + echo "$ipv4_duplicates" + fi + if [ -n "$ipv6_duplicates" ]; then + echo "Duplicate IPv6 prefixes found:" + echo "$ipv6_duplicates" + fi + exit 1 +else + echo "No duplicate prefixes found." +fi diff --git a/.github/workflows/check-ip-prefix-duplicates.yml b/.github/workflows/check-ip-prefix-duplicates.yml new file mode 100644 index 000000000..605a104ab --- /dev/null +++ b/.github/workflows/check-ip-prefix-duplicates.yml @@ -0,0 +1,17 @@ +--- +name: Check for duplicate IP prefixes + +on: [push, pull_request] # yamllint disable-line rule:truthy + +jobs: + ipv6-check: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Run IP prefix duplicate check + run: | + ./.github/checks/check-ip-prefix-duplicates.sh