diff --git a/build.gradle.kts b/build.gradle.kts index 4e791bb..38a5a70 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,15 +1,15 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.library") version "8.4.2" apply false - id("org.jetbrains.kotlin.android") version "2.2.0" apply false + id("com.android.library") version "8.2.0" apply false + id("org.jetbrains.kotlin.android") version "1.9.10" apply false id("org.jlleitschuh.gradle.ktlint") version "11.5.1" apply true - id("org.mozilla.rust-android-gradle.rust-android") version "0.9.6" apply false + id("org.mozilla.rust-android-gradle.rust-android") version "0.9.3" apply false id("maven-publish") apply true } allprojects { group = "com.kape.android" - version = "0.1.0" + version = "0.1.1" apply(plugin = "org.jlleitschuh.gradle.ktlint") apply(plugin = "maven-publish") } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 571136a..dbc7761 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Dec 12 13:54:33 CET 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/obfuscator/build.gradle.kts b/obfuscator/build.gradle.kts index 4cf643a..128167c 100644 --- a/obfuscator/build.gradle.kts +++ b/obfuscator/build.gradle.kts @@ -10,13 +10,13 @@ plugins { android { namespace = "com.kape.obfuscator" ndkVersion = sdkDirectory.resolve("ndk").listFilesOrdered().last().name +// ndkVersion = "26.1.10909125" - compileSdk = 36 + compileSdk = 34 defaultConfig { minSdk = 24 - externalNativeBuild.ndkBuild { - abiFilters("armeabi-v7a", "arm64-v8a", "x86", "x86_64") - arguments("-j${Runtime.getRuntime().availableProcessors()}") + ndk { + abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64") } } @@ -38,16 +38,14 @@ android { } } -kotlin { - jvmToolchain(17) -} - cargo { module = "src/main/rust/shadowsocks-rust" libname = "sslocal" targets = listOf("arm", "arm64", "x86", "x86_64") profile = "release" extraCargoBuildArguments = listOf("--bin", libname!!) + cargoCommand = "${System.getProperty("user.home")}/.cargo/bin/cargo" + rustcCommand = "${System.getProperty("user.home")}/.cargo/bin/rustc" features { noDefaultBut( arrayOf( @@ -64,20 +62,11 @@ cargo { exec = { spec, toolchain -> run { try { - Runtime.getRuntime().exec(arrayOf("python3", "-V")) + Runtime.getRuntime().exec("python3 -V >/dev/null 2>&1") spec.environment("RUST_ANDROID_GRADLE_PYTHON_COMMAND", "python3") - project.logger.lifecycle("Python 3 detected.") } catch (e: java.io.IOException) { - project.logger.lifecycle("No python 3 detected.") - try { - Runtime.getRuntime().exec(arrayOf("python", "-V")) - spec.environment("RUST_ANDROID_GRADLE_PYTHON_COMMAND", "python") - project.logger.lifecycle("Python detected.") - } catch (e: java.io.IOException) { - throw GradleException("No any python version detected. You should install the python first to compile project.") - } + throw GradleException("Please install Python3 in order to compile.") } - // https://developer.android.com/guide/practices/page-sizes#other-build-systems spec.environment("RUST_ANDROID_GRADLE_CC_LINK_ARG", "-Wl,-z,max-page-size=16384,-soname,lib$libname.so") spec.environment("RUST_ANDROID_GRADLE_LINKER_WRAPPER_PY", "$projectDir/$module/../linker-wrapper.py") spec.environment("RUST_ANDROID_GRADLE_TARGET", "target/${toolchain.target}/$profile/lib$libname.so") @@ -86,11 +75,15 @@ cargo { } tasks.whenTaskAdded { - when (name) { - "mergeDebugJniLibFolders", "mergeReleaseJniLibFolders" -> dependsOn("cargoBuild") + if (this.name == "javaPreCompileDebug" || this.name == "javaPreCompileRelease") { + this.dependsOn("cargoBuild") } } +kotlin { + jvmToolchain(17) +} + dependencies { - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3") } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/.circleci/config.yml b/obfuscator/src/main/rust/shadowsocks-rust/.circleci/config.yml index 25411ff..b21c69e 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/.circleci/config.yml +++ b/obfuscator/src/main/rust/shadowsocks-rust/.circleci/config.yml @@ -1,7 +1,7 @@ version: 2.1 orbs: - windows: circleci/windows@5.1.0 + windows: circleci/windows@2.4.0 jobs: build-linux: @@ -186,7 +186,7 @@ jobs: publish-github-releases: docker: - - image: circleci/golang:1.17 + - image: circleci/golang:1.12 steps: - attach_workspace: at: /tmp/workspace diff --git a/obfuscator/src/main/rust/shadowsocks-rust/.github/dependabot.yml b/obfuscator/src/main/rust/shadowsocks-rust/.github/dependabot.yml index 92bb2ac..e9c9a37 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/.github/dependabot.yml +++ b/obfuscator/src/main/rust/shadowsocks-rust/.github/dependabot.yml @@ -4,4 +4,23 @@ updates: directory: "/" schedule: interval: weekly - open-pull-requests-limit: 0 + open-pull-requests-limit: 10 + ignore: + - dependency-name: libc + versions: + - 0.2.92 + - dependency-name: tokio + versions: + - 1.4.0 + - dependency-name: bloomfilter + versions: + - 1.0.5 + - dependency-name: regex + versions: + - 1.4.5 + - dependency-name: serde + versions: + - 1.0.124 + - dependency-name: tower + versions: + - 0.4.6 diff --git a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-and-test.yml b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-and-test.yml index bd61a40..c17f554 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-and-test.yml +++ b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-and-test.yml @@ -1,13 +1,17 @@ name: Build & Test -on: [push, pull_request] +on: + push: + branches: [master] + pull_request: + branches: [master] env: CARGO_TERM_COLOR: always RUST_LOG: "trace" jobs: - build-and-test: + buid-test-check: strategy: matrix: platform: @@ -17,16 +21,8 @@ jobs: runs-on: ${{ matrix.platform }} steps: - - if: ${{ matrix.platform == 'ubuntu-latest' }} - name: Free Disk Space (Ubuntu) - uses: jlumbroso/free-disk-space@main - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - uses: Swatinem/rust-cache@v2 - - if: ${{ runner.os == 'Windows' }} - uses: ilammy/setup-nasm@v1 - - if: ${{ matrix.platform == 'ubuntu-latest' }} - name: Install LLVM and Clang - run: sudo apt update && sudo apt install -y clang - name: Install Rust run: | rustup set profile minimal @@ -35,10 +31,6 @@ jobs: rustup override set stable - name: Build & Test (Default) run: cargo test --verbose --no-fail-fast - - name: Build & Test (full) - run: cargo test --features "full" --verbose --no-fail-fast - - name: Build & Test (full-extra) - run: cargo test --features "full-extra" --verbose --no-fail-fast - name: Build & Test (Default) - shadowsocks run: cargo test --manifest-path ./crates/shadowsocks/Cargo.toml --verbose --no-fail-fast - name: Build & Test (--no-default-features) @@ -47,9 +39,9 @@ jobs: run: cargo test --manifest-path ./crates/shadowsocks/Cargo.toml --verbose --no-default-features --no-fail-fast - name: Build with All Features Enabled (Unix) if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} - run: cargo build --verbose --features "full-extra local-flow-stat utility-url-outline" + run: cargo build --verbose --features "local-http-rustls local-redir local-dns local-tun dns-over-tls dns-over-https stream-cipher aead-cipher-2022" - name: Build with All Features Enabled (Windows) if: ${{ runner.os == 'Windows' }} - run: cargo build --verbose --features "full-extra local-flow-stat utility-url-outline winservice" + run: cargo build --verbose --features "local-http-rustls local-dns dns-over-tls dns-over-https stream-cipher aead-cipher-2022" - name: Build with All Features Enabled - shadowsocks - run: cargo build --manifest-path ./crates/shadowsocks/Cargo.toml --verbose --features "stream-cipher aead-cipher-extra aead-cipher-2022 aead-cipher-2022-extra security-replay-attack-detect" + run: cargo build --manifest-path ./crates/shadowsocks/Cargo.toml --verbose --features "stream-cipher aead-cipher-2022" diff --git a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-docker-image.yml b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-docker-image.yml index 214e3c3..968376e 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-docker-image.yml +++ b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-docker-image.yml @@ -5,7 +5,7 @@ on: - v* jobs: - build-docker-image: + build: runs-on: ubuntu-latest strategy: matrix: @@ -14,22 +14,22 @@ jobs: - sslocal steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v3 - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v2 - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Docker metadata id: metadata - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v4 with: images: ghcr.io/${{ github.repository_owner }}/${{ matrix.bin }}-rust - name: Build and release Docker images - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v3 with: platforms: linux/386,linux/amd64,linux/arm64/v8 target: ${{ matrix.bin }} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-msrv.yml b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-msrv.yml deleted file mode 100644 index 1eda73e..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-msrv.yml +++ /dev/null @@ -1,99 +0,0 @@ -name: Build MSRV - -on: [push, pull_request] - -env: - CARGO_TERM_COLOR: always - RUST_LOG: "trace" - -jobs: - build-msrv-shadowsocks-rust: - strategy: - matrix: - platform: - - ubuntu-latest - - windows-latest - - macos-latest - runs-on: ${{ matrix.platform }} - - steps: - - if: ${{ matrix.platform == 'ubuntu-latest' }} - name: Free Disk Space (Ubuntu) - uses: jlumbroso/free-disk-space@main - - if: ${{ matrix.platform == 'ubuntu-latest' }} - name: Install LLVM and Clang - run: sudo apt update && sudo apt install -y clang - - uses: actions/checkout@v4 - - uses: Swatinem/rust-cache@v2 - - if: ${{ runner.os == 'Windows' }} - uses: ilammy/setup-nasm@v1 - - name: Install Rust - run: | - rustup set profile minimal - rustup toolchain install 1.85 - rustup default 1.85 - rustup override set 1.85 - - name: Build with All Features Enabled (Unix) - if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} - run: cargo build --verbose --features "full-extra local-flow-stat utility-url-outline" - - name: Build with All Features Enabled (Windows) - if: ${{ runner.os == 'Windows' }} - run: cargo build --verbose --features "full-extra local-flow-stat utility-url-outline winservice" - - build-msrv-shadowsocks-service: - strategy: - matrix: - platform: - - ubuntu-latest - - windows-latest - - macos-latest - runs-on: ${{ matrix.platform }} - - steps: - - if: ${{ matrix.platform == 'ubuntu-latest' }} - name: Free Disk Space (Ubuntu) - uses: jlumbroso/free-disk-space@main - - if: ${{ matrix.platform == 'ubuntu-latest' }} - name: Install LLVM and Clang - run: sudo apt install -y clang - - uses: actions/checkout@v4 - - uses: Swatinem/rust-cache@v2 - - if: ${{ runner.os == 'Windows' }} - uses: ilammy/setup-nasm@v1 - - name: Install Rust - run: | - rustup set profile minimal - rustup toolchain install 1.85 - rustup default 1.85 - rustup override set 1.85 - - name: Build with All Features Enabled - run: cargo build --manifest-path crates/shadowsocks-service/Cargo.toml --verbose --features "full dns-over-tls dns-over-https dns-over-h3 local-dns local-flow-stat local-http-rustls local-tun local-fake-dns local-online-config stream-cipher aead-cipher-extra aead-cipher-2022 aead-cipher-2022-extra security-replay-attack-detect" - - build-msrv-shadowsocks: - strategy: - matrix: - platform: - - ubuntu-latest - - windows-latest - - macos-latest - runs-on: ${{ matrix.platform }} - - steps: - - if: ${{ matrix.platform == 'ubuntu-latest' }} - name: Free Disk Space (Ubuntu) - uses: jlumbroso/free-disk-space@main - - if: ${{ matrix.platform == 'ubuntu-latest' }} - name: Install LLVM and Clang - run: sudo apt install -y clang - - uses: actions/checkout@v4 - - uses: Swatinem/rust-cache@v2 - - if: ${{ runner.os == 'Windows' }} - uses: ilammy/setup-nasm@v1 - - name: Install Rust - run: | - rustup set profile minimal - rustup toolchain install 1.85 - rustup default 1.85 - rustup override set 1.85 - - name: Build with All Features Enabled - run: cargo build --manifest-path crates/shadowsocks/Cargo.toml --verbose --features "stream-cipher aead-cipher-extra aead-cipher-2022 aead-cipher-2022-extra security-replay-attack-detect" diff --git a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-nightly-release.yml b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-nightly-release.yml index c6e2cbd..90eebd6 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-nightly-release.yml +++ b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-nightly-release.yml @@ -8,79 +8,38 @@ env: CARGO_TERM_COLOR: always jobs: - build-nightly-cross: + build-cross: runs-on: ubuntu-latest env: RUST_BACKTRACE: full strategy: fail-fast: false matrix: - platform: - - target: x86_64-unknown-linux-gnu - toolchain: stable - - target: x86_64-unknown-linux-musl - toolchain: stable - - target: aarch64-unknown-linux-gnu - toolchain: stable - - target: aarch64-unknown-linux-musl - toolchain: stable - - target: mips-unknown-linux-gnu - toolchain: nightly - - target: mipsel-unknown-linux-gnu - toolchain: nightly - - target: mips64el-unknown-linux-gnuabi64 - toolchain: nightly - - target: x86_64-unknown-freebsd - toolchain: stable - - target: x86_64-unknown-netbsd - toolchain: stable - - target: loongarch64-unknown-linux-gnu - toolchain: stable - - target: loongarch64-unknown-linux-musl - toolchain: stable - - target: powerpc-unknown-linux-gnu - toolchain: stable - - target: powerpc64-unknown-linux-gnu - toolchain: stable - - target: powerpc64le-unknown-linux-gnu - toolchain: stable - - target: riscv64gc-unknown-linux-gnu - toolchain: stable - - target: riscv64gc-unknown-linux-musl - toolchain: stable - - target: aarch64-linux-android - toolchain: stable - - target: x86_64-linux-android - toolchain: stable + target: + - x86_64-unknown-linux-musl + - aarch64-unknown-linux-musl steps: - - name: Free Disk Space (Ubuntu) - uses: jlumbroso/free-disk-space@main - - - name: Install LLVM and Clang - run: sudo apt update && sudo apt install -y clang - - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Install Rust run: | rustup set profile minimal - rustup toolchain install ${{ matrix.platform.toolchain }} - rustup default ${{ matrix.platform.toolchain }} - rustup override set ${{ matrix.platform.toolchain }} + rustup toolchain install stable + rustup default stable + rustup override set stable + rustup target add --toolchain stable ${{ matrix.target }} - name: Install cross - run: cargo install cross --git https://github.com/cross-rs/cross + run: cargo install cross - - name: Build ${{ matrix.platform.target }} + - name: Build ${{ matrix.target }} timeout-minutes: 120 run: | - compile_target=${{ matrix.platform.target }} - - compile_features="-f full" + compile_target=${{ matrix.target }} - if [[ "$compile_target" == *"-windows-"* ]]; then - compile_features="$compile_features -f winservice" + if [[ "$compile_target" == *"-linux-"* || "$compile_target" == *"-apple-"* ]]; then + compile_features="-f local-redir -f local-tun" fi if [[ "$compile_target" == "mips-"* || "$compile_target" == "mipsel-"* || "$compile_target" == "mips64-"* || "$compile_target" == "mips64el-"* ]]; then @@ -88,24 +47,21 @@ jobs: if [[ "$?" == "0" ]]; then compile_compress="-u" fi - - compile_nightly="-n" - #compile_cargo_flags="-Z build-std=std,panic_abort,proc_macro" fi cd build - ./build-release -t ${{ matrix.platform.target }} $compile_features $compile_compress $compile_nightly $compile_cargo_flags + ./build-release -t ${{ matrix.target }} $compile_features $compile_compress - name: Upload Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: - name: ${{ matrix.platform.target }} + name: ${{ matrix.target }} path: build/release/* - build-nightly-unix: + build-unix: runs-on: ${{ matrix.os }} env: - BUILD_EXTRA_FEATURES: "full" + BUILD_EXTRA_FEATURES: "local-redir local-tun" RUST_BACKTRACE: full strategy: fail-fast: false @@ -115,7 +71,7 @@ jobs: - x86_64-apple-darwin - aarch64-apple-darwin steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Install GNU tar if: runner.os == 'macOS' @@ -138,19 +94,18 @@ jobs: ./build/build-host-release -t ${{ matrix.target }} - name: Upload Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: name: ${{ matrix.target }} path: build/release/* - build-nightly-windows: + build-windows: runs-on: windows-latest env: RUSTFLAGS: "-C target-feature=+crt-static" RUST_BACKTRACE: full steps: - - uses: actions/checkout@v4 - - uses: ilammy/setup-nasm@v1 + - uses: actions/checkout@v3 - name: Install Rust run: | @@ -161,10 +116,10 @@ jobs: - name: Build release run: | - pwsh ./build/build-host-release.ps1 "full winservice" + pwsh ./build/build-host-release.ps1 - name: Upload Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: name: windows-native path: build/release/* diff --git a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-release.yml b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-release.yml index 0113001..0191c76 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-release.yml +++ b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/build-release.yml @@ -14,107 +14,50 @@ env: CARGO_TERM_COLOR: always jobs: - build-release-cross: + build-cross: runs-on: ubuntu-latest env: RUST_BACKTRACE: full strategy: fail-fast: false matrix: - platform: - - target: i686-unknown-linux-musl - toolchain: stable - - target: x86_64-pc-windows-gnu - toolchain: stable - - target: x86_64-unknown-linux-gnu - toolchain: stable - - target: x86_64-unknown-linux-musl - toolchain: stable - - target: armv7-unknown-linux-musleabihf - toolchain: stable - - target: armv7-unknown-linux-gnueabihf - toolchain: stable - - target: arm-unknown-linux-gnueabi - toolchain: stable - - target: arm-unknown-linux-gnueabihf - toolchain: stable - - target: arm-unknown-linux-musleabi - toolchain: stable - - target: arm-unknown-linux-musleabihf - toolchain: stable - - target: aarch64-unknown-linux-gnu - toolchain: stable - - target: aarch64-unknown-linux-musl - toolchain: stable - - target: mips-unknown-linux-gnu - toolchain: nightly - # cross mips-*-musl images are disabled - # - target: mips-unknown-linux-musl - # toolchain: nightly - - target: mipsel-unknown-linux-gnu - toolchain: nightly - # - target: mipsel-unknown-linux-musl - # toolchain: nightly - # FIXME: ring doesn't support mips64 CPU - # - target: mips64-unknown-linux-gnuabi64 - # toolchain: nightly - # - target: mips64-unknown-linux-muslabi64 - # toolchain: nightly - - target: mips64el-unknown-linux-gnuabi64 - toolchain: nightly - # FIXME: Link Error. - # = note: mips64el-linux-muslsf-gcc: error: crt1.o: No such file or directory - # mips64el-linux-muslsf-gcc: error: crti.o: No such file or directory - # mips64el-linux-muslsf-gcc: error: crtbegin.o: No such file or directory - # mips64el-linux-muslsf-gcc: error: crtend.o: No such file or directory - # mips64el-linux-muslsf-gcc: error: crtn.o: No such file or directory - # - target: mips64el-unknown-linux-muslabi64 - # toolchain: nightly - - target: x86_64-unknown-freebsd - toolchain: stable - - target: x86_64-unknown-netbsd - toolchain: stable - - target: loongarch64-unknown-linux-gnu - toolchain: stable - - target: loongarch64-unknown-linux-musl - toolchain: stable - - target: riscv64gc-unknown-linux-gnu - toolchain: stable - - target: riscv64gc-unknown-linux-musl - toolchain: stable - - target: aarch64-linux-android - toolchain: stable - - target: x86_64-linux-android - toolchain: stable + target: + - i686-unknown-linux-musl + - x86_64-pc-windows-gnu + - x86_64-unknown-linux-gnu + - x86_64-unknown-linux-musl + - armv7-unknown-linux-musleabihf + - armv7-unknown-linux-gnueabihf + - arm-unknown-linux-gnueabi + - arm-unknown-linux-gnueabihf + - arm-unknown-linux-musleabi + - arm-unknown-linux-musleabihf + - aarch64-unknown-linux-gnu + - aarch64-unknown-linux-musl + - mips-unknown-linux-musl + - mipsel-unknown-linux-musl steps: - - name: Free Disk Space (Ubuntu) - uses: jlumbroso/free-disk-space@main - - - name: Install LLVM and Clang - run: sudo apt update && sudo apt install -y clang - - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Install Rust run: | rustup set profile minimal - rustup toolchain install ${{ matrix.platform.toolchain }} - rustup default ${{ matrix.platform.toolchain }} - rustup override set ${{ matrix.platform.toolchain }} + rustup toolchain install stable + rustup default stable + rustup override set stable + rustup target add --toolchain stable ${{ matrix.target }} - name: Install cross - run: cargo install cross --git https://github.com/cross-rs/cross + run: cargo install cross - - name: Build ${{ matrix.platform.target }} + - name: Build ${{ matrix.target }} timeout-minutes: 120 run: | - compile_target=${{ matrix.platform.target }} + compile_target=${{ matrix.target }} - compile_features="-f full" - - if [[ "$compile_target" == *"-windows-"* ]]; then - compile_features="$compile_features -f winservice" + if [[ "$compile_target" == *"-linux-"* || "$compile_target" == *"-apple-"* ]]; then + compile_features="-f local-redir -f local-tun" fi if [[ "$compile_target" == "mips-"* || "$compile_target" == "mipsel-"* || "$compile_target" == "mips64-"* || "$compile_target" == "mips64el-"* ]]; then @@ -122,16 +65,13 @@ jobs: if [[ "$?" == "0" ]]; then compile_compress="-u" fi - - compile_nightly="-n" - #compile_cargo_flags="-Z build-std=std,panic_abort,proc_macro" fi cd build - ./build-release -t ${{ matrix.platform.target }} $compile_features $compile_compress $compile_nightly $compile_cargo_flags + ./build-release -t ${{ matrix.target }} $compile_features $compile_compress - name: Upload Github Assets - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -139,10 +79,10 @@ jobs: prerelease: ${{ contains(github.ref_name, '-') }} tag_name: ${{ inputs.tag || github.ref_name }} - build-release-unix: + build-unix: runs-on: ${{ matrix.os }} env: - BUILD_EXTRA_FEATURES: "full" + BUILD_EXTRA_FEATURES: "local-redir local-tun" RUST_BACKTRACE: full strategy: fail-fast: false @@ -153,7 +93,7 @@ jobs: - x86_64-apple-darwin - aarch64-apple-darwin steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Install GNU tar if: runner.os == 'macOS' @@ -176,7 +116,7 @@ jobs: ./build/build-host-release -t ${{ matrix.target }} - name: Upload Github Assets - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -184,14 +124,13 @@ jobs: prerelease: ${{ contains(github.ref_name, '-') }} tag_name: ${{ inputs.tag || github.ref_name }} - build-release-windows: + build-windows: runs-on: windows-latest env: RUSTFLAGS: "-C target-feature=+crt-static" RUST_BACKTRACE: full steps: - - uses: actions/checkout@v4 - - uses: ilammy/setup-nasm@v1 + - uses: actions/checkout@v3 - name: Install Rust run: | @@ -202,10 +141,10 @@ jobs: - name: Build release run: | - pwsh ./build/build-host-release.ps1 "full winservice" + pwsh ./build/build-host-release.ps1 - name: Upload Github Assets - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/clippy-check.yml b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/clippy-check.yml index 4ae180e..a5f49f3 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/clippy-check.yml +++ b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/clippy-check.yml @@ -1,6 +1,10 @@ name: Clippy Check -on: [push, pull_request] +on: + push: + branches: [master] + pull_request: + branches: [master] env: CARGO_TERM_COLOR: always @@ -17,19 +21,19 @@ jobs: runs-on: ${{ matrix.platform }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - uses: Swatinem/rust-cache@v2 - - if: ${{ runner.os == 'Windows' }} - uses: ilammy/setup-nasm@v1 - name: Install Rust run: | rustup set profile minimal - rustup toolchain install stable --component clippy + rustup toolchain install nightly --component clippy + rustup default nightly + rustup override set nightly - name: Clippy Check - uses: actions-rs/clippy-check@v1 + uses: actions-rs-plus/clippy-check@main with: - token: ${{ secrets.GITHUB_TOKEN }} args: | - --features "full-extra local-flow-stat utility-url-outline" - -- -A clippy::absurd_extreme_comparisons - name: clippy ${{ matrix.platform }} + --features "local-http-rustls local-redir local-flow-stat local-dns dns-over-tls dns-over-https stream-cipher aead-cipher-2022" -- -Z macro-backtrace + -W clippy::absurd_extreme_comparisons + -W clippy::erasing_op + -A clippy::collapsible_else_if diff --git a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/deny-check.yml b/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/deny-check.yml deleted file mode 100644 index ece405a..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/.github/workflows/deny-check.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Cargo Deny Check -on: [push, pull_request] -jobs: - deny-check: - runs-on: ubuntu-latest - strategy: - matrix: - checks: - - advisories - - bans licenses sources - - # Prevent sudden announcement of a new advisory from failing ci: - continue-on-error: ${{ matrix.checks == 'advisories' }} - - steps: - - uses: actions/checkout@v4 - - uses: EmbarkStudios/cargo-deny-action@v2 - with: - command: check ${{ matrix.checks }} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/Cargo.lock b/obfuscator/src/main/rust/shadowsocks-rust/Cargo.lock index 6bf2cf2..09d6b80 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/Cargo.lock +++ b/obfuscator/src/main/rust/shadowsocks-rust/Cargo.lock @@ -1,21 +1,21 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 4 +version = 3 [[package]] name = "addr2line" -version = "0.24.2" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] [[package]] -name = "adler2" -version = "2.0.0" +name = "adler" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aead" @@ -29,9 +29,9 @@ dependencies = [ [[package]] name = "aes" -version = "0.8.4" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if", "cipher", @@ -67,43 +67,15 @@ dependencies = [ "zeroize", ] -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "getrandom 0.3.3", - "once_cell", - "version_check", - "zerocopy", -] - [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - [[package]] name = "android-tzdata" version = "0.1.1" @@ -121,132 +93,115 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", - "once_cell", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "arc-swap" -version = "1.7.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" [[package]] name = "arrayref" -version = "0.3.9" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - -[[package]] -name = "async-channel" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-task" -version = "4.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", ] [[package]] -name = "atomic-waker" -version = "1.1.2" +name = "atomic-polyfill" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" +dependencies = [ + "critical-section", +] [[package]] name = "autocfg" -version = "1.4.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", + "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", ] [[package]] @@ -257,53 +212,21 @@ checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] name = "base64" -version = "0.22.1" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "base64ct" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" - -[[package]] -name = "bindgen" -version = "0.69.5" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags 2.9.0", - "cexpr", - "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.101", -] +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] -name = "bindgen" -version = "0.71.1" +name = "bit-vec" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" -dependencies = [ - "bitflags 2.9.0", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "proc-macro2", - "quote", - "regex", - "rustc-hash 2.1.1", - "shlex", - "syn 2.0.101", -] +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bitflags" @@ -313,27 +236,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" - -[[package]] -name = "bitvec" -version = "1.0.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "blake3" -version = "1.8.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" dependencies = [ "arrayref", "arrayvec", @@ -351,73 +262,17 @@ dependencies = [ "generic-array", ] -[[package]] -name = "blocking" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" -dependencies = [ - "async-channel", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - [[package]] name = "bloomfilter" -version = "3.0.1" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f6d7f06817e48ea4e17532fa61bc4e8b9a101437f0623f69d2ea54284f3a817" +checksum = "b92db7965d438b8b4b1c1d0aedd188440a1084593c9eb7f6657e3df7e906d934" dependencies = [ - "getrandom 0.2.16", + "bit-vec", + "getrandom", "siphasher", ] -[[package]] -name = "brotli" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bson" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af8113ff51309e2779e8785a246c10fb783e8c2452f134d6257fd71cc03ccd6c" -dependencies = [ - "ahash", - "base64", - "bitvec", - "getrandom 0.2.16", - "getrandom 0.3.3", - "hex", - "indexmap", - "js-sys", - "once_cell", - "rand 0.9.1", - "serde", - "serde_bytes", - "serde_json", - "time", - "uuid", -] - [[package]] name = "build-time" version = "0.1.3" @@ -428,14 +283,14 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", ] [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byte_string" @@ -451,34 +306,24 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" - -[[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" -dependencies = [ - "cc", - "pkg-config", -] +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "c2rust-bitfields" -version = "0.19.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "367e5d1b30f28be590b6b3868da1578361d29d9bfac516d22f497d28ed7c9055" +checksum = "b43c3f07ab0ef604fa6f595aa46ec2f8a22172c975e186f6f5bf9829a3b72c41" dependencies = [ "c2rust-bitfields-derive", ] [[package]] name = "c2rust-bitfields-derive" -version = "0.19.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a279db9c50c4024eeca1a763b6e0f033848ce74e83e47454bcf8a8a98f7b0b56" +checksum = "d3cbc102e2597c9744c8bd8c15915d554300601c91a079430d309816b0912545" dependencies = [ "proc-macro2", "quote", @@ -497,13 +342,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.22" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32db95edf998450acc7881c932f94cd9b05c87b4b2599e8bab064753da4acfd1" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ - "jobserver", "libc", - "shlex", ] [[package]] @@ -518,27 +361,12 @@ dependencies = [ "subtle", ] -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - [[package]] name = "chacha20" version = "0.9.1" @@ -565,14 +393,16 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", + "js-sys", "num-traits", - "windows-link", + "wasm-bindgen", + "windows-targets 0.48.5", ] [[package]] @@ -586,31 +416,20 @@ dependencies = [ "zeroize", ] -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", -] - [[package]] name = "clap" -version = "4.5.38" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed93b9805f8ba930df42c2590f05453d5ec36cbb85d018868a5b24d31f6ac000" +checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.38" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "379026ff283facf611b0ea629334361c4211d1b12ee01024eec1591133b04120" +checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" dependencies = [ "anstream", "anstyle", @@ -621,45 +440,36 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "cmake" -version = "0.1.54" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" dependencies = [ "cc", ] [[package]] name = "colorchoice" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" - -[[package]] -name = "concurrent-queue" -version = "2.5.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "const-oid" -version = "0.9.6" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] name = "constant_time_eq" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "core-foundation" @@ -671,70 +481,46 @@ dependencies = [ "libc", ] -[[package]] -name = "core-foundation" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" -version = "0.8.7" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.17" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] -[[package]] -name = "crc32fast" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" -dependencies = [ - "cfg-if", -] - [[package]] name = "critical-section" -version = "1.2.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" [[package]] name = "crossbeam-channel" -version = "0.5.15" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ + "cfg-if", "crossbeam-utils", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.18" +name = "crossbeam-utils" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ - "crossbeam-utils", + "cfg-if", ] -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - [[package]] name = "crypto-bigint" version = "0.5.5" @@ -742,7 +528,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core 0.6.4", + "rand_core", "subtle", "zeroize", ] @@ -754,7 +540,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core 0.6.4", + "rand_core", "typenum", ] @@ -778,24 +564,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" - -[[package]] -name = "defmt" -version = "0.3.100" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0963443817029b2024136fc4dd07a5107eb8f977eaf18fcd1fdeb11306b64ad" -dependencies = [ - "defmt 1.0.1", -] +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" [[package]] name = "defmt" -version = "1.0.1" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "548d977b6da32fa1d1fda2876453da1e7df63ad0304c8b3dae4dbe7b96f39b78" +checksum = "a8a2d011b2fee29fb7d659b83c43fce9a2cb4df453e16d441a51448e448f3f98" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -803,45 +580,36 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.0.1" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d4fc12a85bcf441cfe44344c4b72d58493178ce635338a3f3b78943aceb258e" +checksum = "54f0216f6c5acb5ae1a47050a6645024e6edafc2ee32d421955eccfef12ef92e" dependencies = [ "defmt-parser", - "proc-macro-error2", + "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", ] [[package]] name = "defmt-parser" -version = "1.0.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +checksum = "269924c02afd7f94bc4cecbfa5c379f6ffcf9766b3408fe63d22c728654eccd0" dependencies = [ - "thiserror 2.0.12", + "thiserror", ] [[package]] name = "der" -version = "0.7.10" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" dependencies = [ "const-oid", "zeroize", ] -[[package]] -name = "deranged" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" -dependencies = [ - "powerfmt", -] - [[package]] name = "derivative" version = "2.2.0" @@ -872,55 +640,23 @@ dependencies = [ [[package]] name = "directories" -version = "6.0.0" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.5.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.59.0", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "dynosaur" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "277b2cb52d2df4acece06bb16bc0bb0a006970c7bf504eac2d310927a6f65890" -dependencies = [ - "dynosaur_derive", - "trait-variant", -] - -[[package]] -name = "dynosaur_derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a4102713839a8c01c77c165bc38ef2e83948f6397fa1e1dcfacec0f07b149d3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", + "windows-sys 0.48.0", ] [[package]] @@ -944,12 +680,6 @@ dependencies = [ "signature", ] -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - [[package]] name = "elliptic-curve" version = "0.13.8" @@ -962,7 +692,7 @@ dependencies = [ "ff", "generic-array", "group", - "rand_core 0.6.4", + "rand_core", "sec1", "subtle", "zeroize", @@ -970,130 +700,98 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.35" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] [[package]] name = "enum-as-inner" -version = "0.6.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.101", -] - -[[package]] -name = "env_filter" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" -dependencies = [ - "log", - "regex", + "syn 2.0.40", ] [[package]] name = "env_logger" -version = "0.11.8" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" dependencies = [ - "anstream", - "anstyle", - "env_filter", - "jiff", + "humantime", + "is-terminal", "log", + "regex", + "termcolor", ] [[package]] name = "equivalent" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.11" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "etherparse" -version = "0.18.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff83a5facf1a7cbfef93cfb48d6d4fb6a1f42d8ac2341a96b3255acb4d4f860" +checksum = "827292ea592108849932ad8e30218f8b1f21c0dfd0696698a18b5d0aed62d990" dependencies = [ "arrayvec", ] [[package]] -name = "event-listener" -version = "5.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" +name = "fastrand" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ - "event-listener", - "pin-project-lite", + "instant", ] [[package]] name = "fastrand" -version = "2.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "ff" -version = "0.13.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "rand_core 0.6.4", + "rand_core", "subtle", ] [[package]] name = "filetime" -version = "0.2.25" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" dependencies = [ "cfg-if", "libc", - "libredox", - "windows-sys 0.59.0", -] - -[[package]] -name = "flate2" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" -dependencies = [ - "crc32fast", - "miniz_oxide", + "redox_syscall", + "windows-sys 0.52.0", ] [[package]] @@ -1135,17 +833,11 @@ dependencies = [ "libc", ] -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - [[package]] name = "futures" -version = "0.3.31" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" dependencies = [ "futures-channel", "futures-core", @@ -1158,9 +850,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", "futures-sink", @@ -1168,15 +860,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" dependencies = [ "futures-core", "futures-task", @@ -1185,48 +877,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" - -[[package]] -name = "futures-lite" -version = "2.6.0" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" -dependencies = [ - "futures-core", - "pin-project-lite", -] +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-channel", "futures-core", @@ -1240,19 +922,6 @@ dependencies = [ "slab", ] -[[package]] -name = "generator" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" -dependencies = [ - "cfg-if", - "libc", - "log", - "rustversion", - "windows", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -1266,36 +935,20 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "getrandom" -version = "0.3.3" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" dependencies = [ "cfg-if", - "js-sys", "libc", - "r-efi", - "wasi 0.14.2+wasi-0.2.4", - "wasm-bindgen", + "wasi", ] [[package]] name = "ghash" -version = "0.5.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" dependencies = [ "opaque-debug", "polyval", @@ -1303,15 +956,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "glob" -version = "0.3.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "group" @@ -1320,23 +967,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core", "subtle", ] [[package]] name = "h2" -version = "0.4.10" +version = "0.3.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.11", + "indexmap 2.1.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +checksum = "e1d308f63daf4181410c242d34c11f928dcb3aa105852019e043c9d1f4e4368a" dependencies = [ - "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http", - "indexmap", + "futures-util", + "http 1.0.0", + "indexmap 2.1.0", "slab", "tokio", "tokio-util", @@ -1345,74 +1011,83 @@ dependencies = [ [[package]] name = "h3" -version = "0.0.7" +version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfb059a4f28a66f186ed16ad912d142f490676acba59353831d7cb45a96b0d3" +checksum = "6de6ca43eed186fd055214af06967b0a7a68336cefec7e8a4004e96efeaccb9e" dependencies = [ "bytes", - "fastrand", + "fastrand 1.9.0", "futures-util", - "http", - "pin-project-lite", + "http 0.2.11", "tokio", + "tracing", ] [[package]] name = "h3-quinn" -version = "0.0.9" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d482318ae94198fc8e3cbb0b7ba3099c865d744e6ec7c62039ca7b6b6c66fbf" +checksum = "2d4a1a1763e4f3e82ee9f1ecf2cf862b22cc7316ebe14684e42f94532b5ec64d" dependencies = [ "bytes", "futures", "h3", "quinn", - "tokio", + "quinn-proto", "tokio-util", ] [[package]] name = "hash32" -version = "0.3.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" dependencies = [ "byteorder", ] [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "heapless" -version = "0.8.0" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" dependencies = [ + "atomic-polyfill", "hash32", + "rustc_version", + "spin 0.9.8", "stable_deref_trait", ] [[package]] name = "heck" -version = "0.5.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] -name = "hex" -version = "0.4.3" +name = "hermit-abi" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hickory-proto" -version = "0.25.2" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" +checksum = "091a6fbccf4860009355e3efc52ff4acf37a63489aad7435372d44ceeb6fbbcf" dependencies = [ "async-trait", "bytes", @@ -1422,59 +1097,62 @@ dependencies = [ "futures-channel", "futures-io", "futures-util", - "h2", + "h2 0.3.22", "h3", "h3-quinn", - "http", - "idna", + "http 0.2.11", + "idna 0.4.0", "ipnet", + "native-tls", "once_cell", - "pin-project-lite", "quinn", - "rand 0.9.1", - "ring", - "rustls", + "rand", + "rustls 0.21.10", + "rustls-native-certs 0.6.3", + "rustls-pemfile 1.0.4", "serde", - "thiserror 2.0.12", + "thiserror", "tinyvec", "tokio", - "tokio-rustls", + "tokio-native-tls", + "tokio-rustls 0.24.1", "tracing", "url", - "webpki-roots 0.26.11", + "webpki-roots 0.25.3", ] [[package]] name = "hickory-resolver" -version = "0.25.2" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" +checksum = "35b8f021164e6a984c9030023544c57789c51760065cd510572fedcfb04164e8" dependencies = [ "cfg-if", "futures-util", "hickory-proto", "ipconfig", - "moka", + "lru-cache", "once_cell", "parking_lot", - "quinn", - "rand 0.9.1", + "rand", "resolv-conf", - "rustls", + "rustls 0.21.10", + "rustls-native-certs 0.6.3", "serde", "smallvec", - "thiserror 2.0.12", + "thiserror", "tokio", - "tokio-rustls", + "tokio-native-tls", + "tokio-rustls 0.24.1", "tracing", - "webpki-roots 0.26.11", + "webpki-roots 0.25.3", ] [[package]] name = "hkdf" -version = "0.12.4" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" dependencies = [ "hmac", ] @@ -1488,11 +1166,33 @@ dependencies = [ "digest", ] +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + [[package]] name = "http" -version = "1.3.1" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" dependencies = [ "bytes", "fnv", @@ -1501,32 +1201,43 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.1" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.11", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" dependencies = [ "bytes", - "http", + "http 1.0.0", ] [[package]] name = "http-body-util" -version = "0.1.3" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" dependencies = [ "bytes", - "futures-core", - "http", - "http-body", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.10.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" @@ -1536,99 +1247,93 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.2.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "1.6.0" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", + "futures-core", "futures-util", - "h2", - "http", - "http-body", + "h2 0.3.22", + "http 0.2.11", + "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "smallvec", + "socket2 0.4.10", "tokio", + "tower-service", + "tracing", "want", ] [[package]] -name = "hyper-rustls" -version = "0.27.5" +name = "hyper" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "403f9214f3e703236b221f1a9cd88ec8b4adfa5296de01ab96216361f4692f56" dependencies = [ + "bytes", + "futures-channel", "futures-util", - "http", - "hyper", - "hyper-util", - "rustls", - "rustls-native-certs", - "rustls-pki-types", + "h2 0.4.0", + "http 1.0.0", + "http-body 1.0.0", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", "tokio", - "tokio-rustls", - "tower-service", - "webpki-roots 0.26.11", + "want", ] [[package]] -name = "hyper-tls" -version = "0.6.0" +name = "hyper-rustls" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ - "bytes", - "http-body-util", - "hyper", - "hyper-util", - "native-tls", + "futures-util", + "http 0.2.11", + "hyper 0.14.27", + "rustls 0.21.10", "tokio", - "tokio-native-tls", - "tower-service", + "tokio-rustls 0.24.1", ] [[package]] -name = "hyper-util" -version = "0.1.11" +name = "hyper-tls" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "libc", - "pin-project-lite", - "socket2", + "hyper 0.14.27", + "native-tls", "tokio", - "tower-service", - "tracing", + "tokio-native-tls", ] [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", - "log", "wasm-bindgen", - "windows-core 0.61.0", + "windows-core", ] [[package]] @@ -1641,129 +1346,52 @@ dependencies = [ ] [[package]] -name = "icu_collections" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" -dependencies = [ - "displaydoc", - "potential_utf", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" - -[[package]] -name = "icu_properties" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2549ca8c7241c82f59c80ba2a6f415d931c5b58d24fb8412caa1a1f02c49139a" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "potential_utf", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8197e866e47b68f8f7d95249e172903bec06004b18b2937f1095d40a0c57de04" - -[[package]] -name = "icu_provider" -version = "2.0.0" +name = "idna" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ - "displaydoc", - "icu_locale_core", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", + "unicode-bidi", + "unicode-normalization", ] [[package]] name = "idna" -version = "1.0.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", + "unicode-bidi", + "unicode-normalization", ] [[package]] -name = "idna_adapter" -version = "1.2.1" +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "icu_normalizer", - "icu_properties", + "autocfg", + "hashbrown 0.12.3", ] [[package]] name = "indexmap" -version = "2.9.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.14.3", ] [[package]] name = "inotify" -version = "0.11.0" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" dependencies = [ - "bitflags 2.9.0", + "bitflags 1.3.2", "inotify-sys", "libc", ] @@ -1779,30 +1407,45 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.4" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ "generic-array", ] +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ioctl-sys" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bd11f3a29434026f5ff98c730b668ba74b1033637b8817940b54d040696133c" + [[package]] name = "ipconfig" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2", + "socket2 0.5.5", "widestring", "windows-sys 0.48.0", - "winreg 0.50.0", + "winreg", ] [[package]] name = "ipnet" -version = "2.11.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "iprange" @@ -1814,34 +1457,21 @@ dependencies = [ ] [[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.13.0" +name = "is-terminal" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "either", + "hermit-abi", + "rustix", + "windows-sys 0.48.0", ] [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jemalloc-sys" @@ -1863,47 +1493,12 @@ dependencies = [ "libc", ] -[[package]] -name = "jiff" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02000660d30638906021176af16b17498bd0d12813dbfe7b276d8bc7f3c0806" -dependencies = [ - "jiff-static", - "log", - "portable-atomic", - "portable-atomic-util", - "serde", -] - -[[package]] -name = "jiff-static" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c30758ddd7188629c6713fc45d1188af4f44c90582311d0c8d8c9907f60c48" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "jobserver" -version = "0.1.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" -dependencies = [ - "getrandom 0.3.3", - "libc", -] - [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ - "once_cell", "wasm-bindgen", ] @@ -1920,9 +1515,9 @@ dependencies = [ [[package]] name = "kqueue" -version = "1.1.1" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" dependencies = [ "kqueue-sys", "libc", @@ -1940,37 +1535,31 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "lazycell" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.172" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "libloading" -version = "0.8.7" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a793df0d7afeac54f95b471d3af7f0d4fb975699f972341a4b76988d49cdf0c" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "windows-targets 0.53.0", + "windows-sys 0.48.0", ] [[package]] name = "libmimalloc-sys" -version = "0.1.42" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec9d6fac27761dabcd4ee73571cdb06b7022dc99089acbe5435691edffaac0f4" +checksum = "3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664" dependencies = [ "cc", "libc", @@ -1978,58 +1567,32 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.3" +version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.4.1", "libc", "redox_syscall", ] [[package]] -name = "librocksdb-sys" -version = "0.17.1+9.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b7869a512ae9982f4d46ba482c2a304f1efd80c6412a3d4bf57bb79a619679f" -dependencies = [ - "bindgen 0.69.5", - "bzip2-sys", - "cc", - "libc", - "libz-sys", - "lz4-sys", - "zstd-sys", -] - -[[package]] -name = "libz-sys" -version = "1.1.22" +name = "linked-hash-map" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" -dependencies = [ - "cc", - "pkg-config", - "vcpkg", -] +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" - -[[package]] -name = "litemap" -version = "0.8.0" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -2037,9 +1600,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" dependencies = [ "serde", ] @@ -2052,9 +1615,9 @@ checksum = "a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7" [[package]] name = "log4rs" -version = "1.3.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0816135ae15bd0391cf284eab37e6e3ee0a6ee63d2ceeb659862bd8d0a984ca6" +checksum = "d36ca1786d9e79b8193a68d480a0907b612f109537115c6ff655a3a1967533fd" dependencies = [ "anyhow", "arc-swap", @@ -2065,54 +1628,32 @@ dependencies = [ "libc", "log", "log-mdc", - "once_cell", "parking_lot", - "rand 0.8.5", "serde", "serde-value", "serde_json", "serde_yaml", - "thiserror 1.0.69", + "thiserror", "thread-id", "typemap-ors", "winapi", ] [[package]] -name = "loom" -version = "0.7.2" +name = "lru-cache" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "tracing", - "tracing-subscriber", + "linked-hash-map", ] -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - [[package]] name = "lru_time_cache" version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9106e1d747ffd48e6be5bb2d97fa706ed25b144fbee4d5c02eae110cd8d6badd" -[[package]] -name = "lz4-sys" -version = "1.11.1+lz4-1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "managed" version = "0.8.0" @@ -2120,13 +1661,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ca88d725a0a943b096803bd34e73a4437208b6077654cc4ecb2947a5f91618d" [[package]] -name = "matchers" +name = "match_cfg" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" [[package]] name = "md-5" @@ -2140,15 +1678,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "mimalloc" -version = "0.1.46" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995942f432bbb4822a7e9c3faa87a695185b0d09273ba85f097b54f4e458f2af" +checksum = "fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c" dependencies = [ "libmimalloc-sys", ] @@ -2159,98 +1697,64 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ - "adler2", + "adler", ] [[package]] name = "mio" -version = "1.0.3" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", -] - -[[package]] -name = "moka" -version = "0.12.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" -dependencies = [ - "crossbeam-channel", - "crossbeam-epoch", - "crossbeam-utils", - "loom", - "parking_lot", - "portable-atomic", - "rustc_version", - "smallvec", - "tagptr", - "thiserror 1.0.69", - "uuid", + "wasi", + "windows-sys 0.48.0", ] [[package]] name = "native-tls" -version = "0.2.14" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" dependencies = [ + "lazy_static", "libc", "log", "openssl", "openssl-probe", "openssl-sys", "schannel", - "security-framework 2.11.1", + "security-framework", "security-framework-sys", "tempfile", ] [[package]] name = "nix" -version = "0.30.1" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.4.1", "cfg-if", - "cfg_aliases", "libc", ] -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "notify" -version = "8.0.0" +version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943" +checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.4.1", + "crossbeam-channel", "filetime", "fsevent-sys", "inotify", @@ -2258,83 +1762,57 @@ dependencies = [ "libc", "log", "mio", - "notify-types", "walkdir", - "windows-sys 0.59.0", -] - -[[package]] -name = "notify-types" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", + "windows-sys 0.48.0", ] -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - [[package]] name = "num-traits" -version = "0.2.19" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] [[package]] -name = "num_threads" -version = "0.1.7" +name = "num_cpus" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ + "hermit-abi", "libc", ] [[package]] name = "object" -version = "0.36.7" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" -dependencies = [ - "critical-section", - "portable-atomic", -] +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.72" +version = "0.10.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" +checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.4.1", "cfg-if", "foreign-types", "libc", @@ -2351,29 +1829,29 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", ] [[package]] name = "openssl-probe" -version = "0.1.6" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.5.0+3.5.0" +version = "300.2.0+3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ce546f549326b0e6052b649198487d91320875da901e7bd11a06d1ee3f9c2f" +checksum = "b1ebed1d188c4cd64c2bcd73d6c1fe1092f3d98c111831923cc1b706c3859fca" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.108" +version = "0.9.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847" +checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b" dependencies = [ "cc", "libc", @@ -2397,12 +1875,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "p256" version = "0.13.2" @@ -2415,26 +1887,20 @@ dependencies = [ [[package]] name = "p384" -version = "0.13.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" +checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" dependencies = [ "ecdsa", "elliptic-curve", "primeorder", ] -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", "parking_lot_core", @@ -2442,15 +1908,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -2461,20 +1927,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.8.0" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6" +checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" dependencies = [ "memchr", - "thiserror 2.0.12", + "thiserror", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.8.0" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d725d9cfd79e87dccc9341a2ef39d1b6f6353d68c4b33c177febbe1a402c97c5" +checksum = "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2" dependencies = [ "pest", "pest_generator", @@ -2482,22 +1948,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.0" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db7d01726be8ab66ab32f9df467ae8b1148906685bbe75c82d1e65d7f5b3f841" +checksum = "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", ] [[package]] name = "pest_meta" -version = "2.8.0" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9f832470494906d1fca5329f8ab5791cc60beb230c74815dff541cbd2b5ca0" +checksum = "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" dependencies = [ "once_cell", "pest", @@ -2506,29 +1972,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.10" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.10" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -2536,17 +2002,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "piper" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - [[package]] name = "pkcs8" version = "0.10.2" @@ -2559,9 +2014,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.32" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "poly1305" @@ -2576,9 +2031,9 @@ dependencies = [ [[package]] name = "polyval" -version = "0.6.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb" dependencies = [ "cfg-if", "cpufeatures", @@ -2586,44 +2041,11 @@ dependencies = [ "universal-hash", ] -[[package]] -name = "portable-atomic" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" - -[[package]] -name = "portable-atomic-util" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" -dependencies = [ - "portable-atomic", -] - -[[package]] -name = "potential_utf" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - [[package]] name = "ppv-lite86" -version = "0.2.21" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "primeorder" @@ -2635,119 +2057,106 @@ dependencies = [ ] [[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" +name = "proc-macro-error" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ + "proc-macro-error-attr", "proc-macro2", "quote", + "syn 1.0.109", + "version_check", ] [[package]] -name = "proc-macro-error2" -version = "2.0.1" +name = "proc-macro-error-attr" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.101", + "version_check", ] [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" dependencies = [ "unicode-ident", ] [[package]] name = "qrcode" -version = "0.14.1" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "166f136dfdb199f98186f3649cf7a0536534a61417a1a30221b492b4fb60ce3f" + +[[package]] +name = "quick-error" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d68782463e408eb1e668cf6152704bd856c78c5b6417adaee3203d8f4c1fc9ec" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.8" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" dependencies = [ "bytes", - "cfg_aliases", - "futures-io", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", - "rustls", - "socket2", - "thiserror 2.0.12", + "rustc-hash", + "rustls 0.21.10", + "thiserror", "tokio", "tracing", - "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.12" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" dependencies = [ "bytes", - "getrandom 0.3.3", - "lru-slab", - "rand 0.9.1", - "ring", - "rustc-hash 2.1.1", - "rustls", - "rustls-pki-types", + "rand", + "ring 0.16.20", + "rustc-hash", + "rustls 0.21.10", "slab", - "thiserror 2.0.12", + "thiserror", "tinyvec", "tracing", - "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.12" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" +checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" dependencies = [ - "cfg_aliases", + "bytes", "libc", - "once_cell", - "socket2", + "socket2 0.5.5", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] -[[package]] -name = "r-efi" -version = "5.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - [[package]] name = "rand" version = "0.8.5" @@ -2755,18 +2164,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.3", + "rand_chacha", + "rand_core", ] [[package]] @@ -2776,17 +2175,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core 0.9.3", + "rand_core", ] [[package]] @@ -2795,102 +2184,75 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", -] - -[[package]] -name = "rand_core" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom 0.3.3", + "getrandom", ] [[package]] name = "redox_syscall" -version = "0.5.12" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ - "bitflags 2.9.0", + "bitflags 1.3.2", ] [[package]] name = "redox_users" -version = "0.5.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ - "getrandom 0.2.16", + "getrandom", "libredox", - "thiserror 2.0.12", + "thiserror", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.12.15" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "base64", "bytes", "encoding_rs", - "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", - "http-body-util", - "hyper", + "h2 0.3.22", + "http 0.2.11", + "http-body 0.4.6", + "hyper 0.14.27", "hyper-rustls", "hyper-tls", - "hyper-util", "ipnet", "js-sys", "log", @@ -2899,47 +2261,62 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "quinn", - "rustls", - "rustls-native-certs", - "rustls-pemfile", - "rustls-pki-types", + "rustls 0.21.10", + "rustls-native-certs 0.6.3", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", - "tokio-rustls", - "tower", + "tokio-rustls 0.24.1", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.26.11", - "windows-registry", + "webpki-roots 0.25.3", + "winreg", ] [[package]] name = "resolv-conf" -version = "0.7.3" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +dependencies = [ + "hostname", + "quick-error", +] + +[[package]] +name = "ring" +version = "0.16.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7c8f7f733062b66dc1c63f9db168ac0b97a9210e247fa90fdc9ad08f51b302" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] [[package]] name = "ring" -version = "0.17.14" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", - "cfg-if", - "getrandom 0.2.16", + "getrandom", "libc", - "untrusted", - "windows-sys 0.52.0", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.48.0", ] [[package]] @@ -2956,30 +2333,20 @@ dependencies = [ "p256", "p384", "pkcs8", - "rand_core 0.6.4", - "ring", + "rand_core", + "ring 0.17.7", "signature", ] -[[package]] -name = "rocksdb" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26ec73b20525cb235bad420f911473b69f9fe27cc856c5461bccd7e4af037f43" -dependencies = [ - "libc", - "librocksdb-sys", -] - [[package]] name = "rpassword" -version = "7.4.0" +version = "7.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d4c8b64f049c6721ec8ccec37ddfc3d641c4a7fca57e8f2a89de509c73df39" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" dependencies = [ "libc", "rtoolbox", - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -3004,19 +2371,19 @@ dependencies = [ [[package]] name = "rtoolbox" -version = "0.0.3" +version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cc970b249fbe527d6e02e0a227762c9108b2f49d81094fe357ffc6d14d7f6f" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc-hash" @@ -3024,102 +2391,130 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustc-hash" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" - [[package]] name = "rustc_version" -version = "0.4.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "1.0.7" +version = "0.38.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.4.1", "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.23.27" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", - "once_cell", - "ring", + "ring 0.17.7", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6b63262c9fcac8659abfaa96cac103d28166d3ff3eaf8f412e19f3ae9e5a48" +dependencies = [ + "log", + "ring 0.17.7", "rustls-pki-types", - "rustls-webpki", + "rustls-webpki 0.102.0", "subtle", "zeroize", ] [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", - "rustls-pki-types", + "rustls-pemfile 1.0.4", "schannel", - "security-framework 3.2.0", + "security-framework", ] [[package]] -name = "rustls-pemfile" -version = "2.2.0" +name = "rustls-native-certs" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" dependencies = [ + "openssl-probe", + "rustls-pemfile 2.0.0", "rustls-pki-types", + "schannel", + "security-framework", ] [[package]] -name = "rustls-pki-types" -version = "1.12.0" +name = "rustls-pemfile" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "web-time", - "zeroize", + "base64", ] [[package]] -name = "rustls-webpki" -version = "0.103.3" +name = "rustls-pemfile" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "35e4980fa29e4c4b212ffb3db068a564cbf560e51d3944b7c88bd8bf5bec64f4" dependencies = [ - "ring", + "base64", "rustls-pki-types", - "untrusted", ] [[package]] -name = "rustversion" -version = "1.0.20" +name = "rustls-pki-types" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7673e0aa20ee4937c6aacfc12bb8341cfbf054cdd21df6bec5fd0629fe9339b" + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.7", + "untrusted 0.9.0", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "de2635c8bc2b88d367767c5de8ea1d8db9af3f6219eba28442242d9ab81d1b89" +dependencies = [ + "ring 0.17.7", + "rustls-pki-types", + "untrusted 0.9.0", +] [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "same-file" @@ -3132,25 +2527,29 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.7", + "untrusted 0.9.0", +] + [[package]] name = "sec1" version = "0.7.3" @@ -3166,25 +2565,12 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.9.0", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework" -version = "3.2.0" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ - "bitflags 2.9.0", - "core-foundation 0.10.0", + "bitflags 1.3.2", + "core-foundation", "core-foundation-sys", "libc", "security-framework-sys", @@ -3192,9 +2578,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -3202,15 +2588,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "sendfd" -version = "0.4.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b183bfd5b1bc64ab0c1ef3ee06b008a9ef1b68a7d3a99ba566fbfe7a7c6d745b" +checksum = "604b71b8fc267e13bb3023a2c901126c8f349393666a6d98ac1ae5729b701798" dependencies = [ "libc", "tokio", @@ -3218,9 +2604,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.219" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] @@ -3235,35 +2621,24 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_bytes" -version = "0.11.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" -dependencies = [ - "serde", -] - [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", ] [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ - "indexmap", "itoa", - "memchr", "ryu", "serde", ] @@ -3282,15 +2657,14 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.34+deprecated" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" dependencies = [ - "indexmap", - "itoa", + "indexmap 1.9.3", "ryu", "serde", - "unsafe-libyaml", + "yaml-rust", ] [[package]] @@ -3306,9 +2680,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.9" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -3317,17 +2691,17 @@ dependencies = [ [[package]] name = "shadowsocks" -version = "1.23.1" +version = "1.17.2" dependencies = [ "aes", "arc-swap", + "async-trait", "base64", "blake3", "bloomfilter", "byte_string", "bytes", "cfg-if", - "dynosaur", "env_logger", "futures", "hickory-resolver", @@ -3338,27 +2712,26 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project", - "rand 0.9.1", + "rand", "sendfd", "serde", "serde_json", "serde_urlencoded", "shadowsocks-crypto", - "socket2", - "spin", - "thiserror 2.0.12", + "socket2 0.5.5", + "spin 0.9.8", + "thiserror", "tokio", "tokio-tfo", - "trait-variant", "url", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "shadowsocks-crypto" -version = "0.6.1" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda401a0ad32c82981d8862f2795713618de9bbf9768f03c17d9d145c6d805df" +checksum = "65da645ff4a6440ba1b52a9d6b4c8792054860ac135cb87f8ad3d2c7a78d41b5" dependencies = [ "aead", "aes", @@ -3375,7 +2748,7 @@ dependencies = [ "ghash", "hkdf", "md-5", - "rand 0.9.1", + "rand", "ring-compat", "sha1", "sm4", @@ -3384,7 +2757,7 @@ dependencies = [ [[package]] name = "shadowsocks-rust" -version = "1.23.4" +version = "1.17.2" dependencies = [ "base64", "build-time", @@ -3403,9 +2776,9 @@ dependencies = [ "log", "log4rs", "mimalloc", - "mime", + "num_cpus", "qrcode", - "rand 0.9.1", + "rand", "reqwest", "rpassword", "rpmalloc", @@ -3414,87 +2787,61 @@ dependencies = [ "snmalloc-rs", "sysexits", "tcmalloc", - "thiserror 2.0.12", - "time", + "thiserror", "tokio", - "tracing", - "tracing-subscriber", "windows-service", "xdg", ] [[package]] name = "shadowsocks-service" -version = "1.23.4" +version = "1.17.2" dependencies = [ "arc-swap", - "brotli", - "bson", + "async-trait", "byte_string", "byteorder", "bytes", "cfg-if", "env_logger", "etherparse", - "flate2", "futures", "hickory-resolver", - "http", "http-body-util", - "httparse", - "hyper", - "idna", + "hyper 1.0.1", + "idna 0.5.0", "ipnet", "iprange", "json5", "libc", "log", "lru_time_cache", - "mime", "native-tls", "nix", "once_cell", "pin-project", - "rand 0.9.1", + "rand", "regex", - "rocksdb", - "rustls-native-certs", + "rustls-native-certs 0.7.0", "serde", "shadowsocks", "smoltcp", - "socket2", - "spin", - "thiserror 2.0.12", + "socket2 0.5.5", + "spin 0.9.8", + "thiserror", "tokio", "tokio-native-tls", - "tokio-rustls", - "trait-variant", + "tokio-rustls 0.25.0", "tun", - "webpki-roots 1.0.0", - "windows-sys 0.59.0", - "zstd", -] - -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", + "webpki-roots 0.26.0", + "windows-sys 0.52.0", ] -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - [[package]] name = "signal-hook-registry" -version = "1.4.5" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ "libc", ] @@ -3505,14 +2852,14 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "rand_core 0.6.4", + "rand_core", ] [[package]] name = "siphasher" -version = "1.0.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "54ac45299ccbd390721be55b412d41931911f654fa99e2cb8bfb57184b2061fe" [[package]] name = "slab" @@ -3534,20 +2881,20 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.15.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "smoltcp" -version = "0.12.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad095989c1533c1c266d9b1e8d70a1329dd3723c3edac6d03bbd67e7bf6f4bb" +checksum = "8d2e3a36ac8fea7b94e666dfa3871063d6e0a5c9d5d4fec9a1a6b7b6760f0229" dependencies = [ "bitflags 1.3.2", "byteorder", "cfg-if", - "defmt 0.3.100", + "defmt", "heapless", "log", "managed", @@ -3555,37 +2902,53 @@ dependencies = [ [[package]] name = "snmalloc-rs" -version = "0.3.8" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb317153089fdfa4d8a2eec059d40a5a23c3bde43995ea23b19121c3f621e74a" +checksum = "038507ad9c0ff0d6901e057494abcdba49a1a44fe3236f281730a9278166710d" dependencies = [ "snmalloc-sys", ] [[package]] name = "snmalloc-sys" -version = "0.3.8" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065fea53d32bb77bc36cca466cb191f2e5216ebfd0ed360b1d64889ee6e559ea" +checksum = "9cae3f7f662ebf11afe4d6534e63fa5846ec0143892c78ddb1040cc01249f143" dependencies = [ "cmake", ] [[package]] name = "socket2" -version = "0.5.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", - "windows-sys 0.52.0", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", ] [[package]] name = "spin" -version = "0.10.0" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" dependencies = [ "lock_api", ] @@ -3608,15 +2971,15 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "strsim" -version = "0.11.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "subtle" -version = "2.6.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" @@ -3631,74 +2994,42 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.101" +version = "2.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +checksum = "13fa70a4ee923979ffb522cacce59d34421ebdea5625e1073c4326ef9d2dd42e" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - [[package]] name = "sysexits" -version = "0.9.0" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "198f60d1f7f003f168507691e42d082df109ef0f05c6fd006e22528371a5f1b4" +checksum = "863d0ebf4f8f10e7e33c82f7fe18e2a09952028011bf0cc7a9a3b8df9bb1cf56" [[package]] name = "system-configuration" -version = "0.6.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ - "bitflags 2.9.0", - "core-foundation 0.9.4", + "bitflags 1.3.2", + "core-foundation", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.6.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" dependencies = [ "core-foundation-sys", "libc", ] -[[package]] -name = "tagptr" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - [[package]] name = "tcmalloc" version = "0.3.0" @@ -3716,135 +3047,71 @@ checksum = "3b7ad73e635dd232c2c2106d59269f59a61de421cc6b95252d2d932094ff1f40" [[package]] name = "tempfile" -version = "3.20.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ - "fastrand", - "getrandom 0.3.3", - "once_cell", + "cfg-if", + "fastrand 2.0.1", + "redox_syscall", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] -name = "terminal_size" -version = "0.4.2" +name = "termcolor" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ - "rustix", - "windows-sys 0.59.0", + "winapi-util", ] [[package]] -name = "thiserror" -version = "1.0.69" +name = "terminal_size" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "thiserror-impl 1.0.69", + "rustix", + "windows-sys 0.48.0", ] [[package]] name = "thiserror" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" -dependencies = [ - "thiserror-impl 2.0.12", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", + "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", ] [[package]] name = "thread-id" -version = "4.2.2" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe8f25bbdd100db7e1d34acf7fd2dc59c4bf8f7483f505eaa7d4f12f76cc0ea" +checksum = "f0ec81c46e9eb50deaa257be2f148adf052d1fb7701cfd55ccfab2525280b70b" dependencies = [ "libc", "winapi", ] -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.3.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" -dependencies = [ - "deranged", - "itoa", - "libc", - "num-conv", - "num_threads", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" - -[[package]] -name = "time-macros" -version = "0.2.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" -dependencies = [ - "displaydoc", - "zerovec", -] - [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -3857,31 +3124,32 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.0" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165" +checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" dependencies = [ "backtrace", "bytes", "libc", "mio", + "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.5.5", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", ] [[package]] @@ -3896,19 +3164,30 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.10", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" dependencies = [ - "rustls", + "rustls 0.22.1", + "rustls-pki-types", "tokio", ] [[package]] name = "tokio-tfo" -version = "0.3.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb4382c6371e29365853d2b71e915d5398df46312a2158097d8bb3f54d0f1b4" +checksum = "f30b433f102de6c9b0546dc73398ba3d38d8a556f29f731268451e0b1b3aab9e" dependencies = [ "cfg-if", "futures", @@ -3916,56 +3195,36 @@ dependencies = [ "log", "once_cell", "pin-project", - "socket2", + "socket2 0.5.5", "tokio", - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", + "tracing", ] -[[package]] -name = "tower" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - [[package]] name = "tower-service" -version = "0.3.3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "log", "pin-project-lite", @@ -3975,64 +3234,22 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", ] [[package]] name = "tracing-core" -version = "0.1.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.19" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ - "matchers", - "nu-ansi-term", "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "time", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "trait-variant" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", ] [[package]] @@ -4043,23 +3260,20 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tun" -version = "0.7.19" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96826f74fb6301ef2954661a43a9ff37cd1158de10a138c1184300333d2d98e4" +checksum = "0adb9992bbd5ca76f3847ed579ad4ee8defb2ec2eea918cceef17ccc66fa4fd4" dependencies = [ + "byteorder", "bytes", - "cfg-if", - "futures", "futures-core", - "ipnet", + "ioctl-sys", "libc", "log", - "nix", - "thiserror 2.0.12", + "thiserror", "tokio", "tokio-util", - "windows-sys 0.59.0", - "wintun-bindings", + "wintun", ] [[package]] @@ -4073,21 +3287,36 @@ dependencies = [ [[package]] name = "typenum" -version = "1.18.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.7" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unicode-bidi" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] [[package]] name = "universal-hash" @@ -4109,10 +3338,10 @@ dependencies = [ ] [[package]] -name = "unsafe-libyaml" -version = "0.2.11" +name = "untrusted" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "untrusted" @@ -4122,45 +3351,21 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", - "idna", + "idna 0.5.0", "percent-encoding", "serde", ] -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "uuid" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" -dependencies = [ - "getrandom 0.3.3", - "js-sys", - "serde", - "wasm-bindgen", -] - -[[package]] -name = "valuable" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "vcpkg" @@ -4170,15 +3375,15 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.5" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.5.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -4199,59 +3404,48 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" -dependencies = [ - "wit-bindgen-rt", -] - [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if", - "once_cell", - "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", + "once_cell", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" dependencies = [ "cfg-if", "js-sys", - "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4259,41 +3453,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.40", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" -dependencies = [ - "unicode-ident", -] +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "web-sys" -version = "0.3.77" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web-time" -version = "1.1.0" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" dependencies = [ "js-sys", "wasm-bindgen", @@ -4301,27 +3482,24 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.11" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" -dependencies = [ - "webpki-roots 1.0.0", -] +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "webpki-roots" -version = "1.0.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" +checksum = "0de2cfda980f21be5a7ed2eadb3e6fe074d56022bea2cdeb1a62eb220fc04188" dependencies = [ "rustls-pki-types", ] [[package]] name = "widestring" -version = "1.2.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" [[package]] name = "winapi" @@ -4341,11 +3519,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ - "windows-sys 0.59.0", + "winapi", ] [[package]] @@ -4356,156 +3534,41 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" -dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.58.0" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-core", + "windows-targets 0.48.5", ] [[package]] name = "windows-core" -version = "0.61.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" -dependencies = [ - "windows-implement 0.60.0", - "windows-interface 0.59.1", - "windows-link", - "windows-result 0.3.2", - "windows-strings 0.4.0", -] - -[[package]] -name = "windows-implement" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "windows-implement" -version = "0.60.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "windows-interface" -version = "0.58.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "windows-interface" -version = "0.59.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "windows-link" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" - -[[package]] -name = "windows-registry" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" -dependencies = [ - "windows-result 0.3.2", - "windows-strings 0.3.1", - "windows-targets 0.53.0", -] - -[[package]] -name = "windows-result" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.3.2" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ - "windows-link", + "windows-targets 0.48.5", ] [[package]] name = "windows-service" -version = "0.8.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193cae8e647981c35bc947fdd57ba7928b1fa0d4a79305f6dd2dc55221ac35ac" +checksum = "cd9db37ecb5b13762d95468a2fc6009d4b2c62801243223aabd44fca13ad13c8" dependencies = [ - "bitflags 2.9.0", + "bitflags 1.3.2", "widestring", - "windows-sys 0.59.0", -] - -[[package]] -name = "windows-strings" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" -dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" -dependencies = [ - "windows-link", + "windows-sys 0.45.0", ] [[package]] -name = "windows-strings" -version = "0.4.0" +name = "windows-sys" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-link", + "windows-targets 0.42.2", ] [[package]] @@ -4523,16 +3586,22 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.6", + "windows-targets 0.52.0", ] [[package]] -name = "windows-sys" -version = "0.59.0" +name = "windows-targets" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ - "windows-targets 0.52.6", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", ] [[package]] @@ -4552,35 +3621,24 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] -name = "windows-targets" -version = "0.53.0" +name = "windows_aarch64_gnullvm" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" -dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", -] +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" @@ -4590,15 +3648,15 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" +name = "windows_aarch64_msvc" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" @@ -4608,15 +3666,15 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" +name = "windows_i686_gnu" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" @@ -4626,27 +3684,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] -name = "windows_i686_gnullvm" -version = "0.53.0" +name = "windows_i686_msvc" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" @@ -4656,15 +3702,15 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] -name = "windows_i686_msvc" -version = "0.53.0" +name = "windows_x86_64_gnu" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" @@ -4674,15 +3720,15 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" +name = "windows_x86_64_gnullvm" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" @@ -4692,15 +3738,15 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.6" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" +name = "windows_x86_64_msvc" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" @@ -4710,15 +3756,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winreg" @@ -4731,190 +3771,35 @@ dependencies = [ ] [[package]] -name = "winreg" -version = "0.55.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" -dependencies = [ - "cfg-if", - "windows-sys 0.59.0", -] - -[[package]] -name = "wintun-bindings" -version = "0.7.31" +name = "wintun" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "605f50b13e12e1f9f99dc5e93701d779dbe47282fec186cb8a079165368d3124" +checksum = "29b83b0eca06dd125dbcd48a45327c708a6da8aada3d95a3f06db0ce4b17e0d4" dependencies = [ - "blocking", "c2rust-bitfields", - "futures", "libloading", "log", - "thiserror 2.0.12", - "windows-sys 0.59.0", - "winreg 0.55.0", -] - -[[package]] -name = "wit-bindgen-rt" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.0", -] - -[[package]] -name = "writeable" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", + "thiserror", + "windows", ] [[package]] name = "xdg" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fb433233f2df9344722454bc7e96465c9d03bff9d77c248f9e7523fe79585b5" - -[[package]] -name = "yoke" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", - "synstructure", -] - -[[package]] -name = "zerocopy" -version = "0.8.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.25" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] +checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] -name = "zerofrom" -version = "0.1.6" +name = "yaml-rust" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", - "synstructure", + "linked-hash-map", ] [[package]] name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" - -[[package]] -name = "zerotrie" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "zstd" -version = "0.13.3" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.15+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" -dependencies = [ - "bindgen 0.71.1", - "cc", - "pkg-config", -] +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" diff --git a/obfuscator/src/main/rust/shadowsocks-rust/Cargo.toml b/obfuscator/src/main/rust/shadowsocks-rust/Cargo.toml index cfe259a..98e4964 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/Cargo.toml +++ b/obfuscator/src/main/rust/shadowsocks-rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "shadowsocks-rust" -version = "1.23.4" +version = "1.17.2" authors = ["Shadowsocks Contributors"] description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls." repository = "https://github.com/shadowsocks/shadowsocks-rust" @@ -8,8 +8,8 @@ readme = "README.md" documentation = "https://docs.rs/shadowsocks-rust" keywords = ["shadowsocks", "proxy", "socks", "socks5", "firewall"] license = "MIT" -edition = "2024" -rust-version = "1.85" +edition = "2021" +rust-version = "1.64" [badges] maintenance = { status = "passively-maintained" } @@ -55,53 +55,21 @@ panic = "abort" strip = true [features] -default = ["full"] - -# Basic Features -basic = [ - "logging", - "hickory-dns", - "local", - "server", - "multi-threaded", - "aead-cipher", -] - -# All Suggested Features -full = [ +default = [ "logging", "hickory-dns", - "dns-over-tls", - "dns-over-https", "local", "server", "manager", "utility", "service", "local-http", - "local-http-rustls", "local-tunnel", "local-socks4", - "local-dns", - "local-redir", - "local-tun", - "local-online-config", "multi-threaded", - "stream-cipher", - "aead-cipher", "aead-cipher-2022", ] -# Full features with extra (non-stable) -full-extra = [ - "full", - "dns-over-h3", - "local-fake-dns", - "aead-cipher-extra", - "aead-cipher-2022-extra", - "security-replay-attack-detect", -] - # Enable local server local = ["shadowsocks-service/local"] # Enable remote server @@ -120,11 +88,15 @@ hickory-dns = ["shadowsocks-service/hickory-dns"] # Hickory-DNS was renamed from Trust-DNS, keep compatibility. trust-dns = ["hickory-dns"] dns-over-tls = ["shadowsocks-service/dns-over-tls"] +dns-over-native-tls = ["shadowsocks-service/dns-over-native-tls"] +dns-over-native-tls-vendored = [ + "shadowsocks-service/dns-over-native-tls-vendored", +] dns-over-https = ["shadowsocks-service/dns-over-https"] dns-over-h3 = ["shadowsocks-service/dns-over-h3"] # Enable logging output -logging = ["log4rs", "tracing", "tracing-subscriber", "time"] +logging = ["log4rs"] # Enable DNS-relay local-dns = ["local", "shadowsocks-service/local-dns"] @@ -151,15 +123,6 @@ local-tunnel = ["local", "shadowsocks-service/local-tunnel"] local-socks4 = ["local", "shadowsocks-service/local-socks4"] # Enable Tun interface protocol for sslocal local-tun = ["local", "shadowsocks-service/local-tun", "ipnet"] -# Enable Fake DNS for sslocal -local-fake-dns = ["local", "shadowsocks-service/local-fake-dns", "ipnet"] -# sslocal support online URL (SIP008 Online Configuration Delivery) -# https://shadowsocks.org/doc/sip008.html -local-online-config = [ - "local", - "mime", - "shadowsocks-service/local-online-config", -] # ssurl support outline (ssconf) URL utility-url-outline = ["reqwest"] @@ -181,12 +144,9 @@ multi-threaded = ["tokio/rt-multi-thread"] # Users should always avoid using these ciphers in practice stream-cipher = ["shadowsocks-service/stream-cipher"] -# Enable AEAD ciphers -aead-cipher = ["shadowsocks-service/aead-cipher"] - # Enable extra AEAD ciphers # WARN: These non-standard AEAD ciphers are not officially supported by shadowsocks community -aead-cipher-extra = ["aead-cipher", "shadowsocks-service/aead-cipher-extra"] +aead-cipher-extra = ["shadowsocks-service/aead-cipher-extra"] # Enable AEAD 2022 aead-cipher-2022 = ["shadowsocks-service/aead-cipher-2022"] @@ -204,37 +164,27 @@ replay-attack-detect = [ [dependencies] log = "0.4" log4rs = { version = "1.2", optional = true } -tracing = { version = "0.1", optional = true } -tracing-subscriber = { version = "0.3", optional = true, features = [ - "std", - "fmt", - "env-filter", - "time", - "local-time", -] } -time = { version = "0.3", optional = true } - serde = { version = "1.0", features = ["derive"] } json5 = "0.4" -thiserror = "2.0" -base64 = "0.22" -mime = { version = "0.3", optional = true } +thiserror = "1.0" +base64 = "0.21" -clap = { version = "4.5", features = ["wrap_help", "suggestions"] } +clap = { version = "4.4", features = ["wrap_help", "suggestions"] } cfg-if = "1" -qrcode = { version = "0.14", default-features = false, optional = true } -sysexits = "0.9" +qrcode = { version = "0.13", default-features = false, optional = true } +sysexits = "0.7" build-time = "0.1" -directories = "6.0" -xdg = "3.0" +directories = "5.0" +xdg = "2.5" rpassword = "7.3" libc = { version = "0.2", features = ["extra_traits"] } -rand = "0.9" +rand = "0.8" futures = "0.3" tokio = { version = "1", features = ["rt", "signal"] } +num_cpus = "1.15" -ipnet = { version = "2.10", optional = true } +ipnet = { version = "2.9", optional = true } mimalloc = { version = "0.1", default-features = false, optional = true } tcmalloc = { version = "0.3", optional = true } @@ -242,28 +192,28 @@ jemallocator = { version = "0.5", optional = true } snmalloc-rs = { version = "0.3", optional = true } rpmalloc = { version = "0.2", optional = true } -shadowsocks-service = { version = "1.23.4", path = "./crates/shadowsocks-service" } +shadowsocks-service = { version = "1.17.2", path = "./crates/shadowsocks-service" } -windows-service = { version = "0.8", optional = true } +windows-service = { version = "0.6", optional = true } [target.'cfg(unix)'.dependencies] daemonize = "0.5" [target.'cfg(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))'.dependencies] -reqwest = { version = "0.12", features = [ +reqwest = { version = "0.11", features = [ "blocking", "rustls-tls", "rustls-tls-native-roots", ], default-features = false, optional = true } [target.'cfg(not(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")))'.dependencies] -reqwest = { version = "0.12", features = [ +reqwest = { version = "0.11", features = [ "blocking", "native-tls-vendored", ], optional = true } [dev-dependencies] byteorder = "1.5" -env_logger = "0.11" +env_logger = "0.10" byte_string = "1.0" tokio = { version = "1", features = ["net", "time", "macros", "io-util"] } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/Cross-centos.toml b/obfuscator/src/main/rust/shadowsocks-rust/Cross-centos.toml deleted file mode 100644 index b47cb44..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/Cross-centos.toml +++ /dev/null @@ -1,10 +0,0 @@ -[build.env] -passthrough = ["RUSTFLAGS"] - -# WARN: GCC 4.8.2 doesn't support -[target.x86_64-unknown-linux-gnu] -image = "ghcr.io/cross-rs/x86_64-unknown-linux-gnu:main-centos" -# GCC 4.8.2 doesn't support ACLE -# https://github.com/briansmith/ring/issues/1728 -# [target.aarch64-unknown-linux-gnu] -# image = "ghcr.io/cross-rs/aarch64-unknown-linux-gnu:main-centos" diff --git a/obfuscator/src/main/rust/shadowsocks-rust/Cross.toml b/obfuscator/src/main/rust/shadowsocks-rust/Cross.toml index 54c141f..a64c818 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/Cross.toml +++ b/obfuscator/src/main/rust/shadowsocks-rust/Cross.toml @@ -1,35 +1,18 @@ -[build] -# dockerfile = "./docker/linux-cross/Dockerfile" -# pre-build = [ -# "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable", -# ". $HOME/.cargo/env", -# "cargo install --force --locked bindgen-cli && mv $HOME/.cargo/bin/bindgen /usr/bin", -# "rm -rf $HOME/.cargo" -# ] -# pre-build = [ -# "apt update", -# "apt install --assume-yes --no-install-recommends build-essential llvm-8-dev libclang-8-dev clang-8", -# ] - [build.env] passthrough = ["RUSTFLAGS"] -# MIPS targets are dropped to Tier 3 -# https://github.com/rust-lang/compiler-team/issues/648 -# FIXME: build-std with sequence is supported only on git -[target.mips-unknown-linux-gnu] -build-std = ["std", "panic_abort", "proc_macro"] [target.mips-unknown-linux-musl] -build-std = ["std", "panic_abort", "proc_macro"] -[target.mips64-unknown-linux-gnuabi64] -build-std = ["std", "panic_abort", "proc_macro"] -[target.mips64-unknown-linux-muslabi64] -build-std = ["std", "panic_abort", "proc_macro"] -[target.mips64el-unknown-linux-gnuabi64] -build-std = ["std", "panic_abort", "proc_macro"] -[target.mips64el-unknown-linux-muslabi64] -build-std = ["std", "panic_abort", "proc_macro"] -[target.mipsel-unknown-linux-gnu] -build-std = ["std", "panic_abort", "proc_macro"] +# image = "rustembedded/cross:mips-unknown-linux-musl-0.2.1" +# pre-build = [ +# "dpkg --add-architecture $CROSS_DEB_ARCH", +# "apt-get update", +# "apt-get install --assume-yes libssl-dev:$CROSS_DEB_ARCH", +# ] + [target.mipsel-unknown-linux-musl] -build-std = ["std", "panic_abort", "proc_macro"] +# image = "rustembedded/cross:mipsel-unknown-linux-musl-0.2.1" +# pre-build = [ +# "dpkg --add-architecture $CROSS_DEB_ARCH", +# "apt-get update", +# "apt-get install --assume-yes libssl-dev:$CROSS_DEB_ARCH", +# ] diff --git a/obfuscator/src/main/rust/shadowsocks-rust/Dockerfile b/obfuscator/src/main/rust/shadowsocks-rust/Dockerfile index d8c8cb1..0297c7e 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/Dockerfile +++ b/obfuscator/src/main/rust/shadowsocks-rust/Dockerfile @@ -1,9 +1,9 @@ -FROM --platform=$BUILDPLATFORM rust:alpine3.20 AS builder +FROM --platform=$BUILDPLATFORM rust:1.67.1-alpine3.17 AS builder ARG TARGETARCH RUN set -x \ - && apk add --no-cache build-base cmake llvm15-dev clang15-libclang clang15 rust-bindgen + && apk add --no-cache build-base WORKDIR /root/shadowsocks-rust @@ -33,10 +33,10 @@ RUN case "$TARGETARCH" in \ && echo "CC=$CC" \ && rustup override set stable \ && rustup target add "$RUST_TARGET" \ - && RUSTFLAGS="-C linker=$CC" CC=$CC cargo build --target "$RUST_TARGET" --release --features "full" \ + && RUSTFLAGS="-C linker=$CC" CC=$CC cargo build --target "$RUST_TARGET" --release --features "local-tun local-redir stream-cipher aead-cipher-2022" \ && mv target/$RUST_TARGET/release/ss* target/release/ -FROM alpine:3.21 AS sslocal +FROM alpine:3.17 AS sslocal # NOTE: Please be careful to change the path of these binaries, refer to #1149 for more information. COPY --from=builder /root/shadowsocks-rust/target/release/sslocal /usr/bin/ @@ -46,7 +46,7 @@ COPY --from=builder /root/shadowsocks-rust/docker/docker-entrypoint.sh /usr/bin/ ENTRYPOINT [ "docker-entrypoint.sh" ] CMD [ "sslocal", "--log-without-time", "-c", "/etc/shadowsocks-rust/config.json" ] -FROM alpine:3.21 AS ssserver +FROM alpine:3.17 AS ssserver COPY --from=builder /root/shadowsocks-rust/target/release/ssserver /usr/bin/ COPY --from=builder /root/shadowsocks-rust/examples/config.json /etc/shadowsocks-rust/ diff --git a/obfuscator/src/main/rust/shadowsocks-rust/Makefile b/obfuscator/src/main/rust/shadowsocks-rust/Makefile index 8e96169..34d1564 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/Makefile +++ b/obfuscator/src/main/rust/shadowsocks-rust/Makefile @@ -6,9 +6,9 @@ all: build build: ifeq (${TARGET}, release) - cargo build --release --features "full" + cargo build --release --features "local-tun local-redir" else - cargo build --features "full" + cargo build --features "local-tun local-redir" endif install: diff --git a/obfuscator/src/main/rust/shadowsocks-rust/README.md b/obfuscator/src/main/rust/shadowsocks-rust/README.md index 08f0832..ffcb695 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/README.md +++ b/obfuscator/src/main/rust/shadowsocks-rust/README.md @@ -2,19 +2,17 @@ [![License](https://img.shields.io/github/license/zonyitoo/shadowsocks-rust.svg)](https://github.com/zonyitoo/shadowsocks-rust) [![Build & Test](https://github.com/shadowsocks/shadowsocks-rust/actions/workflows/build-and-test.yml/badge.svg)](https://github.com/shadowsocks/shadowsocks-rust/actions/workflows/build-and-test.yml) -[![Build MSRV](https://github.com/shadowsocks/shadowsocks-rust/actions/workflows/build-msrv.yml/badge.svg)](https://github.com/shadowsocks/shadowsocks-rust/actions/workflows/build-msrv.yml) -[![Build Releases](https://github.com/shadowsocks/shadowsocks-rust/actions/workflows/build-release.yml/badge.svg?event=push)](https://github.com/shadowsocks/shadowsocks-rust/actions/workflows/build-release.yml) +[![Build Releases](https://github.com/shadowsocks/shadowsocks-rust/actions/workflows/build-release.yml/badge.svg)](https://github.com/shadowsocks/shadowsocks-rust/actions/workflows/build-release.yml) [![Build Nightly Releases](https://github.com/shadowsocks/shadowsocks-rust/actions/workflows/build-nightly-release.yml/badge.svg)](https://github.com/shadowsocks/shadowsocks-rust/actions/workflows/build-nightly-release.yml) -[![Gurubase](https://img.shields.io/badge/Gurubase-Ask%20shadowsocks%20Guru-006BFF)](https://gurubase.io/g/shadowsocks) [![crates.io](https://img.shields.io/crates/v/shadowsocks-rust.svg)](https://crates.io/crates/shadowsocks-rust) [![Release](https://img.shields.io/github/release/shadowsocks/shadowsocks-rust.svg)](https://github.com/shadowsocks/shadowsocks-rust/releases) -[![shadowsocks-rust](https://img.shields.io/archlinux/v/extra/x86_64/shadowsocks-rust)](https://archlinux.org/packages/extra/x86_64/shadowsocks-rust/) -[![aur shadowsocks-rust-git](https://img.shields.io/aur/version/shadowsocks-rust-git)](https://aur.archlinux.org/packages/shadowsocks-rust-git) +[![archlinuxcn shadowsocks-rust-git](https://img.shields.io/badge/dynamic/json?label=archlinuxcn-git&query=%24.version&url=https%3A%2F%2Fbuild.archlinuxcn.org%2Fapi%2Fv2%2Fpackages%2Fshadowsocks-rust-git)](https://build.archlinuxcn.org/) +[![archlinuxcn shadowsocks-rust-opt-git](https://img.shields.io/badge/dynamic/json?label=archlinuxcn-opt-git&query=%24.version&url=https%3A%2F%2Fbuild.archlinuxcn.org%2Fapi%2Fv2%2Fpackages%2Fshadowsocks-rust-opt-git)](https://build.archlinuxcn.org/) +[![aur shadowsocks-rust](https://img.shields.io/aur/version/shadowsocks-rust)](https://aur.archlinux.org/packages/shadowsocks-rust) [![NixOS](https://img.shields.io/badge/NixOS-shadowsocks--rust-blue?logo=nixos)](https://github.com/NixOS/nixpkgs/tree/master/pkgs/tools/networking/shadowsocks-rust) -[![snap shadowsocks-rust](https://snapcraft.io/shadowsocks-rust/badge.svg)](https://snapcraft.io/shadowsocks-rust) -[![homebrew shadowsocks-rust](https://img.shields.io/homebrew/v/shadowsocks-rust)](https://formulae.brew.sh/formula/shadowsocks-rust#default) -[![MacPorts shadowsocks-rust](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fports.macports.org%2Fapi%2Fv1%2Fports%2Fshadowsocks-rust%2F&query=%24.version&label=macports)](https://ports.macports.org/port/shadowsocks-rust/) + +[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/shadowsocks-rust) This is a port of [shadowsocks](https://github.com/shadowsocks/shadowsocks). @@ -52,12 +50,8 @@ Related Projects: - `local-dns` - Allow using dns protocol for `sslocal`, serves as a DNS server proxying queries to local or remote DNS servers by ACL rules -- `local-fake-dns` - FakeDNS, allocating an IP address for each individual Query from a specific IP pool - - `local-tun` - [TUN](https://en.wikipedia.org/wiki/TUN/TAP) interface support for `sslocal` -- `local-online-config` - [SIP008](https://shadowsocks.org/doc/sip008.html) Online Configuration Delivery - - `stream-cipher` - Enable deprecated stream ciphers. WARN: stream ciphers are UNSAFE! - `aead-cipher-extra` - Enable non-standard AEAD ciphers @@ -125,15 +119,13 @@ systemctl restart snap.shadowsocks-rust.sslocal-daemon.service systemctl status snap.shadowsocks-rust.sslocal-daemon.service ``` -Default configuration file path probably is `/var/snap/shadowsocks-rust/common/etc/shadowsocks-rust/config.json`. - ### **Download release** Download static-linked build [here](https://github.com/shadowsocks/shadowsocks-rust/releases). -- Most of them are built with [cross](https://github.com/cross-rs/cross). Build environment details could be found in its README, such as glibc's version. -- `x86_64-apple-darwin`, `aarch64-apple-darwin` are built in github's `macos-latest` image. Information could be found in [here](https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners). -- `x86_64-pc-windows-msvc` is built in github's `windows-latest` image. Information could be found in [here](https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners). +- `build-windows`: Build for `x86_64-pc-windows-msvc` +- `build-linux`: Build for `x86_64-unknown-linux-gnu`, Debian 9 (Stretch), GLIBC 2.18 +- `build-docker`: Build for `x86_64-unknown-linux-musl`, `x86_64-pc-windows-gnu`, ... (statically linked) ### **Docker** @@ -272,19 +264,13 @@ Requirements: ./build/build-release ``` -Then `sslocal`, `ssserver`, `ssmanager`, `ssservice` and `ssurl` will be packaged in +Then `sslocal`, `ssserver`, `ssmanager` and `ssurl` will be packaged in - `./build/shadowsocks-${VERSION}-stable.x86_64-unknown-linux-musl.tar.xz` - `./build/shadowsocks-${VERSION}-stable.x86_64-pc-windows-gnu.zip` Read `Cargo.toml` for more details. -For Linux with low GLIBC versions, set `CROSS_CONFIG` to CentOS based image: - -```bash -export CROSS_CONFIG=Cross-centos.toml -``` - ## Getting Started Generate a safe and secured password for a specific encryption method (`aes-128-gcm` in the example) with: @@ -308,9 +294,7 @@ Create a ShadowSocks' configuration file. Example } ``` -Detailed explanation of the configuration file could be found in [shadowsocks' documentation](https://github.com/shadowsocks/shadowsocks/wiki). (Link to original project, not maintained anymore !) - -> :warning: For snap installations, configuration file is most probably located in `/var/snap/shadowsocks-rust/common/etc/shadowsocks-rust/config.json` (see / ) +Detailed explanation could be found in [shadowsocks' documentation](https://github.com/shadowsocks/shadowsocks/wiki). In shadowsocks-rust, we also have an extended configuration file format, which is able to define more than one server. You can also disable individual servers. @@ -661,25 +645,6 @@ Example configuration: // Linux/Android: tproxy (default) // FreeBSD/OpenBSD: pf (default) "udp_redir": "tproxy" - }, - { - // FakeDNS local server (feature = "local-fake-dns") - // FakeDNS is a DNS server that allocates an IPv4 / IPv6 address in a specific pool for each queries. - // Subsequence requests from the other local interfaces that the target addresses includes those allocated IP addresses, - // will be substituted back to their original domain name addresses. - // This feature is useful mostly for transparent proxy, which will allow the proxied domain names to be resolved remotely. - "protocol": "fake-dns", - // Listen address - "local_address": "127.0.0.1", - "local_port": 10053, - // IPv4 address pool (for A records) - "fake_dns_ipv4_network": "10.255.0.0/16", - // IPv6 address pool (for AAAA records) - "fake_dns_ipv6_network": "fdf2:e786:ab40:9d2f::/64", - // Persistent storage for all allocated DNS records - "fake_dns_database_path": "/var/shadowsocks/fakedns.db", - // OPTIONAL: Record expire duration in seconds, 10s by default - "fake_dns_record_expire_duration": 10 } ], @@ -761,23 +726,6 @@ Example configuration: // - uPSK is the user's PSK ("password") // Example: // "password": "3SYJ/f8nmVuzKvKglykRQDSgg10e/ADilkdRWrrY9HU=:4w0GKJ9U3Ox7CIXGU4A3LDQAqP6qrp/tUi/ilpOR9p4=" - }, - { - "...": "Any other fields", - - // Some optional fields for this specific server - - // Outbound socket options - // Linux Only (SO_MARK) - "outbound_fwmark": 255, - // FreeBSD only (SO_USER_COOKIE) - "outbound_user_cookie": 255, - // `SO_BINDTODEVICE` (Linux), `IP_BOUND_IF` (BSD), `IP_UNICAST_IF` (Windows) socket option for outbound sockets - "outbound_bind_interface": "eth1", - // Outbound socket bind() to this IP (choose a specific interface) - "outbound_bind_addr": "11.22.33.44", - // Outbound UDP socket allows IP fragmentation (default false) - "outbound_udp_allow_fragmentation": false, } ], @@ -840,8 +788,6 @@ Example configuration: "outbound_bind_interface": "eth1", // Outbound socket bind() to this IP (choose a specific interface) "outbound_bind_addr": "11.22.33.44", - // Outbound UDP socket allows IP fragmentation (default false) - "outbound_udp_allow_fragmentation": false, // Balancer customization "balancer": { @@ -855,19 +801,6 @@ Example configuration: "check_best_interval": 5 }, - // SIP008 Online Configuration Delivery - // https://shadowsocks.org/doc/sip008.html - "online_config": { - "config_url": "https://path-to-online-sip008-configuration", - // Optional. Seconds between each update to config_url. Default to 3600s - "update_interval": 3600, - // Optional. Whitelist of plugins (RECOMMENDED for all users) - // SECURITY: To avoid executing untrusted commands loaded from config_url - "allowed_plugins": [ - "v2ray-plugin" - ] - }, - // Service configurations // Logger configuration "log": { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/bin/ssurl.rs b/obfuscator/src/main/rust/shadowsocks-rust/bin/ssurl.rs index 39c6187..c94fbaa 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/bin/ssurl.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/bin/ssurl.rs @@ -6,7 +6,7 @@ use std::process::ExitCode; use clap::{Arg, ArgAction, Command, ValueHint}; -use qrcode::{QrCode, types::Color}; +use qrcode::{types::Color, QrCode}; use shadowsocks_service::{ config::{Config, ConfigType, ServerInstanceConfig}, @@ -158,5 +158,5 @@ fn main() -> ExitCode { } println!("Use -h for more detail"); - ExitCode::FAILURE + return ExitCode::FAILURE; } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/bin/sswinservice.rs b/obfuscator/src/main/rust/shadowsocks-rust/bin/sswinservice.rs index 2cf8d6b..07aef21 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/bin/sswinservice.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/bin/sswinservice.rs @@ -1,16 +1,14 @@ use std::{ ffi::OsString, future::Future, + process::ExitCode, sync::atomic::{AtomicU32, Ordering}, time::Duration, }; use clap::Command; use log::{error, info}; -use shadowsocks_rust::{ - error::ShadowsocksResult, - service::{local, manager, server}, -}; +use shadowsocks_rust::service::{local, manager, server}; use tokio::{runtime::Runtime, sync::oneshot}; use windows_service::{ define_windows_service, @@ -55,11 +53,11 @@ fn set_service_status( fn handle_create_service_result( status_handle: ServiceStatusHandle, - create_service_result: ShadowsocksResult<(Runtime, F)>, + create_service_result: Result<(Runtime, F), ExitCode>, stop_receiver: oneshot::Receiver<()>, ) -> Result<(), windows_service::Error> where - F: Future, + F: Future, { match create_service_result { Ok((runtime, main_fut)) => { @@ -103,8 +101,8 @@ where Duration::default(), )?; } - Err(err) => { - error!("failed to create service, exit code: {:?}", err.exit_code()); + Err(exit_code) => { + error!("failed to create service, exit code: {:?}", exit_code); // Report running state set_service_status( diff --git a/obfuscator/src/main/rust/shadowsocks-rust/clippy.toml b/obfuscator/src/main/rust/shadowsocks-rust/clippy.toml deleted file mode 100644 index b339f7c..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/clippy.toml +++ /dev/null @@ -1 +0,0 @@ -msrv = "1.85" diff --git a/obfuscator/src/main/rust/shadowsocks-rust/configs/org.shadowsocks.shadowsocks-rust.plist b/obfuscator/src/main/rust/shadowsocks-rust/configs/com.zonyitoo.shadowsocks-rust.plist similarity index 94% rename from obfuscator/src/main/rust/shadowsocks-rust/configs/org.shadowsocks.shadowsocks-rust.plist rename to obfuscator/src/main/rust/shadowsocks-rust/configs/com.zonyitoo.shadowsocks-rust.plist index a4317d2..c88a2d3 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/configs/org.shadowsocks.shadowsocks-rust.plist +++ b/obfuscator/src/main/rust/shadowsocks-rust/configs/com.zonyitoo.shadowsocks-rust.plist @@ -6,7 +6,7 @@ Label - org.shadowsocks.shadowsocks-rust + com.zonyitoo.shadowsocks-rust ProgramArguments diff --git a/obfuscator/src/main/rust/shadowsocks-rust/configs/shadowsocks.procd.sh b/obfuscator/src/main/rust/shadowsocks-rust/configs/shadowsocks.procd.sh index f5bc576..ea0e7ed 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/configs/shadowsocks.procd.sh +++ b/obfuscator/src/main/rust/shadowsocks-rust/configs/shadowsocks.procd.sh @@ -53,13 +53,13 @@ start_service() { fi SHADOWSOCKS_CONFIG_PATH="/usr/local/etc/shadowsocks.json" + SHADOWSOCKS_LOG_CONFIG_PATH="/usr/local/etc/shadowsocks.log.yaml" SHADOWSOCKS_EXECUTABLE="/usr/local/bin/sslocal" - SHADOWSOCKS_PARAMETERS="-c ${SHADOWSOCKS_CONFIG_PATH} --log-without-time --udp-max-associations 4192 --outbound-fwmark 255" + SHADOWSOCKS_PARAMETERS="-c ${SHADOWSOCKS_CONFIG_PATH} --log-without-time --log-config ${SHADOWSOCKS_LOG_CONFIG_PATH} --udp-max-associations 4192 --outbound-fwmark 255" SHADOWSOCKS_COMMAND="${SHADOWSOCKS_EXECUTABLE} ${SHADOWSOCKS_PARAMETERS}" procd_open_instance shadowsocks procd_set_param env RUST_BACKTRACE=1 - procd_set_param env NO_COLOR=1 procd_set_param file ${SHADOWSOCKS_CONFIG_PATH} procd_set_param respawn @@ -73,6 +73,7 @@ start_service() { if [ -x /sbin/ujail -a -e ${SHADOWSOCKS_CAPABILITIES_CONFIG_PATH} ]; then procd_add_jail shadowsocks requirejail procd_add_jail_mount ${SHADOWSOCKS_CONFIG_PATH} + procd_add_jail_mount ${SHADOWSOCKS_LOG_CONFIG_PATH} procd_set_param user shadowsocks procd_set_param group shadowsocks procd_set_param capabilities ${SHADOWSOCKS_CAPABILITIES_CONFIG_PATH} @@ -90,8 +91,9 @@ start_service() { fi SHADOWSOCKS6_CONFIG_PATH="/usr/local/etc/shadowsocks6.json" + SHADOWSOCKS6_LOG_CONFIG_PATH="/usr/local/etc/shadowsocks6.log.yaml" SHADOWSOCKS6_EXECUTABLE="/usr/local/bin/sslocal" - SHADOWSOCKS6_PARAMETERS="-c ${SHADOWSOCKS6_CONFIG_PATH} --log-without-time --udp-max-associations 4192 --outbound-fwmark 255" + SHADOWSOCKS6_PARAMETERS="-c ${SHADOWSOCKS6_CONFIG_PATH} --log-without-time --log-config ${SHADOWSOCKS6_LOG_CONFIG_PATH} --udp-max-associations 4192 --outbound-fwmark 255" SHADOWSOCKS6_COMMAND="${SHADOWSOCKS6_EXECUTABLE} ${SHADOWSOCKS6_PARAMETERS}" procd_set_param pidfile /var/run/shadowsocks.pid @@ -99,8 +101,6 @@ start_service() { procd_open_instance shadowsocks6 procd_set_param env RUST_BACKTRACE=1 - procd_set_param env NO_COLOR=1 - procd_set_param file ${SHADOWSOCKS6_CONFIG_PATH} procd_set_param respawn procd_set_param reload_signal USR1 @@ -113,6 +113,7 @@ start_service() { if [ -x /sbin/ujail -a -e ${SHADOWSOCKS_CAPABILITIES_CONFIG_PATH} ]; then procd_add_jail shadowsocks6 requirejail procd_add_jail_mount ${SHADOWSOCKS6_CONFIG_PATH} + procd_add_jail_mount ${SHADOWSOCKS6_LOG_CONFIG_PATH} procd_set_param user shadowsocks procd_set_param group shadowsocks procd_set_param capabilities ${SHADOWSOCKS_CAPABILITIES_CONFIG_PATH} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml index 50352d7..d09a39c 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "shadowsocks-service" -version = "1.23.4" +version = "1.17.2" authors = ["Shadowsocks Contributors"] description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls." repository = "https://github.com/shadowsocks/shadowsocks-rust" @@ -8,15 +8,12 @@ readme = "README.md" documentation = "https://docs.rs/shadowsocks-service" keywords = ["shadowsocks", "proxy", "socks", "socks5", "firewall"] license = "MIT" -edition = "2024" -rust-version = "1.85" +edition = "2021" [badges] maintenance = { status = "passively-maintained" } [features] -default = ["hickory-dns", "aead-cipher"] - full = [ "local", "server", @@ -26,11 +23,10 @@ full = [ "local-redir", "local-tunnel", "local-socks4", - "aead-cipher", ] # Enable local server -local = ["httparse"] +local = [] # Enable remote server server = [] # Enable manager server @@ -42,15 +38,30 @@ hickory-dns = ["hickory-resolver", "shadowsocks/trust-dns"] trust-dns = ["hickory-dns"] dns-over-tls = [ "hickory-dns", - "hickory-resolver/tls-ring", + "hickory-resolver/dns-over-tls", + "hickory-resolver/dns-over-rustls", "hickory-resolver/webpki-roots", + "hickory-resolver/native-certs", +] +dns-over-native-tls = [ + "hickory-dns", + "hickory-resolver/dns-over-tls", + "hickory-resolver/dns-over-native-tls", +] +dns-over-native-tls-vendored = [ + "hickory-dns", + "hickory-resolver/dns-over-tls", + "hickory-resolver/dns-over-native-tls", + "native-tls/vendored", ] dns-over-https = [ "hickory-dns", - "hickory-resolver/https-ring", + "hickory-resolver/dns-over-https", + "hickory-resolver/dns-over-https-rustls", "hickory-resolver/webpki-roots", + "hickory-resolver/native-certs", ] -dns-over-h3 = ["hickory-dns", "hickory-resolver/h3-ring"] +dns-over-h3 = ["hickory-dns", "hickory-resolver/dns-over-h3"] # Enable DNS-relay local-dns = ["local", "hickory-dns"] @@ -60,7 +71,7 @@ local-dns-relay = ["local-dns"] # Currently is only used in Android local-flow-stat = ["local"] # Enable HTTP protocol for sslocal -local-http = ["local", "hyper", "http", "http-body-util"] +local-http = ["local", "hyper", "http-body-util"] local-http-native-tls = ["local-http", "tokio-native-tls", "native-tls"] local-http-native-tls-vendored = [ "local-http-native-tls", @@ -82,19 +93,6 @@ local-tunnel = ["local"] local-socks4 = ["local"] # Enable Tun interface protocol for sslocal local-tun = ["local", "etherparse", "tun", "smoltcp"] -# Enable Fake DNS -local-fake-dns = ["local", "trust-dns", "rocksdb", "bson"] -# sslocal support online URL (SIP008 Online Configuration Delivery) -# https://shadowsocks.org/doc/sip008.html -local-online-config = [ - "local", - "local-http", - "mime", - "http", - "flate2", - "brotli", - "zstd", -] # Enable Stream Cipher Protocol # WARN: Stream Cipher Protocol is proved to be insecure @@ -102,20 +100,14 @@ local-online-config = [ # Users should always avoid using these ciphers in practice stream-cipher = ["shadowsocks/stream-cipher"] -# Enable AEAD ciphers -aead-cipher = ["shadowsocks/aead-cipher"] - # Enable extra AEAD ciphers # WARN: These non-standard AEAD ciphers are not officially supported by shadowsocks community -aead-cipher-extra = ["aead-cipher", "shadowsocks/aead-cipher-extra"] +aead-cipher-extra = ["shadowsocks/aead-cipher-extra"] # Enable AEAD 2022 aead-cipher-2022 = ["shadowsocks/aead-cipher-2022"] # Enable AEAD 2022 with extra ciphers -aead-cipher-2022-extra = [ - "aead-cipher-2022", - "shadowsocks/aead-cipher-2022-extra", -] +aead-cipher-2022-extra = ["shadowsocks/aead-cipher-2022-extra"] # Enable detection against replay attack security-replay-attack-detect = ["shadowsocks/security-replay-attack-detect"] @@ -126,19 +118,18 @@ log = "0.4" cfg-if = "1" pin-project = "1.1" once_cell = "1.17" -thiserror = "2.0" -arc-swap = "1.7" +thiserror = "1.0" +arc-swap = "1.6" -spin = { version = "0.10" } +spin = { version = "0.9" } lru_time_cache = "0.11" -bytes = "1.7" +bytes = "1.5" byte_string = "1.0" byteorder = "1.5" -rand = { version = "0.9", features = ["small_rng"] } -rocksdb = { version = "0.23", optional = true } +rand = { version = "0.8", features = ["small_rng"] } futures = "0.3" -tokio = { version = "1.38", features = [ +tokio = { version = "1.5", features = [ "io-util", "macros", "net", @@ -149,68 +140,54 @@ tokio = { version = "1.38", features = [ ] } tokio-native-tls = { version = "0.3", optional = true } native-tls = { version = "0.2.8", optional = true, features = ["alpn"] } -webpki-roots = { version = "1.0", optional = true } -tokio-rustls = { version = "0.26", optional = true, default-features = false, features = [ - "logging", - "tls12", - "ring", -] } -rustls-native-certs = { version = "0.8", optional = true } -trait-variant = "0.1" +tokio-rustls = { version = "0.25", optional = true } +webpki-roots = { version = "0.26", optional = true } +rustls-native-certs = { version = "0.7", optional = true } +async-trait = "0.1" socket2 = { version = "0.5", features = ["all"] } -libc = "~0.2.141" +libc = "0.2.141" -hyper = { version = "1.4", optional = true, features = ["full"] } +hyper = { version = "1.0", optional = true, features = ["full"] } http-body-util = { version = "0.1", optional = true } -http = { version = "1.1", optional = true } -httparse = { version = "1.9", optional = true } -hickory-resolver = { version = "0.25", optional = true, features = ["serde"] } +hickory-resolver = { version = "0.24", optional = true, features = [ + "serde-config", +] } -idna = "1.0" -ipnet = "2.10" +idna = "0.5" +ipnet = "2.9" iprange = "0.6" regex = "1.4" -mime = { version = "0.3", optional = true } -flate2 = { version = "1.0", optional = true } -brotli = { version = "8.0", optional = true } -zstd = { version = "0.13", optional = true } - -etherparse = { version = "0.18", optional = true } -smoltcp = { version = "0.12", optional = true, default-features = false, features = [ +tun = { version = "0.6", optional = true, features = ["async"] } +etherparse = { version = "0.13", optional = true } +smoltcp = { version = "0.10", optional = true, default-features = false, features = [ "std", "log", "medium-ip", "proto-ipv4", - "proto-ipv4-fragmentation", "proto-ipv6", "socket-icmp", "socket-udp", "socket-tcp", - "socket-tcp-cubic", ] } serde = { version = "1.0", features = ["derive"] } json5 = "0.4" -bson = { version = "2.13.0", optional = true } -shadowsocks = { version = "1.23.1", path = "../shadowsocks", default-features = false } +shadowsocks = { version = "1.17.2", path = "../shadowsocks", default-features = false } # Just for the ioctl call macro -[target.'cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd"))'.dependencies] -nix = { version = "0.30", features = ["ioctl"] } +[target.'cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "netbsd", target_os = "openbsd"))'.dependencies] +nix = { version = "0.27", features = ["ioctl"] } [target.'cfg(windows)'.dependencies] -windows-sys = { version = "0.59", features = ["Win32_Networking_WinSock"] } - -[target.'cfg(any(target_os = "ios", target_os = "macos", target_os = "linux", target_os = "android", target_os = "windows", target_os = "freebsd"))'.dependencies] -tun = { version = "0.7", optional = true, features = ["async"] } +windows-sys = { version = "0.52", features = ["Win32_Networking_WinSock"] } [dev-dependencies] byteorder = "1.5" -env_logger = "0.11" +env_logger = "0.10" [package.metadata.docs.rs] features = [ diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/README.md b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/README.md index 63f373a..be9ee1c 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/README.md +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/README.md @@ -19,8 +19,6 @@ shadowsocks is a fast tunnel proxy that helps you bypass firewalls. * Redir, aka Transparent Proxy (`local-redir`) * DNS (`local-dns`) * Tun (`local-tun`) - * FakeDNS (`local-fake-dns`) - * SIP008 Online Config (`local-online-config`) * Server diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/config.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/config.rs index 9a07e25..7835cf4 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/config.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/config.rs @@ -59,18 +59,22 @@ use std::{ use cfg_if::cfg_if; #[cfg(feature = "hickory-dns")] -use hickory_resolver::config::{NameServerConfig, ResolverConfig}; +use hickory_resolver::config::{NameServerConfig, Protocol, ResolverConfig}; #[cfg(feature = "local-tun")] use ipnet::IpNet; -#[cfg(feature = "local-fake-dns")] -use ipnet::{Ipv4Net, Ipv6Net}; use log::warn; use serde::{Deserialize, Serialize}; #[cfg(any(feature = "local-tunnel", feature = "local-dns"))] use shadowsocks::relay::socks5::Address; use shadowsocks::{ config::{ - ManagerAddr, Mode, ReplayAttackPolicy, ServerAddr, ServerConfig, ServerSource, ServerUser, ServerUserManager, + ManagerAddr, + Mode, + ReplayAttackPolicy, + ServerAddr, + ServerConfig, + ServerUser, + ServerUserManager, ServerWeight, }, crypto::CipherKind, @@ -125,14 +129,6 @@ struct SSConfig { #[serde(skip_serializing_if = "Option::is_none")] local_port: Option, - /// macOS launch activate socket for local_port - #[cfg(target_os = "macos")] - #[serde(skip_serializing_if = "Option::is_none")] - launchd_udp_socket_name: Option, - #[cfg(target_os = "macos")] - #[serde(skip_serializing_if = "Option::is_none")] - launchd_tcp_socket_name: Option, - #[serde(skip_serializing_if = "Option::is_none")] protocol: Option, @@ -162,8 +158,6 @@ struct SSConfig { udp_timeout: Option, #[serde(skip_serializing_if = "Option::is_none")] udp_max_associations: Option, - #[serde(skip_serializing_if = "Option::is_none")] - udp_mtu: Option, #[serde(skip_serializing_if = "Option::is_none", alias = "shadowsocks")] servers: Option>, @@ -215,9 +209,6 @@ struct SSConfig { #[serde(skip_serializing_if = "Option::is_none")] outbound_bind_interface: Option, - #[serde(skip_serializing_if = "Option::is_none")] - outbound_udp_allow_fragmentation: Option, - #[serde(skip_serializing_if = "Option::is_none")] security: Option, @@ -226,14 +217,6 @@ struct SSConfig { #[serde(skip_serializing_if = "Option::is_none")] acl: Option, - - #[cfg(feature = "local-online-config")] - #[serde(skip_serializing_if = "Option::is_none")] - version: Option, - - #[cfg(feature = "local-online-config")] - #[serde(skip_serializing_if = "Option::is_none")] - online_config: Option, } #[derive(Serialize, Deserialize, Debug, Default)] @@ -323,20 +306,6 @@ struct SSLocalExtConfig { #[serde(skip_serializing_if = "Option::is_none")] socks5_auth_config_path: Option, - /// Fake DNS - #[cfg(feature = "local-fake-dns")] - #[serde(skip_serializing_if = "Option::is_none")] - pub fake_dns_record_expire_duration: Option, - #[cfg(feature = "local-fake-dns")] - #[serde(skip_serializing_if = "Option::is_none")] - pub fake_dns_ipv4_network: Option, - #[cfg(feature = "local-fake-dns")] - #[serde(skip_serializing_if = "Option::is_none")] - pub fake_dns_ipv6_network: Option, - #[cfg(feature = "local-fake-dns")] - #[serde(skip_serializing_if = "Option::is_none")] - pub fake_dns_database_path: Option, - #[serde(skip_serializing_if = "Option::is_none")] acl: Option, } @@ -394,33 +363,6 @@ struct SSServerExtConfig { #[serde(skip_serializing_if = "Option::is_none")] acl: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - #[cfg(any(target_os = "linux", target_os = "android"))] - outbound_fwmark: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - #[cfg(target_os = "freebsd")] - outbound_user_cookie: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - outbound_bind_addr: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - outbound_bind_interface: Option, - - #[serde(skip_serializing_if = "Option::is_none")] - outbound_udp_allow_fragmentation: Option, -} - -#[cfg(feature = "local-online-config")] -#[derive(Serialize, Deserialize, Debug, Default)] -struct SSOnlineConfig { - config_url: String, - #[serde(skip_serializing_if = "Option::is_none")] - update_interval: Option, - #[serde(skip_serializing_if = "Option::is_none")] - allowed_plugins: Option>, } /// Server config type @@ -434,11 +376,6 @@ pub enum ConfigType { /// Config for Manager server Manager, - - /// Config for online config (SIP008) - /// https://shadowsocks.org/doc/sip008.html - #[cfg(feature = "local-online-config")] - OnlineConfig, } impl ConfigType { @@ -456,12 +393,6 @@ impl ConfigType { pub fn is_manager(self) -> bool { self == ConfigType::Manager } - - /// Check if it is online config type (SIP008) - #[cfg(feature = "local-online-config")] - pub fn is_online_config(self) -> bool { - self == ConfigType::OnlineConfig - } } cfg_if! { @@ -492,8 +423,10 @@ cfg_if! { /// /// Document: #[cfg(any( - target_os = "freebsd", target_os = "openbsd", + target_os = "freebsd", + target_os = "netbsd", + target_os = "solaris", target_os = "macos", target_os = "ios" ))] @@ -534,7 +467,7 @@ cfg_if! { const AVAILABLE_TYPES: &[&str] = &[RedirType::TProxy.name()]; AVAILABLE_TYPES } - } else if #[cfg(any(target_os = "freebsd"))] { + } else if #[cfg(any(target_os = "openbsd", target_os = "freebsd"))] { /// Default TCP transparent proxy solution on this platform pub fn tcp_default() -> RedirType { RedirType::PacketFilter @@ -558,31 +491,7 @@ cfg_if! { const AVAILABLE_TYPES: &[&str] = &[RedirType::PacketFilter.name(), RedirType::IpFirewall.name()]; AVAILABLE_TYPES } - } else if #[cfg(target_os = "openbsd")] { - /// Default TCP transparent proxy solution on this platform - pub fn tcp_default() -> RedirType { - RedirType::PacketFilter - } - - /// Available TCP transparent proxy types - #[doc(hidden)] - pub fn tcp_available_types() -> &'static [&'static str] { - const AVAILABLE_TYPES: &[&str] = &[RedirType::PacketFilter.name()]; - AVAILABLE_TYPES - } - - /// Default UDP transparent proxy solution on this platform - pub fn udp_default() -> RedirType { - RedirType::PacketFilter - } - - /// Available UDP transparent proxy types - #[doc(hidden)] - pub const fn udp_available_types() -> &'static [&'static str] { - const AVAILABLE_TYPES: &[&str] = &[RedirType::PacketFilter.name()]; - AVAILABLE_TYPES - } - } else if #[cfg(any(target_os = "macos", target_os = "ios"))] { + } else if #[cfg(any(target_os = "netbsd", target_os = "solaris", target_os = "macos", target_os = "ios"))] { /// Default TCP transparent proxy solution on this platform pub fn tcp_default() -> RedirType { RedirType::PacketFilter @@ -597,13 +506,13 @@ cfg_if! { /// Default UDP transparent proxy solution on this platform pub fn udp_default() -> RedirType { - RedirType::PacketFilter + RedirType::NotSupported } /// Available UDP transparent proxy types #[doc(hidden)] pub const fn udp_available_types() -> &'static [&'static str] { - const AVAILABLE_TYPES: &[&str] = &[RedirType::PacketFilter.name()]; + const AVAILABLE_TYPES: &[&str] = &[]; AVAILABLE_TYPES } } else { @@ -651,8 +560,10 @@ cfg_if! { RedirType::TProxy => "tproxy", #[cfg(any( - target_os = "freebsd", target_os = "openbsd", + target_os = "freebsd", + target_os = "netbsd", + target_os = "solaris", target_os = "macos", target_os = "ios" ))] @@ -692,8 +603,10 @@ cfg_if! { "tproxy" => Ok(RedirType::TProxy), #[cfg(any( - target_os = "freebsd", target_os = "openbsd", + target_os = "freebsd", + target_os = "netbsd", + target_os = "solaris", target_os = "macos", target_os = "ios", ))] @@ -703,6 +616,7 @@ cfg_if! { target_os = "freebsd", target_os = "macos", target_os = "ios", + target_os = "dragonfly" ))] "ipfw" => Ok(RedirType::IpFirewall), @@ -850,8 +764,6 @@ pub enum ProtocolType { Dns, #[cfg(feature = "local-tun")] Tun, - #[cfg(feature = "local-fake-dns")] - FakeDns, } impl ProtocolType { @@ -869,8 +781,6 @@ impl ProtocolType { ProtocolType::Dns => "dns", #[cfg(feature = "local-tun")] ProtocolType::Tun => "tun", - #[cfg(feature = "local-fake-dns")] - ProtocolType::FakeDns => "fake-dns", } } @@ -888,8 +798,6 @@ impl ProtocolType { "dns", #[cfg(feature = "local-tun")] "tun", - #[cfg(feature = "local-fake-dns")] - "fake-dns", ] } } @@ -920,8 +828,6 @@ impl FromStr for ProtocolType { "dns" => Ok(ProtocolType::Dns), #[cfg(feature = "local-tun")] "tun" => Ok(ProtocolType::Tun), - #[cfg(feature = "local-fake-dns")] - "fake-dns" => Ok(ProtocolType::FakeDns), _ => Err(ProtocolTypeError), } } @@ -933,7 +839,6 @@ pub struct LocalConfig { /// Listen address for local servers pub addr: Option, - /// Local Protocol pub protocol: ProtocolType, /// Mode @@ -945,9 +850,6 @@ pub struct LocalConfig { /// Resolving Android's issue: [shadowsocks/shadowsocks-android#2571](https://github.com/shadowsocks/shadowsocks-android/issues/2571) pub udp_addr: Option, - /// UDP Associate address. Uses `udp_addr` if not specified - pub udp_associate_addr: Option, - /// Destination address for tunnel #[cfg(feature = "local-tunnel")] pub forward_addr: Option
, @@ -1037,19 +939,6 @@ pub struct LocalConfig { /// SOCKS5 Authentication configuration #[cfg(feature = "local")] pub socks5_auth: Socks5AuthConfig, - - /// Fake DNS record expire seconds - #[cfg(feature = "local-fake-dns")] - pub fake_dns_record_expire_duration: Option, - /// Fake DNS IPv4 allocation space - #[cfg(feature = "local-fake-dns")] - pub fake_dns_ipv4_network: Option, - /// Fake DNS IPv6 allocation space - #[cfg(feature = "local-fake-dns")] - pub fake_dns_ipv6_network: Option, - /// Fake DNS storage database path - #[cfg(feature = "local-fake-dns")] - pub fake_dns_database_path: Option, } impl LocalConfig { @@ -1070,7 +959,6 @@ impl LocalConfig { mode, udp_addr: None, - udp_associate_addr: None, #[cfg(feature = "local-tunnel")] forward_addr: None, @@ -1107,15 +995,6 @@ impl LocalConfig { #[cfg(feature = "local")] socks5_auth: Socks5AuthConfig::default(), - - #[cfg(feature = "local-fake-dns")] - fake_dns_record_expire_duration: None, - #[cfg(feature = "local-fake-dns")] - fake_dns_ipv4_network: None, - #[cfg(feature = "local-fake-dns")] - fake_dns_ipv6_network: None, - #[cfg(feature = "local-fake-dns")] - fake_dns_database_path: None, } } @@ -1248,30 +1127,12 @@ pub struct ServerInstanceConfig { pub config: ServerConfig, /// Server's private ACL, set to `None` will use the global `AccessControl` pub acl: Option, - /// Server's outbound fwmark / address / interface to support split tunnel - #[cfg(any(target_os = "linux", target_os = "android"))] - pub outbound_fwmark: Option, - #[cfg(target_os = "freebsd")] - pub outbound_user_cookie: Option, - pub outbound_bind_addr: Option, - pub outbound_bind_interface: Option, - pub outbound_udp_allow_fragmentation: Option, } impl ServerInstanceConfig { /// Create with `ServerConfig` pub fn with_server_config(config: ServerConfig) -> ServerInstanceConfig { - ServerInstanceConfig { - config, - acl: None, - #[cfg(any(target_os = "linux", target_os = "android"))] - outbound_fwmark: None, - #[cfg(target_os = "freebsd")] - outbound_user_cookie: None, - outbound_bind_addr: None, - outbound_bind_interface: None, - outbound_udp_allow_fragmentation: None, - } + ServerInstanceConfig { config, acl: None } } } @@ -1291,19 +1152,6 @@ impl LocalInstanceConfig { } } -/// OnlineConfiguration (SIP008) -/// https://shadowsocks.org/doc/sip008.html -#[cfg(feature = "local-online-config")] -#[derive(Debug, Clone)] -pub struct OnlineConfig { - /// SIP008 URL - pub config_url: String, - /// Update interval, 3600s by default - pub update_interval: Option, - /// Allowed plugins - pub allowed_plugins: Option>, -} - /// Configuration #[derive(Clone, Debug)] pub struct Config { @@ -1357,8 +1205,6 @@ pub struct Config { pub outbound_bind_interface: Option, /// Outbound sockets will `bind` to this address pub outbound_bind_addr: Option, - /// Outbound UDP sockets allow IP fragmentation - pub outbound_udp_allow_fragmentation: bool, /// Path to protect callback unix address, only for Android #[cfg(target_os = "android")] pub outbound_vpn_protect_path: Option, @@ -1382,10 +1228,6 @@ pub struct Config { pub udp_timeout: Option, /// Maximum number of UDP Associations, default is unconfigured pub udp_max_associations: Option, - /// Maximum Transmission Unit (MTU) size for UDP packets - /// 65535 by default. Suggestion: 1500 - /// NOTE: mtu includes IP header, UDP header, UDP payload - pub udp_mtu: Option, /// ACL configuration (Global) /// @@ -1406,10 +1248,10 @@ pub struct Config { /// This is normally for auto-reloading if implementation supports. pub config_path: Option, - /// OnlineConfiguration (SIP008) - /// https://shadowsocks.org/doc/sip008.html - #[cfg(feature = "local-online-config")] - pub online_config: Option, + #[doc(hidden)] + /// Workers in runtime + /// It should be replaced with metrics APIs: https://github.com/tokio-rs/tokio/issues/4073 + pub worker_count: usize, } /// Configuration parsing error kind @@ -1440,12 +1282,6 @@ impl Error { } } -impl std::error::Error for Error { - fn description(&self) -> &str { - self.desc - } -} - macro_rules! impl_from { ($error:ty, $kind:expr, $desc:expr) => { impl From<$error> for Error { @@ -1503,7 +1339,6 @@ impl Config { outbound_user_cookie: None, outbound_bind_interface: None, outbound_bind_addr: None, - outbound_udp_allow_fragmentation: false, #[cfg(target_os = "android")] outbound_vpn_protect_path: None, @@ -1518,7 +1353,6 @@ impl Config { udp_timeout: None, udp_max_associations: None, - udp_mtu: None, acl: None, @@ -1531,8 +1365,7 @@ impl Config { config_path: None, - #[cfg(feature = "local-online-config")] - online_config: None, + worker_count: 1, } } @@ -1619,15 +1452,6 @@ impl Config { } }, }; - #[cfg(target_os = "macos")] - { - local_config - .launchd_tcp_socket_name - .clone_from(&config.launchd_tcp_socket_name); - local_config - .launchd_udp_socket_name - .clone_from(&config.launchd_udp_socket_name); - } let local_instance = LocalInstanceConfig { config: local_config, @@ -1804,18 +1628,6 @@ impl Config { } } - #[cfg(feature = "local-tun")] - if let Some(tun_interface_destination) = local.tun_interface_destination { - match tun_interface_destination.parse::() { - Ok(addr) => local_config.tun_interface_destination = Some(addr), - Err(..) => { - let err = - Error::new(ErrorKind::Malformed, "`tun_interface_destination` invalid", None); - return Err(err); - } - } - } - #[cfg(feature = "local-tun")] if let Some(tun_interface_name) = local.tun_interface_name { local_config.tun_interface_name = Some(tun_interface_name); @@ -1831,36 +1643,6 @@ impl Config { local_config.socks5_auth = Socks5AuthConfig::load_from_file(&socks5_auth_config_path)?; } - #[cfg(feature = "local-fake-dns")] - { - if let Some(d) = local.fake_dns_record_expire_duration { - local_config.fake_dns_record_expire_duration = Some(Duration::from_secs(d)); - } - if let Some(n) = local.fake_dns_ipv4_network { - match n.parse::() { - Ok(n) => local_config.fake_dns_ipv4_network = Some(n), - Err(..) => { - let err = - Error::new(ErrorKind::Malformed, "invalid `fake_dns_ipv4_network`", None); - return Err(err); - } - } - } - if let Some(n) = local.fake_dns_ipv6_network { - match n.parse::() { - Ok(n) => local_config.fake_dns_ipv6_network = Some(n), - Err(..) => { - let err = - Error::new(ErrorKind::Malformed, "invalid `fake_dns_ipv6_network`", None); - return Err(err); - } - } - } - if let Some(p) = local.fake_dns_database_path { - local_config.fake_dns_database_path = Some(p.into()); - } - } - let mut local_instance = LocalInstanceConfig { config: local_config, acl: None, @@ -1891,35 +1673,8 @@ impl Config { // // This behavior causes lots of confusion. use outbound_bind_addr instead } - #[cfg(feature = "local-online-config")] - ConfigType::OnlineConfig => { - // SIP008. https://shadowsocks.org/doc/sip008.html - // "version" should be set to "1" - match config.version { - Some(1) => {} - Some(v) => { - let err = Error::new( - ErrorKind::Invalid, - "invalid online config version", - Some(format!("version: {v}")), - ); - return Err(err); - } - None => { - warn!( - "OnlineConfig \"version\" is missing in the configuration, assuming it is a compatible version for this project" - ); - } - } - } } - let server_source = match config_type { - ConfigType::Local | ConfigType::Server | ConfigType::Manager => ServerSource::Configuration, - #[cfg(feature = "local-online-config")] - ConfigType::OnlineConfig => ServerSource::OnlineConfig, - }; - // Standard config // Server match (config.server, config.server_port, config.password, &config.method) { @@ -1961,18 +1716,7 @@ impl Config { } }; - let mut nsvr = match ServerConfig::new(addr, password, method) { - Ok(svr) => svr, - Err(serr) => { - let err = Error::new( - ErrorKind::Malformed, - "server config create failed", - Some(format!("{}", serr)), - ); - return Err(err); - } - }; - nsvr.set_source(server_source); + let mut nsvr = ServerConfig::new(addr, password, method); nsvr.set_mode(global_mode); if let Some(ref p) = config.plugin { @@ -2006,7 +1750,12 @@ impl Config { nsvr.set_timeout(timeout); } - nconfig.server.push(ServerInstanceConfig::with_server_config(nsvr)); + let server_instance = ServerInstanceConfig { + config: nsvr, + acl: None, + }; + + nconfig.server.push(server_instance); } (None, None, None, Some(_)) if config_type.is_manager() => { // Set the default method for manager @@ -2070,18 +1819,7 @@ impl Config { } }; - let mut nsvr = match ServerConfig::new(addr, password, method) { - Ok(svr) => svr, - Err(serr) => { - let err = Error::new( - ErrorKind::Malformed, - "server config create failed", - Some(format!("{}", serr)), - ); - return Err(err); - } - }; - nsvr.set_source(server_source); + let mut nsvr = ServerConfig::new(addr, password, method); // Extensible Identity Header, Users if let Some(users) = svr.users { @@ -2178,7 +1916,10 @@ impl Config { nsvr.set_weight(weight); } - let mut server_instance = ServerInstanceConfig::with_server_config(nsvr); + let mut server_instance = ServerInstanceConfig { + config: nsvr, + acl: None, + }; if let Some(acl_path) = svr.acl { let acl = match AccessControl::load_from_file(&acl_path) { @@ -2195,28 +1936,6 @@ impl Config { server_instance.acl = Some(acl); } - #[cfg(any(target_os = "linux", target_os = "android"))] - if let Some(outbound_fwmark) = svr.outbound_fwmark { - server_instance.outbound_fwmark = Some(outbound_fwmark); - } - - #[cfg(target_os = "freebsd")] - if let Some(outbound_user_cookie) = svr.outbound_user_cookie { - server_instance.outbound_user_cookie = Some(outbound_user_cookie); - } - - if let Some(outbound_bind_addr) = svr.outbound_bind_addr { - server_instance.outbound_bind_addr = Some(outbound_bind_addr); - } - - if let Some(ref outbound_bind_interface) = svr.outbound_bind_interface { - server_instance.outbound_bind_interface = Some(outbound_bind_interface.clone()); - } - - if let Some(outbound_udp_allow_fragmentation) = svr.outbound_udp_allow_fragmentation { - server_instance.outbound_udp_allow_fragmentation = Some(outbound_udp_allow_fragmentation); - } - nconfig.server.push(server_instance); } } @@ -2337,9 +2056,6 @@ impl Config { // Maximum associations to be kept simultaneously nconfig.udp_max_associations = config.udp_max_associations; - // MTU for UDP - nconfig.udp_mtu = config.udp_mtu; - // RLIMIT_NOFILE #[cfg(all(unix, not(target_os = "android")))] { @@ -2382,10 +2098,6 @@ impl Config { // Bind device / interface nconfig.outbound_bind_interface = config.outbound_bind_interface; - if let Some(b) = config.outbound_udp_allow_fragmentation { - nconfig.outbound_udp_allow_fragmentation = b; - } - // Security if let Some(sec) = config.security { if let Some(replay_attack) = sec.replay_attack { @@ -2424,15 +2136,6 @@ impl Config { nconfig.acl = Some(acl); } - #[cfg(feature = "local-online-config")] - if let Some(online_config) = config.online_config { - nconfig.online_config = Some(OnlineConfig { - config_url: online_config.config_url, - update_interval: online_config.update_interval.map(Duration::from_secs), - allowed_plugins: online_config.allowed_plugins, - }); - } - Ok(nconfig) } @@ -2446,7 +2149,10 @@ impl Config { #[cfg(feature = "hickory-dns")] "google" => DnsConfig::HickoryDns(ResolverConfig::google()), - #[cfg(all(feature = "hickory-dns", feature = "dns-over-tls"))] + #[cfg(all( + feature = "hickory-dns", + any(feature = "dns-over-tls", feature = "dns-over-native-tls") + ))] "google_tls" => DnsConfig::HickoryDns(ResolverConfig::google_tls()), #[cfg(all(feature = "hickory-dns", feature = "dns-over-https"))] "google_https" => DnsConfig::HickoryDns(ResolverConfig::google_https()), @@ -2455,14 +2161,20 @@ impl Config { #[cfg(feature = "hickory-dns")] "cloudflare" => DnsConfig::HickoryDns(ResolverConfig::cloudflare()), - #[cfg(all(feature = "hickory-dns", feature = "dns-over-tls"))] + #[cfg(all( + feature = "hickory-dns", + any(feature = "dns-over-tls", feature = "dns-over-native-tls") + ))] "cloudflare_tls" => DnsConfig::HickoryDns(ResolverConfig::cloudflare_tls()), #[cfg(all(feature = "hickory-dns", feature = "dns-over-https"))] "cloudflare_https" => DnsConfig::HickoryDns(ResolverConfig::cloudflare_https()), #[cfg(feature = "hickory-dns")] "quad9" => DnsConfig::HickoryDns(ResolverConfig::quad9()), - #[cfg(all(feature = "hickory-dns", feature = "dns-over-tls"))] + #[cfg(all( + feature = "hickory-dns", + any(feature = "dns-over-tls", feature = "dns-over-native-tls") + ))] "quad9_tls" => DnsConfig::HickoryDns(ResolverConfig::quad9_tls()), #[cfg(all(feature = "hickory-dns", feature = "dns-over-https"))] "quad9_https" => DnsConfig::HickoryDns(ResolverConfig::quad9_https()), @@ -2475,8 +2187,6 @@ impl Config { #[cfg(any(feature = "hickory-dns", feature = "local-dns"))] fn parse_dns_nameservers(&mut self, nameservers: &str) -> Result { - use hickory_resolver::proto::xfer::Protocol; - #[cfg(all(unix, feature = "local-dns"))] if let Some(nameservers) = nameservers.strip_prefix("unix://") { // A special DNS server only for shadowsocks-android @@ -2637,16 +2347,6 @@ impl Config { return Err(err); } - #[cfg(feature = "local-online-config")] - if self.config_type.is_online_config() && self.server.is_empty() { - let err = Error::new( - ErrorKind::MissingField, - "missing any valid servers in configuration", - None, - ); - return Err(err); - } - if self.config_type.is_manager() && self.manager.is_none() { let err = Error::new( ErrorKind::MissingField, @@ -2687,20 +2387,6 @@ impl Config { return Err(err); } } - - #[cfg(feature = "local-online-config")] - if self.config_type.is_online_config() { - // Only server could bind to INADDR_ANY - let ip = sa.ip(); - if ip.is_unspecified() { - let err = Error::new( - ErrorKind::Malformed, - "`server` shouldn't be an unspecified address (INADDR_ANY)", - None, - ); - return Err(err); - } - } } ServerAddr::DomainName(dn, port) => { if dn.is_empty() || *port == 0 { @@ -2716,19 +2402,6 @@ impl Config { // Users' key must match key length if let Some(user_manager) = server.user_manager() { - #[cfg(feature = "aead-cipher-2022")] - if server.method().is_aead_2022() { - use shadowsocks::config::method_support_eih; - if user_manager.user_count() > 0 && !method_support_eih(server.method()) { - let err = Error::new( - ErrorKind::Invalid, - "server method doesn't support Extended Identity Header (EIH), remove `users`", - Some(format!("method {}", server.method())), - ); - return Err(err); - } - } - let key_len = server.method().key_len(); for user in user_manager.users_iter() { if user.key().len() != key_len { @@ -2760,21 +2433,15 @@ impl fmt::Display for Config { let local = &local_instance.config; if let Some(ref a) = local.addr { jconf.local_address = Some(match a { - ServerAddr::SocketAddr(sa) => sa.ip().to_string(), - ServerAddr::DomainName(dm, ..) => dm.to_string(), + ServerAddr::SocketAddr(ref sa) => sa.ip().to_string(), + ServerAddr::DomainName(ref dm, ..) => dm.to_string(), }); jconf.local_port = Some(match a { - ServerAddr::SocketAddr(sa) => sa.port(), + ServerAddr::SocketAddr(ref sa) => sa.port(), ServerAddr::DomainName(.., port) => *port, }); } - #[cfg(target_os = "macos")] - { - jconf.launchd_tcp_socket_name.clone_from(&local.launchd_tcp_socket_name); - jconf.launchd_udp_socket_name.clone_from(&local.launchd_udp_socket_name); - } - if local.protocol != ProtocolType::Socks { jconf.protocol = Some(local.protocol.as_str().to_owned()); } @@ -2790,11 +2457,11 @@ impl fmt::Display for Config { let jlocal = SSLocalExtConfig { local_address: local.addr.as_ref().map(|a| match a { - ServerAddr::SocketAddr(sa) => sa.ip().to_string(), - ServerAddr::DomainName(dm, ..) => dm.to_string(), + ServerAddr::SocketAddr(ref sa) => sa.ip().to_string(), + ServerAddr::DomainName(ref dm, ..) => dm.to_string(), }), local_port: local.addr.as_ref().map(|a| match a { - ServerAddr::SocketAddr(sa) => sa.port(), + ServerAddr::SocketAddr(ref sa) => sa.port(), ServerAddr::DomainName(.., port) => *port, }), disabled: None, @@ -2832,15 +2499,15 @@ impl fmt::Display for Config { forward_address: match local.forward_addr { None => None, Some(ref forward_addr) => match forward_addr { - Address::SocketAddress(sa) => Some(sa.ip().to_string()), - Address::DomainNameAddress(dm, ..) => Some(dm.to_string()), + Address::SocketAddress(ref sa) => Some(sa.ip().to_string()), + Address::DomainNameAddress(ref dm, ..) => Some(dm.to_string()), }, }, #[cfg(feature = "local-tunnel")] forward_port: match local.forward_addr { None => None, Some(ref forward_addr) => match forward_addr { - Address::SocketAddress(sa) => Some(sa.port()), + Address::SocketAddress(ref sa) => Some(sa.port()), Address::DomainNameAddress(.., port) => Some(*port), }, }, @@ -2848,9 +2515,9 @@ impl fmt::Display for Config { local_dns_address: match local.local_dns_addr { None => None, Some(ref local_dns_addr) => match local_dns_addr { - NameServerAddr::SocketAddr(sa) => Some(sa.ip().to_string()), + NameServerAddr::SocketAddr(ref sa) => Some(sa.ip().to_string()), #[cfg(unix)] - NameServerAddr::UnixSocketAddr(path) => { + NameServerAddr::UnixSocketAddr(ref path) => { Some(path.to_str().expect("path is not utf-8").to_owned()) } }, @@ -2859,7 +2526,7 @@ impl fmt::Display for Config { local_dns_port: match local.local_dns_addr { None => None, Some(ref local_dns_addr) => match local_dns_addr { - NameServerAddr::SocketAddr(sa) => Some(sa.port()), + NameServerAddr::SocketAddr(ref sa) => Some(sa.port()), #[cfg(unix)] NameServerAddr::UnixSocketAddr(..) => None, }, @@ -2868,15 +2535,15 @@ impl fmt::Display for Config { remote_dns_address: match local.remote_dns_addr { None => None, Some(ref remote_dns_addr) => match remote_dns_addr { - Address::SocketAddress(sa) => Some(sa.ip().to_string()), - Address::DomainNameAddress(dm, ..) => Some(dm.to_string()), + Address::SocketAddress(ref sa) => Some(sa.ip().to_string()), + Address::DomainNameAddress(ref dm, ..) => Some(dm.to_string()), }, }, #[cfg(feature = "local-dns")] remote_dns_port: match local.remote_dns_addr { None => None, Some(ref remote_dns_addr) => match remote_dns_addr { - Address::SocketAddress(sa) => Some(sa.port()), + Address::SocketAddress(ref sa) => Some(sa.port()), Address::DomainNameAddress(.., port) => Some(*port), }, }, @@ -2897,18 +2564,6 @@ impl fmt::Display for Config { #[cfg(feature = "local")] socks5_auth_config_path: None, - #[cfg(feature = "local-fake-dns")] - fake_dns_record_expire_duration: local.fake_dns_record_expire_duration.map(|d| d.as_secs()), - #[cfg(feature = "local-fake-dns")] - fake_dns_ipv4_network: local.fake_dns_ipv4_network.map(|n| n.to_string()), - #[cfg(feature = "local-fake-dns")] - fake_dns_ipv6_network: local.fake_dns_ipv6_network.map(|n| n.to_string()), - #[cfg(feature = "local-fake-dns")] - fake_dns_database_path: local - .fake_dns_database_path - .as_ref() - .and_then(|n| n.to_str().map(ToOwned::to_owned)), - acl: local_instance .acl .as_ref() @@ -3032,13 +2687,6 @@ impl fmt::Display for Config { .acl .as_ref() .and_then(|a| a.file_path().to_str().map(ToOwned::to_owned)), - #[cfg(any(target_os = "linux", target_os = "android"))] - outbound_fwmark: inst.outbound_fwmark, - #[cfg(target_os = "freebsd")] - outbound_user_cookie: inst.outbound_user_cookie, - outbound_bind_addr: inst.outbound_bind_addr, - outbound_bind_interface: inst.outbound_bind_interface.clone(), - outbound_udp_allow_fragmentation: inst.outbound_udp_allow_fragmentation, }); } @@ -3116,8 +2764,6 @@ impl fmt::Display for Config { jconf.udp_max_associations = self.udp_max_associations; - jconf.udp_mtu = self.udp_mtu; - #[cfg(all(unix, not(target_os = "android")))] { jconf.nofile = self.nofile; @@ -3142,8 +2788,7 @@ impl fmt::Display for Config { } jconf.outbound_bind_addr = self.outbound_bind_addr.map(|i| i.to_string()); - jconf.outbound_bind_interface.clone_from(&self.outbound_bind_interface); - jconf.outbound_udp_allow_fragmentation = Some(self.outbound_udp_allow_fragmentation); + jconf.outbound_bind_interface = self.outbound_bind_interface.clone(); // Security if self.security.replay_attack.policy != ReplayAttackPolicy::default() { @@ -3168,16 +2813,6 @@ impl fmt::Display for Config { jconf.acl = Some(acl.file_path().to_str().unwrap().to_owned()); } - // OnlineConfig - #[cfg(feature = "local-online-config")] - if let Some(ref online_config) = self.online_config { - jconf.online_config = Some(SSOnlineConfig { - config_url: online_config.config_url.clone(), - update_interval: online_config.update_interval.as_ref().map(Duration::as_secs), - allowed_plugins: online_config.allowed_plugins.clone(), - }); - } - write!(f, "{}", json5::to_string(&jconf).unwrap()) } } @@ -3193,7 +2828,7 @@ pub fn read_variable_field_value(value: &str) -> Cow<'_, str> { Ok(value) => return value.into(), Err(err) => { warn!( - "couldn't read password from environment variable {}, error: {}", + "couldn't read password from environemnt variable {}, error: {}", var_name, err ); } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/dns/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/dns/mod.rs index 048915f..32da44d 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/dns/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/dns/mod.rs @@ -41,9 +41,9 @@ pub async fn build_dns_resolver( Ok(r) => Some(r), Err(err) => { warn!( - "initialize hickory-dns DNS system resolver failed, fallback to default system resolver, error: {}", - err - ); + "initialize hickory-dns DNS system resolver failed, fallback to default system resolver, error: {}", + err + ); None } }; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/lib.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/lib.rs index 8514b82..13116b1 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/lib.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/lib.rs @@ -70,7 +70,6 @@ pub mod net; #[cfg(feature = "server")] pub mod server; mod sys; -mod utils; /// Default UDP association's expire duration #[allow(dead_code)] diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/context.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/context.rs index 18aff4c..5eb542a 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/context.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/context.rs @@ -15,14 +15,9 @@ use shadowsocks::{ }; #[cfg(feature = "local-dns")] use tokio::sync::Mutex; -#[cfg(feature = "local-fake-dns")] -use tokio::sync::RwLock; use crate::{acl::AccessControl, config::SecurityConfig, net::FlowStat}; -#[cfg(feature = "local-fake-dns")] -use super::fake_dns::manager::FakeDnsManager; - /// Local Service Context #[derive(Clone)] pub struct ServiceContext { @@ -39,9 +34,6 @@ pub struct ServiceContext { // For DNS relay's ACL domain name reverse lookup -- whether the IP shall be forwarded #[cfg(feature = "local-dns")] reverse_lookup_cache: Arc>>, - - #[cfg(feature = "local-fake-dns")] - fake_dns_manager: Arc>>>, } impl Default for ServiceContext { @@ -64,8 +56,6 @@ impl ServiceContext { Duration::from_secs(3 * 24 * 60 * 60), 10240, // XXX: It should be enough for a normal user. ))), - #[cfg(feature = "local-fake-dns")] - fake_dns_manager: Arc::new(RwLock::new(Vec::new())), } } @@ -137,7 +127,7 @@ impl ServiceContext { Some(ref acl) => { #[cfg(feature = "local-dns")] { - if let Address::SocketAddress(saddr) = addr { + if let Address::SocketAddress(ref saddr) = addr { // do the reverse lookup in our local cache let mut reverse_lookup_cache = self.reverse_lookup_cache.lock().await; // if a qname is found @@ -190,31 +180,4 @@ impl ServiceContext { let context = Arc::get_mut(&mut self.context).expect("cannot set security on a shared context"); context.set_replay_attack_policy(security.replay_attack.policy); } - - /// Set Fake DNS manager - #[cfg(feature = "local-fake-dns")] - pub async fn add_fake_dns_manager(&self, manager: Arc) { - let mut managers = self.fake_dns_manager.write().await; - managers.push(manager); - } - - /// Fake DNS maps IP to Domain - #[cfg(feature = "local-fake-dns")] - pub async fn try_map_fake_address(&self, addr: &Address) -> Option
{ - let socket_addr = match addr { - Address::DomainNameAddress(..) => return None, - Address::SocketAddress(socket_addr) => socket_addr, - }; - let ip_addr = socket_addr.ip(); - - for mgr in self.fake_dns_manager.read().await.iter() { - if let Ok(Some(name)) = mgr.map_ip_domain(ip_addr).await { - let new_addr = Address::DomainNameAddress(name.to_string(), socket_addr.port()); - log::trace!("fakedns mapped {} -> {}", addr, new_addr); - return Some(new_addr); - } - } - - None - } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/client_cache.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/client_cache.rs index 72215f3..d4b2694 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/client_cache.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/client_cache.rs @@ -3,14 +3,14 @@ #[cfg(unix)] use std::path::Path; use std::{ - collections::{HashMap, VecDeque, hash_map::Entry}, + collections::{hash_map::Entry, HashMap, VecDeque}, future::Future, io, net::SocketAddr, time::Duration, }; -use hickory_resolver::proto::{ProtoError, op::Message}; +use hickory_resolver::proto::{error::ProtoError, op::Message}; use log::{debug, trace}; use tokio::sync::Mutex; @@ -115,46 +115,37 @@ impl DnsClientCache { svr_cfg: Option<&ServerConfig>, ) -> Result { let mut last_err = None; + let mut dns_res: io::Result; for _ in 0..self.retry_count { - let create_fn = async { - match dck { - DnsClientKey::TcpLocal(tcp_l) => { - let connect_opts = connect_opts.expect("connect options is required for local DNS"); - DnsClient::connect_tcp_local(*tcp_l, connect_opts).await - } - DnsClientKey::UdpLocal(udp_l) => { - let connect_opts = connect_opts.expect("connect options is required for local DNS"); - DnsClient::connect_udp_local(*udp_l, connect_opts).await - } - DnsClientKey::TcpRemote(tcp_l) => { - let context = context.expect("context is required for remote DNS"); - let svr_cfg = svr_cfg.expect("server config is required for remote DNS"); - - DnsClient::connect_tcp_remote( - context.context(), - svr_cfg, - tcp_l, - context.connect_opts_ref(), - context.flow_stat(), - ) - .await - } - DnsClientKey::UdpRemote(udp_l) => { - let context = context.expect("context is required for remote DNS"); - let svr_cfg = svr_cfg.expect("server config is required for remote DNS"); - - DnsClient::connect_udp_remote( - context.context(), - svr_cfg, - udp_l.clone(), - context.connect_opts_ref(), - context.flow_stat(), - ) - .await - } + match dck { + DnsClientKey::TcpLocal(tcp_l) => { + dns_res = DnsClient::connect_tcp_local(*tcp_l, connect_opts.unwrap()).await; } - }; - match self.get_client_or_create(dck, create_fn).await { + DnsClientKey::UdpLocal(udp_l) => { + dns_res = DnsClient::connect_udp_local(*udp_l, connect_opts.unwrap()).await; + } + DnsClientKey::TcpRemote(tcp_l) => { + dns_res = DnsClient::connect_tcp_remote( + context.unwrap().context(), + svr_cfg.unwrap(), + tcp_l, + context.unwrap().connect_opts_ref(), + context.unwrap().flow_stat(), + ) + .await; + } + DnsClientKey::UdpRemote(udp_l) => { + dns_res = DnsClient::connect_udp_remote( + context.unwrap().context(), + svr_cfg.unwrap(), + udp_l.clone(), + context.unwrap().connect_opts_ref(), + context.unwrap().flow_stat(), + ) + .await; + } + } + match self.get_client_or_create(dck, async { dns_res }).await { Ok(mut client) => match client.lookup_timeout(msg.clone(), self.timeout).await { Ok(msg) => { self.save_client(dck.clone(), client).await; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/dns_resolver.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/dns_resolver.rs index 6831578..b27b02a 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/dns_resolver.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/dns_resolver.rs @@ -5,6 +5,7 @@ use std::{ net::{Ipv4Addr, Ipv6Addr, SocketAddr}, }; +use async_trait::async_trait; use futures::future; use hickory_resolver::proto::{ op::{Message, Query}, @@ -103,6 +104,7 @@ impl DnsResolver { } } +#[async_trait] impl DnsResolve for DnsResolver { async fn resolve(&self, host: &str, port: u16) -> io::Result> { let mut name = Name::from_utf8(host)?; @@ -173,11 +175,12 @@ fn store_dns(res: Message, port: u16) -> Vec { let mut vaddr = Vec::new(); for record in res.answers() { match record.data() { - RData::A(addr) => vaddr.push(SocketAddr::new(Ipv4Addr::from(*addr).into(), port)), - RData::AAAA(addr) => vaddr.push(SocketAddr::new(Ipv6Addr::from(*addr).into(), port)), - rdata => { + Some(RData::A(addr)) => vaddr.push(SocketAddr::new(Ipv4Addr::from(*addr).into(), port)), + Some(RData::AAAA(addr)) => vaddr.push(SocketAddr::new(Ipv6Addr::from(*addr).into(), port)), + Some(rdata) => { trace!("skipped rdata {:?}", rdata); } + None => {} } } vaddr diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/server.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/server.rs index 1a16b5d..567a5ee 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/server.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/server.rs @@ -15,14 +15,15 @@ use std::{ use byteorder::{BigEndian, ByteOrder}; use bytes::{BufMut, BytesMut}; use futures::{ - FutureExt, future::{self, Either}, + FutureExt, }; use hickory_resolver::proto::{ - op::{Message, OpCode, Query, header::MessageType, response_code::ResponseCode}, + op::{header::MessageType, response_code::ResponseCode, Message, OpCode, Query}, rr::{DNSClass, Name, RData, RecordType}, }; use log::{debug, error, info, trace, warn}; +use rand::{thread_rng, Rng}; use tokio::{ io::{AsyncReadExt, AsyncWriteExt}, net::{TcpStream, UdpSocket}, @@ -30,10 +31,10 @@ use tokio::{ }; use shadowsocks::{ - ServerAddr, config::Mode, net::TcpListener, - relay::{Address, udprelay::MAXIMUM_UDP_PAYLOAD_SIZE}, + relay::{udprelay::MAXIMUM_UDP_PAYLOAD_SIZE, Address}, + ServerAddr, }; use crate::{ @@ -211,17 +212,15 @@ impl DnsTcpServerBuilder { async fn build(self) -> io::Result { cfg_if::cfg_if! { if #[cfg(target_os = "macos")] { - let listener = match self.launchd_socket_name { - Some(launchd_socket_name) => { - use tokio::net::TcpListener as TokioTcpListener; - use crate::net::launch_activate_socket::get_launch_activate_tcp_listener; - - let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name, true)?; - let tokio_listener = TokioTcpListener::from_std(std_listener)?; - TcpListener::from_listener(tokio_listener, self.context.accept_opts())? - } _ => { - create_standard_tcp_listener(&self.context, &self.bind_addr).await? - } + let listener = if let Some(launchd_socket_name) = self.launchd_socket_name { + use tokio::net::TcpListener as TokioTcpListener; + use crate::net::launch_activate_socket::get_launch_activate_tcp_listener; + + let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name)?; + let tokio_listener = TokioTcpListener::from_std(std_listener)?; + TcpListener::from_listener(tokio_listener, self.context.accept_opts())? + } else { + create_standard_tcp_listener(&self.context, &self.bind_addr).await? }; } else { let listener = create_standard_tcp_listener(&self.context, &self.bind_addr).await?; @@ -386,15 +385,15 @@ impl DnsUdpServerBuilder { async fn build(self) -> io::Result { cfg_if::cfg_if! { if #[cfg(target_os = "macos")] { - let socket = match self.launchd_socket_name { Some(launchd_socket_name) => { + let socket = if let Some(launchd_socket_name) = self.launchd_socket_name { use tokio::net::UdpSocket as TokioUdpSocket; use crate::net::launch_activate_socket::get_launch_activate_udp_socket; - let std_socket = get_launch_activate_udp_socket(&launchd_socket_name, true)?; + let std_socket = get_launch_activate_udp_socket(&launchd_socket_name)?; TokioUdpSocket::from_std(std_socket)? - } _ => { + } else { create_standard_udp_listener(&self.context, &self.bind_addr).await?.into() - }}; + }; } else { let socket = create_standard_udp_listener(&self.context, &self.bind_addr).await?.into(); } @@ -591,22 +590,16 @@ fn should_forward_by_query(context: &ServiceContext, balancer: &PingBalancer, qu // https://github.com/shadowsocks/shadowsocks-android/issues/2722 for server in balancer.servers() { let svr_cfg = server.server_config(); - if let ServerAddr::DomainName(dn, ..) = svr_cfg.addr() { + if let ServerAddr::DomainName(ref dn, ..) = svr_cfg.addr() { // Convert domain name to `Name` // Ignore it if error occurs - if let Ok(mut name) = Name::from_str(dn) { + if let Ok(name) = Name::from_str(dn) { // cmp will handle FQDN in case insensitive way if let Ordering::Equal = query.name().cmp(&name) { // It seems that query is for this server, just bypass it to local resolver trace!("DNS querying name {} of server {:?}", query.name(), svr_cfg); return Some(false); } - // test it again with fqdn set - name.set_fqdn(true); - if let Ordering::Equal = query.name().cmp(&name) { - trace!("DNS querying name {} of server {:?}", query.name(), svr_cfg); - return Some(false); - } } } } @@ -637,11 +630,11 @@ fn should_forward_by_response( query: &Query, ) -> bool { if let Some(acl) = acl { - if let Ok(local_response) = local_response { + if let Ok(ref local_response) = local_response { let mut names = HashSet::new(); names.insert(query.name()); macro_rules! examine_name { - ($name:expr_2021, $is_answer:expr_2021) => {{ + ($name:expr, $is_answer:expr) => {{ names.insert($name); if $is_answer { if let Some(value) = check_name_in_proxy_list(acl, $name) { @@ -655,8 +648,8 @@ fn should_forward_by_response( }}; } macro_rules! examine_record { - ($rec:ident, $is_answer:expr_2021) => { - if let RData::CNAME(name) = $rec.data() { + ($rec:ident, $is_answer:expr) => { + if let Some(RData::CNAME(name)) = $rec.data() { if $is_answer { if let Some(value) = check_name_in_proxy_list(acl, name) { return value; @@ -674,13 +667,13 @@ fn should_forward_by_response( return true; } let forward = match $rec.data() { - RData::A(ip) => acl.check_ip_in_proxy_list(&IpAddr::V4((*ip).into())), - RData::AAAA(ip) => acl.check_ip_in_proxy_list(&IpAddr::V6((*ip).into())), + Some(RData::A(ip)) => acl.check_ip_in_proxy_list(&IpAddr::V4((*ip).into())), + Some(RData::AAAA(ip)) => acl.check_ip_in_proxy_list(&IpAddr::V6((*ip).into())), // MX records cause type A additional section processing for the host specified by EXCHANGE. - RData::MX(mx) => examine_name!(mx.exchange(), $is_answer), + Some(RData::MX(mx)) => examine_name!(mx.exchange(), $is_answer), // NS records cause both the usual additional section processing to locate a type A record... - RData::NS(name) => examine_name!(name, $is_answer), - RData::PTR(_) => unreachable!(), + Some(RData::NS(name)) => examine_name!(name, $is_answer), + Some(RData::PTR(_)) => unreachable!(), _ => acl.is_default_in_proxy_list(), }; if !forward { @@ -759,12 +752,12 @@ impl DnsClient { for rec in result.answers() { trace!("dns answer: {:?}", rec); match rec.data() { - RData::A(ip) => { + Some(RData::A(ip)) => { self.context .add_to_reverse_lookup_cache(Ipv4Addr::from(*ip).into(), forward) .await } - RData::AAAA(ip) => { + Some(RData::AAAA(ip)) => { self.context .add_to_reverse_lookup_cache(Ipv6Addr::from(*ip).into(), forward) .await @@ -861,7 +854,7 @@ impl DnsClient { async fn lookup_remote_inner(&self, query: &Query, remote_addr: &Address) -> io::Result { let mut message = Message::new(); - message.set_id(rand::random()); + message.set_id(thread_rng().gen()); message.set_recursion_desired(true); message.add_query(query.clone()); @@ -891,7 +884,7 @@ impl DnsClient { // Then this future will be disabled and have no effect // // Randomly choose from 500ms ~ 1.5s for preventing obvious request pattern - let sleep_time = rand::random_range(500..=1500); + let sleep_time = thread_rng().gen_range(500..=1500); time::sleep(Duration::from_millis(sleep_time)).await; let server = self.balancer.best_tcp_server(); @@ -940,7 +933,7 @@ impl DnsClient { async fn lookup_local_inner(&self, query: &Query, local_addr: &NameServerAddr) -> io::Result { let mut message = Message::new(); - message.set_id(rand::random()); + message.set_id(thread_rng().gen()); message.set_recursion_desired(true); message.add_query(query.clone()); diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/upstream.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/upstream.rs index e069ab9..a5e1efb 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/upstream.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/dns/upstream.rs @@ -12,18 +12,17 @@ use std::{ use byteorder::{BigEndian, ByteOrder}; use bytes::{BufMut, BytesMut}; -use hickory_resolver::proto::{ProtoError, ProtoErrorKind, op::Message}; -use log::{error, trace}; -use lru_time_cache::{Entry, LruCache}; +use hickory_resolver::proto::{ + error::{ProtoError, ProtoErrorKind}, + op::Message, +}; +use log::trace; +use rand::{thread_rng, Rng}; use shadowsocks::{ config::ServerConfig, context::SharedContext, net::{ConnectOpts, TcpStream as ShadowTcpStream, UdpSocket as ShadowUdpSocket}, - relay::{ - Address, - tcprelay::ProxyClientStream, - udprelay::{ProxySocket, options::UdpSocketControlData}, - }, + relay::{tcprelay::ProxyClientStream, udprelay::ProxySocket, Address}, }; #[cfg(unix)] use tokio::net::UnixStream; @@ -33,11 +32,7 @@ use tokio::{ time, }; -use crate::{ - DEFAULT_UDP_EXPIRY_DURATION, - local::net::udp::generate_client_session_id, - net::{FlowStat, MonProxySocket, MonProxyStream, packet_window::PacketWindowFilter}, -}; +use crate::net::{FlowStat, MonProxySocket, MonProxyStream}; /// Collection of various DNS connections #[allow(clippy::large_enum_variant)] @@ -57,10 +52,8 @@ pub enum DnsClient { stream: ProxyClientStream>, }, UdpRemote { - socket: MonProxySocket, + socket: MonProxySocket, ns: Address, - control: UdpSocketControlData, - server_windows: LruCache, }, } @@ -107,18 +100,9 @@ impl DnsClient { connect_opts: &ConnectOpts, flow_stat: Arc, ) -> io::Result { - let socket = ProxySocket::connect_with_opts(context.clone(), svr_cfg, connect_opts).await?; - let socket = MonProxySocket::from_socket(socket, flow_stat.clone()); - let mut control = UdpSocketControlData::default(); - control.client_session_id = generate_client_session_id(); - control.packet_id = 0; // AEAD-2022 Packet ID starts from 1 - Ok(DnsClient::UdpRemote { - socket, - ns, - control, - // NOTE: expiry duration should be configurable. But the Client is held by DnsClientCache, which expires very quickly. - server_windows: LruCache::with_expiry_duration(DEFAULT_UDP_EXPIRY_DURATION), - }) + let socket = ProxySocket::connect_with_opts(context, svr_cfg, connect_opts).await?; + let socket = MonProxySocket::from_socket(socket, flow_stat); + Ok(DnsClient::UdpRemote { socket, ns }) } /// Make a DNS lookup @@ -138,7 +122,7 @@ impl DnsClient { async fn inner_lookup(&mut self, msg: &mut Message) -> Result { // Make a random ID - msg.set_id(rand::random()); + msg.set_id(thread_rng().gen()); trace!("DNS lookup {:?}", msg); @@ -148,7 +132,7 @@ impl DnsClient { let bytes = msg.to_vec()?; socket.send(&bytes).await?; - let mut recv_buf = [0u8; 512]; + let mut recv_buf = [0u8; 256]; let n = socket.recv(&mut recv_buf).await?; Message::from_vec(&recv_buf[..n]) @@ -156,38 +140,12 @@ impl DnsClient { #[cfg(unix)] DnsClient::UnixStream { ref mut stream } => stream_query(stream, msg).await, DnsClient::TcpRemote { ref mut stream } => stream_query(stream, msg).await, - DnsClient::UdpRemote { - ref mut socket, - ref ns, - ref mut control, - ref mut server_windows, - } => { - control.packet_id = match control.packet_id.checked_add(1) { - Some(i) => i, - None => return Err(ProtoErrorKind::Message("packet id overflows").into()), - }; - + DnsClient::UdpRemote { ref mut socket, ref ns } => { let bytes = msg.to_vec()?; - socket.send_with_ctrl(ns, control, &bytes).await?; + socket.send(ns, &bytes).await?; - let mut recv_buf = [0u8; 512]; - let (n, _, recv_control) = socket.recv_with_ctrl(&mut recv_buf).await?; - - if let Some(server_control) = recv_control { - let filter = match server_windows.entry(server_control.server_session_id) { - Entry::Occupied(occ) => occ.into_mut(), - Entry::Vacant(vac) => vac.insert(PacketWindowFilter::new()), - }; - - if !filter.validate_packet_id(server_control.packet_id, u64::MAX) { - error!( - "dns client for {} packet_id {} out of window", - ns, server_control.packet_id - ); - - return Err(ProtoErrorKind::Message("packet id out of window").into()); - } - } + let mut recv_buf = [0u8; 256]; + let (n, _) = socket.recv(&mut recv_buf).await?; Message::from_vec(&recv_buf[..n]) } @@ -231,8 +189,8 @@ impl DnsClient { #[cfg(windows)] fn check_peekable(s: &mut F) -> bool { use windows_sys::{ - Win32::Networking::WinSock::{MSG_PEEK, SOCKET, recv}, core::PSTR, + Win32::Networking::WinSock::{recv, MSG_PEEK, SOCKET}, }; let sock = s.as_raw_socket() as SOCKET; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/manager.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/manager.rs deleted file mode 100644 index 9edd656..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/manager.rs +++ /dev/null @@ -1,326 +0,0 @@ -//! Fake DNS manager - -use std::{ - io, - iter::Cycle, - net::{IpAddr, Ipv4Addr, Ipv6Addr}, - path::Path, - time::{Duration, SystemTime}, -}; - -use hickory_resolver::proto::rr::Name; -use ipnet::{Ipv4AddrRange, Ipv4Net, Ipv6AddrRange, Ipv6Net}; -use log::{error, trace, warn}; -use rocksdb::DB as RocksDB; -use tokio::sync::Mutex; - -use super::proto; - -const FAKE_DNS_MANAGER_STORAGE_VERSION: u32 = 3; - -/// Error type of FakeDns manager -#[derive(thiserror::Error, Debug)] -pub enum FakeDnsError { - /// std::io::Error wrapper - #[error("{0}")] - IoError(#[from] io::Error), - /// rocksdb::Error - #[error("{0}")] - RocksDBError(#[from] rocksdb::Error), -} - -impl From for io::Error { - fn from(value: FakeDnsError) -> Self { - match value { - FakeDnsError::IoError(e) => e, - FakeDnsError::RocksDBError(e) => io::Error::new(io::ErrorKind::Other, e), - } - } -} - -/// FakeDns Api Result type -pub type FakeDnsResult = Result; - -/// Fake DNS manager -pub struct FakeDnsManager { - db: Mutex, - ipv4_network: Mutex>, - ipv6_network: Mutex>, - expire_duration: Duration, -} - -macro_rules! map_domain_ip { - ($self:ident, $domain:ident, $addr_ty:ty, $addr_field:ident, $network_field:ident) => {{ - let db = $self.db.lock().await; - let name2ip_key = FakeDnsManager::get_name2ip_key($domain); - - loop { - let mut domain_name_mapping = proto::DomainNameMapping::default(); - - if let Some(v) = db.get(&name2ip_key)? { - domain_name_mapping = proto::DomainNameMapping::decode(&v)?; - - if !domain_name_mapping.$addr_field.is_empty() { - match domain_name_mapping.$addr_field.parse::<$addr_ty>() { - Ok(i) => { - let now = FakeDnsManager::get_current_timestamp(); - let expire_secs = - FakeDnsManager::get_current_timestamp() + $self.expire_duration.as_secs() as i64; - - if domain_name_mapping.expire_time >= now { - // Not expired yet. - domain_name_mapping.expire_time = expire_secs; - let nv = domain_name_mapping.encode_to_vec()?; - - db.put(&name2ip_key, nv)?; - trace!( - "fakedns mapping {} -> {}, expires {}", - $domain, i, domain_name_mapping.expire_time - ); - return Ok((i, $self.expire_duration)); - } else { - // Expired. Try to reuse. - - let ip2name_key = FakeDnsManager::get_ip2name_key(i.into()); - if let Some(v) = db.get(&ip2name_key)? { - let mut ip_mapping = proto::IpAddrMapping::decode(&v)?; - if ip_mapping.domain_name == $domain.to_string() { - // Try to extend its expire time - ip_mapping.expire_time = expire_secs; - let nv = ip_mapping.encode_to_vec()?; - - db.put(&ip2name_key, nv)?; - trace!( - "fakedns mapping {} -> {}, expires {}", - $domain, i, domain_name_mapping.expire_time - ); - return Ok((i, $self.expire_duration)); - } - } - } - } - Err(..) => { - warn!("failed to parse {}, going to replace", domain_name_mapping.$addr_field); - } - } - } - } - - // Allocate a new IPv4 address for this domain - while let Some(ip) = $self.$network_field.lock().await.next() { - let ip2name_key = FakeDnsManager::get_ip2name_key(ip.into()); - - if let Some(v) = db.get(&ip2name_key)? { - let ip_mapping = proto::IpAddrMapping::decode(&v)?; - - let now = FakeDnsManager::get_current_timestamp(); - if ip_mapping.expire_time > now { - continue; - } - } - - let mut ip_mapping = proto::IpAddrMapping::default(); - - let expire_secs = FakeDnsManager::get_current_timestamp() + $self.expire_duration.as_secs() as i64; - ip_mapping.expire_time = expire_secs; - ip_mapping.domain_name = $domain.to_string(); - - let nv = ip_mapping.encode_to_vec()?; - - db.put(&ip2name_key, nv)?; - // Replace name2ip - - domain_name_mapping.$addr_field = ip.to_string(); - domain_name_mapping.expire_time = ip_mapping.expire_time; - let nv = domain_name_mapping.encode_to_vec()?; - - db.put(&name2ip_key, nv)?; - trace!( - "fakedns mapping {} -> {}, expires {} created", - $domain, ip, domain_name_mapping.expire_time - ); - - return Ok((ip, $self.expire_duration)); - } - } - }}; -} - -impl FakeDnsManager { - pub fn open>( - db_path: P, - ipv4_network: Ipv4Net, - ipv6_network: Ipv6Net, - expire_duration: Duration, - ) -> FakeDnsResult { - let db_path = db_path.as_ref(); - - // https://github.com/facebook/rocksdb/wiki/Setup-Options-and-Basic-Tuning - let mut db_options = rocksdb::Options::default(); - db_options.create_if_missing(true); - db_options.set_compression_type(rocksdb::DBCompressionType::Zstd); - db_options.set_bottommost_compression_type(rocksdb::DBCompressionType::Zstd); - db_options.set_bottommost_zstd_max_train_bytes(0, true); - db_options.set_max_background_jobs(6); - db_options.set_bytes_per_sync(1048576); - db_options.set_compaction_pri(rocksdb::CompactionPri::MinOverlappingRatio); - let mut db = match RocksDB::open(&db_options, db_path) { - Ok(db) => db, - Err(err) => { - error!("failed to open rocksdb, path: {}, error: {}", db_path.display(), err); - return Err(err.into()); - } - }; - - let ipv4_network_str = ipv4_network.to_string(); - let ipv6_network_str = ipv6_network.to_string(); - - let mut recreate_database = true; - - let key = "shadowsocks_fakedns_meta"; - match db.get(key) { - Ok(Some(v)) => { - if let Ok(c) = proto::StorageMeta::decode(&v) { - if c.version == FAKE_DNS_MANAGER_STORAGE_VERSION { - if ipv4_network_str != c.ipv4_network || ipv6_network_str != c.ipv6_network { - warn!( - "IPv4 network {} (storage {}), IPv6 network {} (storage {}) not match", - ipv4_network_str, c.ipv4_network, ipv6_network_str, c.ipv6_network - ); - } else { - recreate_database = false; - } - } else { - warn!("storage version {} not match, recreating database", c.version); - } - } else { - warn!("storage meta parse failed. recreating database"); - } - } - Ok(None) => { - // New DB without an META - } - Err(err) => { - error!("failed to get {}, error: {}", key, err); - return Err(err.into()); - } - } - - if recreate_database { - drop(db); - let _ = RocksDB::destroy(&db_options, db_path); - - // Re-create by Open - db = match RocksDB::open(&db_options, db_path) { - Ok(db) => db, - Err(err) => { - error!( - "failed to recreate rocksdb, path: {}, error: {}", - db_path.display(), - err - ); - return Err(err.into()); - } - }; - - let c = proto::StorageMeta { - ipv4_network: ipv4_network_str, - ipv6_network: ipv6_network_str, - version: FAKE_DNS_MANAGER_STORAGE_VERSION, - }; - - let v = c.encode_to_vec()?; - if let Err(err) = db.put(key, v) { - error!("failed to init storage, key: {}, error: {}", key, err); - return Err(err.into()); - } - - trace!("FakeDNS database created. {:?}", c); - } - - Ok(FakeDnsManager { - db: Mutex::new(db), - ipv4_network: Mutex::new(ipv4_network.hosts().cycle()), - ipv6_network: Mutex::new(ipv6_network.hosts().cycle()), - expire_duration, - }) - } - - #[inline] - fn get_current_timestamp() -> i64 { - SystemTime::now() - .duration_since(SystemTime::UNIX_EPOCH) - .expect("SystemTime") - .as_secs() as i64 - } - - #[inline] - fn get_name2ip_key(domain: &Name) -> String { - format!("shadowsocks_fakedns_name2ip_{domain}") - } - - #[inline] - fn get_ip2name_key(ip: IpAddr) -> String { - format!("shadowsocks_fakedns_ip2name_{ip}") - } - - /// Get or create an IPv4 mapping for `domain` - pub async fn map_domain_ipv4(&self, domain: &Name) -> FakeDnsResult<(Ipv4Addr, Duration)> { - map_domain_ip!(self, domain, Ipv4Addr, ipv4_addr, ipv4_network) - } - - /// Get or create an IPv6 mapping for `domain` - pub async fn map_domain_ipv6(&self, domain: &Name) -> FakeDnsResult<(Ipv6Addr, Duration)> { - map_domain_ip!(self, domain, Ipv6Addr, ipv6_addr, ipv6_network) - } - - /// Get IP mapped domain name - pub async fn map_ip_domain(&self, ip: IpAddr) -> FakeDnsResult> { - let db = self.db.lock().await; - - // ip -> domain_name - let ip2name_key = FakeDnsManager::get_ip2name_key(ip); - match db.get(&ip2name_key)? { - None => Ok(None), - Some(v) => { - // Got ip -> domain_name - - let mut ip_mapping = proto::IpAddrMapping::decode(&v)?; - let now = FakeDnsManager::get_current_timestamp(); - if ip_mapping.expire_time >= now { - // Ok. It is not expired yet. Try to extend its expire time. - ip_mapping.expire_time = now + self.expire_duration.as_secs() as i64; - let nv = ip_mapping.encode_to_vec()?; - db.put(&ip2name_key, nv)?; - - // Update name2ip's expire time - - let name = match ip_mapping.domain_name.parse::() { - Ok(n) => n, - Err(..) => return Ok(None), - }; - - { - let name2ip_key = FakeDnsManager::get_name2ip_key(&name); - match db.get(&name2ip_key)? { - Some(v) => { - let mut domain_name_mapping = proto::DomainNameMapping::decode(&v)?; - domain_name_mapping.expire_time = ip_mapping.expire_time; - let nv = domain_name_mapping.encode_to_vec()?; - db.put(&name2ip_key, nv)?; - } - None => { - // Interesting. No name2ip. - return Ok(None); - } - } - } - - Ok(Some(name)) - } else { - Ok(None) - } - } - } - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/mod.rs deleted file mode 100644 index 2e70de2..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -//! Fake DNS -//! -//! Start a DNS resolver server, mapping requested names to local private network addresses. -//! When local server receives proxy request with those mapped addresses, it could translate -//! it back to the original domain names. -//! -//! It normally cooperates with `local-redir` and `local-tun`. - -pub use self::server::{FakeDns, FakeDnsBuilder}; - -pub mod manager; -mod processor; -mod proto; -pub mod server; -mod tcp_server; -mod udp_server; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/processor.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/processor.rs deleted file mode 100644 index cdc7d7d..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/processor.rs +++ /dev/null @@ -1,72 +0,0 @@ -//! DNS request processor - -use std::io; - -use hickory_resolver::proto::{ - op::{Header, Message, OpCode, header::MessageType, response_code::ResponseCode}, - rr::{ - DNSClass, RData, Record, RecordType, - rdata::{A, AAAA}, - }, -}; -use log::{debug, trace, warn}; - -use super::manager::FakeDnsManager; - -pub async fn handle_dns_request(req_message: &Message, manager: &FakeDnsManager) -> io::Result { - let mut rsp_message = Message::new(); - let rsp_header = Header::response_from_request(req_message.header()); - rsp_message.set_header(rsp_header); - - if req_message.op_code() != OpCode::Query || req_message.message_type() != MessageType::Query { - rsp_message.set_response_code(ResponseCode::NotImp); - } else { - for query in req_message.queries() { - // Copy all the queries into response. - rsp_message.add_query(query.clone()); - - if query.query_class() != DNSClass::IN { - // let record = Record::::from_rdata(query.name().clone(), 0, query.query_type()); - // rsp_message.add_answer(record); - warn!( - "Query class: {:?} is not supported. Full {:?}", - query.query_class(), - req_message - ); - continue; - } - - match query.query_type() { - RecordType::A => { - let (ip_addr, expire_duration) = manager.map_domain_ipv4(query.name()).await?; - - let mut record = Record::::from_rdata( - query.name().clone(), - expire_duration.as_secs() as u32, - RData::A(A(ip_addr)), - ); - record.set_dns_class(query.query_class()); - rsp_message.add_answer(record); - } - RecordType::AAAA => { - let (ip_addr, expire_duration) = manager.map_domain_ipv6(query.name()).await?; - - let mut record = Record::::from_rdata( - query.name().clone(), - expire_duration.as_secs() as u32, - RData::AAAA(AAAA(ip_addr)), - ); - record.set_dns_class(query.query_class()); - rsp_message.add_answer(record); - } - _ => { - debug!("fakedns {} not supported. {:?}", query.query_type(), query); - } - } - } - } - - trace!("QUERY {:?} ANSWER {:?}", req_message, rsp_message); - - Ok(rsp_message) -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/proto.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/proto.rs deleted file mode 100644 index 3e2ec02..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/proto.rs +++ /dev/null @@ -1,55 +0,0 @@ -//! Data representation in Database - -use std::io; - -use serde::{Deserialize, Serialize}; - -#[derive(Serialize, Deserialize, Default, Clone, Debug)] -pub struct StorageMeta { - pub ipv4_network: String, - pub ipv6_network: String, - pub version: u32, -} - -impl StorageMeta { - pub fn decode(v: &[u8]) -> io::Result { - bson::from_slice(v).map_err(|e| io::Error::new(io::ErrorKind::Other, e)) - } - - pub fn encode_to_vec(&self) -> io::Result> { - bson::to_vec(self).map_err(|e| io::Error::new(io::ErrorKind::Other, e)) - } -} - -#[derive(Serialize, Deserialize, Default, Clone, Debug)] -pub struct IpAddrMapping { - pub domain_name: String, - pub expire_time: i64, -} - -impl IpAddrMapping { - pub fn decode(v: &[u8]) -> io::Result { - bson::from_slice(v).map_err(|e| io::Error::new(io::ErrorKind::Other, e)) - } - - pub fn encode_to_vec(&self) -> io::Result> { - bson::to_vec(self).map_err(|e| io::Error::new(io::ErrorKind::Other, e)) - } -} - -#[derive(Serialize, Deserialize, Default, Clone, Debug)] -pub struct DomainNameMapping { - pub ipv4_addr: String, - pub ipv6_addr: String, - pub expire_time: i64, -} - -impl DomainNameMapping { - pub fn decode(v: &[u8]) -> io::Result { - bson::from_slice(v).map_err(|e| io::Error::new(io::ErrorKind::Other, e)) - } - - pub fn encode_to_vec(&self) -> io::Result> { - bson::to_vec(self).map_err(|e| io::Error::new(io::ErrorKind::Other, e)) - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/server.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/server.rs deleted file mode 100644 index 8086a3d..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/server.rs +++ /dev/null @@ -1,138 +0,0 @@ -//! Fake DNS server - -use std::{ - io, - net::{Ipv4Addr, Ipv6Addr}, - path::{Path, PathBuf}, - sync::Arc, - time::Duration, -}; - -use futures::{FutureExt, future}; -use ipnet::{Ipv4Net, Ipv6Net}; -use shadowsocks::config::{Mode, ServerAddr}; - -use crate::local::context::ServiceContext; - -use super::{manager::FakeDnsManager, tcp_server::FakeDnsTcpServer, udp_server::FakeDnsUdpServer}; - -/// Fake DNS builder -pub struct FakeDnsBuilder { - context: Arc, - mode: Mode, - client_addr: ServerAddr, - database_path: PathBuf, - ipv4_network: Ipv4Net, - ipv6_network: Ipv6Net, - expire_duration: Duration, -} - -impl FakeDnsBuilder { - /// Create a new Fake DNS server - pub fn new(client_addr: ServerAddr) -> FakeDnsBuilder { - let context = ServiceContext::new(); - FakeDnsBuilder::with_context(Arc::new(context), client_addr) - } - - /// Create a new Fake DNS server with context - pub fn with_context(context: Arc, client_addr: ServerAddr) -> FakeDnsBuilder { - FakeDnsBuilder { - context, - mode: Mode::TcpAndUdp, - client_addr, - database_path: "shadowsocks-fakedns.sled".into(), - ipv4_network: Ipv4Net::new(Ipv4Addr::new(172, 16, 0, 0), 12).unwrap(), - ipv6_network: Ipv6Net::new(Ipv6Addr::new(0xfc00, 0, 0, 0, 0, 0, 0, 0), 7).unwrap(), - expire_duration: Duration::from_secs(10), - } - } - - /// Set IPv4 network - pub fn set_ipv4_network(&mut self, ipv4_network: Ipv4Net) { - self.ipv4_network = ipv4_network; - } - - /// Set IPv6 network - pub fn set_ipv6_network(&mut self, ipv6_network: Ipv6Net) { - self.ipv6_network = ipv6_network; - } - - /// Set expire duration - pub fn set_expire_duration(&mut self, expire: Duration) { - self.expire_duration = expire; - } - - /// Set database path - pub fn set_database_path>(&mut self, database_path: P) { - self.database_path = database_path.as_ref().to_path_buf(); - } - - /// Build Fake DNS server - pub async fn build(self) -> io::Result { - let manager = FakeDnsManager::open( - &self.database_path, - self.ipv4_network, - self.ipv6_network, - self.expire_duration, - )?; - let manager = Arc::new(manager); - - let mut tcp_server = None; - if self.mode.enable_tcp() { - let server = FakeDnsTcpServer::new(self.context.clone(), &self.client_addr, manager.clone()).await?; - tcp_server = Some(server); - } - - let mut udp_server = None; - if self.mode.enable_udp() { - let server = FakeDnsUdpServer::new(self.context.clone(), &self.client_addr, manager.clone()).await?; - udp_server = Some(server); - } - - Ok(FakeDns { - tcp_server, - udp_server, - manager, - }) - } -} - -/// Fake DNS server instance -pub struct FakeDns { - tcp_server: Option, - udp_server: Option, - manager: Arc, -} - -impl FakeDns { - /// TCP Server instance - pub fn tcp_server(&self) -> Option<&FakeDnsTcpServer> { - self.tcp_server.as_ref() - } - - /// UDP Server instance - pub fn udp_server(&self) -> Option<&FakeDnsUdpServer> { - self.udp_server.as_ref() - } - - /// Get the manager - pub fn clone_manager(&self) -> Arc { - self.manager.clone() - } - - /// Run server - pub async fn run(self) -> io::Result<()> { - let mut vfut = Vec::new(); - - if let Some(tcp_server) = self.tcp_server { - vfut.push(tcp_server.run().boxed()); - } - - if let Some(udp_server) = self.udp_server { - vfut.push(udp_server.run().boxed()); - } - - let (res, ..) = future::select_all(vfut).await; - res - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs deleted file mode 100644 index 943f855..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/tcp_server.rs +++ /dev/null @@ -1,159 +0,0 @@ -//! Fake DNS TCP server - -use std::{ - io::{self, ErrorKind}, - net::SocketAddr, - sync::Arc, - time::Duration, -}; - -use byteorder::{BigEndian, ByteOrder}; -use bytes::{BufMut, BytesMut}; -use hickory_resolver::proto::{ - op::{Message, response_code::ResponseCode}, - serialize::binary::{BinEncodable, BinEncoder, EncodeMode}, -}; -use log::{error, trace}; -use shadowsocks::{ServerAddr, lookup_then, net::TcpListener as ShadowTcpListener}; -use tokio::{ - io::{AsyncReadExt, AsyncWriteExt}, - net::TcpStream, - time, -}; - -use crate::local::context::ServiceContext; - -use super::{manager::FakeDnsManager, processor::handle_dns_request}; - -/// Fake DNS TCP server -pub struct FakeDnsTcpServer { - context: Arc, - listener: ShadowTcpListener, - manager: Arc, -} - -impl FakeDnsTcpServer { - pub(crate) async fn new( - context: Arc, - client_config: &ServerAddr, - manager: Arc, - ) -> io::Result { - let listener = match *client_config { - ServerAddr::SocketAddr(ref saddr) => { - ShadowTcpListener::bind_with_opts(saddr, context.accept_opts()).await? - } - ServerAddr::DomainName(ref dname, port) => { - lookup_then!(context.context_ref(), dname, port, |addr| { - ShadowTcpListener::bind_with_opts(&addr, context.accept_opts()).await - })? - .1 - } - }; - - Ok(FakeDnsTcpServer { - context, - listener, - manager, - }) - } - - /// Get TCP local address - pub fn local_addr(&self) -> io::Result { - self.listener.local_addr() - } - - /// Run TCP server loop - pub async fn run(self) -> io::Result<()> { - loop { - let (stream, peer_addr) = match self.listener.accept().await { - Ok(s) => s, - Err(err) => { - error!("failed to accept Fake DNS connection, err: {}", err); - time::sleep(Duration::from_secs(1)).await; - continue; - } - }; - - trace!("Fake DNS accepted TCP client {}", peer_addr); - - let context = self.context.clone(); - let manager = self.manager.clone(); - tokio::spawn(async move { - if let Err(err) = FakeDnsTcpServer::handle_client(context, peer_addr, stream, manager).await { - error!( - "failed to handle Fake DNS tcp client, peer: {}, err: {}", - peer_addr, err - ); - } - }); - } - } - - async fn handle_client( - _context: Arc, - peer_addr: SocketAddr, - mut stream: TcpStream, - manager: Arc, - ) -> io::Result<()> { - let mut length_buf = [0u8; 2]; - let mut message_buf = BytesMut::new(); - - loop { - match stream.read_exact(&mut length_buf).await { - Ok(..) => {} - Err(ref err) if err.kind() == ErrorKind::UnexpectedEof => { - break; - } - Err(err) => { - error!("udp tcp {} read length failed, error: {}", peer_addr, err); - return Err(err); - } - } - - let length = BigEndian::read_u16(&length_buf) as usize; - - message_buf.clear(); - message_buf.reserve(length); - unsafe { - message_buf.advance_mut(length); - } - - match stream.read_exact(&mut message_buf).await { - Ok(..) => {} - Err(err) => { - error!("dns tcp {} read message failed, error: {}", peer_addr, err); - return Err(err); - } - } - - let req_message = match Message::from_vec(&message_buf) { - Ok(m) => m, - Err(err) => { - error!("dns tcp {} parse message failed, error: {}", peer_addr, err); - return Err(err.into()); - } - }; - - let rsp_message = match handle_dns_request(&req_message, &manager).await { - Ok(m) => m, - Err(err) => { - error!("failed to handle DNS request, error: {}", err); - - Message::error_msg(req_message.id(), req_message.op_code(), ResponseCode::ServFail) - } - }; - - let mut rsp_buffer = Vec::with_capacity(2 + 512); - rsp_buffer.resize(2, 0); - let mut rsp_encoder = BinEncoder::with_offset(&mut rsp_buffer, 2, EncodeMode::Normal); - rsp_message.emit(&mut rsp_encoder)?; - - let rsp_length = (rsp_buffer.len() - 2) as u16; - BigEndian::write_u16(&mut rsp_buffer[0..2], rsp_length); - - stream.write_all(&rsp_buffer).await?; - } - - Ok(()) - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/udp_server.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/udp_server.rs deleted file mode 100644 index d6ace3f..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/udp_server.rs +++ /dev/null @@ -1,80 +0,0 @@ -//! Fake DNS UDP server - -use std::{io, net::SocketAddr, sync::Arc, time::Duration}; - -use hickory_resolver::proto::op::{Message, response_code::ResponseCode}; -use log::error; -use shadowsocks::{ServerAddr, lookup_then, net::UdpSocket as ShadowUdpSocket}; -use tokio::time; - -use crate::local::context::ServiceContext; - -use super::{manager::FakeDnsManager, processor::handle_dns_request}; - -/// Fake DNS UDP server instance -pub struct FakeDnsUdpServer { - listener: ShadowUdpSocket, - manager: Arc, -} - -impl FakeDnsUdpServer { - pub(crate) async fn new( - context: Arc, - client_config: &ServerAddr, - manager: Arc, - ) -> io::Result { - let listener = match *client_config { - ServerAddr::SocketAddr(ref saddr) => { - ShadowUdpSocket::listen_with_opts(saddr, context.accept_opts()).await? - } - ServerAddr::DomainName(ref dname, port) => { - lookup_then!(context.context_ref(), dname, port, |addr| { - ShadowUdpSocket::listen_with_opts(&addr, context.accept_opts()).await - })? - .1 - } - }; - - Ok(FakeDnsUdpServer { listener, manager }) - } - - /// Get UDP local address - pub fn local_addr(&self) -> io::Result { - self.listener.local_addr() - } - - /// Start server accept loop - pub async fn run(self) -> io::Result<()> { - let mut buffer = [0u8; 65535]; - loop { - let (n, peer_addr) = match self.listener.recv_from(&mut buffer).await { - Ok(n) => n, - Err(err) => { - error!("fakedns UDP recv_from failed, error: {}", err); - time::sleep(Duration::from_secs(1)).await; - continue; - } - }; - - let req_message = match Message::from_vec(&buffer[..n]) { - Ok(m) => m, - Err(err) => { - error!("failed to parse DNS request, error: {}", err); - continue; - } - }; - - let rsp_message = match handle_dns_request(&req_message, &self.manager).await { - Ok(m) => m, - Err(err) => { - error!("failed to handle DNS request, error: {}", err); - - Message::error_msg(req_message.id(), req_message.op_code(), ResponseCode::ServFail) - } - }; - - let rsp_buffer = rsp_message.to_vec()?; - let _ = self.listener.send_to(&rsp_buffer, peer_addr).await; - } - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs index 70a6ac2..b2c1315 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_client.rs @@ -1,28 +1,21 @@ //! HTTP Client use std::{ - borrow::Cow, collections::VecDeque, - fmt::Debug, - future::Future, io::{self, ErrorKind}, - pin::Pin, sync::Arc, - task::{Context, Poll}, time::{Duration, Instant}, }; -use http::{HeaderValue, Method as HttpMethod, Uri, Version as HttpVersion, header::InvalidHeaderValue}; use hyper::{ - Request, Response, - body::{self, Body}, + body, client::conn::{http1, http2}, http::uri::Scheme, - rt::{Sleep, Timer}, + Request, + Response, }; use log::{error, trace}; use lru_time_cache::LruCache; -use pin_project::pin_project; use shadowsocks::relay::Address; use tokio::sync::Mutex; @@ -36,145 +29,47 @@ use super::{ const CONNECTION_EXPIRE_DURATION: Duration = Duration::from_secs(20); -/// HTTPClient API request errors #[derive(thiserror::Error, Debug)] pub enum HttpClientError { - /// Errors from hyper #[error("{0}")] Hyper(#[from] hyper::Error), - /// std::io::Error #[error("{0}")] Io(#[from] io::Error), - /// Errors from http - #[error("{0}")] - Http(#[from] http::Error), - /// Errors from http header - #[error("{0}")] - InvalidHeaderValue(#[from] InvalidHeaderValue), -} - -#[derive(Clone, Debug)] -pub struct TokioTimer; - -impl Timer for TokioTimer { - fn sleep(&self, duration: Duration) -> Pin> { - Box::pin(TokioSleep { - inner: tokio::time::sleep(duration), - }) - } - - fn sleep_until(&self, deadline: Instant) -> Pin> { - Box::pin(TokioSleep { - inner: tokio::time::sleep_until(deadline.into()), - }) - } - - fn reset(&self, sleep: &mut Pin>, new_deadline: Instant) { - if let Some(sleep) = sleep.as_mut().downcast_mut_pin::() { - sleep.reset(new_deadline) - } - } } -#[pin_project] -pub(crate) struct TokioSleep { - #[pin] - pub(crate) inner: tokio::time::Sleep, +#[derive(Clone)] +pub struct HttpClient { + cache_conn: Arc>>>, } -impl Future for TokioSleep { - type Output = (); - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - self.project().inner.poll(cx) - } -} - -impl Sleep for TokioSleep {} - -impl TokioSleep { - pub fn reset(self: Pin<&mut Self>, deadline: Instant) { - self.project().inner.as_mut().reset(deadline.into()); - } -} - -/// HTTPClient, supporting HTTP/1.1 and H2, HTTPS. -pub struct HttpClient { - #[allow(clippy::type_complexity)] - cache_conn: Arc, Instant)>>>>, -} - -impl Clone for HttpClient { - fn clone(&self) -> Self { - HttpClient { - cache_conn: self.cache_conn.clone(), - } - } -} - -impl Default for HttpClient -where - B: Body + Send + Unpin + Debug + 'static, - B::Data: Send, - B::Error: Into>, -{ - fn default() -> Self { - HttpClient::new() - } -} - -impl HttpClient -where - B: Body + Send + Unpin + Debug + 'static, - B::Data: Send, - B::Error: Into>, -{ - /// Create a new HttpClient - pub fn new() -> HttpClient { +impl HttpClient { + pub fn new() -> HttpClient { HttpClient { cache_conn: Arc::new(Mutex::new(LruCache::with_expiry_duration(CONNECTION_EXPIRE_DURATION))), } } - /// Make HTTP requests #[inline] pub async fn send_request( &self, context: Arc, - req: Request, - balancer: Option<&PingBalancer>, + req: Request, + balancer: &PingBalancer, ) -> Result, HttpClientError> { let host = match host_addr(req.uri()) { Some(h) => h, None => panic!("URI missing host: {}", req.uri()), }; - // Set Host header if it was missing in the Request - let (mut req_parts, req_body) = req.into_parts(); - if let Some(authority) = req_parts.uri.authority() { - let headers = &mut req_parts.headers; - if !headers.contains_key("Host") { - let uri = &req_parts.uri; - let host_value = if (uri.scheme_str() == Some("http") - && matches!(authority.port_u16(), None | Some(80))) - || (uri.scheme_str() == Some("https") && matches!(authority.port_u16(), None | Some(443))) - { - HeaderValue::from_str(authority.host())? - } else { - HeaderValue::from_str(authority.as_str())? - }; - - headers.insert("Host", host_value); - } - } - let req = Request::from_parts(req_parts, req_body); - // 1. Check if there is an available client // - // FIXME: If the cached connection is closed unexpectedly, this request will fail immediately. + // FIXME: If the cached connection is closed unexpectly, this request will fail immediately. if let Some(c) = self.get_cached_connection(&host).await { trace!("HTTP client for host: {} taken from cache", host); - return self.send_request_conn(host, c, req).await; + match self.send_request_conn(host, c, req).await { + Ok(o) => return Ok(o), + Err(err) => return Err(err.into()), + } } // 2. If no. Make a new connection @@ -183,12 +78,13 @@ where None => &Scheme::HTTP, }; - let domain = match host { - Address::DomainNameAddress(ref domain, _) => Cow::Borrowed(domain.as_str()), - Address::SocketAddress(ref saddr) => Cow::Owned(saddr.ip().to_string()), - }; - - let c = match HttpConnection::connect(context.clone(), scheme, host.clone(), &domain, balancer).await { + let domain = req + .uri() + .host() + .unwrap() + .trim_start_matches('[') + .trim_start_matches(']'); + let c = match HttpConnection::connect(context.clone(), scheme, host.clone(), domain, balancer).await { Ok(c) => c, Err(err) => { error!("failed to connect to host: {}, error: {}", host, err); @@ -196,11 +92,11 @@ where } }; - self.send_request_conn(host, c, req).await + self.send_request_conn(host, c, req).await.map_err(Into::into) } - async fn get_cached_connection(&self, host: &Address) -> Option> { - if let Some(q) = self.cache_conn.lock().await.get_mut(host) { + async fn get_cached_connection(&self, host: &Address) -> Option { + if let Some(q) = self.cache_conn.lock().await.get_mut(&host) { while let Some((c, inst)) = q.pop_front() { let now = Instant::now(); if now - inst >= CONNECTION_EXPIRE_DURATION { @@ -218,9 +114,9 @@ where async fn send_request_conn( &self, host: Address, - mut c: HttpConnection, - req: Request, - ) -> Result, HttpClientError> { + mut c: HttpConnection, + req: Request, + ) -> hyper::Result> { trace!("HTTP making request to host: {}, request: {:?}", host, req); let response = c.send_request(req).await?; trace!("HTTP received response from host: {}, response: {:?}", host, response); @@ -229,7 +125,8 @@ where if check_keep_alive(response.version(), response.headers(), false) { trace!( "HTTP connection keep-alive for host: {}, response: {:?}", - host, response + host, + response ); self.cache_conn .lock() @@ -243,24 +140,19 @@ where } } -enum HttpConnection { - Http1(http1::SendRequest), - Http2(http2::SendRequest), +enum HttpConnection { + Http1(http1::SendRequest), + Http2(http2::SendRequest), } -impl HttpConnection -where - B: Body + Send + Unpin + 'static, - B::Data: Send, - B::Error: Into>, -{ +impl HttpConnection { async fn connect( context: Arc, scheme: &Scheme, host: Address, domain: &str, - balancer: Option<&PingBalancer>, - ) -> io::Result> { + balancer: &PingBalancer, + ) -> io::Result { if *scheme != Scheme::HTTP && *scheme != Scheme::HTTPS { return Err(io::Error::new(ErrorKind::InvalidInput, "invalid scheme")); } @@ -280,10 +172,11 @@ where scheme: &Scheme, host: Address, stream: AutoProxyClientStream, - ) -> io::Result> { + ) -> io::Result { trace!( "HTTP making new HTTP/1.1 connection to host: {}, scheme: {}", - host, scheme + host, + scheme ); let stream = ProxyHttpStream::connect_http(stream); @@ -313,16 +206,15 @@ where host: Address, domain: &str, stream: AutoProxyClientStream, - ) -> io::Result> { + ) -> io::Result { trace!("HTTP making new TLS connection to host: {}, scheme: {}", host, scheme); // TLS handshake, check alpn for h2 support. let stream = ProxyHttpStream::connect_https(stream, domain).await?; if stream.negotiated_http2() { - // H2 connection + // H2 connnection let (send_request, connection) = match http2::Builder::new(TokioExecutor) - .timer(TokioTimer) .keep_alive_interval(Duration::from_secs(15)) .handshake(TokioIo::new(stream)) .await @@ -361,48 +253,10 @@ where } #[inline] - pub async fn send_request(&mut self, mut req: Request) -> Result, HttpClientError> { + pub async fn send_request(&mut self, req: Request) -> hyper::Result> { match self { - HttpConnection::Http1(r) => { - if !matches!( - req.version(), - HttpVersion::HTTP_09 | HttpVersion::HTTP_10 | HttpVersion::HTTP_11 - ) { - trace!( - "HTTP client changed Request.version to HTTP/1.1 from {:?}", - req.version() - ); - - *req.version_mut() = HttpVersion::HTTP_11; - } - - // Remove Scheme, Host part from URI - if req.method() != HttpMethod::CONNECT - && (req.uri().scheme().is_some() || req.uri().authority().is_some()) - { - let mut builder = Uri::builder(); - match req.uri().path_and_query() { - Some(path_and_query) => { - builder = builder.path_and_query(path_and_query.as_str()); - } - _ => { - builder = builder.path_and_query("/"); - } - } - *(req.uri_mut()) = builder.build()?; - } - - r.send_request(req).await.map_err(Into::into) - } - HttpConnection::Http2(r) => { - if !matches!(req.version(), HttpVersion::HTTP_2) { - trace!("HTTP client changed Request.version to HTTP/2 from {:?}", req.version()); - - *req.version_mut() = HttpVersion::HTTP_2; - } - - r.send_request(req).await.map_err(Into::into) - } + HttpConnection::Http1(r) => r.send_request(req).await, + HttpConnection::Http2(r) => r.send_request(req).await, } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_service.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_service.rs index a048108..70569b9 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_service.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_service.rs @@ -3,11 +3,18 @@ use std::{net::SocketAddr, str::FromStr, sync::Arc}; use bytes::Bytes; -use http_body_util::{BodyExt, combinators::BoxBody}; +use http_body_util::{combinators::BoxBody, BodyExt}; use hyper::{ - HeaderMap, Method, Request, Response, StatusCode, Uri, Version, body, + body, header::{self, HeaderValue}, http::uri::{Authority, Scheme}, + HeaderMap, + Method, + Request, + Response, + StatusCode, + Uri, + Version, }; use log::{debug, error, trace}; use shadowsocks::relay::Address; @@ -28,7 +35,7 @@ use super::{ pub struct HttpService { context: Arc, peer_addr: SocketAddr, - http_client: HttpClient, + http_client: HttpClient, balancer: PingBalancer, } @@ -36,7 +43,7 @@ impl HttpService { pub fn new( context: Arc, peer_addr: SocketAddr, - http_client: HttpClient, + http_client: HttpClient, balancer: PingBalancer, ) -> HttpService { HttpService { @@ -83,7 +90,7 @@ impl HttpService { // Connect to Shadowsocks' remote // // FIXME: What STATUS should I return for connection error? - let (mut stream, server_opt) = match connect_host(self.context, &host, Some(&self.balancer)).await { + let (mut stream, server_opt) = match connect_host(self.context, &host, &self.balancer).await { Ok(s) => s, Err(err) => { error!("failed to CONNECT host: {}, error: {}", host, err); @@ -146,25 +153,13 @@ impl HttpService { // Set keep-alive for connection with remote set_conn_keep_alive(version, req.headers_mut(), conn_keep_alive); - let mut res = match self - .http_client - .send_request(self.context, req, Some(&self.balancer)) - .await - { + let mut res = match self.http_client.send_request(self.context, req, &self.balancer).await { Ok(resp) => resp, Err(HttpClientError::Hyper(e)) => return Err(e), Err(HttpClientError::Io(err)) => { error!("failed to make request to host: {}, error: {}", host, err); return make_internal_server_error(); } - Err(HttpClientError::Http(err)) => { - error!("failed to make request to host: {}, error: {}", host, err); - return make_bad_request(); - } - Err(HttpClientError::InvalidHeaderValue(err)) => { - error!("failed to make request to host: {}, error: {}", host, err); - return make_bad_request(); - } }; trace!("received {} <- {} {:?}", self.peer_addr, host, res); diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_stream.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_stream.rs index fa418ba..e0616bf 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_stream.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/http_stream.rs @@ -62,34 +62,35 @@ impl ProxyHttpStream { pub async fn connect_https(stream: AutoProxyClientStream, domain: &str) -> io::Result { use log::warn; use once_cell::sync::Lazy; - use rustls_native_certs::CertificateResult; use std::sync::Arc; use tokio_rustls::{ + rustls::pki_types::ServerName, + rustls::{ClientConfig, RootCertStore}, TlsConnector, - rustls::{ClientConfig, RootCertStore, pki_types::ServerName}, }; static TLS_CONFIG: Lazy> = Lazy::new(|| { let mut config = ClientConfig::builder() - .with_root_certificates({ - // Load WebPKI roots (Mozilla's root certificates) - let mut store = RootCertStore::empty(); - store.extend(webpki_roots::TLS_SERVER_ROOTS.iter().cloned()); - - let CertificateResult { certs, errors, .. } = rustls_native_certs::load_native_certs(); - if !errors.is_empty() { - for error in errors { - warn!("failed to load cert (native), error: {}", error); + .with_root_certificates(match rustls_native_certs::load_native_certs() { + Ok(certs) => { + let mut store = RootCertStore::empty(); + + for cert in certs { + if let Err(err) = store.add(cert) { + warn!("failed to add cert (native), error: {}", err); + } } - } - for cert in certs { - if let Err(err) = store.add(cert) { - warn!("failed to add cert (native), error: {}", err); - } + store } + Err(err) => { + warn!("failed to load native certs, {}, going to load from webpki-roots", err); - store + let mut store = RootCertStore::empty(); + store.extend(webpki_roots::TLS_SERVER_ROOTS.iter().cloned()); + + store + } }) .with_no_client_auth(); diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/mod.rs index 6228e0e..564742f 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/mod.rs @@ -2,10 +2,7 @@ //! //! https://www.ietf.org/rfc/rfc2068.txt -pub use self::{ - http_client::{HttpClient, HttpClientError}, - server::{Http, HttpBuilder, HttpConnectionHandler}, -}; +pub use self::server::{Http, HttpBuilder, HttpConnectionHandler}; mod http_client; mod http_service; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/server.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/server.rs index 067297a..c3919b0 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/server.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/server.rs @@ -4,7 +4,7 @@ use std::{io, net::SocketAddr, sync::Arc, time::Duration}; -use hyper::{body, server::conn::http1, service}; +use hyper::{server::conn::http1, service}; use log::{error, info, trace}; use shadowsocks::{config::ServerAddr, net::TcpListener}; use tokio::{ @@ -58,17 +58,15 @@ impl HttpBuilder { pub async fn build(self) -> io::Result { cfg_if::cfg_if! { if #[cfg(target_os = "macos")] { - let listener = match self.launchd_tcp_socket_name { - Some(launchd_socket_name) => { - use tokio::net::TcpListener as TokioTcpListener; - use crate::net::launch_activate_socket::get_launch_activate_tcp_listener; - - let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name, true)?; - let tokio_listener = TokioTcpListener::from_std(std_listener)?; - TcpListener::from_listener(tokio_listener, self.context.accept_opts())? - } _ => { - create_standard_tcp_listener(&self.context, &self.client_config).await? - } + let listener = if let Some(launchd_socket_name) = self.launchd_tcp_socket_name { + use tokio::net::TcpListener as TokioTcpListener; + use crate::net::launch_activate_socket::get_launch_activate_tcp_listener; + + let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name)?; + let tokio_listener = TokioTcpListener::from_std(std_listener)?; + TcpListener::from_listener(tokio_listener, self.context.accept_opts())? + } else { + create_standard_tcp_listener(&self.context, &self.client_config).await? }; } else { let listener = create_standard_tcp_listener(&self.context, &self.client_config).await?; @@ -138,7 +136,7 @@ impl Http { pub struct HttpConnectionHandler { context: Arc, balancer: PingBalancer, - http_client: HttpClient, + http_client: HttpClient, } impl HttpConnectionHandler { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/utils.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/utils.rs index c7881ee..32ae7b9 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/utils.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/http/utils.rs @@ -7,9 +7,11 @@ use std::{ }; use hyper::{ - HeaderMap, Uri, Version, header::{self, HeaderValue}, http::uri::Authority, + HeaderMap, + Uri, + Version, }; use log::error; use shadowsocks::relay::socks5::Address; @@ -116,40 +118,30 @@ pub fn check_keep_alive(version: Version, headers: &HeaderMap, chec pub async fn connect_host( context: Arc, host: &Address, - balancer: Option<&PingBalancer>, + balancer: &PingBalancer, ) -> io::Result<(AutoProxyClientStream, Option>)> { - match balancer { - None => match AutoProxyClientStream::connect_bypassed(context, host).await { + if balancer.is_empty() { + match AutoProxyClientStream::connect_bypassed(context, host).await { Ok(s) => Ok((s, None)), Err(err) => { error!("failed to connect host {} bypassed, err: {}", host, err); Err(err) } - }, - Some(balancer) if balancer.is_empty() => match AutoProxyClientStream::connect_bypassed(context, host).await { - Ok(s) => Ok((s, None)), + } + } else { + let server = balancer.best_tcp_server(); + + match AutoProxyClientStream::connect(context, server.as_ref(), host).await { + Ok(s) => Ok((s, Some(server))), Err(err) => { - error!("failed to connect host {} bypassed, err: {}", host, err); + error!( + "failed to connect host {} proxied, svr_cfg: {}, error: {}", + host, + server.server_config().addr(), + err + ); Err(err) } - }, - Some(balancer) => { - let server = balancer.best_tcp_server(); - - match AutoProxyClientStream::connect_with_opts(context, server.as_ref(), host, server.connect_opts_ref()) - .await - { - Ok(s) => Ok((s, Some(server))), - Err(err) => { - error!( - "failed to connect host {} proxied, svr_cfg: {}, error: {}", - host, - server.server_config().addr(), - err - ); - Err(err) - } - } } } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs index 1d51e36..1460ae8 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/ping_balancer.rs @@ -7,8 +7,8 @@ use std::{ iter::Iterator, net::{Ipv4Addr, SocketAddr}, sync::{ - Arc, atomic::{AtomicUsize, Ordering}, + Arc, }, time::{Duration, Instant}, }; @@ -18,14 +18,14 @@ use byte_string::ByteStr; use futures::future; use log::{debug, error, info, trace, warn}; use shadowsocks::{ - ServerConfig, - config::{Mode, ServerSource}, + config::Mode, plugin::{Plugin, PluginMode}, relay::{ socks5::Address, tcprelay::proxy_stream::ProxyClientStream, - udprelay::{MAXIMUM_UDP_PAYLOAD_SIZE, options::UdpSocketControlData, proxy_socket::ProxySocket}, + udprelay::{options::UdpSocketControlData, proxy_socket::ProxySocket, MAXIMUM_UDP_PAYLOAD_SIZE}, }, + ServerConfig, }; use spin::Mutex as SpinMutex; use tokio::{ @@ -35,11 +35,11 @@ use tokio::{ time, }; -use crate::{config::ServerInstanceConfig, local::context::ServiceContext}; +use crate::local::context::ServiceContext; use super::{ server_data::ServerIdent, - server_stat::{DEFAULT_CHECK_INTERVAL_SEC, DEFAULT_CHECK_TIMEOUT_SEC, Score}, + server_stat::{Score, DEFAULT_CHECK_INTERVAL_SEC, DEFAULT_CHECK_TIMEOUT_SEC}, }; const EXPECTED_CHECK_POINTS_IN_CHECK_WINDOW: u32 = 67; @@ -82,9 +82,8 @@ impl PingBalancerBuilder { } } - pub fn add_server(&mut self, server: ServerInstanceConfig) { + pub fn add_server(&mut self, server: ServerConfig) { let ident = ServerIdent::new( - self.context.clone(), server, self.max_server_rtt, self.check_interval * EXPECTED_CHECK_POINTS_IN_CHECK_WINDOW, @@ -721,39 +720,13 @@ impl PingBalancer { } /// Reset servers in load balancer. Designed for auto-reloading configuration file. - pub async fn reset_servers( - &self, - servers: Vec, - replace_server_sources: &[ServerSource], - ) -> io::Result<()> { + pub async fn reset_servers(&self, servers: Vec) -> io::Result<()> { let old_context = self.inner.context.load(); - let mut old_servers = old_context.servers.clone(); - let mut idx = 0; - while idx < old_servers.len() { - let source_match = replace_server_sources - .iter() - .any(|src| *src == old_servers[idx].server_config().source()); - if source_match { - old_servers.swap_remove(idx); - } else { - idx += 1; - } - } - - trace!( - "ping balancer going to replace {} servers (total: {}) with {} servers, sources: {:?}", - old_context.servers.len() - old_servers.len(), - old_context.servers.len(), - servers.len(), - replace_server_sources - ); - - let mut servers = servers + let servers = servers .into_iter() .map(|s| { Arc::new(ServerIdent::new( - old_context.context.clone(), s, old_context.max_server_rtt, old_context.check_interval * EXPECTED_CHECK_POINTS_IN_CHECK_WINDOW, @@ -761,18 +734,6 @@ impl PingBalancer { }) .collect::>>(); - // Recreate a new instance for old servers (old server instance may still being held by clients) - for old_server in old_servers { - servers.push(Arc::new(ServerIdent::new( - old_context.context.clone(), - old_server.server_instance_config().clone(), - old_context.max_server_rtt, - old_context.check_interval * EXPECTED_CHECK_POINTS_IN_CHECK_WINDOW, - ))); - } - - trace!("ping balancer merged {} new servers", servers.len()); - let (shared_context, task_abortable) = PingBalancerContext::new( servers, old_context.context.clone(), @@ -818,42 +779,30 @@ struct PingChecker { impl PingChecker { /// Checks server's score and update into `ServerScore` async fn check_update_score(self) { - let server_score = match self.server_type { - ServerType::Tcp => self.server.tcp_score(), - ServerType::Udp => self.server.udp_score(), - }; - - let (score, stat_data) = match self.check_delay().await { - Ok(d) => server_score.push_score_fetch_statistic(Score::Latency(d)).await, + let score = match self.check_delay().await { + Ok(d) => match self.server_type { + ServerType::Tcp => self.server.tcp_score().push_score(Score::Latency(d)).await, + ServerType::Udp => self.server.udp_score().push_score(Score::Latency(d)).await, + }, // Penalty - Err(..) => server_score.push_score_fetch_statistic(Score::Errored).await, + Err(..) => match self.server_type { + ServerType::Tcp => self.server.tcp_score().push_score(Score::Errored).await, + ServerType::Udp => self.server.udp_score().push_score(Score::Errored).await, + }, }; - if stat_data.fail_rate > 0.8 { - warn!( - "balancer: checked & updated remote {} server {} (score: {}), {:?}", - self.server_type, - ServerConfigFormatter::new(self.server.server_config()), - score, - stat_data, - ); - } else { - debug!( - "balancer: checked & updated remote {} server {} (score: {}), {:?}", - self.server_type, - ServerConfigFormatter::new(self.server.server_config()), - score, - stat_data, - ); - } + trace!( + "updated remote {} server {} (score: {})", + self.server_type, + self.server.server_config().addr(), + score + ); } /// Detect TCP connectivity with Chromium [Network Portal Detection](https://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection) #[allow(dead_code)] async fn check_request_tcp_chromium(&self) -> io::Result<()> { - use std::io::{Error, ErrorKind}; - - const GET_BODY: &[u8] = + static GET_BODY: &[u8] = b"GET /generate_204 HTTP/1.1\r\nHost: clients3.google.com\r\nConnection: close\r\nAccept: */*\r\n\r\n"; let addr = Address::DomainNameAddress("clients3.google.com".to_owned(), 80); @@ -862,7 +811,7 @@ impl PingChecker { self.context.context(), self.server.server_config(), &addr, - self.server.connect_opts_ref(), + self.context.connect_opts_ref(), ) .await?; stream.write_all(GET_BODY).await?; @@ -872,27 +821,28 @@ impl PingChecker { let mut buf = Vec::new(); reader.read_until(b'\n', &mut buf).await?; - let mut headers = [httparse::EMPTY_HEADER; 1]; - let mut response = httparse::Response::new(&mut headers); - - if response.parse(&buf).is_ok() && matches!(response.code, Some(204)) { - return Ok(()); - } + static EXPECTED_HTTP_STATUS_LINE: &[u8] = b"HTTP/1.1 204 No Content\r\n"; + if buf != EXPECTED_HTTP_STATUS_LINE { + use std::io::{Error, ErrorKind}; - Err(Error::new( - ErrorKind::InvalidData, - format!( + debug!( "unexpected response from http://clients3.google.com/generate_204, {:?}", ByteStr::new(&buf) - ), - )) + ); + + let err = Error::new( + ErrorKind::InvalidData, + "unexpected response from http://clients3.google.com/generate_204", + ); + return Err(err); + } + + Ok(()) } /// Detect TCP connectivity with Firefox's http://detectportal.firefox.com/success.txt async fn check_request_tcp_firefox(&self) -> io::Result<()> { - use std::io::{Error, ErrorKind}; - - const GET_BODY: &[u8] = + static GET_BODY: &[u8] = b"GET /success.txt HTTP/1.1\r\nHost: detectportal.firefox.com\r\nConnection: close\r\nAccept: */*\r\n\r\n"; let addr = Address::DomainNameAddress("detectportal.firefox.com".to_owned(), 80); @@ -901,7 +851,7 @@ impl PingChecker { self.context.context(), self.server.server_config(), &addr, - self.server.connect_opts_ref(), + self.context.connect_opts_ref(), ) .await?; stream.write_all(GET_BODY).await?; @@ -911,20 +861,23 @@ impl PingChecker { let mut buf = Vec::new(); reader.read_until(b'\n', &mut buf).await?; - let mut headers = [httparse::EMPTY_HEADER; 1]; - let mut response = httparse::Response::new(&mut headers); - - if response.parse(&buf).is_ok() && matches!(response.code, Some(200) | Some(204)) { - return Ok(()); - } + static EXPECTED_HTTP_STATUS_LINE: &[u8] = b"HTTP/1.1 200 OK\r\n"; + if buf != EXPECTED_HTTP_STATUS_LINE { + use std::io::{Error, ErrorKind}; - Err(Error::new( - ErrorKind::InvalidData, - format!( + debug!( "unexpected response from http://detectportal.firefox.com/success.txt, {:?}", ByteStr::new(&buf) - ), - )) + ); + + let err = Error::new( + ErrorKind::InvalidData, + "unexpected response from http://detectportal.firefox.com/success.txt", + ); + return Err(err); + } + + Ok(()) } async fn check_request_udp(&self) -> io::Result<()> { @@ -938,17 +891,15 @@ impl PingChecker { // - QNAME: \x07 firefox \x03 com \x00 // - QTYPE: 0x0001 A // - QCLASS: 0x0001 IN - const DNS_QUERY: &[u8] = + static DNS_QUERY: &[u8] = b"\x12\x34\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07firefox\x03com\x00\x00\x01\x00\x01"; let addr = Address::SocketAddress(SocketAddr::new(Ipv4Addr::new(8, 8, 8, 8).into(), 53)); - let client = ProxySocket::connect_with_opts( - self.context.context(), - self.server.server_config(), - self.server.connect_opts_ref(), - ) - .await?; + let svr_cfg = self.server.server_config(); + + let client = + ProxySocket::connect_with_opts(self.context.context(), svr_cfg, self.context.connect_opts_ref()).await?; let mut control = UdpSocketControlData::default(); control.client_session_id = rand::random::(); @@ -994,7 +945,7 @@ impl PingChecker { trace!( "checked remote {} server {} latency with {} ms", self.server_type, - ServerConfigFormatter::new(self.server.server_config()), + self.server.server_config().addr(), elapsed ); Ok(elapsed) @@ -1003,7 +954,7 @@ impl PingChecker { debug!( "failed to check {} server {}, error: {}", self.server_type, - ServerConfigFormatter::new(self.server.server_config()), + self.server.server_config().addr(), err ); @@ -1017,7 +968,7 @@ impl PingChecker { trace!( "checked remote {} server {} latency timeout, elapsed {} ms", self.server_type, - ServerConfigFormatter::new(self.server.server_config()), + self.server.server_config().addr(), elapsed ); diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/server_data.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/server_data.rs index 76cb6f5..ec58de2 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/server_data.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/server_data.rs @@ -2,20 +2,14 @@ use std::{ fmt::{self, Debug}, - net::SocketAddr, - sync::{ - Arc, - atomic::{AtomicU32, Ordering}, - }, + sync::atomic::{AtomicU32, Ordering}, time::Duration, }; -use shadowsocks::{ServerConfig, net::ConnectOpts}; +use shadowsocks::ServerConfig; use tokio::sync::Mutex; -use crate::{config::ServerInstanceConfig, local::context::ServiceContext}; - -use super::server_stat::{Score, ServerStat, ServerStatData}; +use super::server_stat::{Score, ServerStat}; /// Server's statistic score pub struct ServerScore { @@ -50,25 +44,10 @@ impl ServerScore { updated_score } - /// Append a `Score` into statistic and recalculate score of the server - pub async fn push_score_fetch_statistic(&self, score: Score) -> (u32, ServerStatData) { - let (updated_score, data) = { - let mut stat = self.stat_data.lock().await; - (stat.push_score(score), *stat.data()) - }; - self.score.store(updated_score, Ordering::Release); - (updated_score, data) - } - /// Report request failure of this server, which will eventually records an `Errored` score pub async fn report_failure(&self) -> u32 { self.push_score(Score::Errored).await } - - /// Get statistic data - pub async fn stat_data(&self) -> ServerStatData { - *self.stat_data.lock().await.data() - } } impl Debug for ServerScore { @@ -82,60 +61,25 @@ impl Debug for ServerScore { pub struct ServerIdent { tcp_score: ServerScore, udp_score: ServerScore, - svr_cfg: ServerInstanceConfig, - connect_opts: ConnectOpts, + svr_cfg: ServerConfig, } impl ServerIdent { /// Create a `ServerIdent` - pub fn new( - context: Arc, - svr_cfg: ServerInstanceConfig, - max_server_rtt: Duration, - check_window: Duration, - ) -> ServerIdent { - let mut connect_opts = context.connect_opts_ref().clone(); - - #[cfg(any(target_os = "linux", target_os = "android"))] - if let Some(fwmark) = svr_cfg.outbound_fwmark { - connect_opts.fwmark = Some(fwmark); - } - - #[cfg(target_os = "freebsd")] - if let Some(user_cookie) = svr_cfg.outbound_user_cookie { - connect_opts.user_cookie = Some(user_cookie); - } - - if let Some(bind_local_addr) = svr_cfg.outbound_bind_addr { - connect_opts.bind_local_addr = Some(SocketAddr::new(bind_local_addr, 0)); - } - - if let Some(ref bind_interface) = svr_cfg.outbound_bind_interface { - connect_opts.bind_interface = Some(bind_interface.clone()); - } - + pub fn new(svr_cfg: ServerConfig, max_server_rtt: Duration, check_window: Duration) -> ServerIdent { ServerIdent { - tcp_score: ServerScore::new(svr_cfg.config.weight().tcp_weight(), max_server_rtt, check_window), - udp_score: ServerScore::new(svr_cfg.config.weight().udp_weight(), max_server_rtt, check_window), + tcp_score: ServerScore::new(svr_cfg.weight().tcp_weight(), max_server_rtt, check_window), + udp_score: ServerScore::new(svr_cfg.weight().udp_weight(), max_server_rtt, check_window), svr_cfg, - connect_opts, } } - pub fn connect_opts_ref(&self) -> &ConnectOpts { - &self.connect_opts - } - pub fn server_config(&self) -> &ServerConfig { - &self.svr_cfg.config + &self.svr_cfg } pub fn server_config_mut(&mut self) -> &mut ServerConfig { - &mut self.svr_cfg.config - } - - pub fn server_instance_config(&self) -> &ServerInstanceConfig { - &self.svr_cfg + &mut self.svr_cfg } pub fn tcp_score(&self) -> &ServerScore { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs index a81d2e7..a4810a9 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/loadbalancing/server_stat.rs @@ -19,39 +19,30 @@ pub enum Score { Errored, } -/// Server statistic data -#[derive(Debug, Clone, Copy)] -pub struct ServerStatData { +/// Statistic of a remote server +#[derive(Debug)] +pub struct ServerStat { /// Median of latency time (in millisec) /// /// Use median instead of average time, /// because probing result may have some really bad cases - pub latency_median: u32, - /// Total_Fail / Total_Probe - pub fail_rate: f64, - /// Score's standard deviation - pub latency_stdev: f64, - /// Score's average - pub latency_mean: f64, - /// Score's median absolute deviation - pub latency_mad: u32, -} - -/// Statistic of a remote server -#[derive(Debug)] -pub struct ServerStat { + rtt: u32, /// MAX server's RTT, normally the check timeout milliseconds max_server_rtt: u32, + /// Total_Fail / Total_Probe + fail_rate: f64, /// Recently probe data latency_queue: VecDeque<(Score, Instant)>, + /// Score's standard deviation + latency_stdev: f64, /// Score's standard deviation MAX max_latency_stdev: f64, + /// Score's average + latency_mean: f64, /// User's customized weight user_weight: f32, /// Checking window size check_window: Duration, - /// Statistic Data - data: ServerStatData, } fn max_latency_stdev(max_server_rtt: u32) -> f64 { @@ -67,49 +58,42 @@ impl ServerStat { pub fn new(user_weight: f32, max_server_rtt: u32, check_window: Duration) -> ServerStat { assert!((0.0..=1.0).contains(&user_weight)); - let max_latency_stdev = max_latency_stdev(max_server_rtt); ServerStat { + rtt: max_server_rtt, max_server_rtt, + fail_rate: 1.0, latency_queue: VecDeque::new(), - max_latency_stdev, + latency_stdev: 0.0, + max_latency_stdev: max_latency_stdev(max_server_rtt), + latency_mean: 0.0, user_weight, check_window, - data: ServerStatData { - latency_median: max_server_rtt, - fail_rate: 1.0, - latency_stdev: max_latency_stdev, - latency_mean: max_server_rtt as f64, - latency_mad: max_server_rtt, - }, } } fn score(&self) -> u32 { // Normalize rtt - let nrtt = self.data.latency_median as f64 / self.max_server_rtt as f64; + let nrtt = self.rtt as f64 / self.max_server_rtt as f64; // Normalize stdev - // let nstdev = self.data.latency_stdev / self.max_latency_stdev; - // Mormalize mad - let nmad = self.data.latency_mad as f64 / self.max_server_rtt as f64; + let nstdev = self.latency_stdev / self.max_latency_stdev; const SCORE_RTT_WEIGHT: f64 = 1.0; const SCORE_FAIL_WEIGHT: f64 = 3.0; - // const SCORE_STDEV_WEIGHT: f64 = 0.0; - const SCORE_MAD_WEIGHT: f64 = 1.0; + const SCORE_STDEV_WEIGHT: f64 = 1.0; // [EPSILON, 1] // Just for avoiding divide by 0 let user_weight = self.user_weight.max(f32::EPSILON); - // Score = (norm_lat * 1.0 + prop_err * 3.0 + (stdev || mad) * 1.0) / 5.0 / user_weight + // Score = (norm_lat * 1.0 + prop_err * 3.0 + stdev * 1.0) / 5.0 / user_weight // // 1. The lower latency, the better // 2. The lower errored count, the better - // 3. The lower latency's stdev / mad, the better + // 3. The lower latency's stdev, the better // 4. The higher user's weight, the better - let score = (nrtt * SCORE_RTT_WEIGHT + self.data.fail_rate * SCORE_FAIL_WEIGHT + nmad * SCORE_MAD_WEIGHT) - / (SCORE_RTT_WEIGHT + SCORE_FAIL_WEIGHT + SCORE_MAD_WEIGHT) + let score = (nrtt * SCORE_RTT_WEIGHT + self.fail_rate * SCORE_FAIL_WEIGHT + nstdev * SCORE_STDEV_WEIGHT) + / (SCORE_RTT_WEIGHT + SCORE_FAIL_WEIGHT + SCORE_STDEV_WEIGHT) / user_weight as f64; // Times 10000 converts to u32, for 0.0001 precision @@ -148,12 +132,7 @@ impl ServerStat { } // Error rate - self.data.fail_rate = cerr as f64 / self.latency_queue.len() as f64; - - self.data.latency_median = self.max_server_rtt; - self.data.latency_stdev = self.max_latency_stdev; - self.data.latency_mean = self.max_server_rtt as f64; - self.data.latency_mad = self.max_server_rtt; + self.fail_rate = cerr as f64 / self.latency_queue.len() as f64; if !vlat.is_empty() { vlat.sort_unstable(); @@ -161,53 +140,31 @@ impl ServerStat { // Find median of latency let mid = vlat.len() / 2; - self.data.latency_median = if vlat.len() % 2 == 0 { + self.rtt = if vlat.len() % 2 == 0 { (vlat[mid] + vlat[mid - 1]) / 2 } else { vlat[mid] }; if vlat.len() > 1 { + // STDEV let n = vlat.len() as f64; - // mean - let total_lat: u32 = vlat.iter().sum(); - self.data.latency_mean = total_lat as f64 / n; - - // STDEV - let acc_mean_diff_square: f64 = vlat - .iter() - .map(|s| { - let diff = *s as f64 - self.data.latency_mean; - diff * diff - }) - .sum(); + let mut total_lat = 0; + for s in &vlat { + total_lat += *s; + } + self.latency_mean = total_lat as f64 / n; + let mut acc_diff = 0.0; + for s in &vlat { + let diff = *s as f64 - self.latency_mean; + acc_diff += diff * diff; + } // Corrected Sample Standard Deviation - self.data.latency_stdev = (acc_mean_diff_square / (n - 1.0)).sqrt(); - - // MAD - let mut vlat_abs_diff: Vec = vlat - .iter() - .map(|s| (*s as i32 - self.data.latency_median as i32).unsigned_abs()) - .collect(); - vlat_abs_diff.sort_unstable(); - - let abs_diff_median_mid = vlat_abs_diff.len() / 2; - self.data.latency_mad = if vlat_abs_diff.len() % 2 == 0 { - (vlat_abs_diff[abs_diff_median_mid] + vlat_abs_diff[abs_diff_median_mid - 1]) / 2 - } else { - vlat_abs_diff[abs_diff_median_mid] - }; - } else { - self.data.latency_mean = vlat[0] as f64; - self.data.latency_mad = 0; + self.latency_stdev = ((1.0 / (n - 1.0)) * acc_diff).sqrt(); } } self.score() } - - pub fn data(&self) -> &ServerStatData { - &self.data - } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/mod.rs index cacce89..f5b5c1e 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/mod.rs @@ -1,25 +1,27 @@ //! Shadowsocks Local Server use std::{ + future::Future, io::{self, ErrorKind}, - net::SocketAddr, + pin::Pin, sync::Arc, + task::{Context, Poll}, time::Duration, }; -use futures::future; +use futures::{future, ready}; use log::trace; use shadowsocks::{ config::Mode, net::{AcceptOpts, ConnectOpts}, }; +use tokio::task::JoinHandle; #[cfg(feature = "local-flow-stat")] use crate::{config::LocalFlowStatAddress, net::FlowStat}; use crate::{ config::{Config, ConfigType, ProtocolType}, dns::build_dns_resolver, - utils::ServerHandle, }; use self::{ @@ -29,12 +31,8 @@ use self::{ #[cfg(feature = "local-dns")] use self::dns::{Dns, DnsBuilder}; -#[cfg(feature = "local-fake-dns")] -use self::fake_dns::{FakeDns, FakeDnsBuilder}; #[cfg(feature = "local-http")] use self::http::{Http, HttpBuilder}; -#[cfg(feature = "local-online-config")] -use self::online_config::{OnlineConfigService, OnlineConfigServiceBuilder}; #[cfg(feature = "local-redir")] use self::redir::{Redir, RedirBuilder}; use self::socks::{Socks, SocksBuilder}; @@ -46,14 +44,10 @@ use self::tunnel::{Tunnel, TunnelBuilder}; pub mod context; #[cfg(feature = "local-dns")] pub mod dns; -#[cfg(feature = "local-fake-dns")] -pub mod fake_dns; #[cfg(feature = "local-http")] pub mod http; pub mod loadbalancing; pub mod net; -#[cfg(feature = "local-online-config")] -pub mod online_config; #[cfg(feature = "local-redir")] pub mod redir; pub mod socks; @@ -68,6 +62,27 @@ pub mod utils; /// This is borrowed from Go's `net` library's default setting pub(crate) const LOCAL_DEFAULT_KEEPALIVE_TIMEOUT: Duration = Duration::from_secs(15); +struct ServerHandle(JoinHandle>); + +impl Drop for ServerHandle { + #[inline] + fn drop(&mut self) { + self.0.abort(); + } +} + +impl Future for ServerHandle { + type Output = io::Result<()>; + + #[inline] + fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + match ready!(Pin::new(&mut self.0).poll(cx)) { + Ok(res) => res.into(), + Err(err) => Err(io::Error::new(ErrorKind::Other, err)).into(), + } + } +} + /// Local Server instance pub struct Server { balancer: PingBalancer, @@ -82,14 +97,10 @@ pub struct Server { dns_servers: Vec, #[cfg(feature = "local-redir")] redir_servers: Vec, - #[cfg(feature = "local-fake-dns")] - fake_dns_servers: Vec, #[cfg(feature = "local-flow-stat")] local_stat_addr: Option, #[cfg(feature = "local-flow-stat")] flow_stat: Arc, - #[cfg(feature = "local-online-config")] - online_config: Option, } impl Server { @@ -100,18 +111,13 @@ impl Server { trace!("{:?}", config); // Warning for Stream Ciphers - // NOTE: This will only check servers in config. #[cfg(feature = "stream-cipher")] for inst in config.server.iter() { let server = &inst.config; if server.method().is_stream() { - log::warn!( - "stream cipher {} for server {} have inherent weaknesses (see discussion in https://github.com/shadowsocks/shadowsocks-org/issues/36). \ - DO NOT USE. It will be removed in the future.", - server.method(), - server.addr() - ); + log::warn!("stream cipher {} for server {} have inherent weaknesses (see discussion in https://github.com/shadowsocks/shadowsocks-org/issues/36). \ + DO NOT USE. It will be removed in the future.", server.method(), server.addr()); } } @@ -130,14 +136,12 @@ impl Server { let mut connect_opts = ConnectOpts { #[cfg(any(target_os = "linux", target_os = "android"))] fwmark: config.outbound_fwmark, - #[cfg(target_os = "freebsd")] - user_cookie: config.outbound_user_cookie, #[cfg(target_os = "android")] vpn_protect_path: config.outbound_vpn_protect_path, bind_interface: config.outbound_bind_interface, - bind_local_addr: config.outbound_bind_addr.map(|ip| SocketAddr::new(ip, 0)), + bind_local_addr: config.outbound_bind_addr, ..Default::default() }; @@ -147,8 +151,6 @@ impl Server { connect_opts.tcp.fastopen = config.fast_open; connect_opts.tcp.keepalive = config.keep_alive.or(Some(LOCAL_DEFAULT_KEEPALIVE_TIMEOUT)); connect_opts.tcp.mptcp = config.mptcp; - connect_opts.udp.mtu = config.udp_mtu; - connect_opts.udp.allow_fragmentation = config.outbound_udp_allow_fragmentation; context.set_connect_opts(connect_opts); let mut accept_opts = AcceptOpts { @@ -161,7 +163,6 @@ impl Server { accept_opts.tcp.fastopen = config.fast_open; accept_opts.tcp.keepalive = config.keep_alive.or(Some(LOCAL_DEFAULT_KEEPALIVE_TIMEOUT)); accept_opts.tcp.mptcp = config.mptcp; - accept_opts.udp.mtu = config.udp_mtu; context.set_accept_opts(accept_opts); if let Some(resolver) = build_dns_resolver( @@ -217,7 +218,7 @@ impl Server { } for server in config.server { - balancer_builder.add_server(server); + balancer_builder.add_server(server.config); } balancer_builder.build().await? @@ -236,27 +237,10 @@ impl Server { dns_servers: Vec::new(), #[cfg(feature = "local-redir")] redir_servers: Vec::new(), - #[cfg(feature = "local-fake-dns")] - fake_dns_servers: Vec::new(), #[cfg(feature = "local-flow-stat")] local_stat_addr: config.local_stat_addr, #[cfg(feature = "local-flow-stat")] flow_stat: context.flow_stat(), - #[cfg(feature = "local-online-config")] - online_config: match config.online_config { - None => None, - Some(online_config) => { - let mut builder = OnlineConfigServiceBuilder::new( - Arc::new(context.clone()), - online_config.config_url, - balancer.clone(), - ); - if let Some(update_interval) = online_config.update_interval { - builder.set_update_interval(update_interval); - } - Some(builder.build().await?) - } - }, }; for local_instance in config.local { @@ -294,9 +278,6 @@ impl Server { if let Some(b) = local_config.udp_addr { server_builder.set_udp_bind_addr(b.clone()); } - if let Some(b) = local_config.udp_associate_addr { - server_builder.set_udp_associate_addr(b.clone()); - } #[cfg(target_os = "macos")] if let Some(n) = local_config.launchd_tcp_socket_name { @@ -498,32 +479,6 @@ impl Server { let server = builder.build().await?; local_server.tun_servers.push(server); } - #[cfg(feature = "local-fake-dns")] - ProtocolType::FakeDns => { - let client_addr = match local_config.addr { - Some(a) => a, - None => return Err(io::Error::new(ErrorKind::Other, "dns requires local address")), - }; - - let mut builder = FakeDnsBuilder::new(client_addr); - if let Some(n) = local_config.fake_dns_ipv4_network { - builder.set_ipv4_network(n); - } - if let Some(n) = local_config.fake_dns_ipv6_network { - builder.set_ipv6_network(n); - } - if let Some(exp) = local_config.fake_dns_record_expire_duration { - builder.set_expire_duration(exp); - } - if let Some(p) = local_config.fake_dns_database_path { - builder.set_database_path(p); - } - let server = builder.build().await?; - #[cfg(feature = "local-fake-dns")] - context.add_fake_dns_manager(server.clone_manager()).await; - - local_server.fake_dns_servers.push(server); - } } } @@ -563,11 +518,6 @@ impl Server { vfut.push(ServerHandle(tokio::spawn(svr.run()))); } - #[cfg(feature = "local-fake-dns")] - for svr in self.fake_dns_servers { - vfut.push(ServerHandle(tokio::spawn(svr.run()))); - } - #[cfg(feature = "local-flow-stat")] if let Some(stat_addr) = self.local_stat_addr { // For Android's flow statistic @@ -576,11 +526,6 @@ impl Server { vfut.push(ServerHandle(tokio::spawn(report_fut))); } - #[cfg(feature = "local-online-config")] - if let Some(online_config) = self.online_config { - vfut.push(ServerHandle(tokio::spawn(online_config.run()))); - } - let (res, ..) = future::select_all(vfut).await; res } @@ -624,12 +569,6 @@ impl Server { pub fn redir_servers(&self) -> &[Redir] { &self.redir_servers } - - /// Get Fake DNS instances - #[cfg(feature = "local-fake-dns")] - pub fn fake_dns_servers(&self) -> &[FakeDns] { - &self.fake_dns_servers - } } #[cfg(feature = "local-flow-stat")] diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs index 36fea6b..1c04e9a 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/tcp/auto_proxy_stream.rs @@ -10,7 +10,7 @@ use std::{ use pin_project::pin_project; use shadowsocks::{ - net::{ConnectOpts, TcpStream}, + net::TcpStream, relay::{socks5::Address, tcprelay::proxy_stream::ProxyClientStream}, }; use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; @@ -37,55 +37,26 @@ impl AutoProxyClientStream { server: &ServerIdent, addr: A, ) -> io::Result - where - A: Into
, - { - AutoProxyClientStream::connect_with_opts(context.clone(), server, addr, context.connect_opts_ref()).await - } - - /// Connect to target `addr` via shadowsocks' server configured by `svr_cfg` - pub async fn connect_with_opts( - context: Arc, - server: &ServerIdent, - addr: A, - opts: &ConnectOpts, - ) -> io::Result where A: Into
, { let addr = addr.into(); if context.check_target_bypassed(&addr).await { - AutoProxyClientStream::connect_bypassed_with_opts(context, addr, opts).await + AutoProxyClientStream::connect_bypassed(context, addr).await } else { - AutoProxyClientStream::connect_proxied_with_opts(context, server, addr, opts).await + AutoProxyClientStream::connect_proxied(context, server, addr).await } } /// Connect directly to target `addr` pub async fn connect_bypassed(context: Arc, addr: A) -> io::Result - where - A: Into
, - { - AutoProxyClientStream::connect_bypassed_with_opts(context.clone(), addr, context.connect_opts_ref()).await - } - - /// Connect directly to target `addr` - pub async fn connect_bypassed_with_opts( - context: Arc, - addr: A, - connect_opts: &ConnectOpts, - ) -> io::Result where A: Into
, { // Connect directly. - #[cfg_attr(not(feature = "local-fake-dns"), allow(unused_mut))] - let mut addr = addr.into(); - #[cfg(feature = "local-fake-dns")] - if let Some(mapped_addr) = context.try_map_fake_address(&addr).await { - addr = mapped_addr; - } - let stream = TcpStream::connect_remote_with_opts(context.context_ref(), &addr, connect_opts).await?; + let addr = addr.into(); + let stream = + TcpStream::connect_remote_with_opts(context.context_ref(), &addr, context.connect_opts_ref()).await?; Ok(AutoProxyClientStream::Bypassed(stream)) } @@ -98,32 +69,12 @@ impl AutoProxyClientStream { where A: Into
, { - AutoProxyClientStream::connect_proxied_with_opts(context.clone(), server, addr, context.connect_opts_ref()) - .await - } - - /// Connect to target `addr` via shadowsocks' server configured by `svr_cfg` - pub async fn connect_proxied_with_opts( - context: Arc, - server: &ServerIdent, - addr: A, - connect_opts: &ConnectOpts, - ) -> io::Result - where - A: Into
, - { - #[cfg_attr(not(feature = "local-fake-dns"), allow(unused_mut))] - let mut addr = addr.into(); - #[cfg(feature = "local-fake-dns")] - if let Some(mapped_addr) = context.try_map_fake_address(&addr).await { - addr = mapped_addr; - } let flow_stat = context.flow_stat(); let stream = match ProxyClientStream::connect_with_opts_map( context.context(), server.server_config(), addr, - connect_opts, + context.connect_opts_ref(), |stream| MonProxyStream::from_stream(stream, flow_stat), ) .await diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/udp/association.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/udp/association.rs index ed0dd5d..7a08da0 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/udp/association.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/udp/association.rs @@ -9,32 +9,38 @@ use std::{ time::Duration, }; +use async_trait::async_trait; use bytes::Bytes; use futures::future; use log::{debug, error, trace, warn}; use lru_time_cache::LruCache; -use rand::{Rng, SeedableRng, rngs::SmallRng}; +use rand::{rngs::SmallRng, Rng, SeedableRng}; use tokio::{sync::mpsc, task::JoinHandle, time}; use shadowsocks::{ lookup_then, net::{AddrFamily, UdpSocket as ShadowUdpSocket}, relay::{ + udprelay::{options::UdpSocketControlData, ProxySocket, MAXIMUM_UDP_PAYLOAD_SIZE}, Address, - udprelay::{MAXIMUM_UDP_PAYLOAD_SIZE, ProxySocket, options::UdpSocketControlData}, }, }; use crate::{ local::{context::ServiceContext, loadbalancing::PingBalancer}, net::{ - MonProxySocket, UDP_ASSOCIATION_KEEP_ALIVE_CHANNEL_SIZE, UDP_ASSOCIATION_SEND_CHANNEL_SIZE, packet_window::PacketWindowFilter, + MonProxySocket, + UDP_ASSOCIATION_KEEP_ALIVE_CHANNEL_SIZE, + UDP_ASSOCIATION_SEND_CHANNEL_SIZE, }, }; /// Writer for sending packets back to client -#[trait_variant::make(Send)] +/// +/// Currently it requires `async-trait` for `async fn` in trait, which will allocate a `Box`ed `Future` every call of `send_to`. +/// This performance issue could be solved when `generic_associated_types` and `generic_associated_types` are stabilized. +#[async_trait] pub trait UdpInboundWrite { /// Sends packet `data` received from `remote_addr` back to `peer_addr` async fn send_to(&self, peer_addr: SocketAddr, remote_addr: &Address, data: &[u8]) -> io::Result<()>; @@ -92,13 +98,7 @@ where } /// Sends `data` from `peer_addr` to `target_addr` - #[cfg_attr(not(feature = "local-fake-dns"), allow(unused_mut))] - pub async fn send_to(&mut self, peer_addr: SocketAddr, mut target_addr: Address, data: &[u8]) -> io::Result<()> { - #[cfg(feature = "local-fake-dns")] - if let Some(mapped_addr) = self.context.try_map_fake_address(&target_addr).await { - target_addr = mapped_addr; - } - + pub async fn send_to(&mut self, peer_addr: SocketAddr, target_addr: Address, data: &[u8]) -> io::Result<()> { // Check or (re)create an association if let Some(assoc) = self.assoc_map.get(&peer_addr) { @@ -213,7 +213,7 @@ where peer_addr: SocketAddr, bypassed_ipv4_socket: Option, bypassed_ipv6_socket: Option, - proxied_socket: Option>, + proxied_socket: Option, keepalive_tx: mpsc::Sender, keepalive_flag: bool, balancer: PingBalancer, @@ -234,18 +234,12 @@ where } thread_local! { - static CLIENT_SESSION_RNG: RefCell = RefCell::new(SmallRng::from_os_rng()); + static CLIENT_SESSION_RNG: RefCell = RefCell::new(SmallRng::from_entropy()); } -/// Generate an AEAD-2022 Client SessionID #[inline] -pub fn generate_client_session_id() -> u64 { - loop { - let id = CLIENT_SESSION_RNG.with(|rng| rng.borrow_mut().random()); - if id != 0 { - break id; - } - } +fn generate_client_session_id() -> u64 { + CLIENT_SESSION_RNG.with(|rng| rng.borrow_mut().gen()) } impl UdpAssociationContext @@ -410,7 +404,7 @@ where #[inline] async fn receive_from_proxied_opt( - socket: &Option>, + socket: &Option, buf: &mut Vec, ) -> io::Result<(usize, Address, Option)> { match *socket { @@ -479,6 +473,8 @@ where target_os = "watchos", target_os = "tvos", target_os = "freebsd", + // target_os = "dragonfly", + // target_os = "netbsd", target_os = "windows", )); @@ -572,7 +568,8 @@ where let svr_cfg = server.server_config(); let socket = - ProxySocket::connect_with_opts(self.context.context(), svr_cfg, server.connect_opts_ref()).await?; + ProxySocket::connect_with_opts(self.context.context(), svr_cfg, self.context.connect_opts_ref()) + .await?; let socket = MonProxySocket::from_socket(socket, self.context.flow_stat()); self.proxied_socket.insert(socket) @@ -615,26 +612,23 @@ where self.keepalive_flag = true; // Send back to client - match self.respond_writer.send_to(self.peer_addr, addr, data).await { - Err(err) => { - warn!( - "udp failed to send back {} bytes to client {}, from target {} ({}), error: {}", - data.len(), - self.peer_addr, - addr, - if bypassed { "bypassed" } else { "proxied" }, - err - ); - } - Ok(..) => { - trace!( - "udp relay {} <- {} ({}) with {} bytes", - self.peer_addr, - addr, - if bypassed { "bypassed" } else { "proxied" }, - data.len() - ); - } + if let Err(err) = self.respond_writer.send_to(self.peer_addr, addr, data).await { + warn!( + "udp failed to send back {} bytes to client {}, from target {} ({}), error: {}", + data.len(), + self.peer_addr, + addr, + if bypassed { "bypassed" } else { "proxied" }, + err + ); + } else { + trace!( + "udp relay {} <- {} ({}) with {} bytes", + self.peer_addr, + addr, + if bypassed { "bypassed" } else { "proxied" }, + data.len() + ); } } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/udp/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/udp/mod.rs index 41e387b..20371de 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/udp/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/net/udp/mod.rs @@ -1,5 +1,4 @@ -#[allow(unused_imports)] -pub use self::association::{UdpAssociationManager, UdpInboundWrite, generate_client_session_id}; +pub use self::association::{UdpAssociationManager, UdpInboundWrite}; pub mod association; pub mod listener; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/content_encoding.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/content_encoding.rs deleted file mode 100644 index 550c0e4..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/content_encoding.rs +++ /dev/null @@ -1,92 +0,0 @@ -//! HTTP Body Content-Encoding - -use std::io::{self, Cursor, Read}; - -use futures::StreamExt; -use http::HeaderValue; -use http_body_util::BodyExt; -use hyper::body::Body; - -/// HTTP Content-Encoding -#[derive(Debug, Clone, Copy, Default)] -pub enum ContentEncoding { - #[default] - Identity, - Deflate, - Gzip, - Br, - Zstd, -} - -#[derive(Debug, Clone, Copy)] -pub struct ContentEncodingError; - -impl<'a> TryFrom<&'a HeaderValue> for ContentEncoding { - type Error = ContentEncodingError; - - fn try_from(value: &'a HeaderValue) -> Result { - if value == HeaderValue::from_static("identity") { - Ok(ContentEncoding::Identity) - } else if value == HeaderValue::from_static("deflate") { - Ok(ContentEncoding::Deflate) - } else if value == HeaderValue::from_static("gzip") { - Ok(ContentEncoding::Gzip) - } else if value == HeaderValue::from_static("br") { - Ok(ContentEncoding::Br) - } else if value == HeaderValue::from_static("zstd") { - Ok(ContentEncoding::Zstd) - } else { - Err(ContentEncodingError) - } - } -} - -/// Read data from body, decode automatically with specific Content-Encoding -pub async fn read_body(encoding: ContentEncoding, body: &mut B) -> io::Result> -where - B: Body + Sized + Unpin + 'static, - B::Data: AsRef<[u8]>, - B::Error: Into>, -{ - let mut raw_body = Vec::new(); - - let mut body_stream = body.into_data_stream(); - while let Some(data) = body_stream.next().await { - match data { - Ok(data) => raw_body.extend_from_slice(data.as_ref()), - Err(err) => return Err(io::Error::new(io::ErrorKind::Other, err)), - } - } - - match encoding { - ContentEncoding::Identity => Ok(raw_body), - - ContentEncoding::Deflate => { - use flate2::read::DeflateDecoder; - - let mut decoder = DeflateDecoder::new(&raw_body[..]); - let mut decoded_body = Vec::new(); - decoder.read_to_end(&mut decoded_body)?; - - Ok(decoded_body) - } - - ContentEncoding::Gzip => { - use flate2::read::GzDecoder; - - let mut decoder = GzDecoder::new(&raw_body[..]); - let mut decoded_body = Vec::new(); - decoder.read_to_end(&mut decoded_body)?; - - Ok(decoded_body) - } - - ContentEncoding::Br => { - let mut decoded_body = Vec::new(); - brotli::BrotliDecompress(&mut Cursor::new(&raw_body[..]), &mut decoded_body)?; - Ok(decoded_body) - } - - ContentEncoding::Zstd => zstd::decode_all(Cursor::new(&raw_body[..])), - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/mod.rs deleted file mode 100644 index 760acc8..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/online_config/mod.rs +++ /dev/null @@ -1,278 +0,0 @@ -//! Online Config (SIP008) -//! -//! Online Configuration Delivery URL (https://shadowsocks.org/doc/sip008.html) - -use std::{ - collections::HashSet, - io, - sync::Arc, - time::{Duration, Instant}, -}; - -use crate::{ - config::{Config, ConfigType}, - local::{context::ServiceContext, http::HttpClient, loadbalancing::PingBalancer}, -}; - -use http::StatusCode; -use log::{debug, error, trace, warn}; -use mime::Mime; -use shadowsocks::config::ServerSource; -use tokio::time; - -use self::content_encoding::{ContentEncoding, read_body}; - -mod content_encoding; - -/// OnlineConfigService builder pattern -pub struct OnlineConfigServiceBuilder { - context: Arc, - config_url: String, - balancer: PingBalancer, - config_update_interval: Duration, - allowed_plugins: Option>, -} - -impl OnlineConfigServiceBuilder { - /// Create a Builder - pub fn new(context: Arc, config_url: String, balancer: PingBalancer) -> OnlineConfigServiceBuilder { - OnlineConfigServiceBuilder { - context, - config_url, - balancer, - config_update_interval: Duration::from_secs(3600), - allowed_plugins: None, - } - } - - /// Set update interval. Default is 3600s - pub fn set_update_interval(&mut self, update_interval: Duration) { - self.config_update_interval = update_interval; - } - - /// Allowed plugins (whitelist) from SIP008 server - pub fn set_allowed_plugins(&mut self, allowed_plugins: V) - where - V: Iterator, - S: Into, - { - let mut allowed_plugins_set = HashSet::new(); - for plugin in allowed_plugins { - allowed_plugins_set.insert(plugin.into()); - } - self.allowed_plugins = Some(allowed_plugins_set); - } - - /// Build OnlineConfigService - pub async fn build(self) -> io::Result { - let mut service = OnlineConfigService { - context: self.context, - http_client: HttpClient::new(), - config_url: self.config_url, - config_update_interval: self.config_update_interval, - balancer: self.balancer, - allowed_plugins: self.allowed_plugins, - }; - - // Run once after creation. - service.run_once().await?; - - Ok(service) - } -} - -pub struct OnlineConfigService { - context: Arc, - http_client: HttpClient, - config_url: String, - config_update_interval: Duration, - balancer: PingBalancer, - allowed_plugins: Option>, -} - -impl OnlineConfigService { - async fn run_once(&mut self) -> io::Result<()> { - match time::timeout(Duration::from_secs(30), self.run_once_impl()).await { - Ok(o) => o, - Err(..) => { - error!("server-loader task timeout, url: {}", self.config_url); - Err(io::ErrorKind::TimedOut.into()) - } - } - } - - async fn run_once_impl(&mut self) -> io::Result<()> { - const SHADOWSOCKS_USER_AGENT: &str = concat!(env!("CARGO_PKG_NAME"), "/", env!("CARGO_PKG_VERSION")); - - let start_time = Instant::now(); - - let req = match hyper::Request::builder() - .header("User-Agent", SHADOWSOCKS_USER_AGENT) - .header("Accept-Encoding", "deflate, gzip, br, zstd") - .method("GET") - .uri(&self.config_url) - .body(String::new()) - { - Ok(r) => r, - Err(err) => { - error!("server-loader task failed to make hyper::Request, error: {}", err); - return Err(io::Error::new(io::ErrorKind::Other, err)); - } - }; - - let mut rsp = match self.http_client.send_request(self.context.clone(), req, None).await { - Ok(r) => r, - Err(err) => { - error!("server-loader task failed to get {}, error: {}", self.config_url, err); - return Err(io::Error::new(io::ErrorKind::Other, err)); - } - }; - - trace!("sever-loader task fetch response: {:?}", rsp); - - let fetch_time = Instant::now(); - - // Check status=200 - if rsp.status() != StatusCode::OK { - error!( - "server-loader task failed to get {}, status: {}", - self.config_url, - rsp.status() - ); - return Err(io::Error::new( - io::ErrorKind::Other, - format!("status: {}", rsp.status()), - )); - } - - // Content-Type: application/json; charset=utf-8 - // mandatory in standard SIP008 - match rsp.headers().get("Content-Type") { - Some(h) => match h.to_str() { - Ok(hstr) => match hstr.parse::() { - Ok(content_type) => { - if content_type.type_() == mime::APPLICATION - && content_type.subtype() == mime::JSON - && content_type.get_param(mime::CHARSET) == Some(mime::UTF_8) - { - trace!("checked Content-Type: {:?}", h); - } else { - warn!( - "Content-Type is not \"application/json; charset=utf-8\", which is mandatory in standard SIP008. found {:?}", - h - ); - } - } - Err(err) => { - warn!("Content-Type parse failed, value: {:?}, error: {}", h, err); - } - }, - Err(..) => { - warn!("Content-Type is not a UTF-8 string: {:?}", h); - } - }, - None => { - warn!("missing Content-Type in SIP008 response from {}", self.config_url); - } - } - - let content_encoding = match rsp.headers().get(http::header::CONTENT_ENCODING) { - None => ContentEncoding::Identity, - Some(ce) => match ContentEncoding::try_from(ce) { - Ok(ce) => ce, - Err(..) => { - error!("unrecognized Content-Encoding: {:?}", ce); - return Err(io::Error::new(io::ErrorKind::Other, "unrecognized Content-Encoding")); - } - }, - }; - - let body = read_body(content_encoding, &mut rsp).await?; - let parsed_body = match String::from_utf8(body) { - Ok(b) => b, - Err(..) => return Err(io::Error::new(io::ErrorKind::Other, "body contains non-utf8 bytes")), - }; - - let online_config = match Config::load_from_str(&parsed_body, ConfigType::OnlineConfig) { - Ok(c) => c, - Err(err) => { - error!( - "server-loader task failed to load from url: {}, error: {}", - self.config_url, err - ); - return Err(io::Error::new(io::ErrorKind::Other, err)); - } - }; - - if let Err(err) = online_config.check_integrity() { - error!( - "server-loader task failed to load from url: {}, error: {}", - self.config_url, err - ); - return Err(io::Error::new(io::ErrorKind::Other, err)); - } - - let after_read_time = Instant::now(); - - // Check plugin whitelist - if let Some(ref allowed_plugins) = self.allowed_plugins { - for server in &online_config.server { - if let Some(plugin) = server.config.plugin() { - if !allowed_plugins.contains(&plugin.plugin) { - error!( - "server-loader task found not allowed plugin: {}, url: {}", - plugin.plugin, self.config_url - ); - return Err(io::Error::new( - io::ErrorKind::Other, - format!("not allowed plugin: {}", plugin.plugin), - )); - } - } - } - } - - // Merge with static servers - let server_len = online_config.server.len(); - - // Update into ping balancers - if let Err(err) = self - .balancer - .reset_servers(online_config.server, &[ServerSource::OnlineConfig]) - .await - { - error!( - "server-loader task failed to reset balancer, url: {}, error: {}", - self.config_url, err - ); - return Err(err); - }; - - let finish_time = Instant::now(); - - debug!( - "server-loader task finished loading {} servers from url: {}, fetch time: {:?}, read time: {:?}, load time: {:?}, total time: {:?}", - server_len, - self.config_url, - fetch_time - start_time, - after_read_time - fetch_time, - finish_time - after_read_time, - finish_time - start_time, - ); - - Ok(()) - } - - /// Start service loop - pub async fn run(mut self) -> io::Result<()> { - debug!( - "server-loader task started, url: {}, update interval: {:?}", - self.config_url, self.config_update_interval - ); - - loop { - time::sleep(self.config_update_interval).await; - let _ = self.run_once().await; - } - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/redir_ext.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/redir_ext.rs index 7caa037..071a2d1 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/redir_ext.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/redir_ext.rs @@ -8,12 +8,14 @@ use std::{ task::{Context, Poll}, }; +use async_trait::async_trait; use shadowsocks::net::AcceptOpts; use tokio::net::TcpListener; use crate::config::RedirType; /// Extension function for `TcpListener` for setting extra options before `bind()` +#[async_trait] pub trait TcpListenerRedirExt { // Create a TcpListener for transparent proxy // diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/server.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/server.rs index bdac16e..b152a3d 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/server.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/server.rs @@ -2,8 +2,8 @@ use std::{io, sync::Arc, time::Duration}; -use futures::{FutureExt, future}; -use shadowsocks::{ServerAddr, config::Mode}; +use futures::{future, FutureExt}; +use shadowsocks::{config::Mode, ServerAddr}; use crate::{ config::RedirType, diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/mod.rs index b1dc7f0..6b7d187 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/mod.rs @@ -6,13 +6,11 @@ use socket2::Socket; cfg_if! { if #[cfg(unix)] { mod unix; - #[allow(unused_imports)] pub use self::unix::*; } } #[cfg(unix)] -#[allow(dead_code)] pub fn set_ipv6_only(socket: &S, ipv6_only: bool) -> io::Result<()> where S: std::os::unix::io::AsRawFd, @@ -22,7 +20,7 @@ where let fd = socket.as_raw_fd(); let sock = unsafe { Socket::from_raw_fd(fd) }; let result = sock.set_only_v6(ipv6_only); - let _ = sock.into_raw_fd(); + sock.into_raw_fd(); result } @@ -37,6 +35,6 @@ where let handle = socket.as_raw_socket(); let sock = unsafe { Socket::from_raw_socket(handle) }; let result = sock.set_only_v6(ipv6_only); - let _ = sock.into_raw_socket(); + sock.into_raw_socket(); result } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/bsd_pf.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/bsd_pf.rs index 49b7bc6..da3bfe2 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/bsd_pf.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/bsd_pf.rs @@ -1,25 +1,124 @@ //! PacketFilter implementation for *BSD use std::{ + ffi::CString, io::{self, Error, ErrorKind}, mem, net::SocketAddr, ptr, }; -use cfg_if::cfg_if; use log::trace; -use nix::ioctl_readwrite; use once_cell::sync::Lazy; use socket2::{Protocol, SockAddr}; -use super::pfvar::{PF_OUT, in_addr, in6_addr, pfioc_natlook, sockaddr_in, sockaddr_in6}; -#[cfg(any(target_os = "macos", target_os = "ios"))] -use super::pfvar::{pf_addr, pfioc_states, pfsync_state}; +mod ffi { + use cfg_if::cfg_if; + use nix::ioctl_readwrite; -ioctl_readwrite!(ioc_natlook, 'D', 23, pfioc_natlook); -#[cfg(any(target_os = "macos", target_os = "ios"))] -ioctl_readwrite!(ioc_getstates, 'D', 25, pfioc_states); + #[repr(C)] + #[derive(Copy, Clone)] + pub struct pf_addr { + pub pfa: pf_addr__bindgen_ty_1, + } + + #[repr(C)] + #[derive(Copy, Clone)] + pub union pf_addr__bindgen_ty_1 { + pub v4: libc::in_addr, + pub v6: libc::in6_addr, + pub addr8: [u8; 16usize], + pub addr16: [u16; 8usize], + pub addr32: [u32; 4usize], + _bindgen_union_align: [u32; 4usize], + } + + cfg_if! { + if #[cfg(any(target_os = "macos", target_os = "ios"))] { + #[repr(C)] + #[derive(Copy, Clone)] + pub union pf_state_xport { + pub port: u16, + pub call_id: u16, + pub spi: u32, + } + + // Apple's XNU customized structure + // + // https://github.com/opensource-apple/xnu/blob/master/bsd/net/pfvar.h + #[repr(C)] + #[derive(Copy, Clone)] + pub struct pfioc_natlook { + pub saddr: pf_addr, + pub daddr: pf_addr, + pub rsaddr: pf_addr, + pub rdaddr: pf_addr, + pub sxport: pf_state_xport, + pub dxport: pf_state_xport, + pub rsxport: pf_state_xport, + pub rdxport: pf_state_xport, + pub af: libc::sa_family_t, + pub proto: u8, + pub proto_variant: u8, + pub direction: u8, + } + + impl pfioc_natlook { + pub unsafe fn set_sport(&mut self, port: u16) { + self.sxport.port = port; + } + + pub unsafe fn set_dport(&mut self, port: u16) { + self.dxport.port = port; + } + + pub unsafe fn rdport(&self) -> u16 { + self.rdxport.port + } + } + + } else { + // FreeBSD's definition, should be the same as all the other platforms + // + // https://github.com/freebsd/freebsd/blob/master/sys/net/pfvar.h + #[repr(C)] + #[derive(Copy, Clone)] + pub struct pfioc_natlook { + pub saddr: pf_addr, + pub daddr: pf_addr, + pub rsaddr: pf_addr, + pub rdaddr: pf_addr, + pub sport: u16, + pub dport: u16, + pub rsport: u16, + pub rdport: u16, + pub af: libc::sa_family_t, + pub proto: u8, + pub proto_variant: u8, + pub direction: u8, + } + + impl pfioc_natlook { + pub fn set_sport(&mut self, port: u16) { + self.sport = port; + } + + pub fn set_dport(&mut self, port: u16) { + self.dport = port; + } + + pub fn rdport(&self) -> u16 { + self.rdport + } + } + } + } + + // pub const PF_IN: libc::c_int = 1; + pub const PF_OUT: libc::c_int = 2; + + ioctl_readwrite!(ioc_natlook, 'D', 23, pfioc_natlook); +} pub struct PacketFilter { fd: libc::c_int, @@ -28,11 +127,11 @@ pub struct PacketFilter { impl PacketFilter { fn open() -> io::Result { unsafe { - let dev_path = b"/dev/pf\0"; + let dev_path = CString::new("/dev/pf").expect("CString::new"); // According to FreeBSD's doc // https://www.freebsd.org/cgi/man.cgi?query=pf&sektion=4&apropos=0&manpath=FreeBSD+12.1-RELEASE+and+Ports - let fd = libc::open(dev_path.as_ptr() as *const _, libc::O_RDONLY); + let fd = libc::open(dev_path.as_ptr(), libc::O_RDONLY); if fd < 0 { let err = Error::last_os_error(); return Err(err); @@ -51,58 +150,37 @@ impl PacketFilter { } pub fn natlook(&self, bind_addr: &SocketAddr, peer_addr: &SocketAddr, proto: Protocol) -> io::Result { - match proto { - Protocol::TCP => self.tcp_natlook(bind_addr, peer_addr, proto), - #[cfg(any(target_os = "macos", target_os = "ios"))] - Protocol::UDP => self.udp_natlook(bind_addr, peer_addr, proto), - _ => Err(io::ErrorKind::InvalidInput.into()), - } - } - - fn tcp_natlook(&self, bind_addr: &SocketAddr, peer_addr: &SocketAddr, proto: Protocol) -> io::Result { trace!("PF natlook peer: {}, bind: {}", peer_addr, bind_addr); unsafe { - let mut pnl: pfioc_natlook = mem::zeroed(); + let mut pnl: ffi::pfioc_natlook = mem::zeroed(); match *bind_addr { SocketAddr::V4(ref v4) => { pnl.af = libc::AF_INET as libc::sa_family_t; let sockaddr = SockAddr::from(*v4); - let sockaddr = sockaddr.as_ptr() as *const sockaddr_in; + let sockaddr = sockaddr.as_ptr() as *const libc::sockaddr_in; - let addr: *const in_addr = ptr::addr_of!((*sockaddr).sin_addr) as *const _; + let addr: *const libc::in_addr = &((*sockaddr).sin_addr) as *const _; let port: libc::in_port_t = (*sockaddr).sin_port; - ptr::write_unaligned::(ptr::addr_of_mut!(pnl.daddr.pfa) as *mut _, *addr); - - cfg_if! { - if #[cfg(any(target_os = "macos", target_os = "ios"))] { - pnl.dxport.port = port; - } else { - pnl.dport = port; - } - } + #[allow(clippy::size_of_in_element_count)] + ptr::copy_nonoverlapping(addr, &mut pnl.daddr.pfa.v4, mem::size_of_val(&pnl.daddr.pfa.v4)); + pnl.set_dport(port); } SocketAddr::V6(ref v6) => { pnl.af = libc::AF_INET6 as libc::sa_family_t; let sockaddr = SockAddr::from(*v6); - let sockaddr = sockaddr.as_ptr() as *const sockaddr_in6; + let sockaddr = sockaddr.as_ptr() as *const libc::sockaddr_in6; - let addr: *const in6_addr = ptr::addr_of!((*sockaddr).sin6_addr) as *const _; + let addr: *const libc::in6_addr = &((*sockaddr).sin6_addr) as *const _; let port: libc::in_port_t = (*sockaddr).sin6_port; - ptr::write_unaligned::(ptr::addr_of_mut!(pnl.daddr.pfa) as *mut _, *addr); - - cfg_if! { - if #[cfg(any(target_os = "macos", target_os = "ios"))] { - pnl.dxport.port = port; - } else { - pnl.dport = port; - } - } + #[allow(clippy::size_of_in_element_count)] + ptr::copy_nonoverlapping(addr, &mut pnl.daddr.pfa.v6, mem::size_of_val(&pnl.daddr.pfa.v6)); + pnl.set_dport(port); } } @@ -113,20 +191,14 @@ impl PacketFilter { } let sockaddr = SockAddr::from(*v4); - let sockaddr = sockaddr.as_ptr() as *const sockaddr_in; + let sockaddr = sockaddr.as_ptr() as *const libc::sockaddr_in; - let addr: *const in_addr = ptr::addr_of!((*sockaddr).sin_addr) as *const _; + let addr: *const libc::in_addr = &((*sockaddr).sin_addr) as *const _; let port: libc::in_port_t = (*sockaddr).sin_port; - ptr::write_unaligned::(ptr::addr_of_mut!(pnl.saddr.pfa) as *mut _, *addr); - - cfg_if! { - if #[cfg(any(target_os = "macos", target_os = "ios"))] { - pnl.sxport.port = port; - } else { - pnl.sport = port; - } - } + #[allow(clippy::size_of_in_element_count)] + ptr::copy_nonoverlapping(addr, &mut pnl.saddr.pfa.v4, mem::size_of_val(&pnl.saddr.pfa.v4)); + pnl.set_sport(port); } SocketAddr::V6(ref v6) => { if pnl.af != libc::AF_INET6 as libc::sa_family_t { @@ -134,65 +206,47 @@ impl PacketFilter { } let sockaddr = SockAddr::from(*v6); - let sockaddr = sockaddr.as_ptr() as *const sockaddr_in6; + let sockaddr = sockaddr.as_ptr() as *const libc::sockaddr_in6; - let addr: *const in6_addr = ptr::addr_of!((*sockaddr).sin6_addr) as *const _; + let addr: *const libc::in6_addr = &((*sockaddr).sin6_addr) as *const _; let port: libc::in_port_t = (*sockaddr).sin6_port; - ptr::write_unaligned::(ptr::addr_of_mut!(pnl.saddr.pfa) as *mut _, *addr); - - cfg_if! { - if #[cfg(any(target_os = "macos", target_os = "ios"))] { - pnl.sxport.port = port; - } else { - pnl.sport = port; - } - } + #[allow(clippy::size_of_in_element_count)] + ptr::copy_nonoverlapping(addr, &mut pnl.saddr.pfa.v6, mem::size_of_val(&pnl.saddr.pfa.v6)); + pnl.set_sport(port); } } pnl.proto = i32::from(proto) as u8; - pnl.direction = PF_OUT as u8; + pnl.direction = ffi::PF_OUT as u8; - if let Err(err) = ioc_natlook(self.fd, &mut pnl) { + if let Err(err) = ffi::ioc_natlook(self.fd, &mut pnl as *mut _) { return Err(Error::from_raw_os_error(err as i32)); } let (_, dst_addr) = SockAddr::try_init(|dst_addr, addr_len| { if pnl.af == libc::AF_INET as libc::sa_family_t { - let dst_addr: &mut sockaddr_in = &mut *(dst_addr as *mut _); + let dst_addr: &mut libc::sockaddr_in = &mut *(dst_addr as *mut _); dst_addr.sin_family = pnl.af; - - cfg_if! { - if #[cfg(any(target_os = "macos", target_os = "ios"))] { - dst_addr.sin_port = pnl.rdxport.port; - } else { - dst_addr.sin_port = pnl.rdport; - } - } - - ptr::write_unaligned::( - ptr::addr_of_mut!(dst_addr.sin_addr), - ptr::read::(ptr::addr_of!(pnl.rdaddr.pfa) as *const _), + dst_addr.sin_port = pnl.rdport(); + #[allow(clippy::size_of_in_element_count)] + ptr::copy_nonoverlapping( + &pnl.rdaddr.pfa.v4, + &mut dst_addr.sin_addr, + mem::size_of_val(&pnl.rdaddr.pfa.v4), ); - *addr_len = mem::size_of_val(&dst_addr.sin_addr) as libc::socklen_t; + *addr_len = mem::size_of_val(&pnl.rdaddr.pfa.v4) as libc::socklen_t; } else if pnl.af == libc::AF_INET6 as libc::sa_family_t { - let dst_addr: &mut sockaddr_in6 = &mut *(dst_addr as *mut _); + let dst_addr: &mut libc::sockaddr_in6 = &mut *(dst_addr as *mut _); dst_addr.sin6_family = pnl.af; - - cfg_if! { - if #[cfg(any(target_os = "macos", target_os = "ios"))] { - dst_addr.sin6_port = pnl.rdxport.port; - } else { - dst_addr.sin6_port = pnl.rdport; - } - } - - ptr::write_unaligned::( - ptr::addr_of_mut!(dst_addr.sin6_addr), - ptr::read::(ptr::addr_of!(pnl.rdaddr.pfa) as *const _), + dst_addr.sin6_port = pnl.rdport(); + #[allow(clippy::size_of_in_element_count)] + ptr::copy_nonoverlapping( + &pnl.rdaddr.pfa.v6, + &mut dst_addr.sin6_addr, + mem::size_of_val(&pnl.rdaddr.pfa.v6), ); - *addr_len = mem::size_of_val(&dst_addr.sin6_addr) as libc::socklen_t; + *addr_len = mem::size_of_val(&pnl.rdaddr.pfa.v6) as libc::socklen_t; } else { unreachable!("sockaddr should be either ipv4 or ipv6"); } @@ -203,160 +257,6 @@ impl PacketFilter { Ok(dst_addr.as_socket().expect("SocketAddr")) } } - - #[cfg(any(target_os = "macos", target_os = "ios"))] - fn udp_natlook(&self, bind_addr: &SocketAddr, peer_addr: &SocketAddr, _proto: Protocol) -> io::Result { - unsafe { - // Get all states - // https://man.freebsd.org/cgi/man.cgi?query=pf&sektion=4&manpath=OpenBSD - // DIOCGETSTATES - - let mut states: pfioc_states = mem::zeroed(); - let mut states_buffer = vec![0u8; 8192]; - - loop { - states.ps_len = states_buffer.len() as _; - states.ps_u.psu_buf = states_buffer.as_mut_ptr() as *mut _; - - if let Err(err) = ioc_getstates(self.fd, &mut states) { - return Err(Error::from_raw_os_error(err as i32)); - } - - if states.ps_len as usize <= states_buffer.len() { - break; - } - - // Resize to fit all states - // > On exit, ps_len is always set to the total size re- - // > quired to hold all state table entries - states_buffer.resize(states.ps_len as usize, 0); - } - - let bind_addr_sockaddr = SockAddr::from(*bind_addr); - let peer_addr_sockaddr = SockAddr::from(*peer_addr); - - let mut bind_addr_pfaddr: pf_addr = mem::zeroed(); - let mut peer_addr_pfaddr: pf_addr = mem::zeroed(); - - match bind_addr_sockaddr.family() as libc::c_int { - libc::AF_INET => { - let sockaddr: *const sockaddr_in = bind_addr_sockaddr.as_ptr() as *const _; - ptr::write_unaligned::( - ptr::addr_of_mut!(bind_addr_pfaddr.pfa) as *mut _, - (*sockaddr).sin_addr, - ); - } - libc::AF_INET6 => { - let sockaddr: *const sockaddr_in6 = bind_addr_sockaddr.as_ptr() as *const _; - ptr::write_unaligned::( - ptr::addr_of_mut!(bind_addr_pfaddr.pfa) as *mut _, - (*sockaddr).sin6_addr, - ); - } - _ => unreachable!("bind_addr family = {}", bind_addr_sockaddr.family()), - } - - match peer_addr_sockaddr.family() as libc::c_int { - libc::AF_INET => { - let sockaddr: *const sockaddr_in = peer_addr_sockaddr.as_ptr() as *const _; - ptr::write_unaligned::( - ptr::addr_of_mut!(peer_addr_pfaddr.pfa) as *mut _, - (*sockaddr).sin_addr, - ); - } - libc::AF_INET6 => { - let sockaddr: *const sockaddr_in6 = peer_addr_sockaddr.as_ptr() as *const _; - ptr::write_unaligned::( - ptr::addr_of_mut!(peer_addr_pfaddr.pfa) as *mut _, - (*sockaddr).sin6_addr, - ); - } - _ => unreachable!("peer_addr family = {}", peer_addr_sockaddr.family()), - } - - let states_count = states.ps_len as usize / mem::size_of::(); - for i in 0..states_count { - let state = &*(states.ps_u.psu_states.add(i)); - - if state.proto == libc::IPPROTO_UDP as u8 { - cfg_if! { - if #[cfg(any(target_os = "macos", target_os = "ios"))] { - let dst_port = state.lan.xport.port; - let src_port = state.ext_gwy.xport.port; - let actual_dst_port = state.gwy.xport.port; - } else { - let dst_port = state.lan.port; - let src_port = state.ext_gwy.port; - let actual_dst_port = state.gwy.port; - } - } - - let dst_addr_eq = libc::memcmp( - &bind_addr_pfaddr as *const _ as *const _, - ptr::addr_of!(state.lan.addr.pfa) as *const _, - mem::size_of::(), - ) == 0; - let src_addr_eq = libc::memcmp( - &peer_addr_pfaddr as *const _ as *const _, - ptr::addr_of!(state.ext_gwy.addr.pfa) as *const _, - mem::size_of::(), - ) == 0; - - if src_addr_eq && src_port == peer_addr.port() && dst_addr_eq && dst_port == bind_addr.port() { - let actual_dst_addr = match state.af_gwy as libc::c_int { - libc::AF_INET => { - let (_, actual_dst_addr) = SockAddr::try_init(|sockaddr, len| { - let addr = &mut *(sockaddr as *mut sockaddr_in); - addr.sin_family = libc::AF_INET as libc::sa_family_t; - ptr::write_unaligned::( - ptr::addr_of_mut!(addr.sin_addr), - ptr::read_unaligned::(ptr::addr_of!(state.gwy.addr.pfa) as *const _), - ); - addr.sin_port = actual_dst_port as libc::in_port_t; - - ptr::write(len, mem::size_of::() as libc::socklen_t); - Ok(()) - }) - .unwrap(); - - actual_dst_addr - } - libc::AF_INET6 => { - let (_, actual_dst_addr) = SockAddr::try_init(|sockaddr, len| { - let addr = &mut *(sockaddr as *mut sockaddr_in6); - addr.sin6_family = libc::AF_INET6 as libc::sa_family_t; - ptr::write_unaligned::( - ptr::addr_of_mut!(addr.sin6_addr), - ptr::read_unaligned::(ptr::addr_of!(state.gwy.addr.pfa) as *const _), - ); - addr.sin6_port = actual_dst_port as libc::in_port_t; - - ptr::write(len, mem::size_of::() as libc::socklen_t); - Ok(()) - }) - .unwrap(); - - actual_dst_addr - } - _ => { - return Err(io::Error::new( - ErrorKind::Other, - format!("state.af_gwy {} is not a valid address family", state.af_gwy), - )); - } - }; - - return Ok(actual_dst_addr.as_socket().expect("SocketAddr")); - } - } - } - } - - Err(io::Error::new( - ErrorKind::Other, - format!("natlook UDP binding {}, {} not found", bind_addr, peer_addr), - )) - } } impl Drop for PacketFilter { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/mod.rs index cd0eeec..bc8fe2b 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/mod.rs @@ -3,27 +3,9 @@ use cfg_if::cfg_if; cfg_if! { if #[cfg(any(target_os = "macos", target_os = "ios", - target_os = "freebsd"))] { + target_os = "freebsd", + target_os = "netbsd", + target_os = "openbsd"))] { pub mod bsd_pf; } } - -cfg_if! { - if #[cfg(any(target_os = "macos", - target_os = "ios"))] { - #[path = "pfvar_bindgen_macos.rs"] - #[allow(dead_code, non_upper_case_globals, non_snake_case, non_camel_case_types)] - #[allow(clippy::useless_transmute, clippy::too_many_arguments, clippy::unnecessary_cast)] - mod pfvar; - } else if #[cfg(target_os = "freebsd")] { - #[path = "pfvar_bindgen_freebsd.rs"] - #[allow(dead_code, non_upper_case_globals, non_snake_case, non_camel_case_types)] - #[allow(clippy::useless_transmute, clippy::too_many_arguments, clippy::unnecessary_cast)] - mod pfvar; - } else if #[cfg(target_os = "openbsd")] { - #[path = "pfvar_bindgen_openbsd.rs"] - #[allow(dead_code, non_upper_case_globals, non_snake_case, non_camel_case_types)] - #[allow(clippy::useless_transmute, clippy::too_many_arguments, clippy::unnecessary_cast)] - mod pfvar; - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/pfvar_bindgen_freebsd.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/pfvar_bindgen_freebsd.rs deleted file mode 100644 index 9e08651..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/pfvar_bindgen_freebsd.rs +++ /dev/null @@ -1,19862 +0,0 @@ -// automatically generated by rust-bindgen 0.69.2 - -pub const BSD: u32 = 199506; -pub const BSD4_3: u32 = 1; -pub const BSD4_4: u32 = 1; -pub const __FreeBSD_version: u32 = 1400097; -pub const __GNUCLIKE_ASM: u32 = 3; -pub const __GNUCLIKE___TYPEOF: u32 = 1; -pub const __GNUCLIKE___SECTION: u32 = 1; -pub const __GNUCLIKE_CTOR_SECTION_HANDLING: u32 = 1; -pub const __GNUCLIKE_BUILTIN_CONSTANT_P: u32 = 1; -pub const __GNUCLIKE_BUILTIN_VARARGS: u32 = 1; -pub const __GNUCLIKE_BUILTIN_STDARG: u32 = 1; -pub const __GNUCLIKE_BUILTIN_VAALIST: u32 = 1; -pub const __GNUC_VA_LIST_COMPATIBILITY: u32 = 1; -pub const __GNUCLIKE_BUILTIN_NEXT_ARG: u32 = 1; -pub const __GNUCLIKE_BUILTIN_MEMCPY: u32 = 1; -pub const __CC_SUPPORTS_INLINE: u32 = 1; -pub const __CC_SUPPORTS___INLINE: u32 = 1; -pub const __CC_SUPPORTS___INLINE__: u32 = 1; -pub const __CC_SUPPORTS___FUNC__: u32 = 1; -pub const __CC_SUPPORTS_WARNING: u32 = 1; -pub const __CC_SUPPORTS_VARADIC_XXX: u32 = 1; -pub const __CC_SUPPORTS_DYNAMIC_ARRAY_INIT: u32 = 1; -pub const __POSIX_VISIBLE: u32 = 200809; -pub const __XSI_VISIBLE: u32 = 700; -pub const __BSD_VISIBLE: u32 = 1; -pub const __ISO_C_VISIBLE: u32 = 2011; -pub const __EXT1_VISIBLE: u32 = 1; -pub const __CHAR_BIT: u32 = 8; -pub const __SCHAR_MAX: u32 = 127; -pub const __SCHAR_MIN: i32 = -128; -pub const __UCHAR_MAX: u32 = 255; -pub const __USHRT_MAX: u32 = 65535; -pub const __SHRT_MAX: u32 = 32767; -pub const __SHRT_MIN: i32 = -32768; -pub const __UINT_MAX: u32 = 4294967295; -pub const __INT_MAX: u32 = 2147483647; -pub const __INT_MIN: i32 = -2147483648; -pub const __ULONG_MAX: i32 = -1; -pub const __LONG_MAX: u64 = 9223372036854775807; -pub const __LONG_MIN: i64 = -9223372036854775808; -pub const __ULLONG_MAX: i32 = -1; -pub const __LLONG_MAX: u64 = 9223372036854775807; -pub const __LLONG_MIN: i64 = -9223372036854775808; -pub const __SSIZE_MAX: u64 = 9223372036854775807; -pub const __SIZE_T_MAX: i32 = -1; -pub const __OFF_MAX: u64 = 9223372036854775807; -pub const __OFF_MIN: i64 = -9223372036854775808; -pub const __UQUAD_MAX: i32 = -1; -pub const __QUAD_MAX: u64 = 9223372036854775807; -pub const __QUAD_MIN: i64 = -9223372036854775808; -pub const __LONG_BIT: u32 = 64; -pub const __WORD_BIT: u32 = 32; -pub const __MINSIGSTKSZ: u32 = 2048; -pub const __WCHAR_MIN: i32 = -2147483648; -pub const __WCHAR_MAX: u32 = 2147483647; -pub const _QUAD_HIGHWORD: u32 = 1; -pub const _QUAD_LOWWORD: u32 = 0; -pub const _SIG_WORDS: u32 = 4; -pub const _SIG_MAXSIG: u32 = 128; -pub const FD_SETSIZE: u32 = 1024; -pub const ARG_MAX: u32 = 524288; -pub const CHILD_MAX: u32 = 40; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const NGROUPS_MAX: u32 = 1023; -pub const OPEN_MAX: u32 = 64; -pub const PATH_MAX: u32 = 1024; -pub const PIPE_BUF: u32 = 512; -pub const IOV_MAX: u32 = 1024; -pub const MAXCOMLEN: u32 = 19; -pub const MAXINTERP: u32 = 1024; -pub const MAXLOGNAME: u32 = 33; -pub const MAXUPRC: u32 = 40; -pub const NCARGS: u32 = 524288; -pub const NGROUPS: u32 = 1024; -pub const NOFILE: u32 = 64; -pub const NOGROUP: u32 = 65535; -pub const MAXHOSTNAMELEN: u32 = 256; -pub const SPECNAMELEN: u32 = 255; -pub const _X86_SIGNAL_H: u32 = 1; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGEMT: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGBUS: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGSYS: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGURG: u32 = 16; -pub const SIGSTOP: u32 = 17; -pub const SIGTSTP: u32 = 18; -pub const SIGCONT: u32 = 19; -pub const SIGCHLD: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGIO: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGINFO: u32 = 29; -pub const SIGUSR1: u32 = 30; -pub const SIGUSR2: u32 = 31; -pub const SIGTHR: u32 = 32; -pub const SIGLWP: u32 = 32; -pub const SIGLIBRT: u32 = 33; -pub const SIGRTMIN: u32 = 65; -pub const SIGRTMAX: u32 = 126; -pub const SIGEV_NONE: u32 = 0; -pub const SIGEV_SIGNAL: u32 = 1; -pub const SIGEV_THREAD: u32 = 2; -pub const SIGEV_KEVENT: u32 = 3; -pub const SIGEV_THREAD_ID: u32 = 4; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLOPN: u32 = 2; -pub const ILL_ILLADR: u32 = 3; -pub const ILL_ILLTRP: u32 = 4; -pub const ILL_PRVOPC: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const BUS_OOMERR: u32 = 100; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const SEGV_PKUERR: u32 = 100; -pub const FPE_INTOVF: u32 = 1; -pub const FPE_INTDIV: u32 = 2; -pub const FPE_FLTDIV: u32 = 3; -pub const FPE_FLTOVF: u32 = 4; -pub const FPE_FLTUND: u32 = 5; -pub const FPE_FLTRES: u32 = 6; -pub const FPE_FLTINV: u32 = 7; -pub const FPE_FLTSUB: u32 = 8; -pub const FPE_FLTIDO: u32 = 9; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const TRAP_DTRACE: u32 = 3; -pub const TRAP_CAP: u32 = 4; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const SA_NOCLDSTOP: u32 = 8; -pub const SA_ONSTACK: u32 = 1; -pub const SA_RESTART: u32 = 2; -pub const SA_RESETHAND: u32 = 4; -pub const SA_NODEFER: u32 = 16; -pub const SA_NOCLDWAIT: u32 = 32; -pub const SA_SIGINFO: u32 = 64; -pub const NSIG: u32 = 32; -pub const SI_NOINFO: u32 = 0; -pub const SI_USER: u32 = 65537; -pub const SI_QUEUE: u32 = 65538; -pub const SI_TIMER: u32 = 65539; -pub const SI_ASYNCIO: u32 = 65540; -pub const SI_MESGQ: u32 = 65541; -pub const SI_KERNEL: u32 = 65542; -pub const SI_LWP: u32 = 65543; -pub const SI_UNDEFINED: u32 = 0; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 4; -pub const MINSIGSTKSZ: u32 = 2048; -pub const SIGSTKSZ: u32 = 34816; -pub const SV_ONSTACK: u32 = 1; -pub const SV_INTERRUPT: u32 = 2; -pub const SV_RESETHAND: u32 = 4; -pub const SV_NODEFER: u32 = 16; -pub const SV_NOCLDSTOP: u32 = 8; -pub const SV_SIGINFO: u32 = 64; -pub const SIG_BLOCK: u32 = 1; -pub const SIG_UNBLOCK: u32 = 2; -pub const SIG_SETMASK: u32 = 3; -pub const MACHINE: &[u8; 6] = b"amd64\0"; -pub const MACHINE_ARCH: &[u8; 6] = b"amd64\0"; -pub const MACHINE_ARCH32: &[u8; 5] = b"i386\0"; -pub const MAXCPU: u32 = 1; -pub const MAXMEMDOM: u32 = 8; -pub const CACHE_LINE_SHIFT: u32 = 6; -pub const CACHE_LINE_SIZE: u32 = 64; -pub const NPTEPGSHIFT: u32 = 9; -pub const PAGE_SHIFT: u32 = 12; -pub const PAGE_SIZE: u32 = 4096; -pub const PAGE_MASK: u32 = 4095; -pub const NPDEPGSHIFT: u32 = 9; -pub const PDRSHIFT: u32 = 21; -pub const NBPDR: u32 = 2097152; -pub const PDRMASK: u32 = 2097151; -pub const NPDPEPGSHIFT: u32 = 9; -pub const PDPSHIFT: u32 = 30; -pub const NBPDP: u32 = 1073741824; -pub const PDPMASK: u32 = 1073741823; -pub const NPML4EPGSHIFT: u32 = 9; -pub const PML4SHIFT: u32 = 39; -pub const NBPML4: u64 = 549755813888; -pub const PML4MASK: u64 = 549755813887; -pub const NPML5EPGSHIFT: u32 = 9; -pub const PML5SHIFT: u32 = 48; -pub const NBPML5: u64 = 281474976710656; -pub const PML5MASK: u64 = 281474976710655; -pub const MAXPAGESIZES: u32 = 3; -pub const IOPAGES: u32 = 2; -pub const IOPERM_BITMAP_SIZE: u32 = 8193; -pub const KSTACK_PAGES: u32 = 4; -pub const KSTACK_GUARD_PAGES: u32 = 1; -pub const CHAR_BIT: u32 = 8; -pub const SCHAR_MAX: u32 = 127; -pub const SCHAR_MIN: i32 = -128; -pub const UCHAR_MAX: u32 = 255; -pub const CHAR_MAX: u32 = 127; -pub const CHAR_MIN: i32 = -128; -pub const USHRT_MAX: u32 = 65535; -pub const SHRT_MAX: u32 = 32767; -pub const SHRT_MIN: i32 = -32768; -pub const UINT_MAX: u32 = 4294967295; -pub const INT_MAX: u32 = 2147483647; -pub const INT_MIN: i32 = -2147483648; -pub const ULONG_MAX: i32 = -1; -pub const LONG_MAX: u64 = 9223372036854775807; -pub const LONG_MIN: i64 = -9223372036854775808; -pub const ULLONG_MAX: i32 = -1; -pub const LLONG_MAX: u64 = 9223372036854775807; -pub const LLONG_MIN: i64 = -9223372036854775808; -pub const SSIZE_MAX: u64 = 9223372036854775807; -pub const SIZE_T_MAX: i32 = -1; -pub const OFF_MAX: u64 = 9223372036854775807; -pub const OFF_MIN: i64 = -9223372036854775808; -pub const GID_MAX: u32 = 4294967295; -pub const UID_MAX: u32 = 4294967295; -pub const UQUAD_MAX: i32 = -1; -pub const QUAD_MAX: u64 = 9223372036854775807; -pub const QUAD_MIN: i64 = -9223372036854775808; -pub const LONG_BIT: u32 = 64; -pub const WORD_BIT: u32 = 32; -pub const MQ_PRIO_MAX: u32 = 64; -pub const DEV_BSHIFT: u32 = 9; -pub const DEV_BSIZE: u32 = 512; -pub const BLKDEV_IOSIZE: u32 = 4096; -pub const DFLTPHYS: u32 = 65536; -pub const MAXPHYS: u32 = 1048576; -pub const MAXDUMPPGS: u32 = 16; -pub const MSIZE: u32 = 256; -pub const MCLSHIFT: u32 = 11; -pub const MCLBYTES: u32 = 2048; -pub const MJUMPAGESIZE: u32 = 4096; -pub const MJUM9BYTES: u32 = 9216; -pub const MJUM16BYTES: u32 = 16384; -pub const PRIMASK: u32 = 255; -pub const PCATCH: u32 = 256; -pub const PDROP: u32 = 512; -pub const PNOLOCK: u32 = 1024; -pub const PRILASTFLAG: u32 = 1024; -pub const NZERO: u32 = 0; -pub const NBBY: u32 = 8; -pub const CMASK: u32 = 18; -pub const MAXBSIZE: u32 = 65536; -pub const MAXBCACHEBUF: u32 = 65536; -pub const BKVASIZE: u32 = 16384; -pub const BKVAMASK: u32 = 16383; -pub const MAXPATHLEN: u32 = 1024; -pub const MAXSYMLINKS: u32 = 32; -pub const FSHIFT: u32 = 11; -pub const FSCALE: u32 = 2048; -pub const CPU_MAXSIZE: u32 = 1024; -pub const CPU_SETSIZE: u32 = 1024; -pub const CPU_LEVEL_ROOT: u32 = 1; -pub const CPU_LEVEL_CPUSET: u32 = 2; -pub const CPU_LEVEL_WHICH: u32 = 3; -pub const CPU_WHICH_TID: u32 = 1; -pub const CPU_WHICH_PID: u32 = 2; -pub const CPU_WHICH_CPUSET: u32 = 3; -pub const CPU_WHICH_IRQ: u32 = 4; -pub const CPU_WHICH_JAIL: u32 = 5; -pub const CPU_WHICH_DOMAIN: u32 = 6; -pub const CPU_WHICH_INTRHANDLER: u32 = 7; -pub const CPU_WHICH_ITHREAD: u32 = 8; -pub const CPU_WHICH_TIDPID: u32 = 9; -pub const CPUSET_INVALID: i32 = -1; -pub const CPUSET_DEFAULT: u32 = 0; -pub const M_NOWAIT: u32 = 1; -pub const M_WAITOK: u32 = 2; -pub const M_NORECLAIM: u32 = 128; -pub const M_ZERO: u32 = 256; -pub const M_NOVM: u32 = 512; -pub const M_USE_RESERVE: u32 = 1024; -pub const M_NODUMP: u32 = 2048; -pub const M_FIRSTFIT: u32 = 4096; -pub const M_BESTFIT: u32 = 8192; -pub const M_EXEC: u32 = 16384; -pub const M_NEXTFIT: u32 = 32768; -pub const M_VERSION: u32 = 2020110501; -pub const DTMALLOC_PROBE_MALLOC: u32 = 0; -pub const DTMALLOC_PROBE_FREE: u32 = 1; -pub const DTMALLOC_PROBE_MAX: u32 = 2; -pub const MALLOC_TYPE_STREAM_VERSION: u32 = 1; -pub const MALLOC_MAX_NAME: u32 = 32; -pub const __bool_true_false_are_defined: u32 = 1; -pub const false_: u32 = 0; -pub const true_: u32 = 1; -pub const INT8_MIN: i32 = -128; -pub const INT16_MIN: i32 = -32768; -pub const INT32_MIN: i32 = -2147483648; -pub const INT8_MAX: u32 = 127; -pub const INT16_MAX: u32 = 32767; -pub const INT32_MAX: u32 = 2147483647; -pub const UINT8_MAX: u32 = 255; -pub const UINT16_MAX: u32 = 65535; -pub const UINT32_MAX: u32 = 4294967295; -pub const INT64_MIN: i64 = -9223372036854775808; -pub const INT64_MAX: u64 = 9223372036854775807; -pub const UINT64_MAX: i32 = -1; -pub const INT_LEAST8_MIN: i32 = -128; -pub const INT_LEAST16_MIN: i32 = -32768; -pub const INT_LEAST32_MIN: i32 = -2147483648; -pub const INT_LEAST64_MIN: i64 = -9223372036854775808; -pub const INT_LEAST8_MAX: u32 = 127; -pub const INT_LEAST16_MAX: u32 = 32767; -pub const INT_LEAST32_MAX: u32 = 2147483647; -pub const INT_LEAST64_MAX: u64 = 9223372036854775807; -pub const UINT_LEAST8_MAX: u32 = 255; -pub const UINT_LEAST16_MAX: u32 = 65535; -pub const UINT_LEAST32_MAX: u32 = 4294967295; -pub const UINT_LEAST64_MAX: i32 = -1; -pub const INT_FAST8_MIN: i32 = -2147483648; -pub const INT_FAST16_MIN: i32 = -2147483648; -pub const INT_FAST32_MIN: i32 = -2147483648; -pub const INT_FAST64_MIN: i64 = -9223372036854775808; -pub const INT_FAST8_MAX: u32 = 2147483647; -pub const INT_FAST16_MAX: u32 = 2147483647; -pub const INT_FAST32_MAX: u32 = 2147483647; -pub const INT_FAST64_MAX: u64 = 9223372036854775807; -pub const UINT_FAST8_MAX: u32 = 4294967295; -pub const UINT_FAST16_MAX: u32 = 4294967295; -pub const UINT_FAST32_MAX: u32 = 4294967295; -pub const UINT_FAST64_MAX: i32 = -1; -pub const INTPTR_MIN: i64 = -9223372036854775808; -pub const INTPTR_MAX: u64 = 9223372036854775807; -pub const UINTPTR_MAX: i32 = -1; -pub const INTMAX_MIN: i64 = -9223372036854775808; -pub const INTMAX_MAX: u64 = 9223372036854775807; -pub const UINTMAX_MAX: i32 = -1; -pub const PTRDIFF_MIN: i64 = -9223372036854775808; -pub const PTRDIFF_MAX: u64 = 9223372036854775807; -pub const SIG_ATOMIC_MIN: i64 = -9223372036854775808; -pub const SIG_ATOMIC_MAX: u64 = 9223372036854775807; -pub const SIZE_MAX: i32 = -1; -pub const WINT_MIN: i32 = -2147483648; -pub const WINT_MAX: u32 = 2147483647; -pub const __WORDSIZE: u32 = 64; -pub const WCHAR_MIN: i32 = -2147483648; -pub const WCHAR_MAX: u32 = 2147483647; -pub const RSIZE_MAX: i32 = -1; -pub const __SLBF: u32 = 1; -pub const __SNBF: u32 = 2; -pub const __SRD: u32 = 4; -pub const __SWR: u32 = 8; -pub const __SRW: u32 = 16; -pub const __SEOF: u32 = 32; -pub const __SERR: u32 = 64; -pub const __SMBF: u32 = 128; -pub const __SAPP: u32 = 256; -pub const __SSTR: u32 = 512; -pub const __SOPT: u32 = 1024; -pub const __SNPT: u32 = 2048; -pub const __SOFF: u32 = 4096; -pub const __SMOD: u32 = 8192; -pub const __SALC: u32 = 16384; -pub const __SIGN: u32 = 32768; -pub const __S2OAP: u32 = 1; -pub const _IOFBF: u32 = 0; -pub const _IOLBF: u32 = 1; -pub const _IONBF: u32 = 2; -pub const BUFSIZ: u32 = 1024; -pub const EOF: i32 = -1; -pub const FOPEN_MAX: u32 = 20; -pub const FILENAME_MAX: u32 = 1024; -pub const P_tmpdir: &[u8; 6] = b"/tmp/\0"; -pub const L_tmpnam: u32 = 1024; -pub const TMP_MAX: u32 = 308915776; -pub const SEEK_SET: u32 = 0; -pub const SEEK_CUR: u32 = 1; -pub const SEEK_END: u32 = 2; -pub const L_cuserid: u32 = 17; -pub const L_ctermid: u32 = 1024; -pub const NV_NAME_MAX: u32 = 2048; -pub const NV_TYPE_NONE: u32 = 0; -pub const NV_TYPE_NULL: u32 = 1; -pub const NV_TYPE_BOOL: u32 = 2; -pub const NV_TYPE_NUMBER: u32 = 3; -pub const NV_TYPE_STRING: u32 = 4; -pub const NV_TYPE_NVLIST: u32 = 5; -pub const NV_TYPE_DESCRIPTOR: u32 = 6; -pub const NV_TYPE_BINARY: u32 = 7; -pub const NV_TYPE_BOOL_ARRAY: u32 = 8; -pub const NV_TYPE_NUMBER_ARRAY: u32 = 9; -pub const NV_TYPE_STRING_ARRAY: u32 = 10; -pub const NV_TYPE_NVLIST_ARRAY: u32 = 11; -pub const NV_TYPE_DESCRIPTOR_ARRAY: u32 = 12; -pub const NV_FLAG_IGNORE_CASE: u32 = 1; -pub const NV_FLAG_NO_UNIQUE: u32 = 2; -pub const REFCOUNT_SATURATION_VALUE: u32 = 3221225472; -pub const _DTRACE_VERSION: u32 = 1; -pub const CTL_MAXNAME: u32 = 24; -pub const CTLTYPE: u32 = 15; -pub const CTLTYPE_NODE: u32 = 1; -pub const CTLTYPE_INT: u32 = 2; -pub const CTLTYPE_STRING: u32 = 3; -pub const CTLTYPE_S64: u32 = 4; -pub const CTLTYPE_OPAQUE: u32 = 5; -pub const CTLTYPE_STRUCT: u32 = 5; -pub const CTLTYPE_UINT: u32 = 6; -pub const CTLTYPE_LONG: u32 = 7; -pub const CTLTYPE_ULONG: u32 = 8; -pub const CTLTYPE_U64: u32 = 9; -pub const CTLTYPE_U8: u32 = 10; -pub const CTLTYPE_U16: u32 = 11; -pub const CTLTYPE_S8: u32 = 12; -pub const CTLTYPE_S16: u32 = 13; -pub const CTLTYPE_S32: u32 = 14; -pub const CTLTYPE_U32: u32 = 15; -pub const CTLFLAG_RD: u32 = 2147483648; -pub const CTLFLAG_WR: u32 = 1073741824; -pub const CTLFLAG_RW: u32 = 3221225472; -pub const CTLFLAG_DORMANT: u32 = 536870912; -pub const CTLFLAG_ANYBODY: u32 = 268435456; -pub const CTLFLAG_SECURE: u32 = 134217728; -pub const CTLFLAG_PRISON: u32 = 67108864; -pub const CTLFLAG_DYN: u32 = 33554432; -pub const CTLFLAG_SKIP: u32 = 16777216; -pub const CTLMASK_SECURE: u32 = 15728640; -pub const CTLFLAG_TUN: u32 = 524288; -pub const CTLFLAG_RDTUN: u32 = 2148007936; -pub const CTLFLAG_RWTUN: u32 = 3221749760; -pub const CTLFLAG_MPSAFE: u32 = 262144; -pub const CTLFLAG_VNET: u32 = 131072; -pub const CTLFLAG_DYING: u32 = 65536; -pub const CTLFLAG_CAPRD: u32 = 32768; -pub const CTLFLAG_CAPWR: u32 = 16384; -pub const CTLFLAG_STATS: u32 = 8192; -pub const CTLFLAG_NOFETCH: u32 = 4096; -pub const CTLFLAG_CAPRW: u32 = 49152; -pub const CTLFLAG_NEEDGIANT: u32 = 2048; -pub const CTLSHIFT_SECURE: u32 = 20; -pub const CTLFLAG_SECURE1: u32 = 134217728; -pub const CTLFLAG_SECURE2: u32 = 135266304; -pub const CTLFLAG_SECURE3: u32 = 136314880; -pub const OID_AUTO: i32 = -1; -pub const CTL_AUTO_START: u32 = 256; -pub const CTL_SYSCTL: u32 = 0; -pub const CTL_KERN: u32 = 1; -pub const CTL_VM: u32 = 2; -pub const CTL_VFS: u32 = 3; -pub const CTL_NET: u32 = 4; -pub const CTL_DEBUG: u32 = 5; -pub const CTL_HW: u32 = 6; -pub const CTL_MACHDEP: u32 = 7; -pub const CTL_USER: u32 = 8; -pub const CTL_P1003_1B: u32 = 9; -pub const CTL_SYSCTL_DEBUG: u32 = 0; -pub const CTL_SYSCTL_NAME: u32 = 1; -pub const CTL_SYSCTL_NEXT: u32 = 2; -pub const CTL_SYSCTL_NAME2OID: u32 = 3; -pub const CTL_SYSCTL_OIDFMT: u32 = 4; -pub const CTL_SYSCTL_OIDDESCR: u32 = 5; -pub const CTL_SYSCTL_OIDLABEL: u32 = 6; -pub const CTL_SYSCTL_NEXTNOSKIP: u32 = 7; -pub const KERN_OSTYPE: u32 = 1; -pub const KERN_OSRELEASE: u32 = 2; -pub const KERN_OSREV: u32 = 3; -pub const KERN_VERSION: u32 = 4; -pub const KERN_MAXVNODES: u32 = 5; -pub const KERN_MAXPROC: u32 = 6; -pub const KERN_MAXFILES: u32 = 7; -pub const KERN_ARGMAX: u32 = 8; -pub const KERN_SECURELVL: u32 = 9; -pub const KERN_HOSTNAME: u32 = 10; -pub const KERN_HOSTID: u32 = 11; -pub const KERN_CLOCKRATE: u32 = 12; -pub const KERN_PROC: u32 = 14; -pub const KERN_FILE: u32 = 15; -pub const KERN_PROF: u32 = 16; -pub const KERN_POSIX1: u32 = 17; -pub const KERN_NGROUPS: u32 = 18; -pub const KERN_JOB_CONTROL: u32 = 19; -pub const KERN_SAVED_IDS: u32 = 20; -pub const KERN_BOOTTIME: u32 = 21; -pub const KERN_NISDOMAINNAME: u32 = 22; -pub const KERN_UPDATEINTERVAL: u32 = 23; -pub const KERN_OSRELDATE: u32 = 24; -pub const KERN_NTP_PLL: u32 = 25; -pub const KERN_BOOTFILE: u32 = 26; -pub const KERN_MAXFILESPERPROC: u32 = 27; -pub const KERN_MAXPROCPERUID: u32 = 28; -pub const KERN_DUMPDEV: u32 = 29; -pub const KERN_IPC: u32 = 30; -pub const KERN_DUMMY: u32 = 31; -pub const KERN_PS_STRINGS: u32 = 32; -pub const KERN_USRSTACK: u32 = 33; -pub const KERN_LOGSIGEXIT: u32 = 34; -pub const KERN_IOV_MAX: u32 = 35; -pub const KERN_HOSTUUID: u32 = 36; -pub const KERN_ARND: u32 = 37; -pub const KERN_MAXPHYS: u32 = 38; -pub const KERN_LOCKF: u32 = 39; -pub const KERN_PROC_ALL: u32 = 0; -pub const KERN_PROC_PID: u32 = 1; -pub const KERN_PROC_PGRP: u32 = 2; -pub const KERN_PROC_SESSION: u32 = 3; -pub const KERN_PROC_TTY: u32 = 4; -pub const KERN_PROC_UID: u32 = 5; -pub const KERN_PROC_RUID: u32 = 6; -pub const KERN_PROC_ARGS: u32 = 7; -pub const KERN_PROC_PROC: u32 = 8; -pub const KERN_PROC_SV_NAME: u32 = 9; -pub const KERN_PROC_RGID: u32 = 10; -pub const KERN_PROC_GID: u32 = 11; -pub const KERN_PROC_PATHNAME: u32 = 12; -pub const KERN_PROC_OVMMAP: u32 = 13; -pub const KERN_PROC_OFILEDESC: u32 = 14; -pub const KERN_PROC_KSTACK: u32 = 15; -pub const KERN_PROC_INC_THREAD: u32 = 16; -pub const KERN_PROC_VMMAP: u32 = 32; -pub const KERN_PROC_FILEDESC: u32 = 33; -pub const KERN_PROC_GROUPS: u32 = 34; -pub const KERN_PROC_ENV: u32 = 35; -pub const KERN_PROC_AUXV: u32 = 36; -pub const KERN_PROC_RLIMIT: u32 = 37; -pub const KERN_PROC_PS_STRINGS: u32 = 38; -pub const KERN_PROC_UMASK: u32 = 39; -pub const KERN_PROC_OSREL: u32 = 40; -pub const KERN_PROC_SIGTRAMP: u32 = 41; -pub const KERN_PROC_CWD: u32 = 42; -pub const KERN_PROC_NFDS: u32 = 43; -pub const KERN_PROC_SIGFASTBLK: u32 = 44; -pub const KERN_PROC_VM_LAYOUT: u32 = 45; -pub const KIPC_MAXSOCKBUF: u32 = 1; -pub const KIPC_SOCKBUF_WASTE: u32 = 2; -pub const KIPC_SOMAXCONN: u32 = 3; -pub const KIPC_MAX_LINKHDR: u32 = 4; -pub const KIPC_MAX_PROTOHDR: u32 = 5; -pub const KIPC_MAX_HDR: u32 = 6; -pub const KIPC_MAX_DATALEN: u32 = 7; -pub const HW_MACHINE: u32 = 1; -pub const HW_MODEL: u32 = 2; -pub const HW_NCPU: u32 = 3; -pub const HW_BYTEORDER: u32 = 4; -pub const HW_PHYSMEM: u32 = 5; -pub const HW_USERMEM: u32 = 6; -pub const HW_PAGESIZE: u32 = 7; -pub const HW_DISKNAMES: u32 = 8; -pub const HW_DISKSTATS: u32 = 9; -pub const HW_FLOATINGPT: u32 = 10; -pub const HW_MACHINE_ARCH: u32 = 11; -pub const HW_REALMEM: u32 = 12; -pub const USER_CS_PATH: u32 = 1; -pub const USER_BC_BASE_MAX: u32 = 2; -pub const USER_BC_DIM_MAX: u32 = 3; -pub const USER_BC_SCALE_MAX: u32 = 4; -pub const USER_BC_STRING_MAX: u32 = 5; -pub const USER_COLL_WEIGHTS_MAX: u32 = 6; -pub const USER_EXPR_NEST_MAX: u32 = 7; -pub const USER_LINE_MAX: u32 = 8; -pub const USER_RE_DUP_MAX: u32 = 9; -pub const USER_POSIX2_VERSION: u32 = 10; -pub const USER_POSIX2_C_BIND: u32 = 11; -pub const USER_POSIX2_C_DEV: u32 = 12; -pub const USER_POSIX2_CHAR_TERM: u32 = 13; -pub const USER_POSIX2_FORT_DEV: u32 = 14; -pub const USER_POSIX2_FORT_RUN: u32 = 15; -pub const USER_POSIX2_LOCALEDEF: u32 = 16; -pub const USER_POSIX2_SW_DEV: u32 = 17; -pub const USER_POSIX2_UPE: u32 = 18; -pub const USER_STREAM_MAX: u32 = 19; -pub const USER_TZNAME_MAX: u32 = 20; -pub const USER_LOCALBASE: u32 = 21; -pub const CTL_P1003_1B_ASYNCHRONOUS_IO: u32 = 1; -pub const CTL_P1003_1B_MAPPED_FILES: u32 = 2; -pub const CTL_P1003_1B_MEMLOCK: u32 = 3; -pub const CTL_P1003_1B_MEMLOCK_RANGE: u32 = 4; -pub const CTL_P1003_1B_MEMORY_PROTECTION: u32 = 5; -pub const CTL_P1003_1B_MESSAGE_PASSING: u32 = 6; -pub const CTL_P1003_1B_PRIORITIZED_IO: u32 = 7; -pub const CTL_P1003_1B_PRIORITY_SCHEDULING: u32 = 8; -pub const CTL_P1003_1B_REALTIME_SIGNALS: u32 = 9; -pub const CTL_P1003_1B_SEMAPHORES: u32 = 10; -pub const CTL_P1003_1B_FSYNC: u32 = 11; -pub const CTL_P1003_1B_SHARED_MEMORY_OBJECTS: u32 = 12; -pub const CTL_P1003_1B_SYNCHRONIZED_IO: u32 = 13; -pub const CTL_P1003_1B_TIMERS: u32 = 14; -pub const CTL_P1003_1B_AIO_LISTIO_MAX: u32 = 15; -pub const CTL_P1003_1B_AIO_MAX: u32 = 16; -pub const CTL_P1003_1B_AIO_PRIO_DELTA_MAX: u32 = 17; -pub const CTL_P1003_1B_DELAYTIMER_MAX: u32 = 18; -pub const CTL_P1003_1B_MQ_OPEN_MAX: u32 = 19; -pub const CTL_P1003_1B_PAGESIZE: u32 = 20; -pub const CTL_P1003_1B_RTSIG_MAX: u32 = 21; -pub const CTL_P1003_1B_SEM_NSEMS_MAX: u32 = 22; -pub const CTL_P1003_1B_SEM_VALUE_MAX: u32 = 23; -pub const CTL_P1003_1B_SIGQUEUE_MAX: u32 = 24; -pub const CTL_P1003_1B_TIMER_MAX: u32 = 25; -pub const KTR_GEN: u32 = 1; -pub const KTR_NET: u32 = 2; -pub const KTR_DEV: u32 = 4; -pub const KTR_LOCK: u32 = 8; -pub const KTR_SMP: u32 = 16; -pub const KTR_SUBSYS: u32 = 32; -pub const KTR_PMAP: u32 = 64; -pub const KTR_MALLOC: u32 = 128; -pub const KTR_TRAP: u32 = 256; -pub const KTR_INTR: u32 = 512; -pub const KTR_SIG: u32 = 1024; -pub const KTR_SPARE2: u32 = 2048; -pub const KTR_PROC: u32 = 4096; -pub const KTR_SYSC: u32 = 8192; -pub const KTR_INIT: u32 = 16384; -pub const KTR_SPARE3: u32 = 32768; -pub const KTR_SPARE4: u32 = 65536; -pub const KTR_EVH: u32 = 131072; -pub const KTR_VFS: u32 = 262144; -pub const KTR_VOP: u32 = 524288; -pub const KTR_VM: u32 = 1048576; -pub const KTR_INET: u32 = 2097152; -pub const KTR_RUNQ: u32 = 4194304; -pub const KTR_SPARE5: u32 = 8388608; -pub const KTR_UMA: u32 = 16777216; -pub const KTR_CALLOUT: u32 = 33554432; -pub const KTR_GEOM: u32 = 67108864; -pub const KTR_BUSDMA: u32 = 134217728; -pub const KTR_INET6: u32 = 268435456; -pub const KTR_SCHED: u32 = 536870912; -pub const KTR_BUF: u32 = 1073741824; -pub const KTR_PTRACE: u32 = 2147483648; -pub const KTR_ALL: u32 = 4294967295; -pub const KTR_COMPILE: u32 = 0; -pub const LC_SLEEPLOCK: u32 = 1; -pub const LC_SPINLOCK: u32 = 2; -pub const LC_SLEEPABLE: u32 = 4; -pub const LC_RECURSABLE: u32 = 8; -pub const LC_UPGRADABLE: u32 = 16; -pub const LO_CLASSFLAGS: u32 = 65535; -pub const LO_INITIALIZED: u32 = 65536; -pub const LO_WITNESS: u32 = 131072; -pub const LO_QUIET: u32 = 262144; -pub const LO_RECURSABLE: u32 = 524288; -pub const LO_SLEEPABLE: u32 = 1048576; -pub const LO_UPGRADABLE: u32 = 2097152; -pub const LO_DUPOK: u32 = 4194304; -pub const LO_IS_VNODE: u32 = 8388608; -pub const LO_CLASSMASK: u32 = 251658240; -pub const LO_NOPROFILE: u32 = 268435456; -pub const LO_NEW: u32 = 536870912; -pub const LO_CLASSSHIFT: u32 = 24; -pub const LOCK_CLASS_MAX: u32 = 15; -pub const LOP_NEWORDER: u32 = 1; -pub const LOP_QUIET: u32 = 2; -pub const LOP_TRYLOCK: u32 = 4; -pub const LOP_EXCLUSIVE: u32 = 8; -pub const LOP_DUPOK: u32 = 16; -pub const LOP_NOSLEEP: u32 = 32; -pub const LA_MASKASSERT: u32 = 255; -pub const LA_UNLOCKED: u32 = 0; -pub const LA_LOCKED: u32 = 1; -pub const LA_SLOCKED: u32 = 2; -pub const LA_XLOCKED: u32 = 4; -pub const LA_RECURSED: u32 = 8; -pub const LA_NOTRECURSED: u32 = 16; -pub const SX_LOCK_SHARED: u32 = 1; -pub const SX_LOCK_SHARED_WAITERS: u32 = 2; -pub const SX_LOCK_EXCLUSIVE_WAITERS: u32 = 4; -pub const SX_LOCK_WRITE_SPINNER: u32 = 8; -pub const SX_LOCK_RECURSED: u32 = 16; -pub const SX_LOCK_FLAGMASK: u32 = 31; -pub const SX_LOCK_WAITERS: u32 = 6; -pub const SX_SHARERS_SHIFT: u32 = 5; -pub const SX_ONE_SHARER: u32 = 32; -pub const SX_LOCK_DESTROYED: u32 = 6; -pub const SPLAY_NEGINF: i32 = -1; -pub const SPLAY_INF: u32 = 1; -pub const RB_STRICT_HST: u32 = 0; -pub const RB_NEGINF: i32 = -1; -pub const RB_INF: u32 = 1; -pub const UMA_SMALLEST_UNIT: u32 = 8; -pub const UMA_ZONE_UNMANAGED: u32 = 1; -pub const UMA_ZONE_ZINIT: u32 = 2; -pub const UMA_ZONE_CONTIG: u32 = 4; -pub const UMA_ZONE_NOTOUCH: u32 = 8; -pub const UMA_ZONE_MALLOC: u32 = 16; -pub const UMA_ZONE_NOFREE: u32 = 32; -pub const UMA_ZONE_MTXCLASS: u32 = 64; -pub const UMA_ZONE_VM: u32 = 128; -pub const UMA_ZONE_NOTPAGE: u32 = 256; -pub const UMA_ZONE_SECONDARY: u32 = 512; -pub const UMA_ZONE_NOBUCKET: u32 = 1024; -pub const UMA_ZONE_MAXBUCKET: u32 = 2048; -pub const UMA_ZONE_CACHESPREAD: u32 = 8192; -pub const UMA_ZONE_NODUMP: u32 = 16384; -pub const UMA_ZONE_PCPU: u32 = 32768; -pub const UMA_ZONE_FIRSTTOUCH: u32 = 65536; -pub const UMA_ZONE_ROUNDROBIN: u32 = 131072; -pub const UMA_ZONE_SMR: u32 = 262144; -pub const UMA_ZONE_NOKASAN: u32 = 524288; -pub const UMA_ZONE_INHERIT: u32 = 754104; -pub const UMA_ALIGN_CACHE: i32 = -1; -pub const UMA_ANYDOMAIN: i32 = -1; -pub const UMA_RECLAIM_DRAIN: u32 = 1; -pub const UMA_RECLAIM_DRAIN_CPU: u32 = 2; -pub const UMA_RECLAIM_TRIM: u32 = 3; -pub const UMA_SLAB_BOOT: u32 = 1; -pub const UMA_SLAB_KERNEL: u32 = 4; -pub const UMA_SLAB_PRIV: u32 = 8; -pub const UMA_STREAM_VERSION: u32 = 1; -pub const UTH_MAX_NAME: u32 = 32; -pub const UTH_ZONE_SECONDARY: u32 = 1; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_VIRTUAL: u32 = 1; -pub const CLOCK_PROF: u32 = 2; -pub const CLOCK_MONOTONIC: u32 = 4; -pub const CLOCK_UPTIME_FAST: u32 = 8; -pub const CLOCK_UPTIME: u32 = 5; -pub const CLOCK_UPTIME_PRECISE: u32 = 7; -pub const CLOCK_REALTIME_PRECISE: u32 = 9; -pub const CLOCK_REALTIME_FAST: u32 = 10; -pub const CLOCK_MONOTONIC_PRECISE: u32 = 11; -pub const CLOCK_MONOTONIC_FAST: u32 = 12; -pub const CLOCK_SECOND: u32 = 13; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 14; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 15; -pub const CLOCK_BOOTTIME: u32 = 5; -pub const CLOCK_REALTIME_COARSE: u32 = 10; -pub const CLOCK_MONOTONIC_COARSE: u32 = 12; -pub const TIMER_RELTIME: u32 = 0; -pub const TIMER_ABSTIME: u32 = 1; -pub const DST_NONE: u32 = 0; -pub const DST_USA: u32 = 1; -pub const DST_AUST: u32 = 2; -pub const DST_WET: u32 = 3; -pub const DST_MET: u32 = 4; -pub const DST_EET: u32 = 5; -pub const DST_CAN: u32 = 6; -pub const SBT_MAX: u64 = 9223372036854775807; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CPUCLOCK_WHICH_PID: u32 = 0; -pub const CPUCLOCK_WHICH_TID: u32 = 1; -pub const CLK_TCK: u32 = 128; -pub const CLOCKS_PER_SEC: u32 = 128; -pub const TIME_UTC: u32 = 1; -pub const TIME_MONOTONIC: u32 = 2; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const SOCK_CLOEXEC: u32 = 268435456; -pub const SOCK_NONBLOCK: u32 = 536870912; -pub const SO_DEBUG: u32 = 1; -pub const SO_ACCEPTCONN: u32 = 2; -pub const SO_REUSEADDR: u32 = 4; -pub const SO_KEEPALIVE: u32 = 8; -pub const SO_DONTROUTE: u32 = 16; -pub const SO_BROADCAST: u32 = 32; -pub const SO_USELOOPBACK: u32 = 64; -pub const SO_LINGER: u32 = 128; -pub const SO_OOBINLINE: u32 = 256; -pub const SO_REUSEPORT: u32 = 512; -pub const SO_TIMESTAMP: u32 = 1024; -pub const SO_NOSIGPIPE: u32 = 2048; -pub const SO_ACCEPTFILTER: u32 = 4096; -pub const SO_BINTIME: u32 = 8192; -pub const SO_NO_OFFLOAD: u32 = 16384; -pub const SO_NO_DDP: u32 = 32768; -pub const SO_REUSEPORT_LB: u32 = 65536; -pub const SO_RERROR: u32 = 131072; -pub const SO_SNDBUF: u32 = 4097; -pub const SO_RCVBUF: u32 = 4098; -pub const SO_SNDLOWAT: u32 = 4099; -pub const SO_RCVLOWAT: u32 = 4100; -pub const SO_SNDTIMEO: u32 = 4101; -pub const SO_RCVTIMEO: u32 = 4102; -pub const SO_ERROR: u32 = 4103; -pub const SO_TYPE: u32 = 4104; -pub const SO_LABEL: u32 = 4105; -pub const SO_PEERLABEL: u32 = 4112; -pub const SO_LISTENQLIMIT: u32 = 4113; -pub const SO_LISTENQLEN: u32 = 4114; -pub const SO_LISTENINCQLEN: u32 = 4115; -pub const SO_SETFIB: u32 = 4116; -pub const SO_USER_COOKIE: u32 = 4117; -pub const SO_PROTOCOL: u32 = 4118; -pub const SO_PROTOTYPE: u32 = 4118; -pub const SO_TS_CLOCK: u32 = 4119; -pub const SO_MAX_PACING_RATE: u32 = 4120; -pub const SO_DOMAIN: u32 = 4121; -pub const SO_TS_REALTIME_MICRO: u32 = 0; -pub const SO_TS_BINTIME: u32 = 1; -pub const SO_TS_REALTIME: u32 = 2; -pub const SO_TS_MONOTONIC: u32 = 3; -pub const SO_TS_DEFAULT: u32 = 0; -pub const SO_TS_CLOCK_MAX: u32 = 3; -pub const SO_VENDOR: u32 = 2147483648; -pub const SOL_SOCKET: u32 = 65535; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_IMPLINK: u32 = 3; -pub const AF_PUP: u32 = 4; -pub const AF_CHAOS: u32 = 5; -pub const AF_NETBIOS: u32 = 6; -pub const AF_ISO: u32 = 7; -pub const AF_OSI: u32 = 7; -pub const AF_ECMA: u32 = 8; -pub const AF_DATAKIT: u32 = 9; -pub const AF_CCITT: u32 = 10; -pub const AF_SNA: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_DLI: u32 = 13; -pub const AF_LAT: u32 = 14; -pub const AF_HYLINK: u32 = 15; -pub const AF_APPLETALK: u32 = 16; -pub const AF_ROUTE: u32 = 17; -pub const AF_LINK: u32 = 18; -pub const pseudo_AF_XTP: u32 = 19; -pub const AF_COIP: u32 = 20; -pub const AF_CNT: u32 = 21; -pub const pseudo_AF_RTIP: u32 = 22; -pub const AF_IPX: u32 = 23; -pub const AF_SIP: u32 = 24; -pub const pseudo_AF_PIP: u32 = 25; -pub const AF_ISDN: u32 = 26; -pub const AF_E164: u32 = 26; -pub const pseudo_AF_KEY: u32 = 27; -pub const AF_INET6: u32 = 28; -pub const AF_NATM: u32 = 29; -pub const AF_ATM: u32 = 30; -pub const pseudo_AF_HDRCMPLT: u32 = 31; -pub const AF_NETGRAPH: u32 = 32; -pub const AF_SLOW: u32 = 33; -pub const AF_SCLUSTER: u32 = 34; -pub const AF_ARP: u32 = 35; -pub const AF_BLUETOOTH: u32 = 36; -pub const AF_IEEE80211: u32 = 37; -pub const AF_NETLINK: u32 = 38; -pub const AF_INET_SDP: u32 = 40; -pub const AF_INET6_SDP: u32 = 42; -pub const AF_HYPERV: u32 = 43; -pub const AF_DIVERT: u32 = 44; -pub const AF_MAX: u32 = 44; -pub const AF_VENDOR00: u32 = 39; -pub const AF_VENDOR01: u32 = 41; -pub const AF_VENDOR03: u32 = 45; -pub const AF_VENDOR04: u32 = 47; -pub const AF_VENDOR05: u32 = 49; -pub const AF_VENDOR06: u32 = 51; -pub const AF_VENDOR07: u32 = 53; -pub const AF_VENDOR08: u32 = 55; -pub const AF_VENDOR09: u32 = 57; -pub const AF_VENDOR10: u32 = 59; -pub const AF_VENDOR11: u32 = 61; -pub const AF_VENDOR12: u32 = 63; -pub const AF_VENDOR13: u32 = 65; -pub const AF_VENDOR14: u32 = 67; -pub const AF_VENDOR15: u32 = 69; -pub const AF_VENDOR16: u32 = 71; -pub const AF_VENDOR17: u32 = 73; -pub const AF_VENDOR18: u32 = 75; -pub const AF_VENDOR19: u32 = 77; -pub const AF_VENDOR20: u32 = 79; -pub const AF_VENDOR21: u32 = 81; -pub const AF_VENDOR22: u32 = 83; -pub const AF_VENDOR23: u32 = 85; -pub const AF_VENDOR24: u32 = 87; -pub const AF_VENDOR25: u32 = 89; -pub const AF_VENDOR26: u32 = 91; -pub const AF_VENDOR27: u32 = 93; -pub const AF_VENDOR28: u32 = 95; -pub const AF_VENDOR29: u32 = 97; -pub const AF_VENDOR30: u32 = 99; -pub const AF_VENDOR31: u32 = 101; -pub const AF_VENDOR32: u32 = 103; -pub const AF_VENDOR33: u32 = 105; -pub const AF_VENDOR34: u32 = 107; -pub const AF_VENDOR35: u32 = 109; -pub const AF_VENDOR36: u32 = 111; -pub const AF_VENDOR37: u32 = 113; -pub const AF_VENDOR38: u32 = 115; -pub const AF_VENDOR39: u32 = 117; -pub const AF_VENDOR40: u32 = 119; -pub const AF_VENDOR41: u32 = 121; -pub const AF_VENDOR42: u32 = 123; -pub const AF_VENDOR43: u32 = 125; -pub const AF_VENDOR44: u32 = 127; -pub const AF_VENDOR45: u32 = 129; -pub const AF_VENDOR46: u32 = 131; -pub const AF_VENDOR47: u32 = 133; -pub const SOCK_MAXADDRLEN: u32 = 255; -pub const _SS_MAXSIZE: u32 = 128; -pub const PF_UNSPEC: u32 = 0; -pub const PF_INET: u32 = 2; -pub const PF_IMPLINK: u32 = 3; -pub const PF_PUP: u32 = 4; -pub const PF_CHAOS: u32 = 5; -pub const PF_NETBIOS: u32 = 6; -pub const PF_ISO: u32 = 7; -pub const PF_OSI: u32 = 7; -pub const PF_ECMA: u32 = 8; -pub const PF_DATAKIT: u32 = 9; -pub const PF_CCITT: u32 = 10; -pub const PF_SNA: u32 = 11; -pub const PF_DECnet: u32 = 12; -pub const PF_DLI: u32 = 13; -pub const PF_LAT: u32 = 14; -pub const PF_HYLINK: u32 = 15; -pub const PF_APPLETALK: u32 = 16; -pub const PF_ROUTE: u32 = 17; -pub const PF_LINK: u32 = 18; -pub const PF_XTP: u32 = 19; -pub const PF_COIP: u32 = 20; -pub const PF_CNT: u32 = 21; -pub const PF_SIP: u32 = 24; -pub const PF_IPX: u32 = 23; -pub const PF_RTIP: u32 = 22; -pub const PF_PIP: u32 = 25; -pub const PF_ISDN: u32 = 26; -pub const PF_KEY: u32 = 27; -pub const PF_INET6: u32 = 28; -pub const PF_NATM: u32 = 29; -pub const PF_ATM: u32 = 30; -pub const PF_NETGRAPH: u32 = 32; -pub const PF_SLOW: u32 = 33; -pub const PF_SCLUSTER: u32 = 34; -pub const PF_ARP: u32 = 35; -pub const PF_BLUETOOTH: u32 = 36; -pub const PF_IEEE80211: u32 = 37; -pub const PF_NETLINK: u32 = 38; -pub const PF_INET_SDP: u32 = 40; -pub const PF_INET6_SDP: u32 = 42; -pub const PF_DIVERT: u32 = 44; -pub const PF_MAX: u32 = 44; -pub const NET_RT_DUMP: u32 = 1; -pub const NET_RT_FLAGS: u32 = 2; -pub const NET_RT_IFLIST: u32 = 3; -pub const NET_RT_IFMALIST: u32 = 4; -pub const NET_RT_IFLISTL: u32 = 5; -pub const NET_RT_NHOP: u32 = 6; -pub const NET_RT_NHGRP: u32 = 7; -pub const SOMAXCONN: u32 = 128; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_EOR: u32 = 8; -pub const MSG_TRUNC: u32 = 16; -pub const MSG_CTRUNC: u32 = 32; -pub const MSG_WAITALL: u32 = 64; -pub const MSG_DONTWAIT: u32 = 128; -pub const MSG_EOF: u32 = 256; -pub const MSG_NOTIFICATION: u32 = 8192; -pub const MSG_NBIO: u32 = 16384; -pub const MSG_COMPAT: u32 = 32768; -pub const MSG_NOSIGNAL: u32 = 131072; -pub const MSG_CMSG_CLOEXEC: u32 = 262144; -pub const MSG_WAITFORONE: u32 = 524288; -pub const CMGROUP_MAX: u32 = 16; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_TIMESTAMP: u32 = 2; -pub const SCM_CREDS: u32 = 3; -pub const SCM_BINTIME: u32 = 4; -pub const SCM_REALTIME: u32 = 5; -pub const SCM_MONOTONIC: u32 = 6; -pub const SCM_TIME_INFO: u32 = 7; -pub const SCM_CREDS2: u32 = 8; -pub const ST_INFO_HW: u32 = 1; -pub const ST_INFO_HW_HPREC: u32 = 2; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const PRU_FLUSH_RD: u32 = 0; -pub const PRU_FLUSH_WR: u32 = 1; -pub const PRU_FLUSH_RDWR: u32 = 2; -pub const SF_NODISKIO: u32 = 1; -pub const SF_MNOWAIT: u32 = 2; -pub const SF_SYNC: u32 = 4; -pub const SF_USER_READAHEAD: u32 = 8; -pub const SF_NOCACHE: u32 = 16; -pub const IF_NAMESIZE: u32 = 16; -pub const IFNAMSIZ: u32 = 16; -pub const IF_MAXUNIT: u32 = 32767; -pub const IFF_UP: u32 = 1; -pub const IFF_BROADCAST: u32 = 2; -pub const IFF_DEBUG: u32 = 4; -pub const IFF_LOOPBACK: u32 = 8; -pub const IFF_POINTOPOINT: u32 = 16; -pub const IFF_NEEDSEPOCH: u32 = 32; -pub const IFF_DRV_RUNNING: u32 = 64; -pub const IFF_NOARP: u32 = 128; -pub const IFF_PROMISC: u32 = 256; -pub const IFF_ALLMULTI: u32 = 512; -pub const IFF_DRV_OACTIVE: u32 = 1024; -pub const IFF_SIMPLEX: u32 = 2048; -pub const IFF_LINK0: u32 = 4096; -pub const IFF_LINK1: u32 = 8192; -pub const IFF_LINK2: u32 = 16384; -pub const IFF_ALTPHYS: u32 = 16384; -pub const IFF_MULTICAST: u32 = 32768; -pub const IFF_CANTCONFIG: u32 = 65536; -pub const IFF_PPROMISC: u32 = 131072; -pub const IFF_MONITOR: u32 = 262144; -pub const IFF_STATICARP: u32 = 524288; -pub const IFF_STICKYARP: u32 = 1048576; -pub const IFF_DYING: u32 = 2097152; -pub const IFF_RENAMING: u32 = 4194304; -pub const IFF_SPARE: u32 = 8388608; -pub const IFF_NETLINK_1: u32 = 16777216; -pub const IFF_RUNNING: u32 = 64; -pub const IFF_OACTIVE: u32 = 1024; -pub const IFF_CANTCHANGE: u32 = 2199410; -pub const LINK_STATE_UNKNOWN: u32 = 0; -pub const LINK_STATE_DOWN: u32 = 1; -pub const LINK_STATE_UP: u32 = 2; -pub const IFCAP_B_RXCSUM: u32 = 0; -pub const IFCAP_B_TXCSUM: u32 = 1; -pub const IFCAP_B_NETCONS: u32 = 2; -pub const IFCAP_B_VLAN_MTU: u32 = 3; -pub const IFCAP_B_VLAN_HWTAGGING: u32 = 4; -pub const IFCAP_B_JUMBO_MTU: u32 = 5; -pub const IFCAP_B_POLLING: u32 = 6; -pub const IFCAP_B_VLAN_HWCSUM: u32 = 7; -pub const IFCAP_B_TSO4: u32 = 8; -pub const IFCAP_B_TSO6: u32 = 9; -pub const IFCAP_B_LRO: u32 = 10; -pub const IFCAP_B_WOL_UCAST: u32 = 11; -pub const IFCAP_B_WOL_MCAST: u32 = 12; -pub const IFCAP_B_WOL_MAGIC: u32 = 13; -pub const IFCAP_B_TOE4: u32 = 14; -pub const IFCAP_B_TOE6: u32 = 15; -pub const IFCAP_B_VLAN_HWFILTER: u32 = 16; -pub const IFCAP_B_NV: u32 = 17; -pub const IFCAP_B_VLAN_HWTSO: u32 = 18; -pub const IFCAP_B_LINKSTATE: u32 = 19; -pub const IFCAP_B_NETMAP: u32 = 20; -pub const IFCAP_B_RXCSUM_IPV6: u32 = 21; -pub const IFCAP_B_TXCSUM_IPV6: u32 = 22; -pub const IFCAP_B_HWSTATS: u32 = 23; -pub const IFCAP_B_TXRTLMT: u32 = 24; -pub const IFCAP_B_HWRXTSTMP: u32 = 25; -pub const IFCAP_B_MEXTPG: u32 = 26; -pub const IFCAP_B_TXTLS4: u32 = 27; -pub const IFCAP_B_TXTLS6: u32 = 28; -pub const IFCAP_B_VXLAN_HWCSUM: u32 = 29; -pub const IFCAP_B_VXLAN_HWTSO: u32 = 30; -pub const IFCAP_B_TXTLS_RTLMT: u32 = 31; -pub const IFCAP_B_RXTLS4: u32 = 32; -pub const IFCAP_B_RXTLS6: u32 = 33; -pub const __IFCAP_B_SIZE: u32 = 34; -pub const IFCAP_B_SIZE: u32 = 34; -pub const IFCAP2_RXTLS4: u32 = 0; -pub const IFCAP2_RXTLS6: u32 = 1; -pub const IFCAP_ALLCAPS: u32 = 4294967295; -pub const IFQ_MAXLEN: u32 = 50; -pub const IFNET_SLOWHZ: u32 = 1; -pub const IFAN_ARRIVAL: u32 = 0; -pub const IFAN_DEPARTURE: u32 = 1; -pub const IFR_CAP_NV_MAXBUFSIZE: u32 = 2097152; -pub const IFSTATMAX: u32 = 800; -pub const IFG_ALL: &[u8; 4] = b"all\0"; -pub const IFG_EGRESS: &[u8; 7] = b"egress\0"; -pub const RSS_FUNC_NONE: u32 = 0; -pub const RSS_FUNC_PRIVATE: u32 = 1; -pub const RSS_FUNC_TOEPLITZ: u32 = 2; -pub const RSS_TYPE_IPV4: u32 = 1; -pub const RSS_TYPE_TCP_IPV4: u32 = 2; -pub const RSS_TYPE_IPV6: u32 = 4; -pub const RSS_TYPE_IPV6_EX: u32 = 8; -pub const RSS_TYPE_TCP_IPV6: u32 = 16; -pub const RSS_TYPE_TCP_IPV6_EX: u32 = 32; -pub const RSS_TYPE_UDP_IPV4: u32 = 64; -pub const RSS_TYPE_UDP_IPV6: u32 = 128; -pub const RSS_TYPE_UDP_IPV6_EX: u32 = 256; -pub const RSS_KEYLEN: u32 = 128; -pub const IFNET_PCP_NONE: u32 = 255; -pub const IFDR_MSG_SIZE: u32 = 64; -pub const IFDR_REASON_MSG: u32 = 1; -pub const IFDR_REASON_VENDOR: u32 = 2; -pub const ETHER_ADDR_LEN: u32 = 6; -pub const ETHER_TYPE_LEN: u32 = 2; -pub const ETHER_CRC_LEN: u32 = 4; -pub const ETHER_HDR_LEN: u32 = 14; -pub const ETHER_MIN_LEN: u32 = 64; -pub const ETHER_MAX_LEN: u32 = 1518; -pub const ETHER_MAX_LEN_JUMBO: u32 = 9018; -pub const ETHER_VLAN_ENCAP_LEN: u32 = 4; -pub const ETHER_ALIGN: u32 = 2; -pub const ETHER_CRC_POLY_LE: u32 = 3988292384; -pub const ETHER_CRC_POLY_BE: u32 = 79764918; -pub const EVL_VLID_MASK: u32 = 4095; -pub const EVL_PRI_MASK: u32 = 57344; -pub const ETHERTYPE_8023: u32 = 4; -pub const ETHERTYPE_PUP: u32 = 512; -pub const ETHERTYPE_PUPAT: u32 = 512; -pub const ETHERTYPE_SPRITE: u32 = 1280; -pub const ETHERTYPE_NS: u32 = 1536; -pub const ETHERTYPE_NSAT: u32 = 1537; -pub const ETHERTYPE_DLOG1: u32 = 1632; -pub const ETHERTYPE_DLOG2: u32 = 1633; -pub const ETHERTYPE_IP: u32 = 2048; -pub const ETHERTYPE_X75: u32 = 2049; -pub const ETHERTYPE_NBS: u32 = 2050; -pub const ETHERTYPE_ECMA: u32 = 2051; -pub const ETHERTYPE_CHAOS: u32 = 2052; -pub const ETHERTYPE_X25: u32 = 2053; -pub const ETHERTYPE_ARP: u32 = 2054; -pub const ETHERTYPE_NSCOMPAT: u32 = 2055; -pub const ETHERTYPE_FRARP: u32 = 2056; -pub const ETHERTYPE_UBDEBUG: u32 = 2304; -pub const ETHERTYPE_IEEEPUP: u32 = 2560; -pub const ETHERTYPE_IEEEPUPAT: u32 = 2561; -pub const ETHERTYPE_VINES: u32 = 2989; -pub const ETHERTYPE_VINESLOOP: u32 = 2990; -pub const ETHERTYPE_VINESECHO: u32 = 2991; -pub const ETHERTYPE_TRAIL: u32 = 4096; -pub const ETHERTYPE_NTRAILER: u32 = 16; -pub const ETHERTYPE_DCA: u32 = 4660; -pub const ETHERTYPE_VALID: u32 = 5632; -pub const ETHERTYPE_DOGFIGHT: u32 = 6537; -pub const ETHERTYPE_RCL: u32 = 6549; -pub const ETHERTYPE_NBPVCD: u32 = 15360; -pub const ETHERTYPE_NBPSCD: u32 = 15361; -pub const ETHERTYPE_NBPCREQ: u32 = 15362; -pub const ETHERTYPE_NBPCRSP: u32 = 15363; -pub const ETHERTYPE_NBPCC: u32 = 15364; -pub const ETHERTYPE_NBPCLREQ: u32 = 15365; -pub const ETHERTYPE_NBPCLRSP: u32 = 15366; -pub const ETHERTYPE_NBPDG: u32 = 15367; -pub const ETHERTYPE_NBPDGB: u32 = 15368; -pub const ETHERTYPE_NBPCLAIM: u32 = 15369; -pub const ETHERTYPE_NBPDLTE: u32 = 15370; -pub const ETHERTYPE_NBPRAS: u32 = 15371; -pub const ETHERTYPE_NBPRAR: u32 = 15372; -pub const ETHERTYPE_NBPRST: u32 = 15373; -pub const ETHERTYPE_PCS: u32 = 16962; -pub const ETHERTYPE_IMLBLDIAG: u32 = 16972; -pub const ETHERTYPE_DIDDLE: u32 = 17185; -pub const ETHERTYPE_IMLBL: u32 = 19522; -pub const ETHERTYPE_SIMNET: u32 = 21000; -pub const ETHERTYPE_DECEXPER: u32 = 24576; -pub const ETHERTYPE_MOPDL: u32 = 24577; -pub const ETHERTYPE_MOPRC: u32 = 24578; -pub const ETHERTYPE_DECnet: u32 = 24579; -pub const ETHERTYPE_DN: u32 = 24579; -pub const ETHERTYPE_LAT: u32 = 24580; -pub const ETHERTYPE_DECDIAG: u32 = 24581; -pub const ETHERTYPE_DECCUST: u32 = 24582; -pub const ETHERTYPE_SCA: u32 = 24583; -pub const ETHERTYPE_AMBER: u32 = 24584; -pub const ETHERTYPE_DECMUMPS: u32 = 24585; -pub const ETHERTYPE_TRANSETHER: u32 = 25944; -pub const ETHERTYPE_RAWFR: u32 = 25945; -pub const ETHERTYPE_UBDL: u32 = 28672; -pub const ETHERTYPE_UBNIU: u32 = 28673; -pub const ETHERTYPE_UBDIAGLOOP: u32 = 28674; -pub const ETHERTYPE_UBNMC: u32 = 28675; -pub const ETHERTYPE_UBBST: u32 = 28677; -pub const ETHERTYPE_OS9: u32 = 28679; -pub const ETHERTYPE_OS9NET: u32 = 28681; -pub const ETHERTYPE_RACAL: u32 = 28720; -pub const ETHERTYPE_PRIMENTS: u32 = 28721; -pub const ETHERTYPE_CABLETRON: u32 = 28724; -pub const ETHERTYPE_CRONUSVLN: u32 = 32771; -pub const ETHERTYPE_CRONUS: u32 = 32772; -pub const ETHERTYPE_HP: u32 = 32773; -pub const ETHERTYPE_NESTAR: u32 = 32774; -pub const ETHERTYPE_ATTSTANFORD: u32 = 32776; -pub const ETHERTYPE_EXCELAN: u32 = 32784; -pub const ETHERTYPE_SG_DIAG: u32 = 32787; -pub const ETHERTYPE_SG_NETGAMES: u32 = 32788; -pub const ETHERTYPE_SG_RESV: u32 = 32789; -pub const ETHERTYPE_SG_BOUNCE: u32 = 32790; -pub const ETHERTYPE_APOLLODOMAIN: u32 = 32793; -pub const ETHERTYPE_TYMSHARE: u32 = 32814; -pub const ETHERTYPE_TIGAN: u32 = 32815; -pub const ETHERTYPE_REVARP: u32 = 32821; -pub const ETHERTYPE_AEONIC: u32 = 32822; -pub const ETHERTYPE_IPXNEW: u32 = 32823; -pub const ETHERTYPE_LANBRIDGE: u32 = 32824; -pub const ETHERTYPE_DSMD: u32 = 32825; -pub const ETHERTYPE_ARGONAUT: u32 = 32826; -pub const ETHERTYPE_VAXELN: u32 = 32827; -pub const ETHERTYPE_DECDNS: u32 = 32828; -pub const ETHERTYPE_ENCRYPT: u32 = 32829; -pub const ETHERTYPE_DECDTS: u32 = 32830; -pub const ETHERTYPE_DECLTM: u32 = 32831; -pub const ETHERTYPE_DECNETBIOS: u32 = 32832; -pub const ETHERTYPE_DECLAST: u32 = 32833; -pub const ETHERTYPE_PLANNING: u32 = 32836; -pub const ETHERTYPE_DECAM: u32 = 32840; -pub const ETHERTYPE_EXPERDATA: u32 = 32841; -pub const ETHERTYPE_VEXP: u32 = 32859; -pub const ETHERTYPE_VPROD: u32 = 32860; -pub const ETHERTYPE_ES: u32 = 32861; -pub const ETHERTYPE_LITTLE: u32 = 32864; -pub const ETHERTYPE_COUNTERPOINT: u32 = 32866; -pub const ETHERTYPE_VEECO: u32 = 32871; -pub const ETHERTYPE_GENDYN: u32 = 32872; -pub const ETHERTYPE_ATT: u32 = 32873; -pub const ETHERTYPE_AUTOPHON: u32 = 32874; -pub const ETHERTYPE_COMDESIGN: u32 = 32876; -pub const ETHERTYPE_COMPUGRAPHIC: u32 = 32877; -pub const ETHERTYPE_MATRA: u32 = 32890; -pub const ETHERTYPE_DDE: u32 = 32891; -pub const ETHERTYPE_MERIT: u32 = 32892; -pub const ETHERTYPE_VLTLMAN: u32 = 32896; -pub const ETHERTYPE_ATALK: u32 = 32923; -pub const ETHERTYPE_AT: u32 = 32923; -pub const ETHERTYPE_APPLETALK: u32 = 32923; -pub const ETHERTYPE_SPIDER: u32 = 32927; -pub const ETHERTYPE_PACER: u32 = 32966; -pub const ETHERTYPE_APPLITEK: u32 = 32967; -pub const ETHERTYPE_SNA: u32 = 32981; -pub const ETHERTYPE_VARIAN: u32 = 32989; -pub const ETHERTYPE_RETIX: u32 = 33010; -pub const ETHERTYPE_AARP: u32 = 33011; -pub const ETHERTYPE_APOLLO: u32 = 33015; -pub const ETHERTYPE_VLAN: u32 = 33024; -pub const ETHERTYPE_BOFL: u32 = 33026; -pub const ETHERTYPE_WELLFLEET: u32 = 33027; -pub const ETHERTYPE_TALARIS: u32 = 33067; -pub const ETHERTYPE_WATERLOO: u32 = 33072; -pub const ETHERTYPE_HAYES: u32 = 33072; -pub const ETHERTYPE_VGLAB: u32 = 33073; -pub const ETHERTYPE_IPX: u32 = 33079; -pub const ETHERTYPE_NOVELL: u32 = 33080; -pub const ETHERTYPE_MUMPS: u32 = 33087; -pub const ETHERTYPE_AMOEBA: u32 = 33093; -pub const ETHERTYPE_FLIP: u32 = 33094; -pub const ETHERTYPE_VURESERVED: u32 = 33095; -pub const ETHERTYPE_LOGICRAFT: u32 = 33096; -pub const ETHERTYPE_NCD: u32 = 33097; -pub const ETHERTYPE_ALPHA: u32 = 33098; -pub const ETHERTYPE_SNMP: u32 = 33100; -pub const ETHERTYPE_TEC: u32 = 33103; -pub const ETHERTYPE_RATIONAL: u32 = 33104; -pub const ETHERTYPE_XTP: u32 = 33149; -pub const ETHERTYPE_SGITW: u32 = 33150; -pub const ETHERTYPE_HIPPI_FP: u32 = 33152; -pub const ETHERTYPE_STP: u32 = 33153; -pub const ETHERTYPE_MOTOROLA: u32 = 33165; -pub const ETHERTYPE_NETBEUI: u32 = 33169; -pub const ETHERTYPE_ACCTON: u32 = 33680; -pub const ETHERTYPE_TALARISMC: u32 = 34091; -pub const ETHERTYPE_KALPANA: u32 = 34178; -pub const ETHERTYPE_SECTRA: u32 = 34523; -pub const ETHERTYPE_IPV6: u32 = 34525; -pub const ETHERTYPE_DELTACON: u32 = 34526; -pub const ETHERTYPE_ATOMIC: u32 = 34527; -pub const ETHERTYPE_RDP: u32 = 34617; -pub const ETHERTYPE_MICP: u32 = 34618; -pub const ETHERTYPE_TCPCOMP: u32 = 34667; -pub const ETHERTYPE_IPAS: u32 = 34668; -pub const ETHERTYPE_SECUREDATA: u32 = 34669; -pub const ETHERTYPE_FLOWCONTROL: u32 = 34824; -pub const ETHERTYPE_SLOW: u32 = 34825; -pub const ETHERTYPE_PPP: u32 = 34827; -pub const ETHERTYPE_HITACHI: u32 = 34848; -pub const ETHERTYPE_TEST: u32 = 34850; -pub const ETHERTYPE_MPLS: u32 = 34887; -pub const ETHERTYPE_MPLS_MCAST: u32 = 34888; -pub const ETHERTYPE_AXIS: u32 = 34902; -pub const ETHERTYPE_PPPOEDISC: u32 = 34915; -pub const ETHERTYPE_PPPOE: u32 = 34916; -pub const ETHERTYPE_LANPROBE: u32 = 34952; -pub const ETHERTYPE_PAE: u32 = 34958; -pub const ETHERTYPE_PROFINET: u32 = 34962; -pub const ETHERTYPE_AOE: u32 = 34978; -pub const ETHERTYPE_ETHERCAT: u32 = 34980; -pub const ETHERTYPE_QINQ: u32 = 34984; -pub const ETHERTYPE_POWERLINK: u32 = 34987; -pub const ETHERTYPE_LLDP: u32 = 35020; -pub const ETHERTYPE_SERCOS: u32 = 35021; -pub const ETHERTYPE_MACSEC: u32 = 35045; -pub const ETHERTYPE_PBB: u32 = 35047; -pub const ETHERTYPE_FCOE: u32 = 35078; -pub const ETHERTYPE_LOOPBACK: u32 = 36864; -pub const ETHERTYPE_8021Q9100: u32 = 37120; -pub const ETHERTYPE_LBACK: u32 = 36864; -pub const ETHERTYPE_XNSSM: u32 = 36865; -pub const ETHERTYPE_TCPSM: u32 = 36866; -pub const ETHERTYPE_BCLOOP: u32 = 36867; -pub const ETHERTYPE_8021Q9200: u32 = 37376; -pub const ETHERTYPE_8021Q9300: u32 = 37632; -pub const ETHERTYPE_DEBNI: u32 = 43690; -pub const ETHERTYPE_SONIX: u32 = 64245; -pub const ETHERTYPE_VITAL: u32 = 65280; -pub const ETHERTYPE_MAX: u32 = 65535; -pub const ETHERMTU: u32 = 1500; -pub const ETHERMIN: u32 = 46; -pub const ETHERMTU_JUMBO: u32 = 9000; -pub const IEEE8021Q_PCP_BK: u32 = 1; -pub const IEEE8021Q_PCP_BE: u32 = 0; -pub const IEEE8021Q_PCP_EE: u32 = 2; -pub const IEEE8021Q_PCP_CA: u32 = 3; -pub const IEEE8021Q_PCP_VI: u32 = 4; -pub const IEEE8021Q_PCP_VO: u32 = 5; -pub const IEEE8021Q_PCP_IC: u32 = 6; -pub const IEEE8021Q_PCP_NC: u32 = 7; -pub const RNF_NORMAL: u32 = 1; -pub const RNF_ROOT: u32 = 2; -pub const RNF_ACTIVE: u32 = 4; -pub const IPPROTO_IP: u32 = 0; -pub const IPPROTO_ICMP: u32 = 1; -pub const IPPROTO_TCP: u32 = 6; -pub const IPPROTO_UDP: u32 = 17; -pub const IPPROTO_IPV6: u32 = 41; -pub const IPPROTO_RAW: u32 = 255; -pub const INET_ADDRSTRLEN: u32 = 16; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_IGMP: u32 = 2; -pub const IPPROTO_GGP: u32 = 3; -pub const IPPROTO_IPV4: u32 = 4; -pub const IPPROTO_IPIP: u32 = 4; -pub const IPPROTO_ST: u32 = 7; -pub const IPPROTO_EGP: u32 = 8; -pub const IPPROTO_PIGP: u32 = 9; -pub const IPPROTO_RCCMON: u32 = 10; -pub const IPPROTO_NVPII: u32 = 11; -pub const IPPROTO_PUP: u32 = 12; -pub const IPPROTO_ARGUS: u32 = 13; -pub const IPPROTO_EMCON: u32 = 14; -pub const IPPROTO_XNET: u32 = 15; -pub const IPPROTO_CHAOS: u32 = 16; -pub const IPPROTO_MUX: u32 = 18; -pub const IPPROTO_MEAS: u32 = 19; -pub const IPPROTO_HMP: u32 = 20; -pub const IPPROTO_PRM: u32 = 21; -pub const IPPROTO_IDP: u32 = 22; -pub const IPPROTO_TRUNK1: u32 = 23; -pub const IPPROTO_TRUNK2: u32 = 24; -pub const IPPROTO_LEAF1: u32 = 25; -pub const IPPROTO_LEAF2: u32 = 26; -pub const IPPROTO_RDP: u32 = 27; -pub const IPPROTO_IRTP: u32 = 28; -pub const IPPROTO_TP: u32 = 29; -pub const IPPROTO_BLT: u32 = 30; -pub const IPPROTO_NSP: u32 = 31; -pub const IPPROTO_INP: u32 = 32; -pub const IPPROTO_DCCP: u32 = 33; -pub const IPPROTO_3PC: u32 = 34; -pub const IPPROTO_IDPR: u32 = 35; -pub const IPPROTO_XTP: u32 = 36; -pub const IPPROTO_DDP: u32 = 37; -pub const IPPROTO_CMTP: u32 = 38; -pub const IPPROTO_TPXX: u32 = 39; -pub const IPPROTO_IL: u32 = 40; -pub const IPPROTO_SDRP: u32 = 42; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_IDRP: u32 = 45; -pub const IPPROTO_RSVP: u32 = 46; -pub const IPPROTO_GRE: u32 = 47; -pub const IPPROTO_MHRP: u32 = 48; -pub const IPPROTO_BHA: u32 = 49; -pub const IPPROTO_ESP: u32 = 50; -pub const IPPROTO_AH: u32 = 51; -pub const IPPROTO_INLSP: u32 = 52; -pub const IPPROTO_SWIPE: u32 = 53; -pub const IPPROTO_NHRP: u32 = 54; -pub const IPPROTO_MOBILE: u32 = 55; -pub const IPPROTO_TLSP: u32 = 56; -pub const IPPROTO_SKIP: u32 = 57; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_AHIP: u32 = 61; -pub const IPPROTO_CFTP: u32 = 62; -pub const IPPROTO_HELLO: u32 = 63; -pub const IPPROTO_SATEXPAK: u32 = 64; -pub const IPPROTO_KRYPTOLAN: u32 = 65; -pub const IPPROTO_RVD: u32 = 66; -pub const IPPROTO_IPPC: u32 = 67; -pub const IPPROTO_ADFS: u32 = 68; -pub const IPPROTO_SATMON: u32 = 69; -pub const IPPROTO_VISA: u32 = 70; -pub const IPPROTO_IPCV: u32 = 71; -pub const IPPROTO_CPNX: u32 = 72; -pub const IPPROTO_CPHB: u32 = 73; -pub const IPPROTO_WSN: u32 = 74; -pub const IPPROTO_PVP: u32 = 75; -pub const IPPROTO_BRSATMON: u32 = 76; -pub const IPPROTO_ND: u32 = 77; -pub const IPPROTO_WBMON: u32 = 78; -pub const IPPROTO_WBEXPAK: u32 = 79; -pub const IPPROTO_EON: u32 = 80; -pub const IPPROTO_VMTP: u32 = 81; -pub const IPPROTO_SVMTP: u32 = 82; -pub const IPPROTO_VINES: u32 = 83; -pub const IPPROTO_TTP: u32 = 84; -pub const IPPROTO_IGP: u32 = 85; -pub const IPPROTO_DGP: u32 = 86; -pub const IPPROTO_TCF: u32 = 87; -pub const IPPROTO_IGRP: u32 = 88; -pub const IPPROTO_OSPFIGP: u32 = 89; -pub const IPPROTO_SRPC: u32 = 90; -pub const IPPROTO_LARP: u32 = 91; -pub const IPPROTO_MTP: u32 = 92; -pub const IPPROTO_AX25: u32 = 93; -pub const IPPROTO_IPEIP: u32 = 94; -pub const IPPROTO_MICP: u32 = 95; -pub const IPPROTO_SCCSP: u32 = 96; -pub const IPPROTO_ETHERIP: u32 = 97; -pub const IPPROTO_ENCAP: u32 = 98; -pub const IPPROTO_APES: u32 = 99; -pub const IPPROTO_GMTP: u32 = 100; -pub const IPPROTO_IPCOMP: u32 = 108; -pub const IPPROTO_SCTP: u32 = 132; -pub const IPPROTO_MH: u32 = 135; -pub const IPPROTO_UDPLITE: u32 = 136; -pub const IPPROTO_HIP: u32 = 139; -pub const IPPROTO_SHIM6: u32 = 140; -pub const IPPROTO_PIM: u32 = 103; -pub const IPPROTO_CARP: u32 = 112; -pub const IPPROTO_PGM: u32 = 113; -pub const IPPROTO_MPLS: u32 = 137; -pub const IPPROTO_PFSYNC: u32 = 240; -pub const IPPROTO_RESERVED_253: u32 = 253; -pub const IPPROTO_RESERVED_254: u32 = 254; -pub const IPPROTO_OLD_DIVERT: u32 = 254; -pub const IPPROTO_MAX: u32 = 256; -pub const IPPROTO_DONE: u32 = 257; -pub const IPPROTO_DIVERT: u32 = 258; -pub const IPPROTO_SEND: u32 = 259; -pub const IPPROTO_SPACER: u32 = 32767; -pub const IPPORT_RESERVED: u32 = 1024; -pub const IPPORT_EPHEMERALFIRST: u32 = 10000; -pub const IPPORT_EPHEMERALLAST: u32 = 65535; -pub const IPPORT_HIFIRSTAUTO: u32 = 49152; -pub const IPPORT_HILASTAUTO: u32 = 65535; -pub const IPPORT_RESERVEDSTART: u32 = 600; -pub const IPPORT_MAX: u32 = 65535; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_NETMASK_DEFAULT: u32 = 4294967040; -pub const IN_CLASSD_NET: u32 = 4026531840; -pub const IN_CLASSD_NSHIFT: u32 = 28; -pub const IN_CLASSD_HOST: u32 = 268435455; -pub const IN_LOOPBACKNET: u32 = 127; -pub const IP_OPTIONS: u32 = 1; -pub const IP_HDRINCL: u32 = 2; -pub const IP_TOS: u32 = 3; -pub const IP_TTL: u32 = 4; -pub const IP_RECVOPTS: u32 = 5; -pub const IP_RECVRETOPTS: u32 = 6; -pub const IP_RECVDSTADDR: u32 = 7; -pub const IP_SENDSRCADDR: u32 = 7; -pub const IP_RETOPTS: u32 = 8; -pub const IP_MULTICAST_IF: u32 = 9; -pub const IP_MULTICAST_TTL: u32 = 10; -pub const IP_MULTICAST_LOOP: u32 = 11; -pub const IP_ADD_MEMBERSHIP: u32 = 12; -pub const IP_DROP_MEMBERSHIP: u32 = 13; -pub const IP_MULTICAST_VIF: u32 = 14; -pub const IP_RSVP_ON: u32 = 15; -pub const IP_RSVP_OFF: u32 = 16; -pub const IP_RSVP_VIF_ON: u32 = 17; -pub const IP_RSVP_VIF_OFF: u32 = 18; -pub const IP_PORTRANGE: u32 = 19; -pub const IP_RECVIF: u32 = 20; -pub const IP_IPSEC_POLICY: u32 = 21; -pub const IP_ONESBCAST: u32 = 23; -pub const IP_BINDANY: u32 = 24; -pub const IP_ORIGDSTADDR: u32 = 27; -pub const IP_RECVORIGDSTADDR: u32 = 27; -pub const IP_FW_TABLE_ADD: u32 = 40; -pub const IP_FW_TABLE_DEL: u32 = 41; -pub const IP_FW_TABLE_FLUSH: u32 = 42; -pub const IP_FW_TABLE_GETSIZE: u32 = 43; -pub const IP_FW_TABLE_LIST: u32 = 44; -pub const IP_FW3: u32 = 48; -pub const IP_DUMMYNET3: u32 = 49; -pub const IP_FW_ADD: u32 = 50; -pub const IP_FW_DEL: u32 = 51; -pub const IP_FW_FLUSH: u32 = 52; -pub const IP_FW_ZERO: u32 = 53; -pub const IP_FW_GET: u32 = 54; -pub const IP_FW_RESETLOG: u32 = 55; -pub const IP_FW_NAT_CFG: u32 = 56; -pub const IP_FW_NAT_DEL: u32 = 57; -pub const IP_FW_NAT_GET_CONFIG: u32 = 58; -pub const IP_FW_NAT_GET_LOG: u32 = 59; -pub const IP_DUMMYNET_CONFIGURE: u32 = 60; -pub const IP_DUMMYNET_DEL: u32 = 61; -pub const IP_DUMMYNET_FLUSH: u32 = 62; -pub const IP_DUMMYNET_GET: u32 = 64; -pub const IP_RECVTTL: u32 = 65; -pub const IP_MINTTL: u32 = 66; -pub const IP_DONTFRAG: u32 = 67; -pub const IP_RECVTOS: u32 = 68; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 70; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 71; -pub const IP_BLOCK_SOURCE: u32 = 72; -pub const IP_UNBLOCK_SOURCE: u32 = 73; -pub const IP_MSFILTER: u32 = 74; -pub const IP_VLAN_PCP: u32 = 75; -pub const MCAST_JOIN_GROUP: u32 = 80; -pub const MCAST_LEAVE_GROUP: u32 = 81; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 82; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 83; -pub const MCAST_BLOCK_SOURCE: u32 = 84; -pub const MCAST_UNBLOCK_SOURCE: u32 = 85; -pub const IP_FLOWID: u32 = 90; -pub const IP_FLOWTYPE: u32 = 91; -pub const IP_RSSBUCKETID: u32 = 92; -pub const IP_RECVFLOWID: u32 = 93; -pub const IP_RECVRSSBUCKETID: u32 = 94; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const IP_MAX_MEMBERSHIPS: u32 = 4095; -pub const IP_MAX_GROUP_SRC_FILTER: u32 = 512; -pub const IP_MAX_SOCK_SRC_FILTER: u32 = 128; -pub const IP_MAX_SOCK_MUTE_FILTER: u32 = 128; -pub const MCAST_UNDEFINED: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const MCAST_EXCLUDE: u32 = 2; -pub const IP_PORTRANGE_DEFAULT: u32 = 0; -pub const IP_PORTRANGE_HIGH: u32 = 1; -pub const IP_PORTRANGE_LOW: u32 = 2; -pub const IPCTL_FORWARDING: u32 = 1; -pub const IPCTL_SENDREDIRECTS: u32 = 2; -pub const IPCTL_DEFTTL: u32 = 3; -pub const IPCTL_SOURCEROUTE: u32 = 8; -pub const IPCTL_DIRECTEDBROADCAST: u32 = 9; -pub const IPCTL_INTRQMAXLEN: u32 = 10; -pub const IPCTL_INTRQDROPS: u32 = 11; -pub const IPCTL_STATS: u32 = 12; -pub const IPCTL_ACCEPTSOURCEROUTE: u32 = 13; -pub const IPCTL_FASTFORWARDING: u32 = 14; -pub const IPCTL_GIF_TTL: u32 = 16; -pub const IPCTL_INTRDQMAXLEN: u32 = 17; -pub const IPCTL_INTRDQDROPS: u32 = 18; -pub const __KAME_VERSION: &[u8; 8] = b"FreeBSD\0"; -pub const IPV6PORT_RESERVED: u32 = 1024; -pub const IPV6PORT_ANONMIN: u32 = 49152; -pub const IPV6PORT_ANONMAX: u32 = 65535; -pub const IPV6PORT_RESERVEDMIN: u32 = 600; -pub const IPV6PORT_RESERVEDMAX: u32 = 1023; -pub const INET6_ADDRSTRLEN: u32 = 46; -pub const __IPV6_ADDR_SCOPE_NODELOCAL: u32 = 1; -pub const __IPV6_ADDR_SCOPE_INTFACELOCAL: u32 = 1; -pub const __IPV6_ADDR_SCOPE_LINKLOCAL: u32 = 2; -pub const __IPV6_ADDR_SCOPE_SITELOCAL: u32 = 5; -pub const __IPV6_ADDR_SCOPE_ORGLOCAL: u32 = 8; -pub const __IPV6_ADDR_SCOPE_GLOBAL: u32 = 14; -pub const IPV6_SOCKOPT_RESERVED1: u32 = 3; -pub const IPV6_UNICAST_HOPS: u32 = 4; -pub const IPV6_MULTICAST_IF: u32 = 9; -pub const IPV6_MULTICAST_HOPS: u32 = 10; -pub const IPV6_MULTICAST_LOOP: u32 = 11; -pub const IPV6_JOIN_GROUP: u32 = 12; -pub const IPV6_LEAVE_GROUP: u32 = 13; -pub const IPV6_PORTRANGE: u32 = 14; -pub const ICMP6_FILTER: u32 = 18; -pub const IPV6_CHECKSUM: u32 = 26; -pub const IPV6_V6ONLY: u32 = 27; -pub const IPV6_BINDV6ONLY: u32 = 27; -pub const IPV6_IPSEC_POLICY: u32 = 28; -pub const IPV6_FW_ADD: u32 = 30; -pub const IPV6_FW_DEL: u32 = 31; -pub const IPV6_FW_FLUSH: u32 = 32; -pub const IPV6_FW_ZERO: u32 = 33; -pub const IPV6_FW_GET: u32 = 34; -pub const IPV6_RTHDRDSTOPTS: u32 = 35; -pub const IPV6_RECVPKTINFO: u32 = 36; -pub const IPV6_RECVHOPLIMIT: u32 = 37; -pub const IPV6_RECVRTHDR: u32 = 38; -pub const IPV6_RECVHOPOPTS: u32 = 39; -pub const IPV6_RECVDSTOPTS: u32 = 40; -pub const IPV6_USE_MIN_MTU: u32 = 42; -pub const IPV6_RECVPATHMTU: u32 = 43; -pub const IPV6_PATHMTU: u32 = 44; -pub const IPV6_PKTINFO: u32 = 46; -pub const IPV6_HOPLIMIT: u32 = 47; -pub const IPV6_NEXTHOP: u32 = 48; -pub const IPV6_HOPOPTS: u32 = 49; -pub const IPV6_DSTOPTS: u32 = 50; -pub const IPV6_RTHDR: u32 = 51; -pub const IPV6_RECVTCLASS: u32 = 57; -pub const IPV6_AUTOFLOWLABEL: u32 = 59; -pub const IPV6_TCLASS: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_PREFER_TEMPADDR: u32 = 63; -pub const IPV6_BINDANY: u32 = 64; -pub const IPV6_FLOWID: u32 = 67; -pub const IPV6_FLOWTYPE: u32 = 68; -pub const IPV6_RSSBUCKETID: u32 = 69; -pub const IPV6_RECVFLOWID: u32 = 70; -pub const IPV6_RECVRSSBUCKETID: u32 = 71; -pub const IPV6_ORIGDSTADDR: u32 = 72; -pub const IPV6_RECVORIGDSTADDR: u32 = 72; -pub const IPV6_MSFILTER: u32 = 74; -pub const IPV6_VLAN_PCP: u32 = 75; -pub const IPV6_RTHDR_LOOSE: u32 = 0; -pub const IPV6_RTHDR_STRICT: u32 = 1; -pub const IPV6_RTHDR_TYPE_0: u32 = 0; -pub const IPV6_DEFAULT_MULTICAST_HOPS: u32 = 1; -pub const IPV6_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const IPV6_MAX_MEMBERSHIPS: u32 = 4095; -pub const IPV6_MAX_GROUP_SRC_FILTER: u32 = 512; -pub const IPV6_MAX_SOCK_SRC_FILTER: u32 = 128; -pub const IPV6_PORTRANGE_DEFAULT: u32 = 0; -pub const IPV6_PORTRANGE_HIGH: u32 = 1; -pub const IPV6_PORTRANGE_LOW: u32 = 2; -pub const IPV6PROTO_MAXID: u32 = 104; -pub const IPV6CTL_FORWARDING: u32 = 1; -pub const IPV6CTL_SENDREDIRECTS: u32 = 2; -pub const IPV6CTL_DEFHLIM: u32 = 3; -pub const IPV6CTL_FORWSRCRT: u32 = 5; -pub const IPV6CTL_STATS: u32 = 6; -pub const IPV6CTL_MRTSTATS: u32 = 7; -pub const IPV6CTL_MRTPROTO: u32 = 8; -pub const IPV6CTL_MAXFRAGPACKETS: u32 = 9; -pub const IPV6CTL_SOURCECHECK: u32 = 10; -pub const IPV6CTL_SOURCECHECK_LOGINT: u32 = 11; -pub const IPV6CTL_ACCEPT_RTADV: u32 = 12; -pub const IPV6CTL_LOG_INTERVAL: u32 = 14; -pub const IPV6CTL_HDRNESTLIMIT: u32 = 15; -pub const IPV6CTL_DAD_COUNT: u32 = 16; -pub const IPV6CTL_AUTO_FLOWLABEL: u32 = 17; -pub const IPV6CTL_DEFMCASTHLIM: u32 = 18; -pub const IPV6CTL_GIF_HLIM: u32 = 19; -pub const IPV6CTL_KAME_VERSION: u32 = 20; -pub const IPV6CTL_USE_DEPRECATED: u32 = 21; -pub const IPV6CTL_RR_PRUNE: u32 = 22; -pub const IPV6CTL_V6ONLY: u32 = 24; -pub const IPV6CTL_USETEMPADDR: u32 = 32; -pub const IPV6CTL_TEMPPLTIME: u32 = 33; -pub const IPV6CTL_TEMPVLTIME: u32 = 34; -pub const IPV6CTL_AUTO_LINKLOCAL: u32 = 35; -pub const IPV6CTL_RIP6STATS: u32 = 36; -pub const IPV6CTL_PREFER_TEMPADDR: u32 = 37; -pub const IPV6CTL_ADDRCTLPOLICY: u32 = 38; -pub const IPV6CTL_USE_DEFAULTZONE: u32 = 39; -pub const IPV6CTL_MAXFRAGS: u32 = 41; -pub const IPV6CTL_MCAST_PMTU: u32 = 44; -pub const IPV6CTL_STEALTH: u32 = 45; -pub const ICMPV6CTL_ND6_ONLINKNSRFC4861: u32 = 47; -pub const IPV6CTL_NO_RADR: u32 = 48; -pub const IPV6CTL_NORBIT_RAIF: u32 = 49; -pub const IPV6CTL_RFC6204W3: u32 = 50; -pub const IPV6CTL_INTRQMAXLEN: u32 = 51; -pub const IPV6CTL_INTRDQMAXLEN: u32 = 52; -pub const IPV6CTL_MAXFRAGSPERPACKET: u32 = 53; -pub const IPV6CTL_MAXFRAGBUCKETSIZE: u32 = 54; -pub const IPV6CTL_MAXID: u32 = 55; -pub const PF_MD5_DIGEST_LENGTH: u32 = 16; -pub const PFTM_TCP_FIRST_PACKET_VAL: u32 = 120; -pub const PFTM_TCP_OPENING_VAL: u32 = 30; -pub const PFTM_TCP_ESTABLISHED_VAL: u32 = 86400; -pub const PFTM_TCP_CLOSING_VAL: u32 = 900; -pub const PFTM_TCP_FIN_WAIT_VAL: u32 = 45; -pub const PFTM_TCP_CLOSED_VAL: u32 = 90; -pub const PFTM_UDP_FIRST_PACKET_VAL: u32 = 60; -pub const PFTM_UDP_SINGLE_VAL: u32 = 30; -pub const PFTM_UDP_MULTIPLE_VAL: u32 = 60; -pub const PFTM_ICMP_FIRST_PACKET_VAL: u32 = 20; -pub const PFTM_ICMP_ERROR_REPLY_VAL: u32 = 10; -pub const PFTM_OTHER_FIRST_PACKET_VAL: u32 = 60; -pub const PFTM_OTHER_SINGLE_VAL: u32 = 30; -pub const PFTM_OTHER_MULTIPLE_VAL: u32 = 60; -pub const PFTM_FRAG_VAL: u32 = 30; -pub const PFTM_INTERVAL_VAL: u32 = 10; -pub const PFTM_SRC_NODE_VAL: u32 = 0; -pub const PFTM_TS_DIFF_VAL: u32 = 30; -pub const PF_POOL_IDMASK: u32 = 15; -pub const PF_POOL_TYPEMASK: u32 = 15; -pub const PF_POOL_STICKYADDR: u32 = 32; -pub const PF_WSCALE_FLAG: u32 = 128; -pub const PF_WSCALE_MASK: u32 = 15; -pub const PF_LOG: u32 = 1; -pub const PF_LOG_ALL: u32 = 2; -pub const PF_LOG_SOCKET_LOOKUP: u32 = 4; -pub const PF_LOG_FORCE: u32 = 8; -pub const PFRES_MATCH: u32 = 0; -pub const PFRES_BADOFF: u32 = 1; -pub const PFRES_FRAG: u32 = 2; -pub const PFRES_SHORT: u32 = 3; -pub const PFRES_NORM: u32 = 4; -pub const PFRES_MEMORY: u32 = 5; -pub const PFRES_TS: u32 = 6; -pub const PFRES_CONGEST: u32 = 7; -pub const PFRES_IPOPTIONS: u32 = 8; -pub const PFRES_PROTCKSUM: u32 = 9; -pub const PFRES_BADSTATE: u32 = 10; -pub const PFRES_STATEINS: u32 = 11; -pub const PFRES_MAXSTATES: u32 = 12; -pub const PFRES_SRCLIMIT: u32 = 13; -pub const PFRES_SYNPROXY: u32 = 14; -pub const PFRES_MAPFAILED: u32 = 15; -pub const PFRES_MAX: u32 = 16; -pub const LCNT_STATES: u32 = 0; -pub const LCNT_SRCSTATES: u32 = 1; -pub const LCNT_SRCNODES: u32 = 2; -pub const LCNT_SRCCONN: u32 = 3; -pub const LCNT_SRCCONNRATE: u32 = 4; -pub const LCNT_OVERLOAD_TABLE: u32 = 5; -pub const LCNT_OVERLOAD_FLUSH: u32 = 6; -pub const LCNT_MAX: u32 = 7; -pub const KLCNT_SYNFLOODS: u32 = 7; -pub const KLCNT_SYNCOOKIES_SENT: u32 = 8; -pub const KLCNT_SYNCOOKIES_VALID: u32 = 9; -pub const KLCNT_MAX: u32 = 10; -pub const FCNT_STATE_SEARCH: u32 = 0; -pub const FCNT_STATE_INSERT: u32 = 1; -pub const FCNT_STATE_REMOVALS: u32 = 2; -pub const FCNT_MAX: u32 = 3; -pub const SCNT_SRC_NODE_SEARCH: u32 = 0; -pub const SCNT_SRC_NODE_INSERT: u32 = 1; -pub const SCNT_SRC_NODE_REMOVALS: u32 = 2; -pub const SCNT_MAX: u32 = 3; -pub const PF_TABLE_NAME_SIZE: u32 = 32; -pub const PF_QNAME_SIZE: u32 = 64; -pub const PF_REASS_ENABLED: u32 = 1; -pub const PF_REASS_NODF: u32 = 2; -pub const PFI_AFLAG_NETWORK: u32 = 1; -pub const PFI_AFLAG_BROADCAST: u32 = 2; -pub const PFI_AFLAG_PEER: u32 = 4; -pub const PFI_AFLAG_MODEMASK: u32 = 7; -pub const PFI_AFLAG_NOALIAS: u32 = 8; -pub const PF_OSFP_EXPANDED: u32 = 1; -pub const PF_OSFP_GENERIC: u32 = 2; -pub const PF_OSFP_NODETAIL: u32 = 4; -pub const PF_OSFP_LEN: u32 = 32; -pub const _FP_RESERVED_BIT: u32 = 1; -pub const _FP_UNUSED_BITS: u32 = 1; -pub const _FP_CLASS_BITS: u32 = 10; -pub const _FP_VERSION_BITS: u32 = 10; -pub const _FP_SUBTYPE_BITS: u32 = 10; -pub const PF_OSFP_WSIZE_MOD: u32 = 1; -pub const PF_OSFP_WSIZE_DC: u32 = 2; -pub const PF_OSFP_WSIZE_MSS: u32 = 4; -pub const PF_OSFP_WSIZE_MTU: u32 = 8; -pub const PF_OSFP_PSIZE_MOD: u32 = 16; -pub const PF_OSFP_PSIZE_DC: u32 = 32; -pub const PF_OSFP_WSCALE: u32 = 64; -pub const PF_OSFP_WSCALE_MOD: u32 = 128; -pub const PF_OSFP_WSCALE_DC: u32 = 256; -pub const PF_OSFP_MSS: u32 = 512; -pub const PF_OSFP_MSS_MOD: u32 = 1024; -pub const PF_OSFP_MSS_DC: u32 = 2048; -pub const PF_OSFP_DF: u32 = 4096; -pub const PF_OSFP_TS0: u32 = 8192; -pub const PF_OSFP_INET6: u32 = 16384; -pub const PF_OSFP_MAXTTL_OFFSET: u32 = 40; -pub const PF_OSFP_TCPOPT_NOP: u32 = 0; -pub const PF_OSFP_TCPOPT_WSCALE: u32 = 1; -pub const PF_OSFP_TCPOPT_MSS: u32 = 2; -pub const PF_OSFP_TCPOPT_SACK: u32 = 3; -pub const PF_OSFP_TCPOPT_TS: u32 = 4; -pub const PF_OSFP_TCPOPT_BITS: u32 = 3; -pub const PF_ANCHOR_NAME_SIZE: u32 = 64; -pub const PF_SKIP_IFP: u32 = 0; -pub const PF_SKIP_DIR: u32 = 1; -pub const PF_SKIP_AF: u32 = 2; -pub const PF_SKIP_PROTO: u32 = 3; -pub const PF_SKIP_SRC_ADDR: u32 = 4; -pub const PF_SKIP_SRC_PORT: u32 = 5; -pub const PF_SKIP_DST_ADDR: u32 = 6; -pub const PF_SKIP_DST_PORT: u32 = 7; -pub const PF_SKIP_COUNT: u32 = 8; -pub const PF_RULE_LABEL_SIZE: u32 = 64; -pub const PF_RULE_MAX_LABEL_COUNT: u32 = 5; -pub const PF_TAG_NAME_SIZE: u32 = 64; -pub const PF_STATE_NORMAL: u32 = 1; -pub const PF_STATE_MODULATE: u32 = 2; -pub const PF_STATE_SYNPROXY: u32 = 3; -pub const PF_FLUSH: u32 = 1; -pub const PF_FLUSH_GLOBAL: u32 = 2; -pub const PF_PRIO_ZERO: u32 = 255; -pub const PF_PRIO_MAX: u32 = 7; -pub const PFRULE_DROP: u32 = 0; -pub const PFRULE_RETURNRST: u32 = 1; -pub const PFRULE_FRAGMENT: u32 = 2; -pub const PFRULE_RETURNICMP: u32 = 4; -pub const PFRULE_RETURN: u32 = 8; -pub const PFRULE_NOSYNC: u32 = 16; -pub const PFRULE_SRCTRACK: u32 = 32; -pub const PFRULE_RULESRCTRACK: u32 = 64; -pub const PFRULE_NODF: u32 = 256; -pub const PFRULE_FRAGMENT_NOREASS: u32 = 512; -pub const PFRULE_RANDOMID: u32 = 2048; -pub const PFRULE_REASSEMBLE_TCP: u32 = 4096; -pub const PFRULE_SET_TOS: u32 = 8192; -pub const PFRULE_IFBOUND: u32 = 65536; -pub const PFRULE_STATESLOPPY: u32 = 131072; -pub const PFRULE_DN_IS_PIPE: u32 = 64; -pub const PFRULE_DN_IS_QUEUE: u32 = 128; -pub const PFSTATE_ALLOWOPTS: u32 = 1; -pub const PFSTATE_SLOPPY: u32 = 2; -pub const PFSTATE_NOSYNC: u32 = 8; -pub const PFSTATE_ACK: u32 = 16; -pub const PFSTATE_NODF: u32 = 32; -pub const PFSTATE_SETTOS: u32 = 64; -pub const PFSTATE_RANDOMID: u32 = 128; -pub const PFSTATE_SCRUB_TCP: u32 = 256; -pub const PFSTATE_SETPRIO: u32 = 512; -pub const PFSTATE_DN_IS_PIPE: u32 = 16384; -pub const PFSTATE_DN_IS_QUEUE: u32 = 32768; -pub const PFSTATE_SCRUBMASK: u32 = 416; -pub const PFSTATE_SETMASK: u32 = 576; -pub const PFSTATE_HIWAT: u32 = 100000; -pub const PFSTATE_ADAPT_START: u32 = 60000; -pub const PFSTATE_ADAPT_END: u32 = 120000; -pub const PF_THRESHOLD_MULT: u32 = 1000; -pub const PF_THRESHOLD_MAX: u32 = 4294967; -pub const PFSNODE_HIWAT: u32 = 10000; -pub const PFALTQ_FLAG_IF_REMOVED: u32 = 1; -pub const PF_ALTQ_VERSION: u32 = 1; -pub const PFSS_TIMESTAMP: u32 = 1; -pub const PFSS_PAWS: u32 = 16; -pub const PFSS_PAWS_IDLED: u32 = 32; -pub const PFSS_DATA_TS: u32 = 64; -pub const PFSS_DATA_NOTS: u32 = 128; -pub const PF_SCRUB_FLAG_VALID: u32 = 1; -pub const PF_STATE_VERSION: u32 = 20230404; -pub const PFSYNC_SCRUB_FLAG_VALID: u32 = 1; -pub const PFSYNC_FLAG_SRCNODE: u32 = 4; -pub const PFSYNC_FLAG_NATSRCNODE: u32 = 8; -pub const PF_RESERVED_ANCHOR: &[u8; 4] = b"_pf\0"; -pub const PFR_TFLAG_PERSIST: u32 = 1; -pub const PFR_TFLAG_CONST: u32 = 2; -pub const PFR_TFLAG_ACTIVE: u32 = 4; -pub const PFR_TFLAG_INACTIVE: u32 = 8; -pub const PFR_TFLAG_REFERENCED: u32 = 16; -pub const PFR_TFLAG_REFDANCHOR: u32 = 32; -pub const PFR_TFLAG_COUNTERS: u32 = 64; -pub const PFR_TFLAG_USRMASK: u32 = 67; -pub const PFR_TFLAG_SETMASK: u32 = 60; -pub const PFR_TFLAG_ALLMASK: u32 = 127; -pub const PFI_IFLAG_REFS: u32 = 1; -pub const PFI_IFLAG_SKIP: u32 = 256; -pub const PF_DPORT_RANGE: u32 = 1; -pub const PF_RPORT_RANGE: u32 = 2; -pub const PFUDPS_NO_TRAFFIC: u32 = 0; -pub const PFUDPS_SINGLE: u32 = 1; -pub const PFUDPS_MULTIPLE: u32 = 2; -pub const PFUDPS_NSTATES: u32 = 3; -pub const PFOTHERS_NO_TRAFFIC: u32 = 0; -pub const PFOTHERS_SINGLE: u32 = 1; -pub const PFOTHERS_MULTIPLE: u32 = 2; -pub const PFOTHERS_NSTATES: u32 = 3; -pub const PF_SYNCOOKIES_HIWATPCT: u32 = 25; -pub const PF_SYNCOOKIES_LOWATPCT: u32 = 12; -pub const PFFRAG_FRENT_HIWAT: u32 = 5000; -pub const PFR_KENTRY_HIWAT: u32 = 200000; -pub const PF_FRAG_ENTRY_POINTS: u32 = 16; -pub const PF_FRAG_ENTRY_LIMIT: u32 = 64; -pub const PFIOC_ALTQ_VERSION: u32 = 1; -pub const PFIOC_QSTATS_VERSION: u32 = 1; -pub const PFR_FLAG_ATOMIC: u32 = 1; -pub const PFR_FLAG_DUMMY: u32 = 2; -pub const PFR_FLAG_FEEDBACK: u32 = 4; -pub const PFR_FLAG_CLSTATS: u32 = 8; -pub const PFR_FLAG_ADDRSTOO: u32 = 16; -pub const PFR_FLAG_REPLACE: u32 = 32; -pub const PFR_FLAG_ALLRSETS: u32 = 64; -pub const PFR_FLAG_ALLMASK: u32 = 127; -pub const PF_IFSPEED_VERSION: u32 = 1; -pub type __int8_t = ::std::os::raw::c_schar; -pub type __uint8_t = ::std::os::raw::c_uchar; -pub type __int16_t = ::std::os::raw::c_short; -pub type __uint16_t = ::std::os::raw::c_ushort; -pub type __int32_t = ::std::os::raw::c_int; -pub type __uint32_t = ::std::os::raw::c_uint; -pub type __int64_t = ::std::os::raw::c_long; -pub type __uint64_t = ::std::os::raw::c_ulong; -pub type __int_least8_t = __int8_t; -pub type __int_least16_t = __int16_t; -pub type __int_least32_t = __int32_t; -pub type __int_least64_t = __int64_t; -pub type __intmax_t = __int64_t; -pub type __uint_least8_t = __uint8_t; -pub type __uint_least16_t = __uint16_t; -pub type __uint_least32_t = __uint32_t; -pub type __uint_least64_t = __uint64_t; -pub type __uintmax_t = __uint64_t; -pub type __intptr_t = __int64_t; -pub type __intfptr_t = __int64_t; -pub type __uintptr_t = __uint64_t; -pub type __uintfptr_t = __uint64_t; -pub type __vm_offset_t = __uint64_t; -pub type __vm_size_t = __uint64_t; -pub type __size_t = __uint64_t; -pub type __ssize_t = __int64_t; -pub type __ptrdiff_t = __int64_t; -pub type __clock_t = __int32_t; -pub type __critical_t = __int64_t; -pub type __double_t = f64; -pub type __float_t = f32; -pub type __int_fast8_t = __int32_t; -pub type __int_fast16_t = __int32_t; -pub type __int_fast32_t = __int32_t; -pub type __int_fast64_t = __int64_t; -pub type __register_t = __int64_t; -pub type __segsz_t = __int64_t; -pub type __time_t = __int64_t; -pub type __uint_fast8_t = __uint32_t; -pub type __uint_fast16_t = __uint32_t; -pub type __uint_fast32_t = __uint32_t; -pub type __uint_fast64_t = __uint64_t; -pub type __u_register_t = __uint64_t; -pub type __vm_paddr_t = __uint64_t; -pub type ___wchar_t = ::std::os::raw::c_int; -pub type __blksize_t = __int32_t; -pub type __blkcnt_t = __int64_t; -pub type __clockid_t = __int32_t; -pub type __fflags_t = __uint32_t; -pub type __fsblkcnt_t = __uint64_t; -pub type __fsfilcnt_t = __uint64_t; -pub type __gid_t = __uint32_t; -pub type __id_t = __int64_t; -pub type __ino_t = __uint64_t; -pub type __key_t = ::std::os::raw::c_long; -pub type __lwpid_t = __int32_t; -pub type __mode_t = __uint16_t; -pub type __accmode_t = ::std::os::raw::c_int; -pub type __nl_item = ::std::os::raw::c_int; -pub type __nlink_t = __uint64_t; -pub type __off_t = __int64_t; -pub type __off64_t = __int64_t; -pub type __pid_t = __int32_t; -pub type __sbintime_t = __int64_t; -pub type __rlim_t = __int64_t; -pub type __sa_family_t = __uint8_t; -pub type __socklen_t = __uint32_t; -pub type __suseconds_t = ::std::os::raw::c_long; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __timer { - _unused: [u8; 0], -} -pub type __timer_t = *mut __timer; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __mq { - _unused: [u8; 0], -} -pub type __mqd_t = *mut __mq; -pub type __uid_t = __uint32_t; -pub type __useconds_t = ::std::os::raw::c_uint; -pub type __cpuwhich_t = ::std::os::raw::c_int; -pub type __cpulevel_t = ::std::os::raw::c_int; -pub type __cpusetid_t = ::std::os::raw::c_int; -pub type __daddr_t = __int64_t; -pub type __ct_rune_t = ::std::os::raw::c_int; -pub type __rune_t = __ct_rune_t; -pub type __wint_t = __ct_rune_t; -pub type __char16_t = __uint_least16_t; -pub type __char32_t = __uint_least32_t; -#[repr(C)] -#[repr(align(16))] -#[derive(Debug, Copy, Clone)] -pub struct __max_align_t { - pub __max_align1: ::std::os::raw::c_longlong, - pub __bindgen_padding_0: u64, - pub __max_align2: u128, -} -#[test] -fn bindgen_test_layout___max_align_t() { - const UNINIT: ::std::mem::MaybeUninit<__max_align_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__max_align_t>(), - 32usize, - concat!("Size of: ", stringify!(__max_align_t)) - ); - assert_eq!( - ::std::mem::align_of::<__max_align_t>(), - 16usize, - concat!("Alignment of ", stringify!(__max_align_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__max_align1) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__max_align_t), - "::", - stringify!(__max_align1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__max_align2) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__max_align_t), - "::", - stringify!(__max_align2) - ) - ); -} -pub type __dev_t = __uint64_t; -pub type __fixpt_t = __uint32_t; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __mbstate_t { - pub __mbstate8: [::std::os::raw::c_char; 128usize], - pub _mbstateL: __int64_t, -} -#[test] -fn bindgen_test_layout___mbstate_t() { - const UNINIT: ::std::mem::MaybeUninit<__mbstate_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__mbstate_t>(), - 128usize, - concat!("Size of: ", stringify!(__mbstate_t)) - ); - assert_eq!( - ::std::mem::align_of::<__mbstate_t>(), - 8usize, - concat!("Alignment of ", stringify!(__mbstate_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__mbstate8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__mbstate_t), - "::", - stringify!(__mbstate8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._mbstateL) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__mbstate_t), - "::", - stringify!(_mbstateL) - ) - ); -} -pub type __rman_res_t = __uintmax_t; -pub type __va_list = __builtin_va_list; -pub type __gnuc_va_list = __va_list; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_attr { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_cond { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_cond_attr { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_mutex { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_mutex_attr { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_rwlock { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_rwlockattr { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_barrier { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_barrier_attr { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_spinlock { - _unused: [u8; 0], -} -pub type pthread_t = *mut pthread; -pub type pthread_attr_t = *mut pthread_attr; -pub type pthread_mutex_t = *mut pthread_mutex; -pub type pthread_mutexattr_t = *mut pthread_mutex_attr; -pub type pthread_cond_t = *mut pthread_cond; -pub type pthread_condattr_t = *mut pthread_cond_attr; -pub type pthread_key_t = ::std::os::raw::c_int; -pub type pthread_once_t = pthread_once; -pub type pthread_rwlock_t = *mut pthread_rwlock; -pub type pthread_rwlockattr_t = *mut pthread_rwlockattr; -pub type pthread_barrier_t = *mut pthread_barrier; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_barrierattr { - _unused: [u8; 0], -} -pub type pthread_barrierattr_t = *mut pthread_barrierattr; -pub type pthread_spinlock_t = *mut pthread_spinlock; -pub type pthread_addr_t = *mut ::std::os::raw::c_void; -pub type pthread_startroutine_t = - ::std::option::Option *mut ::std::os::raw::c_void>; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pthread_once { - pub state: ::std::os::raw::c_int, - pub mutex: pthread_mutex_t, -} -#[test] -fn bindgen_test_layout_pthread_once() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pthread_once)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pthread_once)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pthread_once), "::", stringify!(state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mutex) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pthread_once), "::", stringify!(mutex)) - ); -} -pub type u_char = ::std::os::raw::c_uchar; -pub type u_short = ::std::os::raw::c_ushort; -pub type u_int = ::std::os::raw::c_uint; -pub type u_long = ::std::os::raw::c_ulong; -pub type ushort = ::std::os::raw::c_ushort; -pub type uint = ::std::os::raw::c_uint; -pub type intmax_t = __intmax_t; -pub type uintmax_t = __uintmax_t; -pub type u_int8_t = __uint8_t; -pub type u_int16_t = __uint16_t; -pub type u_int32_t = __uint32_t; -pub type u_int64_t = __uint64_t; -pub type u_quad_t = __uint64_t; -pub type quad_t = __int64_t; -pub type qaddr_t = *mut quad_t; -pub type caddr_t = *mut ::std::os::raw::c_char; -pub type c_caddr_t = *const ::std::os::raw::c_char; -pub type blksize_t = __blksize_t; -pub type cpuwhich_t = __cpuwhich_t; -pub type cpulevel_t = __cpulevel_t; -pub type cpusetid_t = __cpusetid_t; -pub type blkcnt_t = __blkcnt_t; -pub type clock_t = __clock_t; -pub type clockid_t = __clockid_t; -pub type critical_t = __critical_t; -pub type daddr_t = __daddr_t; -pub type dev_t = __dev_t; -pub type fflags_t = __fflags_t; -pub type fixpt_t = __fixpt_t; -pub type fsblkcnt_t = __fsblkcnt_t; -pub type fsfilcnt_t = __fsfilcnt_t; -pub type gid_t = __gid_t; -pub type in_addr_t = __uint32_t; -pub type in_port_t = __uint16_t; -pub type id_t = __id_t; -pub type ino_t = __ino_t; -pub type key_t = __key_t; -pub type lwpid_t = __lwpid_t; -pub type mode_t = __mode_t; -pub type accmode_t = __accmode_t; -pub type nlink_t = __nlink_t; -pub type off_t = __off_t; -pub type off64_t = __off64_t; -pub type pid_t = __pid_t; -pub type register_t = __register_t; -pub type rlim_t = __rlim_t; -pub type sbintime_t = __sbintime_t; -pub type segsz_t = __segsz_t; -pub type suseconds_t = __suseconds_t; -pub type time_t = __time_t; -pub type timer_t = __timer_t; -pub type mqd_t = __mqd_t; -pub type u_register_t = __u_register_t; -pub type uid_t = __uid_t; -pub type useconds_t = __useconds_t; -pub type cap_ioctl_t = ::std::os::raw::c_ulong; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cap_rights { - _unused: [u8; 0], -} -pub type cap_rights_t = cap_rights; -pub type kpaddr_t = __uint64_t; -pub type kvaddr_t = __uint64_t; -pub type ksize_t = __uint64_t; -pub type kssize_t = __int64_t; -pub type vm_offset_t = __vm_offset_t; -pub type vm_ooffset_t = __uint64_t; -pub type vm_paddr_t = __vm_paddr_t; -pub type vm_pindex_t = __uint64_t; -pub type vm_size_t = __vm_size_t; -pub type rman_res_t = __rman_res_t; -pub type syscallarg_t = __register_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sigset { - pub __bits: [__uint32_t; 4usize], -} -#[test] -fn bindgen_test_layout___sigset() { - const UNINIT: ::std::mem::MaybeUninit<__sigset> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__sigset>(), - 16usize, - concat!("Size of: ", stringify!(__sigset)) - ); - assert_eq!( - ::std::mem::align_of::<__sigset>(), - 4usize, - concat!("Alignment of ", stringify!(__sigset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__bits) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(__sigset), "::", stringify!(__bits)) - ); -} -pub type __sigset_t = __sigset; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timeval { - pub tv_sec: time_t, - pub tv_usec: suseconds_t, -} -#[test] -fn bindgen_test_layout_timeval() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(timeval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timeval)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(timeval), "::", stringify!(tv_sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_usec) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(timeval), "::", stringify!(tv_usec)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timespec { - pub tv_sec: time_t, - pub tv_nsec: ::std::os::raw::c_long, -} -#[test] -fn bindgen_test_layout_timespec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(timespec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timespec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(timespec), "::", stringify!(tv_sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_nsec) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(timespec), "::", stringify!(tv_nsec)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct itimerspec { - pub it_interval: timespec, - pub it_value: timespec, -} -#[test] -fn bindgen_test_layout_itimerspec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(itimerspec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(itimerspec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).it_interval) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerspec), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).it_value) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(itimerspec), "::", stringify!(it_value)) - ); -} -pub type __fd_mask = ::std::os::raw::c_ulong; -pub type fd_mask = __fd_mask; -pub type sigset_t = __sigset_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fd_set { - pub __fds_bits: [__fd_mask; 16usize], -} -#[test] -fn bindgen_test_layout_fd_set() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(fd_set)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(fd_set)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fds_bits) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(fd_set), "::", stringify!(__fds_bits)) - ); -} -unsafe extern "C" { - pub fn pselect( - arg1: ::std::os::raw::c_int, - arg2: *mut fd_set, - arg3: *mut fd_set, - arg4: *mut fd_set, - arg5: *const timespec, - arg6: *const sigset_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn select( - arg1: ::std::os::raw::c_int, - arg2: *mut fd_set, - arg3: *mut fd_set, - arg4: *mut fd_set, - arg5: *mut timeval, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn ftruncate(arg1: ::std::os::raw::c_int, arg2: off_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn lseek(arg1: ::std::os::raw::c_int, arg2: off_t, arg3: ::std::os::raw::c_int) -> off_t; -} -unsafe extern "C" { - pub fn mmap( - arg1: *mut ::std::os::raw::c_void, - arg2: usize, - arg3: ::std::os::raw::c_int, - arg4: ::std::os::raw::c_int, - arg5: ::std::os::raw::c_int, - arg6: off_t, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn truncate(arg1: *const ::std::os::raw::c_char, arg2: off_t) -> ::std::os::raw::c_int; -} -pub type sig_atomic_t = ::std::os::raw::c_long; -#[repr(C)] -#[repr(align(16))] -#[derive(Debug, Copy, Clone)] -pub struct sigcontext { - pub sc_mask: __sigset, - pub sc_onstack: ::std::os::raw::c_long, - pub sc_rdi: ::std::os::raw::c_long, - pub sc_rsi: ::std::os::raw::c_long, - pub sc_rdx: ::std::os::raw::c_long, - pub sc_rcx: ::std::os::raw::c_long, - pub sc_r8: ::std::os::raw::c_long, - pub sc_r9: ::std::os::raw::c_long, - pub sc_rax: ::std::os::raw::c_long, - pub sc_rbx: ::std::os::raw::c_long, - pub sc_rbp: ::std::os::raw::c_long, - pub sc_r10: ::std::os::raw::c_long, - pub sc_r11: ::std::os::raw::c_long, - pub sc_r12: ::std::os::raw::c_long, - pub sc_r13: ::std::os::raw::c_long, - pub sc_r14: ::std::os::raw::c_long, - pub sc_r15: ::std::os::raw::c_long, - pub sc_trapno: ::std::os::raw::c_int, - pub sc_fs: ::std::os::raw::c_short, - pub sc_gs: ::std::os::raw::c_short, - pub sc_addr: ::std::os::raw::c_long, - pub sc_flags: ::std::os::raw::c_int, - pub sc_es: ::std::os::raw::c_short, - pub sc_ds: ::std::os::raw::c_short, - pub sc_err: ::std::os::raw::c_long, - pub sc_rip: ::std::os::raw::c_long, - pub sc_cs: ::std::os::raw::c_long, - pub sc_rflags: ::std::os::raw::c_long, - pub sc_rsp: ::std::os::raw::c_long, - pub sc_ss: ::std::os::raw::c_long, - pub sc_len: ::std::os::raw::c_long, - pub sc_fpformat: ::std::os::raw::c_long, - pub sc_ownedfp: ::std::os::raw::c_long, - pub sc_fpstate: [::std::os::raw::c_long; 64usize], - pub sc_fsbase: ::std::os::raw::c_long, - pub sc_gsbase: ::std::os::raw::c_long, - pub sc_xfpustate: ::std::os::raw::c_long, - pub sc_xfpustate_len: ::std::os::raw::c_long, - pub sc_spare: [::std::os::raw::c_long; 4usize], -} -#[test] -fn bindgen_test_layout_sigcontext() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 816usize, - concat!("Size of: ", stringify!(sigcontext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 16usize, - concat!("Alignment of ", stringify!(sigcontext)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_mask) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_mask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_onstack) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(sc_onstack) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_rdi) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_rdi)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_rsi) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_rsi)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_rdx) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_rdx)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_rcx) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_rcx)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_r8) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_r8)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_r9) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_r9)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_rax) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_rax)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_rbx) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_rbx)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_rbp) as usize - ptr as usize }, - 88usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_rbp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_r10) as usize - ptr as usize }, - 96usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_r10)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_r11) as usize - ptr as usize }, - 104usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_r11)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_r12) as usize - ptr as usize }, - 112usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_r12)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_r13) as usize - ptr as usize }, - 120usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_r13)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_r14) as usize - ptr as usize }, - 128usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_r14)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_r15) as usize - ptr as usize }, - 136usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_r15)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_trapno) as usize - ptr as usize }, - 144usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_trapno)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_fs) as usize - ptr as usize }, - 148usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_fs)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_gs) as usize - ptr as usize }, - 150usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_gs)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_addr) as usize - ptr as usize }, - 152usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_flags) as usize - ptr as usize }, - 160usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_es) as usize - ptr as usize }, - 164usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_es)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_ds) as usize - ptr as usize }, - 166usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_ds)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_err) as usize - ptr as usize }, - 168usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_err)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_rip) as usize - ptr as usize }, - 176usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_rip)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_cs) as usize - ptr as usize }, - 184usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_cs)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_rflags) as usize - ptr as usize }, - 192usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_rflags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_rsp) as usize - ptr as usize }, - 200usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_rsp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_ss) as usize - ptr as usize }, - 208usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_ss)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_len) as usize - ptr as usize }, - 216usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_fpformat) as usize - ptr as usize }, - 224usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(sc_fpformat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_ownedfp) as usize - ptr as usize }, - 232usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(sc_ownedfp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_fpstate) as usize - ptr as usize }, - 240usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(sc_fpstate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_fsbase) as usize - ptr as usize }, - 752usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_fsbase)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_gsbase) as usize - ptr as usize }, - 760usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_gsbase)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_xfpustate) as usize - ptr as usize }, - 768usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(sc_xfpustate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_xfpustate_len) as usize - ptr as usize }, - 776usize, - concat!( - "Offset of field: ", - stringify!(sigcontext), - "::", - stringify!(sc_xfpustate_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_spare) as usize - ptr as usize }, - 784usize, - concat!("Offset of field: ", stringify!(sigcontext), "::", stringify!(sc_spare)) - ); -} -pub type __sighandler_t = ::std::option::Option; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { - pub sival_int: ::std::os::raw::c_int, - pub sival_ptr: *mut ::std::os::raw::c_void, - pub sigval_int: ::std::os::raw::c_int, - pub sigval_ptr: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_sigval() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigval)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sival_int) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigval), "::", stringify!(sival_int)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sival_ptr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigval), "::", stringify!(sival_ptr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigval_int) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigval), "::", stringify!(sigval_int)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigval_ptr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigval), "::", stringify!(sigval_ptr)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { - pub sigev_notify: ::std::os::raw::c_int, - pub sigev_signo: ::std::os::raw::c_int, - pub sigev_value: sigval, - pub _sigev_un: sigevent__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigevent__bindgen_ty_1 { - pub _threadid: __lwpid_t, - pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1, - pub _kevent_flags: ::std::os::raw::c_ushort, - pub __spare__: [::std::os::raw::c_long; 8usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigevent__bindgen_ty_1__bindgen_ty_1 { - pub _function: ::std::option::Option, - pub _attribute: *mut *mut pthread_attr, -} -#[test] -fn bindgen_test_layout_sigevent__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sigevent__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigevent__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._function) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_function) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._attribute) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_attribute) - ) - ); -} -#[test] -fn bindgen_test_layout_sigevent__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(sigevent__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigevent__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._threadid) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_threadid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._sigev_thread) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_sigev_thread) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._kevent_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(_kevent_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__spare__) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent__bindgen_ty_1), - "::", - stringify!(__spare__) - ) - ); -} -#[test] -fn bindgen_test_layout_sigevent() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 80usize, - concat!("Size of: ", stringify!(sigevent)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigevent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigev_notify) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_notify) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigev_signo) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(sigevent), "::", stringify!(sigev_signo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigev_value) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sigevent), "::", stringify!(sigev_value)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._sigev_un) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(sigevent), "::", stringify!(_sigev_un)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __siginfo { - pub si_signo: ::std::os::raw::c_int, - pub si_errno: ::std::os::raw::c_int, - pub si_code: ::std::os::raw::c_int, - pub si_pid: __pid_t, - pub si_uid: __uid_t, - pub si_status: ::std::os::raw::c_int, - pub si_addr: *mut ::std::os::raw::c_void, - pub si_value: sigval, - pub _reason: __siginfo__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union __siginfo__bindgen_ty_1 { - pub _fault: __siginfo__bindgen_ty_1__bindgen_ty_1, - pub _timer: __siginfo__bindgen_ty_1__bindgen_ty_2, - pub _mesgq: __siginfo__bindgen_ty_1__bindgen_ty_3, - pub _poll: __siginfo__bindgen_ty_1__bindgen_ty_4, - pub _capsicum: __siginfo__bindgen_ty_1__bindgen_ty_5, - pub __spare__: __siginfo__bindgen_ty_1__bindgen_ty_6, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __siginfo__bindgen_ty_1__bindgen_ty_1 { - pub _trapno: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___siginfo__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit<__siginfo__bindgen_ty_1__bindgen_ty_1> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__siginfo__bindgen_ty_1__bindgen_ty_1>(), - 4usize, - concat!("Size of: ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<__siginfo__bindgen_ty_1__bindgen_ty_1>(), - 4usize, - concat!("Alignment of ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._trapno) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(_trapno) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __siginfo__bindgen_ty_1__bindgen_ty_2 { - pub _timerid: ::std::os::raw::c_int, - pub _overrun: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___siginfo__bindgen_ty_1__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit<__siginfo__bindgen_ty_1__bindgen_ty_2> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__siginfo__bindgen_ty_1__bindgen_ty_2>(), - 8usize, - concat!("Size of: ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::<__siginfo__bindgen_ty_1__bindgen_ty_2>(), - 4usize, - concat!("Alignment of ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._timerid) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(_timerid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._overrun) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(_overrun) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __siginfo__bindgen_ty_1__bindgen_ty_3 { - pub _mqd: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___siginfo__bindgen_ty_1__bindgen_ty_3() { - const UNINIT: ::std::mem::MaybeUninit<__siginfo__bindgen_ty_1__bindgen_ty_3> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__siginfo__bindgen_ty_1__bindgen_ty_3>(), - 4usize, - concat!("Size of: ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_3)) - ); - assert_eq!( - ::std::mem::align_of::<__siginfo__bindgen_ty_1__bindgen_ty_3>(), - 4usize, - concat!("Alignment of ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_3)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._mqd) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(_mqd) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __siginfo__bindgen_ty_1__bindgen_ty_4 { - pub _band: ::std::os::raw::c_long, -} -#[test] -fn bindgen_test_layout___siginfo__bindgen_ty_1__bindgen_ty_4() { - const UNINIT: ::std::mem::MaybeUninit<__siginfo__bindgen_ty_1__bindgen_ty_4> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__siginfo__bindgen_ty_1__bindgen_ty_4>(), - 8usize, - concat!("Size of: ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_4)) - ); - assert_eq!( - ::std::mem::align_of::<__siginfo__bindgen_ty_1__bindgen_ty_4>(), - 8usize, - concat!("Alignment of ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_4)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._band) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1__bindgen_ty_4), - "::", - stringify!(_band) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __siginfo__bindgen_ty_1__bindgen_ty_5 { - pub _syscall: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___siginfo__bindgen_ty_1__bindgen_ty_5() { - const UNINIT: ::std::mem::MaybeUninit<__siginfo__bindgen_ty_1__bindgen_ty_5> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__siginfo__bindgen_ty_1__bindgen_ty_5>(), - 4usize, - concat!("Size of: ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_5)) - ); - assert_eq!( - ::std::mem::align_of::<__siginfo__bindgen_ty_1__bindgen_ty_5>(), - 4usize, - concat!("Alignment of ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_5)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._syscall) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1__bindgen_ty_5), - "::", - stringify!(_syscall) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __siginfo__bindgen_ty_1__bindgen_ty_6 { - pub __spare1__: ::std::os::raw::c_long, - pub __spare2__: [::std::os::raw::c_int; 7usize], -} -#[test] -fn bindgen_test_layout___siginfo__bindgen_ty_1__bindgen_ty_6() { - const UNINIT: ::std::mem::MaybeUninit<__siginfo__bindgen_ty_1__bindgen_ty_6> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__siginfo__bindgen_ty_1__bindgen_ty_6>(), - 40usize, - concat!("Size of: ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_6)) - ); - assert_eq!( - ::std::mem::align_of::<__siginfo__bindgen_ty_1__bindgen_ty_6>(), - 8usize, - concat!("Alignment of ", stringify!(__siginfo__bindgen_ty_1__bindgen_ty_6)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__spare1__) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1__bindgen_ty_6), - "::", - stringify!(__spare1__) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__spare2__) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1__bindgen_ty_6), - "::", - stringify!(__spare2__) - ) - ); -} -#[test] -fn bindgen_test_layout___siginfo__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit<__siginfo__bindgen_ty_1> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__siginfo__bindgen_ty_1>(), - 40usize, - concat!("Size of: ", stringify!(__siginfo__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<__siginfo__bindgen_ty_1>(), - 8usize, - concat!("Alignment of ", stringify!(__siginfo__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._fault) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1), - "::", - stringify!(_fault) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._timer) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1), - "::", - stringify!(_timer) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._mesgq) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1), - "::", - stringify!(_mesgq) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._poll) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1), - "::", - stringify!(_poll) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._capsicum) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1), - "::", - stringify!(_capsicum) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__spare__) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__siginfo__bindgen_ty_1), - "::", - stringify!(__spare__) - ) - ); -} -#[test] -fn bindgen_test_layout___siginfo() { - const UNINIT: ::std::mem::MaybeUninit<__siginfo> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__siginfo>(), - 80usize, - concat!("Size of: ", stringify!(__siginfo)) - ); - assert_eq!( - ::std::mem::align_of::<__siginfo>(), - 8usize, - concat!("Alignment of ", stringify!(__siginfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_signo) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_signo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_errno) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_errno)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_code) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_code)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_pid) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_pid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_uid) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_status) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_status)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_addr) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_value) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_value)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._reason) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(_reason)) - ); -} -pub type siginfo_t = __siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigaction { - pub __sigaction_u: sigaction__bindgen_ty_1, - pub sa_flags: ::std::os::raw::c_int, - pub sa_mask: sigset_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigaction__bindgen_ty_1 { - pub __sa_handler: ::std::option::Option, - pub __sa_sigaction: ::std::option::Option< - unsafe extern "C" fn(arg1: ::std::os::raw::c_int, arg2: *mut __siginfo, arg3: *mut ::std::os::raw::c_void), - >, -} -#[test] -fn bindgen_test_layout_sigaction__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigaction__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaction__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sa_handler) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction__bindgen_ty_1), - "::", - stringify!(__sa_handler) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sa_sigaction) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction__bindgen_ty_1), - "::", - stringify!(__sa_sigaction) - ) - ); -} -#[test] -fn bindgen_test_layout_sigaction() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(sigaction)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaction)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sigaction_u) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(__sigaction_u) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_flags) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sigaction), "::", stringify!(sa_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_mask) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(sigaction), "::", stringify!(sa_mask)) - ); -} -pub type sig_t = __sighandler_t; -pub type __siginfohandler_t = ::std::option::Option< - unsafe extern "C" fn(arg1: ::std::os::raw::c_int, arg2: *mut __siginfo, arg3: *mut ::std::os::raw::c_void), ->; -pub type stack_t = sigaltstack; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigaltstack { - pub ss_sp: *mut ::std::os::raw::c_void, - pub ss_size: __size_t, - pub ss_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sigaltstack() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(sigaltstack)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaltstack)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_sp) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigaltstack), "::", stringify!(ss_sp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_size) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sigaltstack), "::", stringify!(ss_size)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_flags) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(sigaltstack), "::", stringify!(ss_flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigvec { - pub sv_handler: __sighandler_t, - pub sv_mask: ::std::os::raw::c_int, - pub sv_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sigvec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sigvec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigvec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sv_handler) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigvec), "::", stringify!(sv_handler)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sv_mask) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sigvec), "::", stringify!(sv_mask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sv_flags) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(sigvec), "::", stringify!(sv_flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigstack { - pub ss_sp: *mut ::std::os::raw::c_void, - pub ss_onstack: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sigstack() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sigstack)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigstack)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_sp) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigstack), "::", stringify!(ss_sp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_onstack) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sigstack), "::", stringify!(ss_onstack)) - ); -} -unsafe extern "C" { - pub fn signal(arg1: ::std::os::raw::c_int, arg2: __sighandler_t) -> __sighandler_t; -} -pub type counter_u64_t = *mut u64; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _cpuset { - pub __bits: [::std::os::raw::c_long; 16usize], -} -#[test] -fn bindgen_test_layout__cpuset() { - const UNINIT: ::std::mem::MaybeUninit<_cpuset> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_cpuset>(), - 128usize, - concat!("Size of: ", stringify!(_cpuset)) - ); - assert_eq!( - ::std::mem::align_of::<_cpuset>(), - 8usize, - concat!("Alignment of ", stringify!(_cpuset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__bits) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(_cpuset), "::", stringify!(__bits)) - ); -} -pub type cpuset_t = _cpuset; -unsafe extern "C" { - pub fn __cpuset_alloc(set_size: usize) -> *mut cpuset_t; -} -unsafe extern "C" { - pub fn __cpuset_free(ptr: *mut cpuset_t); -} -unsafe extern "C" { - pub fn cpuset(arg1: *mut cpusetid_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn cpuset_setid(arg1: cpuwhich_t, arg2: id_t, arg3: cpusetid_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn cpuset_getid(arg1: cpulevel_t, arg2: cpuwhich_t, arg3: id_t, arg4: *mut cpusetid_t) - -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn cpuset_getaffinity( - arg1: cpulevel_t, - arg2: cpuwhich_t, - arg3: id_t, - arg4: usize, - arg5: *mut cpuset_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn cpuset_setaffinity( - arg1: cpulevel_t, - arg2: cpuwhich_t, - arg3: id_t, - arg4: usize, - arg5: *const cpuset_t, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct epoch_context { - pub data: [*mut ::std::os::raw::c_void; 2usize], -} -#[test] -fn bindgen_test_layout_epoch_context() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(epoch_context)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(epoch_context)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(epoch_context), "::", stringify!(data)) - ); -} -pub type epoch_context_t = *mut epoch_context; -pub type epoch_callback_t = ::std::option::Option; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct lock_object { - pub lo_name: *const ::std::os::raw::c_char, - pub lo_flags: u_int, - pub lo_data: u_int, - pub lo_witness: *mut witness, -} -#[test] -fn bindgen_test_layout_lock_object() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(lock_object)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(lock_object)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lo_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(lock_object), "::", stringify!(lo_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lo_flags) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(lock_object), "::", stringify!(lo_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lo_data) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(lock_object), "::", stringify!(lo_data)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lo_witness) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(lock_object), - "::", - stringify!(lo_witness) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mtx { - pub lock_object: lock_object, - pub mtx_lock: usize, -} -#[test] -fn bindgen_test_layout_mtx() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(mtx)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(mtx)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lock_object) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(mtx), "::", stringify!(lock_object)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mtx_lock) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(mtx), "::", stringify!(mtx_lock)) - ); -} -#[repr(C)] -#[repr(align(64))] -#[derive(Debug, Copy, Clone)] -pub struct mtx_padalign { - pub lock_object: lock_object, - pub mtx_lock: usize, -} -#[test] -fn bindgen_test_layout_mtx_padalign() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(mtx_padalign)) - ); - assert_eq!( - ::std::mem::align_of::(), - 64usize, - concat!("Alignment of ", stringify!(mtx_padalign)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lock_object) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mtx_padalign), - "::", - stringify!(lock_object) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mtx_lock) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(mtx_padalign), - "::", - stringify!(mtx_lock) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct malloc_type_stats { - pub mts_memalloced: u64, - pub mts_memfreed: u64, - pub mts_numallocs: u64, - pub mts_numfrees: u64, - pub mts_size: u64, - pub _mts_reserved1: u64, - pub _mts_reserved2: u64, - pub _mts_reserved3: u64, -} -#[test] -fn bindgen_test_layout_malloc_type_stats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(malloc_type_stats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(malloc_type_stats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mts_memalloced) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stats), - "::", - stringify!(mts_memalloced) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mts_memfreed) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stats), - "::", - stringify!(mts_memfreed) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mts_numallocs) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stats), - "::", - stringify!(mts_numallocs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mts_numfrees) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stats), - "::", - stringify!(mts_numfrees) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mts_size) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stats), - "::", - stringify!(mts_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._mts_reserved1) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stats), - "::", - stringify!(_mts_reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._mts_reserved2) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stats), - "::", - stringify!(_mts_reserved2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._mts_reserved3) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stats), - "::", - stringify!(_mts_reserved3) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct malloc_type_internal { - pub mti_probes: [u32; 2usize], - pub mti_zone: u_char, - pub mti_stats: *mut malloc_type_stats, - pub mti_spare: [u_long; 8usize], -} -#[test] -fn bindgen_test_layout_malloc_type_internal() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(malloc_type_internal)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(malloc_type_internal)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mti_probes) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_internal), - "::", - stringify!(mti_probes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mti_zone) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_internal), - "::", - stringify!(mti_zone) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mti_stats) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_internal), - "::", - stringify!(mti_stats) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mti_spare) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_internal), - "::", - stringify!(mti_spare) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct malloc_type { - pub ks_next: *mut malloc_type, - pub ks_version: u_long, - pub ks_shortdesc: *const ::std::os::raw::c_char, - pub ks_mti: malloc_type_internal, -} -#[test] -fn bindgen_test_layout_malloc_type() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 112usize, - concat!("Size of: ", stringify!(malloc_type)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(malloc_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ks_next) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(malloc_type), "::", stringify!(ks_next)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ks_version) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(malloc_type), - "::", - stringify!(ks_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ks_shortdesc) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(malloc_type), - "::", - stringify!(ks_shortdesc) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ks_mti) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(malloc_type), "::", stringify!(ks_mti)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct malloc_type_stream_header { - pub mtsh_version: u32, - pub mtsh_maxcpus: u32, - pub mtsh_count: u32, - pub _mtsh_pad: u32, -} -#[test] -fn bindgen_test_layout_malloc_type_stream_header() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(malloc_type_stream_header)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(malloc_type_stream_header)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mtsh_version) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stream_header), - "::", - stringify!(mtsh_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mtsh_maxcpus) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stream_header), - "::", - stringify!(mtsh_maxcpus) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mtsh_count) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stream_header), - "::", - stringify!(mtsh_count) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._mtsh_pad) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_stream_header), - "::", - stringify!(_mtsh_pad) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct malloc_type_header { - pub mth_name: [::std::os::raw::c_char; 32usize], -} -#[test] -fn bindgen_test_layout_malloc_type_header() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(malloc_type_header)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(malloc_type_header)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mth_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(malloc_type_header), - "::", - stringify!(mth_name) - ) - ); -} -pub type va_list = __va_list; -pub type int_least8_t = __int_least8_t; -pub type int_least16_t = __int_least16_t; -pub type int_least32_t = __int_least32_t; -pub type int_least64_t = __int_least64_t; -pub type uint_least8_t = __uint_least8_t; -pub type uint_least16_t = __uint_least16_t; -pub type uint_least32_t = __uint_least32_t; -pub type uint_least64_t = __uint_least64_t; -pub type int_fast8_t = __int_fast8_t; -pub type int_fast16_t = __int_fast16_t; -pub type int_fast32_t = __int_fast32_t; -pub type int_fast64_t = __int_fast64_t; -pub type uint_fast8_t = __uint_fast8_t; -pub type uint_fast16_t = __uint_fast16_t; -pub type uint_fast32_t = __uint_fast32_t; -pub type uint_fast64_t = __uint_fast64_t; -pub type fpos_t = __off_t; -pub type rsize_t = usize; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __sbuf { - pub _base: *mut ::std::os::raw::c_uchar, - pub _size: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___sbuf() { - const UNINIT: ::std::mem::MaybeUninit<__sbuf> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__sbuf>(), - 16usize, - concat!("Size of: ", stringify!(__sbuf)) - ); - assert_eq!( - ::std::mem::align_of::<__sbuf>(), - 8usize, - concat!("Alignment of ", stringify!(__sbuf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._base) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(__sbuf), "::", stringify!(_base)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._size) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(__sbuf), "::", stringify!(_size)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sFILE { - pub _p: *mut ::std::os::raw::c_uchar, - pub _r: ::std::os::raw::c_int, - pub _w: ::std::os::raw::c_int, - pub _flags: ::std::os::raw::c_short, - pub _file: ::std::os::raw::c_short, - pub _bf: __sbuf, - pub _lbfsize: ::std::os::raw::c_int, - pub _cookie: *mut ::std::os::raw::c_void, - pub _close: ::std::option::Option ::std::os::raw::c_int>, - pub _read: ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut ::std::os::raw::c_char, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int, - >, - pub _seek: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: fpos_t, arg3: ::std::os::raw::c_int) -> fpos_t, - >, - pub _write: ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut ::std::os::raw::c_void, - arg2: *const ::std::os::raw::c_char, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int, - >, - pub _ub: __sbuf, - pub _up: *mut ::std::os::raw::c_uchar, - pub _ur: ::std::os::raw::c_int, - pub _ubuf: [::std::os::raw::c_uchar; 3usize], - pub _nbuf: [::std::os::raw::c_uchar; 1usize], - pub _lb: __sbuf, - pub _blksize: ::std::os::raw::c_int, - pub _offset: fpos_t, - pub _fl_mutex: *mut pthread_mutex, - pub _fl_owner: *mut pthread, - pub _fl_count: ::std::os::raw::c_int, - pub _orientation: ::std::os::raw::c_int, - pub _mbstate: __mbstate_t, - pub _flags2: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___sFILE() { - const UNINIT: ::std::mem::MaybeUninit<__sFILE> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__sFILE>(), - 312usize, - concat!("Size of: ", stringify!(__sFILE)) - ); - assert_eq!( - ::std::mem::align_of::<__sFILE>(), - 8usize, - concat!("Alignment of ", stringify!(__sFILE)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._p) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_p)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._r) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_r)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._w) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_w)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._flags) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._file) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_file)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._bf) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_bf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._lbfsize) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_lbfsize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._cookie) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_cookie)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._close) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_close)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._read) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_read)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._seek) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_seek)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._write) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_write)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ub) as usize - ptr as usize }, - 88usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_ub)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._up) as usize - ptr as usize }, - 104usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_up)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ur) as usize - ptr as usize }, - 112usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_ur)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ubuf) as usize - ptr as usize }, - 116usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_ubuf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._nbuf) as usize - ptr as usize }, - 119usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_nbuf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._lb) as usize - ptr as usize }, - 120usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_lb)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._blksize) as usize - ptr as usize }, - 136usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_blksize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._offset) as usize - ptr as usize }, - 144usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_offset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._fl_mutex) as usize - ptr as usize }, - 152usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_fl_mutex)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._fl_owner) as usize - ptr as usize }, - 160usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_fl_owner)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._fl_count) as usize - ptr as usize }, - 168usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_fl_count)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._orientation) as usize - ptr as usize }, - 172usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_orientation)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._mbstate) as usize - ptr as usize }, - 176usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_mbstate)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._flags2) as usize - ptr as usize }, - 304usize, - concat!("Offset of field: ", stringify!(__sFILE), "::", stringify!(_flags2)) - ); -} -pub type FILE = __sFILE; -unsafe extern "C" { - pub static mut __stdinp: *mut FILE; -} -unsafe extern "C" { - pub static mut __stdoutp: *mut FILE; -} -unsafe extern "C" { - pub static mut __stderrp: *mut FILE; -} -unsafe extern "C" { - pub fn clearerr(arg1: *mut FILE); -} -unsafe extern "C" { - pub fn fclose(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn feof(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn ferror(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fflush(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fgetc(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fgetpos(arg1: *mut FILE, arg2: *mut fpos_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fgets( - arg1: *mut ::std::os::raw::c_char, - arg2: ::std::os::raw::c_int, - arg3: *mut FILE, - ) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn fopen(arg1: *const ::std::os::raw::c_char, arg2: *const ::std::os::raw::c_char) -> *mut FILE; -} -unsafe extern "C" { - pub fn fprintf(arg1: *mut FILE, arg2: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fputc(arg1: ::std::os::raw::c_int, arg2: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fputs(arg1: *const ::std::os::raw::c_char, arg2: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fread( - arg1: *mut ::std::os::raw::c_void, - arg2: ::std::os::raw::c_ulong, - arg3: ::std::os::raw::c_ulong, - arg4: *mut FILE, - ) -> ::std::os::raw::c_ulong; -} -unsafe extern "C" { - pub fn freopen( - arg1: *const ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - arg3: *mut FILE, - ) -> *mut FILE; -} -unsafe extern "C" { - pub fn fscanf(arg1: *mut FILE, arg2: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fseek(arg1: *mut FILE, arg2: ::std::os::raw::c_long, arg3: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fsetpos(arg1: *mut FILE, arg2: *const fpos_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn ftell(arg1: *mut FILE) -> ::std::os::raw::c_long; -} -unsafe extern "C" { - pub fn fwrite( - arg1: *const ::std::os::raw::c_void, - arg2: ::std::os::raw::c_ulong, - arg3: ::std::os::raw::c_ulong, - arg4: *mut FILE, - ) -> ::std::os::raw::c_ulong; -} -unsafe extern "C" { - pub fn getc(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getchar() -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn gets_s(arg1: *mut ::std::os::raw::c_char, arg2: rsize_t) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn perror(arg1: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn printf(arg1: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn putc(arg1: ::std::os::raw::c_int, arg2: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn putchar(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn puts(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn remove(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn rename(arg1: *const ::std::os::raw::c_char, arg2: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn rewind(arg1: *mut FILE); -} -unsafe extern "C" { - pub fn scanf(arg1: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn setbuf(arg1: *mut FILE, arg2: *mut ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn setvbuf( - arg1: *mut FILE, - arg2: *mut ::std::os::raw::c_char, - arg3: ::std::os::raw::c_int, - arg4: usize, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn sprintf( - arg1: *mut ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - ... - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn sscanf( - arg1: *const ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - ... - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn tmpfile() -> *mut FILE; -} -unsafe extern "C" { - pub fn tmpnam(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn ungetc(arg1: ::std::os::raw::c_int, arg2: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn vfprintf( - arg1: *mut FILE, - arg2: *const ::std::os::raw::c_char, - arg3: *mut __va_list_tag, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn vprintf(arg1: *const ::std::os::raw::c_char, arg2: *mut __va_list_tag) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn vsprintf( - arg1: *mut ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - arg3: *mut __va_list_tag, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn snprintf( - arg1: *mut ::std::os::raw::c_char, - arg2: ::std::os::raw::c_ulong, - arg3: *const ::std::os::raw::c_char, - ... - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn vsnprintf( - arg1: *mut ::std::os::raw::c_char, - arg2: ::std::os::raw::c_ulong, - arg3: *const ::std::os::raw::c_char, - arg4: *mut __va_list_tag, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn vfscanf( - arg1: *mut FILE, - arg2: *const ::std::os::raw::c_char, - arg3: *mut __va_list_tag, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn vscanf(arg1: *const ::std::os::raw::c_char, arg2: *mut __va_list_tag) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn vsscanf( - arg1: *const ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - arg3: *mut __va_list_tag, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn ctermid(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn fdopen(arg1: ::std::os::raw::c_int, arg2: *const ::std::os::raw::c_char) -> *mut FILE; -} -unsafe extern "C" { - pub fn fileno(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pclose(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn popen(arg1: *const ::std::os::raw::c_char, arg2: *const ::std::os::raw::c_char) -> *mut FILE; -} -unsafe extern "C" { - pub fn ftrylockfile(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn flockfile(arg1: *mut FILE); -} -unsafe extern "C" { - pub fn funlockfile(arg1: *mut FILE); -} -unsafe extern "C" { - pub fn getc_unlocked(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getchar_unlocked() -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn putc_unlocked(arg1: ::std::os::raw::c_int, arg2: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn putchar_unlocked(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn clearerr_unlocked(arg1: *mut FILE); -} -unsafe extern "C" { - pub fn feof_unlocked(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn ferror_unlocked(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fflush_unlocked(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fileno_unlocked(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fputc_unlocked(arg1: ::std::os::raw::c_int, arg2: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fputs_unlocked(arg1: *const ::std::os::raw::c_char, arg2: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fread_unlocked(arg1: *mut ::std::os::raw::c_void, arg2: usize, arg3: usize, arg4: *mut FILE) -> usize; -} -unsafe extern "C" { - pub fn fwrite_unlocked(arg1: *const ::std::os::raw::c_void, arg2: usize, arg3: usize, arg4: *mut FILE) -> usize; -} -unsafe extern "C" { - pub fn fseeko(arg1: *mut FILE, arg2: __off_t, arg3: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn ftello(arg1: *mut FILE) -> __off_t; -} -unsafe extern "C" { - pub fn getw(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn putw(arg1: ::std::os::raw::c_int, arg2: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn tempnam( - arg1: *const ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn fmemopen(arg1: *mut ::std::os::raw::c_void, arg2: usize, arg3: *const ::std::os::raw::c_char) -> *mut FILE; -} -unsafe extern "C" { - pub fn getdelim( - arg1: *mut *mut ::std::os::raw::c_char, - arg2: *mut usize, - arg3: ::std::os::raw::c_int, - arg4: *mut FILE, - ) -> isize; -} -unsafe extern "C" { - pub fn open_memstream(arg1: *mut *mut ::std::os::raw::c_char, arg2: *mut usize) -> *mut FILE; -} -unsafe extern "C" { - pub fn renameat( - arg1: ::std::os::raw::c_int, - arg2: *const ::std::os::raw::c_char, - arg3: ::std::os::raw::c_int, - arg4: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn vdprintf( - arg1: ::std::os::raw::c_int, - arg2: *const ::std::os::raw::c_char, - arg3: *mut __va_list_tag, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getline(arg1: *mut *mut ::std::os::raw::c_char, arg2: *mut usize, arg3: *mut FILE) -> isize; -} -unsafe extern "C" { - pub fn dprintf(arg1: ::std::os::raw::c_int, arg2: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn asprintf( - arg1: *mut *mut ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - ... - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn ctermid_r(arg1: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn fcloseall(); -} -unsafe extern "C" { - pub fn fdclose(arg1: *mut FILE, arg2: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn fgetln(arg1: *mut FILE, arg2: *mut usize) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn fmtcheck( - arg1: *const ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - ) -> *const ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn fpurge(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn setbuffer(arg1: *mut FILE, arg2: *mut ::std::os::raw::c_char, arg3: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn setlinebuf(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn vasprintf( - arg1: *mut *mut ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - arg3: *mut __va_list_tag, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub static sys_nerr: ::std::os::raw::c_int; -} -unsafe extern "C" { - pub static sys_errlist: [*const ::std::os::raw::c_char; 0usize]; -} -unsafe extern "C" { - pub fn funopen( - arg1: *const ::std::os::raw::c_void, - arg2: ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut ::std::os::raw::c_char, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int, - >, - arg3: ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut ::std::os::raw::c_void, - arg2: *const ::std::os::raw::c_char, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int, - >, - arg4: ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut ::std::os::raw::c_void, - arg2: fpos_t, - arg3: ::std::os::raw::c_int, - ) -> fpos_t, - >, - arg5: ::std::option::Option ::std::os::raw::c_int>, - ) -> *mut FILE; -} -pub type cookie_read_function_t = ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut ::std::os::raw::c_char, - arg3: usize, - ) -> __ssize_t, ->; -pub type cookie_write_function_t = ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut ::std::os::raw::c_void, - arg2: *const ::std::os::raw::c_char, - arg3: usize, - ) -> __ssize_t, ->; -pub type cookie_seek_function_t = ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut off64_t, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int, ->; -pub type cookie_close_function_t = - ::std::option::Option ::std::os::raw::c_int>; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cookie_io_functions_t { - pub read: cookie_read_function_t, - pub write: cookie_write_function_t, - pub seek: cookie_seek_function_t, - pub close: cookie_close_function_t, -} -#[test] -fn bindgen_test_layout_cookie_io_functions_t() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(cookie_io_functions_t)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(cookie_io_functions_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).read) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(cookie_io_functions_t), - "::", - stringify!(read) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).write) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(cookie_io_functions_t), - "::", - stringify!(write) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seek) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(cookie_io_functions_t), - "::", - stringify!(seek) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).close) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(cookie_io_functions_t), - "::", - stringify!(close) - ) - ); -} -unsafe extern "C" { - pub fn fopencookie( - arg1: *mut ::std::os::raw::c_void, - arg2: *const ::std::os::raw::c_char, - arg3: cookie_io_functions_t, - ) -> *mut FILE; -} -unsafe extern "C" { - pub fn __srget(arg1: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn __swbuf(arg1: ::std::os::raw::c_int, arg2: *mut FILE) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub static mut __isthreaded: ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct FreeBSD_nvlist { - _unused: [u8; 0], -} -pub type FreeBSD_nvlist_t = FreeBSD_nvlist; -unsafe extern "C" { - pub fn FreeBSD_nvlist_create(flags: ::std::os::raw::c_int) -> *mut FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_destroy(nvl: *mut FreeBSD_nvlist_t); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_error(nvl: *const FreeBSD_nvlist_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_empty(nvl: *const FreeBSD_nvlist_t) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_flags(nvl: *const FreeBSD_nvlist_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_set_error(nvl: *mut FreeBSD_nvlist_t, error: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_clone(nvl: *const FreeBSD_nvlist_t) -> *mut FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_dump(nvl: *const FreeBSD_nvlist_t, fd: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_fdump(nvl: *const FreeBSD_nvlist_t, fp: *mut FILE); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_size(nvl: *const FreeBSD_nvlist_t) -> usize; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_pack(nvl: *const FreeBSD_nvlist_t, sizep: *mut usize) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_unpack( - buf: *const ::std::os::raw::c_void, - size: usize, - flags: ::std::os::raw::c_int, - ) -> *mut FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_send(sock: ::std::os::raw::c_int, nvl: *const FreeBSD_nvlist_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_recv(sock: ::std::os::raw::c_int, flags: ::std::os::raw::c_int) -> *mut FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_xfer( - sock: ::std::os::raw::c_int, - nvl: *mut FreeBSD_nvlist_t, - flags: ::std::os::raw::c_int, - ) -> *mut FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_next( - nvl: *const FreeBSD_nvlist_t, - typep: *mut ::std::os::raw::c_int, - cookiep: *mut *mut ::std::os::raw::c_void, - ) -> *const ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_parent( - nvl: *const FreeBSD_nvlist_t, - cookiep: *mut *mut ::std::os::raw::c_void, - ) -> *const FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_array_next(nvl: *const FreeBSD_nvlist_t) -> *const FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_in_array(nvl: *const FreeBSD_nvlist_t) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_pararr( - nvl: *const FreeBSD_nvlist_t, - cookiep: *mut *mut ::std::os::raw::c_void, - ) -> *const FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists(nvl: *const FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_type( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - type_: ::std::os::raw::c_int, - ) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_null(nvl: *const FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_bool(nvl: *const FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_number(nvl: *const FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_string(nvl: *const FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_nvlist(nvl: *const FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_binary(nvl: *const FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_bool_array(nvl: *const FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_number_array( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - ) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_string_array( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - ) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_nvlist_array( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - ) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_descriptor(nvl: *const FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_exists_descriptor_array( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - ) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_null(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_bool(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char, value: bool); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_number(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char, value: u64); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_string( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *const ::std::os::raw::c_char, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_stringf( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - valuefmt: *const ::std::os::raw::c_char, - ... - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_stringv( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - valuefmt: *const ::std::os::raw::c_char, - valueap: *mut __va_list_tag, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_nvlist( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *const FreeBSD_nvlist_t, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_binary( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *const ::std::os::raw::c_void, - size: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_bool_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *const bool, - nitems: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_number_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *const u64, - nitems: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_string_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *const *const ::std::os::raw::c_char, - nitems: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_nvlist_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *const *const FreeBSD_nvlist_t, - nitems: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_descriptor( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: ::std::os::raw::c_int, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_add_descriptor_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *const ::std::os::raw::c_int, - nitems: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_append_bool_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: bool, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_append_number_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: u64, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_append_string_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *const ::std::os::raw::c_char, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_append_nvlist_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *const FreeBSD_nvlist_t, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_append_descriptor_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: ::std::os::raw::c_int, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_move_string( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *mut ::std::os::raw::c_char, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_move_nvlist( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *mut FreeBSD_nvlist_t, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_move_binary( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *mut ::std::os::raw::c_void, - size: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_move_bool_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *mut bool, - nitems: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_move_string_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *mut *mut ::std::os::raw::c_char, - nitems: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_move_nvlist_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *mut *mut FreeBSD_nvlist_t, - nitems: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_move_number_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *mut u64, - nitems: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_move_descriptor( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: ::std::os::raw::c_int, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_move_descriptor_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - value: *mut ::std::os::raw::c_int, - nitems: usize, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_bool(nvl: *const FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_number(nvl: *const FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> u64; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_string( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - ) -> *const ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_nvlist( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - ) -> *const FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_binary( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - sizep: *mut usize, - ) -> *const ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_bool_array( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - nitemsp: *mut usize, - ) -> *const bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_number_array( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - nitemsp: *mut usize, - ) -> *const u64; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_string_array( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - nitemsp: *mut usize, - ) -> *const *const ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_nvlist_array( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - nitemsp: *mut usize, - ) -> *const *const FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_descriptor( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_get_descriptor_array( - nvl: *const FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - nitemsp: *mut usize, - ) -> *const ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_take_bool(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_take_number(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char) -> u64; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_take_string( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_take_nvlist( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - ) -> *mut FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_take_binary( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - sizep: *mut usize, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_take_bool_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - nitemsp: *mut usize, - ) -> *mut bool; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_take_number_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - nitemsp: *mut usize, - ) -> *mut u64; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_take_string_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - nitemsp: *mut usize, - ) -> *mut *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_take_nvlist_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - nitemsp: *mut usize, - ) -> *mut *mut FreeBSD_nvlist_t; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_take_descriptor( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_take_descriptor_array( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - nitemsp: *mut usize, - ) -> *mut ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_type( - nvl: *mut FreeBSD_nvlist_t, - name: *const ::std::os::raw::c_char, - type_: ::std::os::raw::c_int, - ); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_null(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_bool(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_number(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_string(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_nvlist(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_binary(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_bool_array(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_number_array(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_string_array(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_nvlist_array(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_binary_array(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_descriptor(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn FreeBSD_nvlist_free_descriptor_array(nvl: *mut FreeBSD_nvlist_t, name: *const ::std::os::raw::c_char); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __hack { - _unused: [u8; 0], -} -unsafe extern "C" { - pub fn sysctl( - arg1: *const ::std::os::raw::c_int, - arg2: ::std::os::raw::c_uint, - arg3: *mut ::std::os::raw::c_void, - arg4: *mut usize, - arg5: *const ::std::os::raw::c_void, - arg6: usize, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn sysctlbyname( - arg1: *const ::std::os::raw::c_char, - arg2: *mut ::std::os::raw::c_void, - arg3: *mut usize, - arg4: *const ::std::os::raw::c_void, - arg5: usize, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn sysctlnametomib( - arg1: *const ::std::os::raw::c_char, - arg2: *mut ::std::os::raw::c_int, - arg3: *mut usize, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct lock_list_entry { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct thread { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct lock_class { - pub lc_name: *const ::std::os::raw::c_char, - pub lc_flags: u_int, - pub lc_assert: ::std::option::Option, - pub lc_ddb_show: ::std::option::Option, - pub lc_lock: ::std::option::Option, - pub lc_owner: ::std::option::Option< - unsafe extern "C" fn(lock: *const lock_object, owner: *mut *mut thread) -> ::std::os::raw::c_int, - >, - pub lc_unlock: ::std::option::Option usize>, -} -#[test] -fn bindgen_test_layout_lock_class() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(lock_class)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(lock_class)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lc_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(lock_class), "::", stringify!(lc_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lc_flags) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(lock_class), "::", stringify!(lc_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lc_assert) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(lock_class), "::", stringify!(lc_assert)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lc_ddb_show) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(lock_class), - "::", - stringify!(lc_ddb_show) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lc_lock) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(lock_class), "::", stringify!(lc_lock)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lc_owner) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(lock_class), "::", stringify!(lc_owner)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lc_unlock) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(lock_class), "::", stringify!(lc_unlock)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sx { - pub lock_object: lock_object, - pub sx_lock: usize, -} -#[test] -fn bindgen_test_layout_sx() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(sx)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sx)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lock_object) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sx), "::", stringify!(lock_object)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sx_lock) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(sx), "::", stringify!(sx_lock)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rmpriolist { - pub lh_first: *mut rm_priotracker, -} -#[test] -fn bindgen_test_layout_rmpriolist() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(rmpriolist)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rmpriolist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lh_first) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rmpriolist), "::", stringify!(lh_first)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rm_queue { - pub rmq_next: *mut rm_queue, - pub rmq_prev: *mut rm_queue, -} -#[test] -fn bindgen_test_layout_rm_queue() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(rm_queue)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rm_queue)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmq_next) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rm_queue), "::", stringify!(rmq_next)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmq_prev) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(rm_queue), "::", stringify!(rmq_prev)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct rmlock { - pub lock_object: lock_object, - pub rm_writecpus: cpuset_t, - pub rm_activeReaders: rmlock__bindgen_ty_1, - pub _rm_lock: rmlock__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rmlock__bindgen_ty_1 { - pub lh_first: *mut rm_priotracker, -} -#[test] -fn bindgen_test_layout_rmlock__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(rmlock__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rmlock__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rmlock__bindgen_ty_1), - "::", - stringify!(lh_first) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union rmlock__bindgen_ty_2 { - pub _rm_wlock_object: lock_object, - pub _rm_lock_mtx: mtx, - pub _rm_lock_sx: sx, -} -#[test] -fn bindgen_test_layout_rmlock__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(rmlock__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rmlock__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._rm_wlock_object) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rmlock__bindgen_ty_2), - "::", - stringify!(_rm_wlock_object) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._rm_lock_mtx) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rmlock__bindgen_ty_2), - "::", - stringify!(_rm_lock_mtx) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._rm_lock_sx) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rmlock__bindgen_ty_2), - "::", - stringify!(_rm_lock_sx) - ) - ); -} -#[test] -fn bindgen_test_layout_rmlock() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 192usize, - concat!("Size of: ", stringify!(rmlock)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rmlock)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lock_object) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rmlock), "::", stringify!(lock_object)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_writecpus) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(rmlock), "::", stringify!(rm_writecpus)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_activeReaders) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(rmlock), - "::", - stringify!(rm_activeReaders) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._rm_lock) as usize - ptr as usize }, - 160usize, - concat!("Offset of field: ", stringify!(rmlock), "::", stringify!(_rm_lock)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rm_priotracker { - pub rmp_cpuQueue: rm_queue, - pub rmp_rmlock: *mut rmlock, - pub rmp_thread: *mut thread, - pub rmp_flags: ::std::os::raw::c_int, - pub rmp_qentry: rm_priotracker__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rm_priotracker__bindgen_ty_1 { - pub le_next: *mut rm_priotracker, - pub le_prev: *mut *mut rm_priotracker, -} -#[test] -fn bindgen_test_layout_rm_priotracker__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(rm_priotracker__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rm_priotracker__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).le_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rm_priotracker__bindgen_ty_1), - "::", - stringify!(le_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).le_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(rm_priotracker__bindgen_ty_1), - "::", - stringify!(le_prev) - ) - ); -} -#[test] -fn bindgen_test_layout_rm_priotracker() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(rm_priotracker)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rm_priotracker)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmp_cpuQueue) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rm_priotracker), - "::", - stringify!(rmp_cpuQueue) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmp_rmlock) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(rm_priotracker), - "::", - stringify!(rmp_rmlock) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmp_thread) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(rm_priotracker), - "::", - stringify!(rmp_thread) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmp_flags) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(rm_priotracker), - "::", - stringify!(rmp_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmp_qentry) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(rm_priotracker), - "::", - stringify!(rmp_qentry) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rmslock_pcpu { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rmslock { - pub mtx: mtx, - pub owner: *mut thread, - pub pcpu: *mut rmslock_pcpu, - pub writers: ::std::os::raw::c_int, - pub readers: ::std::os::raw::c_int, - pub debug_readers: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_rmslock() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(rmslock)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rmslock)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mtx) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rmslock), "::", stringify!(mtx)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).owner) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(rmslock), "::", stringify!(owner)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pcpu) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(rmslock), "::", stringify!(pcpu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).writers) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(rmslock), "::", stringify!(writers)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).readers) as usize - ptr as usize }, - 52usize, - concat!("Offset of field: ", stringify!(rmslock), "::", stringify!(readers)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).debug_readers) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(rmslock), - "::", - stringify!(debug_readers) - ) - ); -} -pub type seqc_t = u32; -pub type smr_seq_t = u32; -pub type smr_delta_t = i32; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct smr { - _unused: [u8; 0], -} -pub type smr_t = *mut smr; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uma_zone { - _unused: [u8; 0], -} -pub type uma_zone_t = *mut uma_zone; -pub type uma_ctor = ::std::option::Option< - unsafe extern "C" fn( - mem: *mut ::std::os::raw::c_void, - size: ::std::os::raw::c_int, - arg: *mut ::std::os::raw::c_void, - flags: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int, ->; -pub type uma_dtor = ::std::option::Option< - unsafe extern "C" fn( - mem: *mut ::std::os::raw::c_void, - size: ::std::os::raw::c_int, - arg: *mut ::std::os::raw::c_void, - ), ->; -pub type uma_init = ::std::option::Option< - unsafe extern "C" fn( - mem: *mut ::std::os::raw::c_void, - size: ::std::os::raw::c_int, - flags: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int, ->; -pub type uma_fini = - ::std::option::Option; -pub type uma_import = ::std::option::Option< - unsafe extern "C" fn( - arg: *mut ::std::os::raw::c_void, - store: *mut *mut ::std::os::raw::c_void, - count: ::std::os::raw::c_int, - domain: ::std::os::raw::c_int, - flags: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int, ->; -pub type uma_release = ::std::option::Option< - unsafe extern "C" fn( - arg: *mut ::std::os::raw::c_void, - store: *mut *mut ::std::os::raw::c_void, - count: ::std::os::raw::c_int, - ), ->; -unsafe extern "C" { - pub fn uma_zcreate( - name: *const ::std::os::raw::c_char, - size: usize, - ctor: uma_ctor, - dtor: uma_dtor, - uminit: uma_init, - fini: uma_fini, - align: ::std::os::raw::c_int, - flags: u32, - ) -> uma_zone_t; -} -unsafe extern "C" { - pub fn uma_zsecond_create( - name: *const ::std::os::raw::c_char, - ctor: uma_ctor, - dtor: uma_dtor, - zinit: uma_init, - zfini: uma_fini, - primary: uma_zone_t, - ) -> uma_zone_t; -} -unsafe extern "C" { - pub fn uma_zcache_create( - name: *const ::std::os::raw::c_char, - size: ::std::os::raw::c_int, - ctor: uma_ctor, - dtor: uma_dtor, - zinit: uma_init, - zfini: uma_fini, - zimport: uma_import, - zrelease: uma_release, - arg: *mut ::std::os::raw::c_void, - flags: ::std::os::raw::c_int, - ) -> uma_zone_t; -} -unsafe extern "C" { - pub fn uma_zdestroy(zone: uma_zone_t); -} -unsafe extern "C" { - pub fn uma_zalloc_arg( - zone: uma_zone_t, - arg: *mut ::std::os::raw::c_void, - flags: ::std::os::raw::c_int, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn uma_zalloc_pcpu_arg( - zone: uma_zone_t, - arg: *mut ::std::os::raw::c_void, - flags: ::std::os::raw::c_int, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn uma_zalloc_smr(zone: uma_zone_t, flags: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn uma_zalloc_domain( - zone: uma_zone_t, - arg: *mut ::std::os::raw::c_void, - domain: ::std::os::raw::c_int, - flags: ::std::os::raw::c_int, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn uma_zfree_arg(zone: uma_zone_t, item: *mut ::std::os::raw::c_void, arg: *mut ::std::os::raw::c_void); -} -unsafe extern "C" { - pub fn uma_zfree_pcpu_arg(zone: uma_zone_t, item: *mut ::std::os::raw::c_void, arg: *mut ::std::os::raw::c_void); -} -unsafe extern "C" { - pub fn uma_zfree_smr(zone: uma_zone_t, item: *mut ::std::os::raw::c_void); -} -unsafe extern "C" { - pub fn uma_zwait(zone: uma_zone_t); -} -pub type uma_alloc = ::std::option::Option< - unsafe extern "C" fn( - zone: uma_zone_t, - size: vm_size_t, - domain: ::std::os::raw::c_int, - pflag: *mut u8, - wait: ::std::os::raw::c_int, - ) -> *mut ::std::os::raw::c_void, ->; -pub type uma_free = - ::std::option::Option; -unsafe extern "C" { - pub fn uma_reclaim(req: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn uma_reclaim_domain(req: ::std::os::raw::c_int, domain: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn uma_zone_reclaim(arg1: uma_zone_t, req: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn uma_zone_reclaim_domain(arg1: uma_zone_t, req: ::std::os::raw::c_int, domain: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn uma_set_align(align: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn uma_zone_reserve(zone: uma_zone_t, nitems: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn uma_zone_reserve_kva(zone: uma_zone_t, nitems: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn uma_zone_set_max(zone: uma_zone_t, nitems: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn uma_zone_set_maxcache(zone: uma_zone_t, nitems: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn uma_zone_get_max(zone: uma_zone_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn uma_zone_set_warning(zone: uma_zone_t, warning: *const ::std::os::raw::c_char); -} -pub type uma_maxaction_t = ::std::option::Option; -unsafe extern "C" { - pub fn uma_zone_set_maxaction(zone: uma_zone_t, arg1: uma_maxaction_t); -} -unsafe extern "C" { - pub fn uma_zone_get_cur(zone: uma_zone_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn uma_zone_set_init(zone: uma_zone_t, uminit: uma_init); -} -unsafe extern "C" { - pub fn uma_zone_set_fini(zone: uma_zone_t, fini: uma_fini); -} -unsafe extern "C" { - pub fn uma_zone_set_zinit(zone: uma_zone_t, zinit: uma_init); -} -unsafe extern "C" { - pub fn uma_zone_set_zfini(zone: uma_zone_t, zfini: uma_fini); -} -unsafe extern "C" { - pub fn uma_zone_set_allocf(zone: uma_zone_t, allocf: uma_alloc); -} -unsafe extern "C" { - pub fn uma_zone_set_freef(zone: uma_zone_t, freef: uma_free); -} -unsafe extern "C" { - pub fn uma_zone_set_smr(zone: uma_zone_t, smr: smr_t); -} -unsafe extern "C" { - pub fn uma_zone_get_smr(zone: uma_zone_t) -> smr_t; -} -unsafe extern "C" { - pub fn uma_prealloc(zone: uma_zone_t, itemcnt: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn uma_zone_exhausted(zone: uma_zone_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn uma_zone_memory(zone: uma_zone_t) -> usize; -} -unsafe extern "C" { - pub static mut pcpu_zone_4: uma_zone_t; -} -unsafe extern "C" { - pub static mut pcpu_zone_8: uma_zone_t; -} -unsafe extern "C" { - pub static mut pcpu_zone_16: uma_zone_t; -} -unsafe extern "C" { - pub static mut pcpu_zone_32: uma_zone_t; -} -unsafe extern "C" { - pub static mut pcpu_zone_64: uma_zone_t; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uma_stream_header { - pub ush_version: u32, - pub ush_maxcpus: u32, - pub ush_count: u32, - pub _ush_pad: u32, -} -#[test] -fn bindgen_test_layout_uma_stream_header() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(uma_stream_header)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(uma_stream_header)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ush_version) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(uma_stream_header), - "::", - stringify!(ush_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ush_maxcpus) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(uma_stream_header), - "::", - stringify!(ush_maxcpus) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ush_count) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(uma_stream_header), - "::", - stringify!(ush_count) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ush_pad) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(uma_stream_header), - "::", - stringify!(_ush_pad) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uma_type_header { - pub uth_name: [::std::os::raw::c_char; 32usize], - pub uth_align: u32, - pub uth_size: u32, - pub uth_rsize: u32, - pub uth_maxpages: u32, - pub uth_limit: u32, - pub uth_pages: u32, - pub uth_keg_free: u32, - pub uth_zone_free: u32, - pub uth_bucketsize: u32, - pub uth_zone_flags: u32, - pub uth_allocs: u64, - pub uth_frees: u64, - pub uth_fails: u64, - pub uth_sleeps: u64, - pub uth_xdomain: u64, - pub _uth_reserved1: [u64; 1usize], -} -#[test] -fn bindgen_test_layout_uma_type_header() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 120usize, - concat!("Size of: ", stringify!(uma_type_header)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(uma_type_header)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_name) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_align) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_align) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_size) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_rsize) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_rsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_maxpages) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_maxpages) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_limit) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_limit) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_pages) as usize - ptr as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_pages) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_keg_free) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_keg_free) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_zone_free) as usize - ptr as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_zone_free) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_bucketsize) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_bucketsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_zone_flags) as usize - ptr as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_zone_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_allocs) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_allocs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_frees) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_frees) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_fails) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_fails) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_sleeps) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_sleeps) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uth_xdomain) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(uth_xdomain) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._uth_reserved1) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(uma_type_header), - "::", - stringify!(_uth_reserved1) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct uma_percpu_stat { - pub ups_allocs: u64, - pub ups_frees: u64, - pub ups_cache_free: u64, - pub _ups_reserved: [u64; 5usize], -} -#[test] -fn bindgen_test_layout_uma_percpu_stat() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(uma_percpu_stat)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(uma_percpu_stat)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ups_allocs) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(uma_percpu_stat), - "::", - stringify!(ups_allocs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ups_frees) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(uma_percpu_stat), - "::", - stringify!(ups_frees) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ups_cache_free) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(uma_percpu_stat), - "::", - stringify!(ups_cache_free) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ups_reserved) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(uma_percpu_stat), - "::", - stringify!(_ups_reserved) - ) - ); -} -unsafe extern "C" { - pub fn uma_reclaim_wakeup(); -} -unsafe extern "C" { - pub fn uma_reclaim_worker(arg1: *mut ::std::os::raw::c_void); -} -unsafe extern "C" { - pub fn uma_limit() -> ::std::os::raw::c_ulong; -} -unsafe extern "C" { - pub fn uma_size() -> ::std::os::raw::c_ulong; -} -unsafe extern "C" { - pub fn uma_avail() -> ::std::os::raw::c_long; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timezone { - pub tz_minuteswest: ::std::os::raw::c_int, - pub tz_dsttime: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_timezone() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tz_minuteswest) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tz_dsttime) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(timezone), "::", stringify!(tz_dsttime)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct bintime { - pub sec: time_t, - pub frac: u64, -} -#[test] -fn bindgen_test_layout_bintime() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(bintime)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(bintime)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(bintime), "::", stringify!(sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).frac) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(bintime), "::", stringify!(frac)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct itimerval { - pub it_interval: timeval, - pub it_value: timeval, -} -#[test] -fn bindgen_test_layout_itimerval() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(itimerval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(itimerval)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).it_interval) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerval), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).it_value) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(itimerval), "::", stringify!(it_value)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct clockinfo { - pub hz: ::std::os::raw::c_int, - pub tick: ::std::os::raw::c_int, - pub spare: ::std::os::raw::c_int, - pub stathz: ::std::os::raw::c_int, - pub profhz: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_clockinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(clockinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(clockinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hz) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(hz)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tick) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(tick)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).spare) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(spare)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).stathz) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(stathz)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).profhz) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(profhz)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tm { - pub tm_sec: ::std::os::raw::c_int, - pub tm_min: ::std::os::raw::c_int, - pub tm_hour: ::std::os::raw::c_int, - pub tm_mday: ::std::os::raw::c_int, - pub tm_mon: ::std::os::raw::c_int, - pub tm_year: ::std::os::raw::c_int, - pub tm_wday: ::std::os::raw::c_int, - pub tm_yday: ::std::os::raw::c_int, - pub tm_isdst: ::std::os::raw::c_int, - pub tm_gmtoff: ::std::os::raw::c_long, - pub tm_zone: *mut ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_tm() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(tm)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(tm)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_min) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_min)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_hour) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_hour)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_mday) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_mday)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_mon) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_mon)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_year) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_year)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_wday) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_wday)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_yday) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_yday)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_isdst) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_isdst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_gmtoff) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_gmtoff)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_zone) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_zone)) - ); -} -unsafe extern "C" { - pub static mut tzname: [*mut ::std::os::raw::c_char; 0usize]; -} -unsafe extern "C" { - pub fn asctime(arg1: *const tm) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn clock() -> clock_t; -} -unsafe extern "C" { - pub fn ctime(arg1: *const time_t) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn difftime(arg1: time_t, arg2: time_t) -> f64; -} -unsafe extern "C" { - pub fn gmtime(arg1: *const time_t) -> *mut tm; -} -unsafe extern "C" { - pub fn localtime(arg1: *const time_t) -> *mut tm; -} -unsafe extern "C" { - pub fn mktime(arg1: *mut tm) -> time_t; -} -unsafe extern "C" { - pub fn strftime( - arg1: *mut ::std::os::raw::c_char, - arg2: usize, - arg3: *const ::std::os::raw::c_char, - arg4: *const tm, - ) -> usize; -} -unsafe extern "C" { - pub fn time(arg1: *mut time_t) -> time_t; -} -unsafe extern "C" { - pub fn timer_create(arg1: clockid_t, arg2: *mut sigevent, arg3: *mut timer_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn timer_delete(arg1: timer_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn timer_gettime(arg1: timer_t, arg2: *mut itimerspec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn timer_getoverrun(arg1: timer_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn timer_settime( - arg1: timer_t, - arg2: ::std::os::raw::c_int, - arg3: *const itimerspec, - arg4: *mut itimerspec, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn tzset(); -} -unsafe extern "C" { - pub fn clock_getres(arg1: clockid_t, arg2: *mut timespec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn clock_gettime(arg1: clockid_t, arg2: *mut timespec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn clock_settime(arg1: clockid_t, arg2: *const timespec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn nanosleep(arg1: *const timespec, arg2: *mut timespec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn clock_getcpuclockid(arg1: pid_t, arg2: *mut clockid_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn clock_nanosleep( - arg1: clockid_t, - arg2: ::std::os::raw::c_int, - arg3: *const timespec, - arg4: *mut timespec, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn asctime_r(arg1: *const tm, arg2: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn ctime_r(arg1: *const time_t, arg2: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn gmtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm; -} -unsafe extern "C" { - pub fn localtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm; -} -unsafe extern "C" { - pub fn strptime( - arg1: *const ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - arg3: *mut tm, - ) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn timezone(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn timelocal(arg1: *mut tm) -> time_t; -} -unsafe extern "C" { - pub fn timegm(arg1: *mut tm) -> time_t; -} -unsafe extern "C" { - pub fn timer_oshandle_np(timerid: timer_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn time2posix(t: time_t) -> time_t; -} -unsafe extern "C" { - pub fn posix2time(t: time_t) -> time_t; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _xlocale { - _unused: [u8; 0], -} -pub type locale_t = *mut _xlocale; -unsafe extern "C" { - pub fn strftime_l( - arg1: *mut ::std::os::raw::c_char, - arg2: usize, - arg3: *const ::std::os::raw::c_char, - arg4: *const tm, - arg5: locale_t, - ) -> usize; -} -unsafe extern "C" { - pub fn timespec_get(ts: *mut timespec, base: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn timespec_getres(arg1: *mut timespec, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn setitimer( - arg1: ::std::os::raw::c_int, - arg2: *const itimerval, - arg3: *mut itimerval, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn utimes(arg1: *const ::std::os::raw::c_char, arg2: *const timeval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn adjtime(arg1: *const timeval, arg2: *mut timeval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn clock_getcpuclockid2(arg1: id_t, arg2: ::std::os::raw::c_int, arg3: *mut clockid_t) - -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn futimes(arg1: ::std::os::raw::c_int, arg2: *const timeval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn futimesat( - arg1: ::std::os::raw::c_int, - arg2: *const ::std::os::raw::c_char, - arg3: *const timeval, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn lutimes(arg1: *const ::std::os::raw::c_char, arg2: *const timeval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn settimeofday(arg1: *const timeval, arg2: *const timezone) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getitimer(arg1: ::std::os::raw::c_int, arg2: *mut itimerval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn gettimeofday(arg1: *mut timeval, arg2: *mut timezone) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iovec { - pub iov_base: *mut ::std::os::raw::c_void, - pub iov_len: usize, -} -#[test] -fn bindgen_test_layout_iovec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(iovec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(iovec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).iov_base) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(iovec), "::", stringify!(iov_base)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).iov_len) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(iovec), "::", stringify!(iov_len)) - ); -} -pub type sa_family_t = __sa_family_t; -pub type socklen_t = __socklen_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { - pub l_onoff: ::std::os::raw::c_int, - pub l_linger: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_linger() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(linger)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(linger)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).l_onoff) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(linger), "::", stringify!(l_onoff)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).l_linger) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(linger), "::", stringify!(l_linger)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct accept_filter_arg { - pub af_name: [::std::os::raw::c_char; 16usize], - pub af_arg: [::std::os::raw::c_char; 240usize], -} -#[test] -fn bindgen_test_layout_accept_filter_arg() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 256usize, - concat!("Size of: ", stringify!(accept_filter_arg)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(accept_filter_arg)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(accept_filter_arg), - "::", - stringify!(af_name) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af_arg) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(accept_filter_arg), - "::", - stringify!(af_arg) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr { - pub sa_len: ::std::os::raw::c_uchar, - pub sa_family: sa_family_t, - pub sa_data: [::std::os::raw::c_char; 14usize], -} -#[test] -fn bindgen_test_layout_sockaddr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sockaddr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(sockaddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr), "::", stringify!(sa_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_family) as usize - ptr as usize }, - 1usize, - concat!("Offset of field: ", stringify!(sockaddr), "::", stringify!(sa_family)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_data) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(sockaddr), "::", stringify!(sa_data)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockproto { - pub sp_family: ::std::os::raw::c_ushort, - pub sp_protocol: ::std::os::raw::c_ushort, -} -#[test] -fn bindgen_test_layout_sockproto() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sockproto)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(sockproto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sp_family) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockproto), "::", stringify!(sp_family)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sp_protocol) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockproto), - "::", - stringify!(sp_protocol) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_storage { - pub ss_len: ::std::os::raw::c_uchar, - pub ss_family: sa_family_t, - pub __ss_pad1: [::std::os::raw::c_char; 6usize], - pub __ss_align: __int64_t, - pub __ss_pad2: [::std::os::raw::c_char; 112usize], -} -#[test] -fn bindgen_test_layout_sockaddr_storage() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(sockaddr_storage)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sockaddr_storage)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(ss_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(ss_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss_pad1) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(__ss_pad1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss_align) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(__ss_align) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss_pad2) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(__ss_pad2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { - pub msg_name: *mut ::std::os::raw::c_void, - pub msg_namelen: socklen_t, - pub msg_iov: *mut iovec, - pub msg_iovlen: ::std::os::raw::c_int, - pub msg_control: *mut ::std::os::raw::c_void, - pub msg_controllen: socklen_t, - pub msg_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_msghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(msghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(msghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_namelen) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_namelen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_iov) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_iov)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_iovlen) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_iovlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_control) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_control)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_controllen) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(msghdr), - "::", - stringify!(msg_controllen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_flags) as usize - ptr as usize }, - 44usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { - pub cmsg_len: socklen_t, - pub cmsg_level: ::std::os::raw::c_int, - pub cmsg_type: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_cmsghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(cmsghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(cmsghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmsg_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(cmsghdr), "::", stringify!(cmsg_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmsg_level) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(cmsghdr), "::", stringify!(cmsg_level)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmsg_type) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(cmsghdr), "::", stringify!(cmsg_type)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsgcred { - pub cmcred_pid: pid_t, - pub cmcred_uid: uid_t, - pub cmcred_euid: uid_t, - pub cmcred_gid: gid_t, - pub cmcred_ngroups: ::std::os::raw::c_short, - pub cmcred_groups: [gid_t; 16usize], -} -#[test] -fn bindgen_test_layout_cmsgcred() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 84usize, - concat!("Size of: ", stringify!(cmsgcred)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(cmsgcred)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmcred_pid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(cmsgcred), "::", stringify!(cmcred_pid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmcred_uid) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(cmsgcred), "::", stringify!(cmcred_uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmcred_euid) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(cmsgcred), "::", stringify!(cmcred_euid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmcred_gid) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(cmsgcred), "::", stringify!(cmcred_gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmcred_ngroups) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(cmsgcred), - "::", - stringify!(cmcred_ngroups) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmcred_groups) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(cmsgcred), - "::", - stringify!(cmcred_groups) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockcred { - pub sc_uid: uid_t, - pub sc_euid: uid_t, - pub sc_gid: gid_t, - pub sc_egid: gid_t, - pub sc_ngroups: ::std::os::raw::c_int, - pub sc_groups: [gid_t; 1usize], -} -#[test] -fn bindgen_test_layout_sockcred() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(sockcred)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockcred)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_uid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockcred), "::", stringify!(sc_uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_euid) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(sockcred), "::", stringify!(sc_euid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_gid) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sockcred), "::", stringify!(sc_gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_egid) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(sockcred), "::", stringify!(sc_egid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_ngroups) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(sockcred), "::", stringify!(sc_ngroups)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_groups) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(sockcred), "::", stringify!(sc_groups)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockcred2 { - pub sc_version: ::std::os::raw::c_int, - pub sc_pid: pid_t, - pub sc_uid: uid_t, - pub sc_euid: uid_t, - pub sc_gid: gid_t, - pub sc_egid: gid_t, - pub sc_ngroups: ::std::os::raw::c_int, - pub sc_groups: [gid_t; 1usize], -} -#[test] -fn bindgen_test_layout_sockcred2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(sockcred2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockcred2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_version) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockcred2), "::", stringify!(sc_version)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_pid) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(sockcred2), "::", stringify!(sc_pid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_uid) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sockcred2), "::", stringify!(sc_uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_euid) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(sockcred2), "::", stringify!(sc_euid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_gid) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(sockcred2), "::", stringify!(sc_gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_egid) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(sockcred2), "::", stringify!(sc_egid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_ngroups) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(sockcred2), "::", stringify!(sc_ngroups)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sc_groups) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(sockcred2), "::", stringify!(sc_groups)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sock_timestamp_info { - pub st_info_flags: __uint32_t, - pub st_info_pad0: __uint32_t, - pub st_info_rsv: [__uint64_t; 7usize], -} -#[test] -fn bindgen_test_layout_sock_timestamp_info() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(sock_timestamp_info)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sock_timestamp_info)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).st_info_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sock_timestamp_info), - "::", - stringify!(st_info_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).st_info_pad0) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sock_timestamp_info), - "::", - stringify!(st_info_pad0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).st_info_rsv) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sock_timestamp_info), - "::", - stringify!(st_info_rsv) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct osockaddr { - pub sa_family: ::std::os::raw::c_ushort, - pub sa_data: [::std::os::raw::c_char; 14usize], -} -#[test] -fn bindgen_test_layout_osockaddr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(osockaddr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(osockaddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_family) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(osockaddr), "::", stringify!(sa_family)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_data) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(osockaddr), "::", stringify!(sa_data)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct omsghdr { - pub msg_name: *mut ::std::os::raw::c_char, - pub msg_namelen: ::std::os::raw::c_int, - pub msg_iov: *mut iovec, - pub msg_iovlen: ::std::os::raw::c_int, - pub msg_accrights: *mut ::std::os::raw::c_char, - pub msg_accrightslen: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_omsghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(omsghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(omsghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(omsghdr), "::", stringify!(msg_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_namelen) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(omsghdr), "::", stringify!(msg_namelen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_iov) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(omsghdr), "::", stringify!(msg_iov)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_iovlen) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(omsghdr), "::", stringify!(msg_iovlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_accrights) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(omsghdr), - "::", - stringify!(msg_accrights) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_accrightslen) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(omsghdr), - "::", - stringify!(msg_accrightslen) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sf_hdtr { - pub headers: *mut iovec, - pub hdr_cnt: ::std::os::raw::c_int, - pub trailers: *mut iovec, - pub trl_cnt: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sf_hdtr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(sf_hdtr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sf_hdtr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).headers) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sf_hdtr), "::", stringify!(headers)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hdr_cnt) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sf_hdtr), "::", stringify!(hdr_cnt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).trailers) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(sf_hdtr), "::", stringify!(trailers)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).trl_cnt) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(sf_hdtr), "::", stringify!(trl_cnt)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { - pub msg_hdr: msghdr, - pub msg_len: isize, -} -#[test] -fn bindgen_test_layout_mmsghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(mmsghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(mmsghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_hdr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(mmsghdr), "::", stringify!(msg_hdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_len) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(mmsghdr), "::", stringify!(msg_len)) - ); -} -unsafe extern "C" { - pub fn accept(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr, arg3: *mut socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn bind(arg1: ::std::os::raw::c_int, arg2: *const sockaddr, arg3: socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn connect(arg1: ::std::os::raw::c_int, arg2: *const sockaddr, arg3: socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn accept4( - arg1: ::std::os::raw::c_int, - arg2: *mut sockaddr, - arg3: *mut socklen_t, - arg4: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn bindat( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: *const sockaddr, - arg4: socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn connectat( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: *const sockaddr, - arg4: socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getpeername(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr, arg3: *mut socklen_t) - -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getsockname(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr, arg3: *mut socklen_t) - -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getsockopt( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: *mut ::std::os::raw::c_void, - arg5: *mut socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn listen(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn recv( - arg1: ::std::os::raw::c_int, - arg2: *mut ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - ) -> isize; -} -unsafe extern "C" { - pub fn recvfrom( - arg1: ::std::os::raw::c_int, - arg2: *mut ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - arg5: *mut sockaddr, - arg6: *mut socklen_t, - ) -> isize; -} -unsafe extern "C" { - pub fn recvmsg(arg1: ::std::os::raw::c_int, arg2: *mut msghdr, arg3: ::std::os::raw::c_int) -> isize; -} -unsafe extern "C" { - pub fn recvmmsg( - arg1: ::std::os::raw::c_int, - arg2: *mut mmsghdr, - arg3: usize, - arg4: ::std::os::raw::c_int, - arg5: *const timespec, - ) -> isize; -} -unsafe extern "C" { - pub fn send( - arg1: ::std::os::raw::c_int, - arg2: *const ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - ) -> isize; -} -unsafe extern "C" { - pub fn sendto( - arg1: ::std::os::raw::c_int, - arg2: *const ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - arg5: *const sockaddr, - arg6: socklen_t, - ) -> isize; -} -unsafe extern "C" { - pub fn sendmsg(arg1: ::std::os::raw::c_int, arg2: *const msghdr, arg3: ::std::os::raw::c_int) -> isize; -} -unsafe extern "C" { - pub fn sendfile( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: off_t, - arg4: usize, - arg5: *mut sf_hdtr, - arg6: *mut off_t, - arg7: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn sendmmsg(arg1: ::std::os::raw::c_int, arg2: *mut mmsghdr, arg3: usize, arg4: ::std::os::raw::c_int) - -> isize; -} -unsafe extern "C" { - pub fn setfib(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn setsockopt( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: *const ::std::os::raw::c_void, - arg5: socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn shutdown(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn sockatmark(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn socket( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn socketpair( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_clonereq { - pub ifcr_total: ::std::os::raw::c_int, - pub ifcr_count: ::std::os::raw::c_int, - pub ifcr_buffer: *mut ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_if_clonereq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_clonereq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_clonereq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcr_total) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_clonereq), - "::", - stringify!(ifcr_total) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcr_count) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_clonereq), - "::", - stringify!(ifcr_count) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcr_buffer) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_clonereq), - "::", - stringify!(ifcr_buffer) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct if_data { - pub ifi_type: u8, - pub ifi_physical: u8, - pub ifi_addrlen: u8, - pub ifi_hdrlen: u8, - pub ifi_link_state: u8, - pub ifi_vhid: u8, - pub ifi_datalen: u16, - pub ifi_mtu: u32, - pub ifi_metric: u32, - pub ifi_baudrate: u64, - pub ifi_ipackets: u64, - pub ifi_ierrors: u64, - pub ifi_opackets: u64, - pub ifi_oerrors: u64, - pub ifi_collisions: u64, - pub ifi_ibytes: u64, - pub ifi_obytes: u64, - pub ifi_imcasts: u64, - pub ifi_omcasts: u64, - pub ifi_iqdrops: u64, - pub ifi_oqdrops: u64, - pub ifi_noproto: u64, - pub ifi_hwassist: u64, - pub __ifi_epoch: if_data__bindgen_ty_1, - pub __ifi_lastchange: if_data__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union if_data__bindgen_ty_1 { - pub tt: time_t, - pub ph: u64, -} -#[test] -fn bindgen_test_layout_if_data__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(if_data__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_data__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tt) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_data__bindgen_ty_1), - "::", - stringify!(tt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ph) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_data__bindgen_ty_1), - "::", - stringify!(ph) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union if_data__bindgen_ty_2 { - pub tv: timeval, - pub ph: if_data__bindgen_ty_2__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_data__bindgen_ty_2__bindgen_ty_1 { - pub ph1: u64, - pub ph2: u64, -} -#[test] -fn bindgen_test_layout_if_data__bindgen_ty_2__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_data__bindgen_ty_2__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_data__bindgen_ty_2__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ph1) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_data__bindgen_ty_2__bindgen_ty_1), - "::", - stringify!(ph1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ph2) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_data__bindgen_ty_2__bindgen_ty_1), - "::", - stringify!(ph2) - ) - ); -} -#[test] -fn bindgen_test_layout_if_data__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_data__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_data__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_data__bindgen_ty_2), - "::", - stringify!(tv) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ph) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_data__bindgen_ty_2), - "::", - stringify!(ph) - ) - ); -} -#[test] -fn bindgen_test_layout_if_data() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 152usize, - concat!("Size of: ", stringify!(if_data)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_data)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_type) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_physical) as usize - ptr as usize }, - 1usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_physical)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_addrlen) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_addrlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_hdrlen) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_hdrlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_link_state) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_link_state) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_vhid) as usize - ptr as usize }, - 5usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_vhid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_datalen) as usize - ptr as usize }, - 6usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_datalen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_mtu) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_mtu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_metric) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_metric)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_baudrate) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_baudrate)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ipackets) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_ipackets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ierrors) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_ierrors)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_opackets) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_opackets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_oerrors) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_oerrors)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_collisions) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_collisions) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ibytes) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_ibytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_obytes) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_obytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_imcasts) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_imcasts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_omcasts) as usize - ptr as usize }, - 88usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_omcasts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_iqdrops) as usize - ptr as usize }, - 96usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_iqdrops)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_oqdrops) as usize - ptr as usize }, - 104usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_oqdrops)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_noproto) as usize - ptr as usize }, - 112usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_noproto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_hwassist) as usize - ptr as usize }, - 120usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_hwassist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ifi_epoch) as usize - ptr as usize }, - 128usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(__ifi_epoch)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ifi_lastchange) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(__ifi_lastchange) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct if_msghdr { - pub ifm_msglen: u_short, - pub ifm_version: u_char, - pub ifm_type: u_char, - pub ifm_addrs: ::std::os::raw::c_int, - pub ifm_flags: ::std::os::raw::c_int, - pub ifm_index: u_short, - pub _ifm_spare1: u_short, - pub ifm_data: if_data, -} -#[test] -fn bindgen_test_layout_if_msghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 168usize, - concat!("Size of: ", stringify!(if_msghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_msghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_msglen) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_msglen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(if_msghdr), - "::", - stringify!(ifm_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_type) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_addrs) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_addrs)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_flags) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_index) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_index)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ifm_spare1) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(if_msghdr), - "::", - stringify!(_ifm_spare1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_data) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_data)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct if_msghdrl { - pub ifm_msglen: u_short, - pub ifm_version: u_char, - pub ifm_type: u_char, - pub ifm_addrs: ::std::os::raw::c_int, - pub ifm_flags: ::std::os::raw::c_int, - pub ifm_index: u_short, - pub _ifm_spare1: u_short, - pub ifm_len: u_short, - pub ifm_data_off: u_short, - pub _ifm_spare2: ::std::os::raw::c_int, - pub ifm_data: if_data, -} -#[test] -fn bindgen_test_layout_if_msghdrl() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 176usize, - concat!("Size of: ", stringify!(if_msghdrl)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_msghdrl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_msglen) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_msghdrl), - "::", - stringify!(ifm_msglen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(if_msghdrl), - "::", - stringify!(ifm_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_type) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(if_msghdrl), "::", stringify!(ifm_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_addrs) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(if_msghdrl), "::", stringify!(ifm_addrs)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_flags) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(if_msghdrl), "::", stringify!(ifm_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_index) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(if_msghdrl), "::", stringify!(ifm_index)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ifm_spare1) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(if_msghdrl), - "::", - stringify!(_ifm_spare1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_len) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(if_msghdrl), "::", stringify!(ifm_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_data_off) as usize - ptr as usize }, - 18usize, - concat!( - "Offset of field: ", - stringify!(if_msghdrl), - "::", - stringify!(ifm_data_off) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ifm_spare2) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(if_msghdrl), - "::", - stringify!(_ifm_spare2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_data) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(if_msghdrl), "::", stringify!(ifm_data)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_msghdr { - pub ifam_msglen: u_short, - pub ifam_version: u_char, - pub ifam_type: u_char, - pub ifam_addrs: ::std::os::raw::c_int, - pub ifam_flags: ::std::os::raw::c_int, - pub ifam_index: u_short, - pub _ifam_spare1: u_short, - pub ifam_metric: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_ifa_msghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(ifa_msghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifa_msghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_msglen) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_msglen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_type) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(ifa_msghdr), "::", stringify!(ifam_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_addrs) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_addrs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_flags) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_index) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ifam_spare1) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(_ifam_spare1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_metric) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_metric) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifa_msghdrl { - pub ifam_msglen: u_short, - pub ifam_version: u_char, - pub ifam_type: u_char, - pub ifam_addrs: ::std::os::raw::c_int, - pub ifam_flags: ::std::os::raw::c_int, - pub ifam_index: u_short, - pub _ifam_spare1: u_short, - pub ifam_len: u_short, - pub ifam_data_off: u_short, - pub ifam_metric: ::std::os::raw::c_int, - pub ifam_data: if_data, -} -#[test] -fn bindgen_test_layout_ifa_msghdrl() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 176usize, - concat!("Size of: ", stringify!(ifa_msghdrl)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifa_msghdrl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_msglen) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdrl), - "::", - stringify!(ifam_msglen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdrl), - "::", - stringify!(ifam_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_type) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdrl), - "::", - stringify!(ifam_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_addrs) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdrl), - "::", - stringify!(ifam_addrs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_flags) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdrl), - "::", - stringify!(ifam_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_index) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdrl), - "::", - stringify!(ifam_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ifam_spare1) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdrl), - "::", - stringify!(_ifam_spare1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_len) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(ifa_msghdrl), "::", stringify!(ifam_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_data_off) as usize - ptr as usize }, - 18usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdrl), - "::", - stringify!(ifam_data_off) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_metric) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdrl), - "::", - stringify!(ifam_metric) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_data) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdrl), - "::", - stringify!(ifam_data) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifma_msghdr { - pub ifmam_msglen: u_short, - pub ifmam_version: u_char, - pub ifmam_type: u_char, - pub ifmam_addrs: ::std::os::raw::c_int, - pub ifmam_flags: ::std::os::raw::c_int, - pub ifmam_index: u_short, - pub _ifmam_spare1: u_short, -} -#[test] -fn bindgen_test_layout_ifma_msghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifma_msghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifma_msghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifmam_msglen) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifma_msghdr), - "::", - stringify!(ifmam_msglen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifmam_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(ifma_msghdr), - "::", - stringify!(ifmam_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifmam_type) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(ifma_msghdr), - "::", - stringify!(ifmam_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifmam_addrs) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ifma_msghdr), - "::", - stringify!(ifmam_addrs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifmam_flags) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ifma_msghdr), - "::", - stringify!(ifmam_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifmam_index) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ifma_msghdr), - "::", - stringify!(ifmam_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ifmam_spare1) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(ifma_msghdr), - "::", - stringify!(_ifmam_spare1) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_announcemsghdr { - pub ifan_msglen: u_short, - pub ifan_version: u_char, - pub ifan_type: u_char, - pub ifan_index: u_short, - pub ifan_name: [::std::os::raw::c_char; 16usize], - pub ifan_what: u_short, -} -#[test] -fn bindgen_test_layout_if_announcemsghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(if_announcemsghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(if_announcemsghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_msglen) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_msglen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_type) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_index) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_name) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_name) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_what) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_what) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifreq_buffer { - pub length: usize, - pub buffer: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_ifreq_buffer() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifreq_buffer)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifreq_buffer)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifreq_buffer), "::", stringify!(length)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(ifreq_buffer), "::", stringify!(buffer)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifreq_nv_req { - pub buf_length: u_int, - pub length: u_int, - pub buffer: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_ifreq_nv_req() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifreq_nv_req)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifreq_nv_req)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).buf_length) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq_nv_req), - "::", - stringify!(buf_length) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(ifreq_nv_req), "::", stringify!(length)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(ifreq_nv_req), "::", stringify!(buffer)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifreq { - pub ifr_name: [::std::os::raw::c_char; 16usize], - pub ifr_ifru: ifreq__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifreq__bindgen_ty_1 { - pub ifru_addr: sockaddr, - pub ifru_dstaddr: sockaddr, - pub ifru_broadaddr: sockaddr, - pub ifru_buffer: ifreq_buffer, - pub ifru_flags: [::std::os::raw::c_short; 2usize], - pub ifru_index: ::std::os::raw::c_short, - pub ifru_jid: ::std::os::raw::c_int, - pub ifru_metric: ::std::os::raw::c_int, - pub ifru_mtu: ::std::os::raw::c_int, - pub ifru_phys: ::std::os::raw::c_int, - pub ifru_media: ::std::os::raw::c_int, - pub ifru_data: caddr_t, - pub ifru_cap: [::std::os::raw::c_int; 2usize], - pub ifru_fib: u_int, - pub ifru_vlan_pcp: u_char, - pub ifru_nv: ifreq_nv_req, -} -#[test] -fn bindgen_test_layout_ifreq__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifreq__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifreq__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_dstaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_dstaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_broadaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_broadaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_buffer) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_buffer) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_index) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_jid) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_jid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_metric) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_metric) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_mtu) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_mtu) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_phys) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_phys) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_media) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_media) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_data) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_cap) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_cap) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_fib) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_fib) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_vlan_pcp) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_vlan_pcp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_nv) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_nv) - ) - ); -} -#[test] -fn bindgen_test_layout_ifreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(ifreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifr_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifreq), "::", stringify!(ifr_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifr_ifru) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(ifreq), "::", stringify!(ifr_ifru)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaliasreq { - pub ifra_name: [::std::os::raw::c_char; 16usize], - pub ifra_addr: sockaddr, - pub ifra_broadaddr: sockaddr, - pub ifra_mask: sockaddr, - pub ifra_vhid: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_ifaliasreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 68usize, - concat!("Size of: ", stringify!(ifaliasreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifaliasreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifaliasreq), "::", stringify!(ifra_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_addr) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(ifaliasreq), "::", stringify!(ifra_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_broadaddr) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ifaliasreq), - "::", - stringify!(ifra_broadaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_mask) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(ifaliasreq), "::", stringify!(ifra_mask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_vhid) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(ifaliasreq), "::", stringify!(ifra_vhid)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct oifaliasreq { - pub ifra_name: [::std::os::raw::c_char; 16usize], - pub ifra_addr: sockaddr, - pub ifra_broadaddr: sockaddr, - pub ifra_mask: sockaddr, -} -#[test] -fn bindgen_test_layout_oifaliasreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(oifaliasreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(oifaliasreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(oifaliasreq), - "::", - stringify!(ifra_name) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_addr) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(oifaliasreq), - "::", - stringify!(ifra_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_broadaddr) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(oifaliasreq), - "::", - stringify!(ifra_broadaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_mask) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(oifaliasreq), - "::", - stringify!(ifra_mask) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifmediareq { - pub ifm_name: [::std::os::raw::c_char; 16usize], - pub ifm_current: ::std::os::raw::c_int, - pub ifm_mask: ::std::os::raw::c_int, - pub ifm_status: ::std::os::raw::c_int, - pub ifm_active: ::std::os::raw::c_int, - pub ifm_count: ::std::os::raw::c_int, - pub ifm_ulist: *mut ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_ifmediareq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(ifmediareq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifmediareq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifmediareq), "::", stringify!(ifm_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_current) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifmediareq), - "::", - stringify!(ifm_current) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_mask) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(ifmediareq), "::", stringify!(ifm_mask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_status) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ifmediareq), - "::", - stringify!(ifm_status) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_active) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(ifmediareq), - "::", - stringify!(ifm_active) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_count) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(ifmediareq), "::", stringify!(ifm_count)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_ulist) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(ifmediareq), "::", stringify!(ifm_ulist)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifdrv { - pub ifd_name: [::std::os::raw::c_char; 16usize], - pub ifd_cmd: ::std::os::raw::c_ulong, - pub ifd_len: usize, - pub ifd_data: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_ifdrv() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(ifdrv)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifdrv)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifd_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifdrv), "::", stringify!(ifd_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifd_cmd) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(ifdrv), "::", stringify!(ifd_cmd)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifd_len) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(ifdrv), "::", stringify!(ifd_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifd_data) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(ifdrv), "::", stringify!(ifd_data)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifstat { - pub ifs_name: [::std::os::raw::c_char; 16usize], - pub ascii: [::std::os::raw::c_char; 801usize], -} -#[test] -fn bindgen_test_layout_ifstat() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 817usize, - concat!("Size of: ", stringify!(ifstat)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(ifstat)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifs_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifstat), "::", stringify!(ifs_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ascii) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(ifstat), "::", stringify!(ascii)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifconf { - pub ifc_len: ::std::os::raw::c_int, - pub ifc_ifcu: ifconf__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifconf__bindgen_ty_1 { - pub ifcu_buf: caddr_t, - pub ifcu_req: *mut ifreq, -} -#[test] -fn bindgen_test_layout_ifconf__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ifconf__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifconf__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcu_buf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifconf__bindgen_ty_1), - "::", - stringify!(ifcu_buf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcu_req) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifconf__bindgen_ty_1), - "::", - stringify!(ifcu_req) - ) - ); -} -#[test] -fn bindgen_test_layout_ifconf() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifconf)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifconf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifc_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifconf), "::", stringify!(ifc_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifc_ifcu) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(ifconf), "::", stringify!(ifc_ifcu)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifg_req { - pub ifgrq_ifgrqu: ifg_req__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifg_req__bindgen_ty_1 { - pub ifgrqu_group: [::std::os::raw::c_char; 16usize], - pub ifgrqu_member: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_ifg_req__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifg_req__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(ifg_req__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgrqu_group) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifg_req__bindgen_ty_1), - "::", - stringify!(ifgrqu_group) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgrqu_member) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifg_req__bindgen_ty_1), - "::", - stringify!(ifgrqu_member) - ) - ); -} -#[test] -fn bindgen_test_layout_ifg_req() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifg_req)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(ifg_req)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgrq_ifgrqu) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifg_req), "::", stringify!(ifgrq_ifgrqu)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifgroupreq { - pub ifgr_name: [::std::os::raw::c_char; 16usize], - pub ifgr_len: u_int, - pub ifgr_ifgru: ifgroupreq__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifgroupreq__bindgen_ty_1 { - pub ifgru_group: [::std::os::raw::c_char; 16usize], - pub ifgru_groups: *mut ifg_req, -} -#[test] -fn bindgen_test_layout_ifgroupreq__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifgroupreq__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifgroupreq__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgru_group) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifgroupreq__bindgen_ty_1), - "::", - stringify!(ifgru_group) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgru_groups) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifgroupreq__bindgen_ty_1), - "::", - stringify!(ifgru_groups) - ) - ); -} -#[test] -fn bindgen_test_layout_ifgroupreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(ifgroupreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifgroupreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgr_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifgroupreq), "::", stringify!(ifgr_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgr_len) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(ifgroupreq), "::", stringify!(ifgr_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgr_ifgru) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ifgroupreq), - "::", - stringify!(ifgr_ifgru) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifi2creq { - pub dev_addr: u8, - pub offset: u8, - pub len: u8, - pub spare0: u8, - pub spare1: u32, - pub data: [u8; 8usize], -} -#[test] -fn bindgen_test_layout_ifi2creq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifi2creq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifi2creq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dev_addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifi2creq), "::", stringify!(dev_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, - 1usize, - concat!("Offset of field: ", stringify!(ifi2creq), "::", stringify!(offset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(ifi2creq), "::", stringify!(len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).spare0) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(ifi2creq), "::", stringify!(spare0)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).spare1) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(ifi2creq), "::", stringify!(spare1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(ifi2creq), "::", stringify!(data)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifrsskey { - pub ifrk_name: [::std::os::raw::c_char; 16usize], - pub ifrk_func: u8, - pub ifrk_spare0: u8, - pub ifrk_keylen: u16, - pub ifrk_key: [u8; 128usize], -} -#[test] -fn bindgen_test_layout_ifrsskey() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 148usize, - concat!("Size of: ", stringify!(ifrsskey)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(ifrsskey)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrk_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifrsskey), "::", stringify!(ifrk_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrk_func) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(ifrsskey), "::", stringify!(ifrk_func)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrk_spare0) as usize - ptr as usize }, - 17usize, - concat!("Offset of field: ", stringify!(ifrsskey), "::", stringify!(ifrk_spare0)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrk_keylen) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(ifrsskey), "::", stringify!(ifrk_keylen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrk_key) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(ifrsskey), "::", stringify!(ifrk_key)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifrsshash { - pub ifrh_name: [::std::os::raw::c_char; 16usize], - pub ifrh_func: u8, - pub ifrh_spare0: u8, - pub ifrh_spare1: u16, - pub ifrh_types: u32, -} -#[test] -fn bindgen_test_layout_ifrsshash() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(ifrsshash)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifrsshash)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrh_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifrsshash), "::", stringify!(ifrh_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrh_func) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(ifrsshash), "::", stringify!(ifrh_func)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrh_spare0) as usize - ptr as usize }, - 17usize, - concat!( - "Offset of field: ", - stringify!(ifrsshash), - "::", - stringify!(ifrh_spare0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrh_spare1) as usize - ptr as usize }, - 18usize, - concat!( - "Offset of field: ", - stringify!(ifrsshash), - "::", - stringify!(ifrh_spare1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrh_types) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(ifrsshash), "::", stringify!(ifrh_types)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifdownreason { - pub ifdr_name: [::std::os::raw::c_char; 16usize], - pub ifdr_reason: u32, - pub ifdr_vendor: u32, - pub ifdr_msg: [::std::os::raw::c_char; 64usize], -} -#[test] -fn bindgen_test_layout_ifdownreason() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(ifdownreason)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifdownreason)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifdr_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifdownreason), - "::", - stringify!(ifdr_name) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifdr_reason) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifdownreason), - "::", - stringify!(ifdr_reason) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifdr_vendor) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ifdownreason), - "::", - stringify!(ifdr_vendor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifdr_msg) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ifdownreason), - "::", - stringify!(ifdr_msg) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifnet { - _unused: [u8; 0], -} -pub type if_t = *mut ifnet; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_nameindex { - pub if_index: ::std::os::raw::c_uint, - pub if_name: *mut ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_if_nameindex() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_nameindex)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_nameindex)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_index) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_nameindex), - "::", - stringify!(if_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_name) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(if_nameindex), "::", stringify!(if_name)) - ); -} -unsafe extern "C" { - pub fn if_freenameindex(arg1: *mut if_nameindex); -} -unsafe extern "C" { - pub fn if_indextoname( - arg1: ::std::os::raw::c_uint, - arg2: *mut ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn if_nameindex() -> *mut if_nameindex; -} -unsafe extern "C" { - pub fn if_nametoindex(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_uint; -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ether_header { - pub ether_dhost: [u_char; 6usize], - pub ether_shost: [u_char; 6usize], - pub ether_type: u_short, -} -#[test] -fn bindgen_test_layout_ether_header() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 14usize, - concat!("Size of: ", stringify!(ether_header)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(ether_header)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ether_dhost) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ether_header), - "::", - stringify!(ether_dhost) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ether_shost) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(ether_header), - "::", - stringify!(ether_shost) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ether_type) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ether_header), - "::", - stringify!(ether_type) - ) - ); -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ether_addr { - pub octet: [u_char; 6usize], -} -#[test] -fn bindgen_test_layout_ether_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 6usize, - concat!("Size of: ", stringify!(ether_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(ether_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).octet) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ether_addr), "::", stringify!(octet)) - ); -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct ether_vlan_header { - pub evl_dhost: [u8; 6usize], - pub evl_shost: [u8; 6usize], - pub evl_encap_proto: u16, - pub evl_tag: u16, - pub evl_proto: u16, -} -#[test] -fn bindgen_test_layout_ether_vlan_header() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 18usize, - concat!("Size of: ", stringify!(ether_vlan_header)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(ether_vlan_header)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).evl_dhost) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ether_vlan_header), - "::", - stringify!(evl_dhost) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).evl_shost) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(ether_vlan_header), - "::", - stringify!(evl_shost) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).evl_encap_proto) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ether_vlan_header), - "::", - stringify!(evl_encap_proto) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).evl_tag) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(ether_vlan_header), - "::", - stringify!(evl_tag) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).evl_proto) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ether_vlan_header), - "::", - stringify!(evl_proto) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mbuf { - _unused: [u8; 0], -} -unsafe extern "C" { - pub fn ether_bpf_mtap_if(ifp: *mut ifnet, m: *mut mbuf); -} -unsafe extern "C" { - pub fn ether_aton(arg1: *const ::std::os::raw::c_char) -> *mut ether_addr; -} -unsafe extern "C" { - pub fn ether_aton_r(arg1: *const ::std::os::raw::c_char, arg2: *mut ether_addr) -> *mut ether_addr; -} -unsafe extern "C" { - pub fn ether_hostton(arg1: *const ::std::os::raw::c_char, arg2: *mut ether_addr) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn ether_line( - arg1: *const ::std::os::raw::c_char, - arg2: *mut ether_addr, - arg3: *mut ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn ether_ntoa(arg1: *const ether_addr) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn ether_ntoa_r(arg1: *const ether_addr, arg2: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn ether_ntohost(arg1: *mut ::std::os::raw::c_char, arg2: *const ether_addr) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct radix_node { - pub rn_mklist: *mut radix_mask, - pub rn_parent: *mut radix_node, - pub rn_bit: ::std::os::raw::c_short, - pub rn_bmask: ::std::os::raw::c_char, - pub rn_flags: u_char, - pub rn_u: radix_node__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union radix_node__bindgen_ty_1 { - pub rn_leaf: radix_node__bindgen_ty_1__bindgen_ty_1, - pub rn_node: radix_node__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct radix_node__bindgen_ty_1__bindgen_ty_1 { - pub rn_Key: caddr_t, - pub rn_Mask: caddr_t, - pub rn_Dupedkey: *mut radix_node, -} -#[test] -fn bindgen_test_layout_radix_node__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Key) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rn_Key) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Mask) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rn_Mask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Dupedkey) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rn_Dupedkey) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct radix_node__bindgen_ty_1__bindgen_ty_2 { - pub rn_Off: ::std::os::raw::c_int, - pub rn_L: *mut radix_node, - pub rn_R: *mut radix_node, -} -#[test] -fn bindgen_test_layout_radix_node__bindgen_ty_1__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Off) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(rn_Off) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_L) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(rn_L) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_R) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(rn_R) - ) - ); -} -#[test] -fn bindgen_test_layout_radix_node__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(radix_node__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_leaf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1), - "::", - stringify!(rn_leaf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_node) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1), - "::", - stringify!(rn_node) - ) - ); -} -#[test] -fn bindgen_test_layout_radix_node() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(radix_node)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_mklist) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_mklist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_parent) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_bit) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_bit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_bmask) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_bmask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_flags) as usize - ptr as usize }, - 19usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_u) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_u)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct radix_mask { - pub rm_bit: ::std::os::raw::c_short, - pub rm_unused: ::std::os::raw::c_char, - pub rm_flags: u_char, - pub rm_mklist: *mut radix_mask, - pub rm_rmu: radix_mask__bindgen_ty_1, - pub rm_refs: ::std::os::raw::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union radix_mask__bindgen_ty_1 { - pub rmu_mask: caddr_t, - pub rmu_leaf: *mut radix_node, -} -#[test] -fn bindgen_test_layout_radix_mask__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(radix_mask__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_mask__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmu_mask) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_mask__bindgen_ty_1), - "::", - stringify!(rmu_mask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmu_leaf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_mask__bindgen_ty_1), - "::", - stringify!(rmu_leaf) - ) - ); -} -#[test] -fn bindgen_test_layout_radix_mask() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(radix_mask)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_mask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_bit) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_bit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_unused) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_unused)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_flags) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_mklist) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_mklist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_rmu) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_rmu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_refs) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_refs)) - ); -} -pub type walktree_f_t = ::std::option::Option< - unsafe extern "C" fn(arg1: *mut radix_node, arg2: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int, ->; -pub type rn_matchaddr_f_t = ::std::option::Option< - unsafe extern "C" fn(v: *const ::std::os::raw::c_void, head: *mut radix_head) -> *mut radix_node, ->; -pub type rn_addaddr_f_t = ::std::option::Option< - unsafe extern "C" fn( - v: *mut ::std::os::raw::c_void, - mask: *const ::std::os::raw::c_void, - head: *mut radix_head, - nodes: *mut radix_node, - ) -> *mut radix_node, ->; -pub type rn_deladdr_f_t = ::std::option::Option< - unsafe extern "C" fn( - v: *const ::std::os::raw::c_void, - mask: *const ::std::os::raw::c_void, - head: *mut radix_head, - ) -> *mut radix_node, ->; -pub type rn_lookup_f_t = ::std::option::Option< - unsafe extern "C" fn( - v: *const ::std::os::raw::c_void, - mask: *const ::std::os::raw::c_void, - head: *mut radix_head, - ) -> *mut radix_node, ->; -pub type rn_walktree_t = ::std::option::Option< - unsafe extern "C" fn( - head: *mut radix_head, - f: walktree_f_t, - w: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int, ->; -pub type rn_walktree_from_t = ::std::option::Option< - unsafe extern "C" fn( - head: *mut radix_head, - a: *mut ::std::os::raw::c_void, - m: *mut ::std::os::raw::c_void, - f: walktree_f_t, - w: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int, ->; -pub type rn_close_t = ::std::option::Option; -unsafe extern "C" { - pub fn rn_nextprefix(rn: *mut radix_node) -> *mut radix_node; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct radix_head { - pub rnh_treetop: *mut radix_node, - pub rnh_masks: *mut radix_mask_head, -} -#[test] -fn bindgen_test_layout_radix_head() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(radix_head)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_head)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_treetop) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_head), - "::", - stringify!(rnh_treetop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_masks) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(radix_head), "::", stringify!(rnh_masks)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct radix_node_head { - pub rh: radix_head, - pub rnh_matchaddr: rn_matchaddr_f_t, - pub rnh_addaddr: rn_addaddr_f_t, - pub rnh_deladdr: rn_deladdr_f_t, - pub rnh_lookup: rn_lookup_f_t, - pub rnh_walktree: rn_walktree_t, - pub rnh_walktree_from: rn_walktree_from_t, - pub rnh_close: rn_close_t, - pub rnh_nodes: [radix_node; 3usize], -} -#[test] -fn bindgen_test_layout_radix_node_head() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 216usize, - concat!("Size of: ", stringify!(radix_node_head)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node_head)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rh) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(radix_node_head), "::", stringify!(rh)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_matchaddr) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_matchaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_addaddr) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_addaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_deladdr) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_deladdr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_lookup) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_lookup) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_walktree) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_walktree) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_walktree_from) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_walktree_from) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_close) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_close) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_nodes) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_nodes) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct radix_mask_head { - pub head: radix_head, - pub mask_nodes: [radix_node; 3usize], -} -#[test] -fn bindgen_test_layout_radix_mask_head() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 160usize, - concat!("Size of: ", stringify!(radix_mask_head)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_mask_head)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).head) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(radix_mask_head), "::", stringify!(head)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mask_nodes) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(radix_mask_head), - "::", - stringify!(mask_nodes) - ) - ); -} -unsafe extern "C" { - pub fn rn_inithead_internal(rh: *mut radix_head, base_nodes: *mut radix_node, off: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn rn_inithead(arg1: *mut *mut ::std::os::raw::c_void, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn rn_detachhead(arg1: *mut *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn rn_refines( - arg1: *const ::std::os::raw::c_void, - arg2: *const ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn rn_addroute( - arg1: *mut ::std::os::raw::c_void, - arg2: *const ::std::os::raw::c_void, - arg3: *mut radix_head, - arg4: *mut radix_node, - ) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_delete( - arg1: *const ::std::os::raw::c_void, - arg2: *const ::std::os::raw::c_void, - arg3: *mut radix_head, - ) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_lookup( - v_arg: *const ::std::os::raw::c_void, - m_arg: *const ::std::os::raw::c_void, - head: *mut radix_head, - ) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_match(arg1: *const ::std::os::raw::c_void, arg2: *mut radix_head) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_walktree_from( - h: *mut radix_head, - a: *mut ::std::os::raw::c_void, - m: *mut ::std::os::raw::c_void, - f: walktree_f_t, - w: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn rn_walktree( - arg1: *mut radix_head, - arg2: walktree_f_t, - arg3: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { - pub s_addr: in_addr_t, -} -#[test] -fn bindgen_test_layout_in_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(in_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).s_addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(in_addr), "::", stringify!(s_addr)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { - pub sin_len: u8, - pub sin_family: sa_family_t, - pub sin_port: in_port_t, - pub sin_addr: in_addr, - pub sin_zero: [::std::os::raw::c_char; 8usize], -} -#[test] -fn bindgen_test_layout_sockaddr_in() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sockaddr_in)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockaddr_in)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in), - "::", - stringify!(sin_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_port) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_addr) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_zero) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_zero)) - ); -} -unsafe extern "C" { - pub fn htonl(arg1: u32) -> u32; -} -unsafe extern "C" { - pub fn htons(arg1: u16) -> u16; -} -unsafe extern "C" { - pub fn ntohl(arg1: u32) -> u32; -} -unsafe extern "C" { - pub fn ntohs(arg1: u16) -> u16; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { - pub imr_multiaddr: in_addr, - pub imr_interface: in_addr, -} -#[test] -fn bindgen_test_layout_ip_mreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ip_mreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip_mreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_multiaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq), - "::", - stringify!(imr_multiaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_interface) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq), - "::", - stringify!(imr_interface) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { - pub imr_multiaddr: in_addr, - pub imr_address: in_addr, - pub imr_ifindex: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_ip_mreqn() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(ip_mreqn)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip_mreqn)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_multiaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ip_mreqn), - "::", - stringify!(imr_multiaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_address) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(ip_mreqn), "::", stringify!(imr_address)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_ifindex) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(ip_mreqn), "::", stringify!(imr_ifindex)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { - pub imr_multiaddr: in_addr, - pub imr_sourceaddr: in_addr, - pub imr_interface: in_addr, -} -#[test] -fn bindgen_test_layout_ip_mreq_source() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(ip_mreq_source)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip_mreq_source)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_multiaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq_source), - "::", - stringify!(imr_multiaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_sourceaddr) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq_source), - "::", - stringify!(imr_sourceaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_interface) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq_source), - "::", - stringify!(imr_interface) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct group_req { - pub gr_interface: u32, - pub gr_group: sockaddr_storage, -} -#[test] -fn bindgen_test_layout_group_req() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 136usize, - concat!("Size of: ", stringify!(group_req)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(group_req)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gr_interface) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(group_req), - "::", - stringify!(gr_interface) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gr_group) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(group_req), "::", stringify!(gr_group)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct group_source_req { - pub gsr_interface: u32, - pub gsr_group: sockaddr_storage, - pub gsr_source: sockaddr_storage, -} -#[test] -fn bindgen_test_layout_group_source_req() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 264usize, - concat!("Size of: ", stringify!(group_source_req)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(group_source_req)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gsr_interface) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(group_source_req), - "::", - stringify!(gsr_interface) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gsr_group) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(group_source_req), - "::", - stringify!(gsr_group) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gsr_source) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(group_source_req), - "::", - stringify!(gsr_source) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __msfilterreq { - pub msfr_ifindex: u32, - pub msfr_fmode: u32, - pub msfr_nsrcs: u32, - pub msfr_group: sockaddr_storage, - pub msfr_srcs: *mut sockaddr_storage, -} -#[test] -fn bindgen_test_layout___msfilterreq() { - const UNINIT: ::std::mem::MaybeUninit<__msfilterreq> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__msfilterreq>(), - 152usize, - concat!("Size of: ", stringify!(__msfilterreq)) - ); - assert_eq!( - ::std::mem::align_of::<__msfilterreq>(), - 8usize, - concat!("Alignment of ", stringify!(__msfilterreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msfr_ifindex) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__msfilterreq), - "::", - stringify!(msfr_ifindex) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msfr_fmode) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__msfilterreq), - "::", - stringify!(msfr_fmode) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msfr_nsrcs) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__msfilterreq), - "::", - stringify!(msfr_nsrcs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msfr_group) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__msfilterreq), - "::", - stringify!(msfr_group) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msfr_srcs) as usize - ptr as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(__msfilterreq), - "::", - stringify!(msfr_srcs) - ) - ); -} -unsafe extern "C" { - pub fn setipv4sourcefilter( - arg1: ::std::os::raw::c_int, - arg2: in_addr, - arg3: in_addr, - arg4: u32, - arg5: u32, - arg6: *mut in_addr, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getipv4sourcefilter( - arg1: ::std::os::raw::c_int, - arg2: in_addr, - arg3: in_addr, - arg4: *mut u32, - arg5: *mut u32, - arg6: *mut in_addr, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn setsourcefilter( - arg1: ::std::os::raw::c_int, - arg2: u32, - arg3: *mut sockaddr, - arg4: socklen_t, - arg5: u32, - arg6: u32, - arg7: *mut sockaddr_storage, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getsourcefilter( - arg1: ::std::os::raw::c_int, - arg2: u32, - arg3: *mut sockaddr, - arg4: socklen_t, - arg5: *mut u32, - arg6: *mut u32, - arg7: *mut sockaddr_storage, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { - pub __u6_addr: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { - pub __u6_addr8: [u8; 16usize], - pub __u6_addr16: [u16; 8usize], - pub __u6_addr32: [u32; 4usize], -} -#[test] -fn bindgen_test_layout_in6_addr__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(in6_addr__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in6_addr__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_addr__bindgen_ty_1), - "::", - stringify!(__u6_addr8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr16) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_addr__bindgen_ty_1), - "::", - stringify!(__u6_addr16) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr32) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_addr__bindgen_ty_1), - "::", - stringify!(__u6_addr32) - ) - ); -} -#[test] -fn bindgen_test_layout_in6_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(in6_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in6_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(in6_addr), "::", stringify!(__u6_addr)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { - pub sin6_len: u8, - pub sin6_family: sa_family_t, - pub sin6_port: in_port_t, - pub sin6_flowinfo: u32, - pub sin6_addr: in6_addr, - pub sin6_scope_id: u32, -} -#[test] -fn bindgen_test_layout_sockaddr_in6() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 28usize, - concat!("Size of: ", stringify!(sockaddr_in6)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockaddr_in6)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_port) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_port) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_flowinfo) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_flowinfo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_addr) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_scope_id) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_scope_id) - ) - ); -} -unsafe extern "C" { - pub static in6addr_any: in6_addr; -} -unsafe extern "C" { - pub static in6addr_loopback: in6_addr; -} -unsafe extern "C" { - pub static in6addr_nodelocal_allnodes: in6_addr; -} -unsafe extern "C" { - pub static in6addr_linklocal_allnodes: in6_addr; -} -unsafe extern "C" { - pub static in6addr_linklocal_allrouters: in6_addr; -} -unsafe extern "C" { - pub static in6addr_linklocal_allv2routers: in6_addr; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct nhop_object { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct route_in6 { - pub ro_nh: *mut nhop_object, - pub ro_lle: *mut llentry, - pub ro_prepend: *mut ::std::os::raw::c_char, - pub ro_plen: u16, - pub ro_flags: u16, - pub ro_mtu: u16, - pub spare: u16, - pub ro_dst: sockaddr_in6, -} -#[test] -fn bindgen_test_layout_route_in6() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(route_in6)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(route_in6)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_nh) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(route_in6), "::", stringify!(ro_nh)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_lle) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(route_in6), "::", stringify!(ro_lle)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_prepend) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(route_in6), "::", stringify!(ro_prepend)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_plen) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(route_in6), "::", stringify!(ro_plen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_flags) as usize - ptr as usize }, - 26usize, - concat!("Offset of field: ", stringify!(route_in6), "::", stringify!(ro_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_mtu) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(route_in6), "::", stringify!(ro_mtu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).spare) as usize - ptr as usize }, - 30usize, - concat!("Offset of field: ", stringify!(route_in6), "::", stringify!(spare)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_dst) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(route_in6), "::", stringify!(ro_dst)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { - pub ipv6mr_multiaddr: in6_addr, - pub ipv6mr_interface: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_ipv6_mreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(ipv6_mreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ipv6_mreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipv6mr_multiaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ipv6_mreq), - "::", - stringify!(ipv6mr_multiaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipv6mr_interface) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ipv6_mreq), - "::", - stringify!(ipv6mr_interface) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { - pub ipi6_addr: in6_addr, - pub ipi6_ifindex: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_in6_pktinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(in6_pktinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in6_pktinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipi6_addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_pktinfo), - "::", - stringify!(ipi6_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipi6_ifindex) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(in6_pktinfo), - "::", - stringify!(ipi6_ifindex) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { - pub ip6m_addr: sockaddr_in6, - pub ip6m_mtu: u32, -} -#[test] -fn bindgen_test_layout_ip6_mtuinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(ip6_mtuinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip6_mtuinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ip6m_addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ip6_mtuinfo), - "::", - stringify!(ip6m_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ip6m_mtu) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(ip6_mtuinfo), "::", stringify!(ip6m_mtu)) - ); -} -unsafe extern "C" { - pub fn inet6_option_space(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_option_init( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut *mut cmsghdr, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_option_append( - arg1: *mut cmsghdr, - arg2: *const u8, - arg3: ::std::os::raw::c_int, - arg4: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_option_alloc( - arg1: *mut cmsghdr, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: ::std::os::raw::c_int, - ) -> *mut u8; -} -unsafe extern "C" { - pub fn inet6_option_next(arg1: *const cmsghdr, arg2: *mut *mut u8) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_option_find( - arg1: *const cmsghdr, - arg2: *mut *mut u8, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rthdr_space(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> usize; -} -unsafe extern "C" { - pub fn inet6_rthdr_init(arg1: *mut ::std::os::raw::c_void, arg2: ::std::os::raw::c_int) -> *mut cmsghdr; -} -unsafe extern "C" { - pub fn inet6_rthdr_add( - arg1: *mut cmsghdr, - arg2: *const in6_addr, - arg3: ::std::os::raw::c_uint, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rthdr_lasthop(arg1: *mut cmsghdr, arg2: ::std::os::raw::c_uint) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rthdr_segments(arg1: *const cmsghdr) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rthdr_getaddr(arg1: *mut cmsghdr, arg2: ::std::os::raw::c_int) -> *mut in6_addr; -} -unsafe extern "C" { - pub fn inet6_rthdr_getflags(arg1: *const cmsghdr, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_init(arg1: *mut ::std::os::raw::c_void, arg2: socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_append( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: u8, - arg5: socklen_t, - arg6: u8, - arg7: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_finish( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_set_val( - arg1: *mut ::std::os::raw::c_void, - arg2: ::std::os::raw::c_int, - arg3: *mut ::std::os::raw::c_void, - arg4: socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_next( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: *mut u8, - arg5: *mut socklen_t, - arg6: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_find( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: u8, - arg5: *mut socklen_t, - arg6: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_get_val( - arg1: *mut ::std::os::raw::c_void, - arg2: ::std::os::raw::c_int, - arg3: *mut ::std::os::raw::c_void, - arg4: socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_space(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> socklen_t; -} -unsafe extern "C" { - pub fn inet6_rth_init( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: ::std::os::raw::c_int, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn inet6_rth_add(arg1: *mut ::std::os::raw::c_void, arg2: *const in6_addr) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_reverse( - arg1: *const ::std::os::raw::c_void, - arg2: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_segments(arg1: *const ::std::os::raw::c_void) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_getaddr(arg1: *const ::std::os::raw::c_void, arg2: ::std::os::raw::c_int) -> *mut in6_addr; -} -pub const PF_INOUT: _bindgen_ty_1 = 0; -pub const PF_IN: _bindgen_ty_1 = 1; -pub const PF_OUT: _bindgen_ty_1 = 2; -pub type _bindgen_ty_1 = ::std::os::raw::c_uint; -pub const PF_PASS: _bindgen_ty_2 = 0; -pub const PF_DROP: _bindgen_ty_2 = 1; -pub const PF_SCRUB: _bindgen_ty_2 = 2; -pub const PF_NOSCRUB: _bindgen_ty_2 = 3; -pub const PF_NAT: _bindgen_ty_2 = 4; -pub const PF_NONAT: _bindgen_ty_2 = 5; -pub const PF_BINAT: _bindgen_ty_2 = 6; -pub const PF_NOBINAT: _bindgen_ty_2 = 7; -pub const PF_RDR: _bindgen_ty_2 = 8; -pub const PF_NORDR: _bindgen_ty_2 = 9; -pub const PF_SYNPROXY_DROP: _bindgen_ty_2 = 10; -pub const PF_DEFER: _bindgen_ty_2 = 11; -pub const PF_MATCH: _bindgen_ty_2 = 12; -pub type _bindgen_ty_2 = ::std::os::raw::c_uint; -pub const PF_RULESET_SCRUB: _bindgen_ty_3 = 0; -pub const PF_RULESET_FILTER: _bindgen_ty_3 = 1; -pub const PF_RULESET_NAT: _bindgen_ty_3 = 2; -pub const PF_RULESET_BINAT: _bindgen_ty_3 = 3; -pub const PF_RULESET_RDR: _bindgen_ty_3 = 4; -pub const PF_RULESET_MAX: _bindgen_ty_3 = 5; -pub type _bindgen_ty_3 = ::std::os::raw::c_uint; -pub const PF_OP_NONE: _bindgen_ty_4 = 0; -pub const PF_OP_IRG: _bindgen_ty_4 = 1; -pub const PF_OP_EQ: _bindgen_ty_4 = 2; -pub const PF_OP_NE: _bindgen_ty_4 = 3; -pub const PF_OP_LT: _bindgen_ty_4 = 4; -pub const PF_OP_LE: _bindgen_ty_4 = 5; -pub const PF_OP_GT: _bindgen_ty_4 = 6; -pub const PF_OP_GE: _bindgen_ty_4 = 7; -pub const PF_OP_XRG: _bindgen_ty_4 = 8; -pub const PF_OP_RRG: _bindgen_ty_4 = 9; -pub type _bindgen_ty_4 = ::std::os::raw::c_uint; -pub const PF_DEBUG_NONE: _bindgen_ty_5 = 0; -pub const PF_DEBUG_URGENT: _bindgen_ty_5 = 1; -pub const PF_DEBUG_MISC: _bindgen_ty_5 = 2; -pub const PF_DEBUG_NOISY: _bindgen_ty_5 = 3; -pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -pub const PF_CHANGE_NONE: _bindgen_ty_6 = 0; -pub const PF_CHANGE_ADD_HEAD: _bindgen_ty_6 = 1; -pub const PF_CHANGE_ADD_TAIL: _bindgen_ty_6 = 2; -pub const PF_CHANGE_ADD_BEFORE: _bindgen_ty_6 = 3; -pub const PF_CHANGE_ADD_AFTER: _bindgen_ty_6 = 4; -pub const PF_CHANGE_REMOVE: _bindgen_ty_6 = 5; -pub const PF_CHANGE_GET_TICKET: _bindgen_ty_6 = 6; -pub type _bindgen_ty_6 = ::std::os::raw::c_uint; -pub const PF_GET_NONE: _bindgen_ty_7 = 0; -pub const PF_GET_CLR_CNTR: _bindgen_ty_7 = 1; -pub type _bindgen_ty_7 = ::std::os::raw::c_uint; -pub const PF_SK_WIRE: _bindgen_ty_8 = 0; -pub const PF_SK_STACK: _bindgen_ty_8 = 1; -pub const PF_SK_BOTH: _bindgen_ty_8 = 2; -pub type _bindgen_ty_8 = ::std::os::raw::c_uint; -pub const PF_PEER_SRC: _bindgen_ty_9 = 0; -pub const PF_PEER_DST: _bindgen_ty_9 = 1; -pub const PF_PEER_BOTH: _bindgen_ty_9 = 2; -pub type _bindgen_ty_9 = ::std::os::raw::c_uint; -pub const PFTM_TCP_FIRST_PACKET: _bindgen_ty_10 = 0; -pub const PFTM_TCP_OPENING: _bindgen_ty_10 = 1; -pub const PFTM_TCP_ESTABLISHED: _bindgen_ty_10 = 2; -pub const PFTM_TCP_CLOSING: _bindgen_ty_10 = 3; -pub const PFTM_TCP_FIN_WAIT: _bindgen_ty_10 = 4; -pub const PFTM_TCP_CLOSED: _bindgen_ty_10 = 5; -pub const PFTM_UDP_FIRST_PACKET: _bindgen_ty_10 = 6; -pub const PFTM_UDP_SINGLE: _bindgen_ty_10 = 7; -pub const PFTM_UDP_MULTIPLE: _bindgen_ty_10 = 8; -pub const PFTM_ICMP_FIRST_PACKET: _bindgen_ty_10 = 9; -pub const PFTM_ICMP_ERROR_REPLY: _bindgen_ty_10 = 10; -pub const PFTM_OTHER_FIRST_PACKET: _bindgen_ty_10 = 11; -pub const PFTM_OTHER_SINGLE: _bindgen_ty_10 = 12; -pub const PFTM_OTHER_MULTIPLE: _bindgen_ty_10 = 13; -pub const PFTM_FRAG: _bindgen_ty_10 = 14; -pub const PFTM_INTERVAL: _bindgen_ty_10 = 15; -pub const PFTM_ADAPTIVE_START: _bindgen_ty_10 = 16; -pub const PFTM_ADAPTIVE_END: _bindgen_ty_10 = 17; -pub const PFTM_SRC_NODE: _bindgen_ty_10 = 18; -pub const PFTM_TS_DIFF: _bindgen_ty_10 = 19; -pub const PFTM_MAX: _bindgen_ty_10 = 20; -pub const PFTM_PURGE: _bindgen_ty_10 = 21; -pub const PFTM_UNLINKED: _bindgen_ty_10 = 22; -pub type _bindgen_ty_10 = ::std::os::raw::c_uint; -pub const PF_NOPFROUTE: _bindgen_ty_11 = 0; -pub const PF_FASTROUTE: _bindgen_ty_11 = 1; -pub const PF_ROUTETO: _bindgen_ty_11 = 2; -pub const PF_DUPTO: _bindgen_ty_11 = 3; -pub const PF_REPLYTO: _bindgen_ty_11 = 4; -pub type _bindgen_ty_11 = ::std::os::raw::c_uint; -pub const PF_LIMIT_STATES: _bindgen_ty_12 = 0; -pub const PF_LIMIT_SRC_NODES: _bindgen_ty_12 = 1; -pub const PF_LIMIT_FRAGS: _bindgen_ty_12 = 2; -pub const PF_LIMIT_TABLE_ENTRIES: _bindgen_ty_12 = 3; -pub const PF_LIMIT_MAX: _bindgen_ty_12 = 4; -pub type _bindgen_ty_12 = ::std::os::raw::c_uint; -pub const PF_POOL_NONE: _bindgen_ty_13 = 0; -pub const PF_POOL_BITMASK: _bindgen_ty_13 = 1; -pub const PF_POOL_RANDOM: _bindgen_ty_13 = 2; -pub const PF_POOL_SRCHASH: _bindgen_ty_13 = 3; -pub const PF_POOL_ROUNDROBIN: _bindgen_ty_13 = 4; -pub type _bindgen_ty_13 = ::std::os::raw::c_uint; -pub const PF_ADDR_ADDRMASK: _bindgen_ty_14 = 0; -pub const PF_ADDR_NOROUTE: _bindgen_ty_14 = 1; -pub const PF_ADDR_DYNIFTL: _bindgen_ty_14 = 2; -pub const PF_ADDR_TABLE: _bindgen_ty_14 = 3; -pub const PF_ADDR_URPFFAILED: _bindgen_ty_14 = 4; -pub const PF_ADDR_RANGE: _bindgen_ty_14 = 5; -pub type _bindgen_ty_14 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_nv { - pub data: *mut ::std::os::raw::c_void, - pub len: usize, - pub size: usize, -} -#[test] -fn bindgen_test_layout_pfioc_nv() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pfioc_nv)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_nv)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_nv), "::", stringify!(data)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_nv), "::", stringify!(len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfioc_nv), "::", stringify!(size)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_kif_cmp { - pub pfik_name: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_pfi_kif_cmp() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfi_kif_cmp)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfi_kif_cmp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif_cmp), - "::", - stringify!(pfik_name) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfi_kif { - pub pfik_name: [::std::os::raw::c_char; 16usize], - pub __bindgen_anon_1: pfi_kif__bindgen_ty_1, - pub pfik_packets: [[[u_int64_t; 2usize]; 2usize]; 2usize], - pub pfik_bytes: [[[u_int64_t; 2usize]; 2usize]; 2usize], - pub pfik_tzero: u_int32_t, - pub pfik_flags: u_int, - pub pfik_ifp: *mut ifnet, - pub pfik_group: *mut ifg_group, - pub pfik_rulerefs: u_int, - pub pfik_dynaddrs: pfi_kif__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfi_kif__bindgen_ty_1 { - pub pfik_tree: pfi_kif__bindgen_ty_1__bindgen_ty_1, - pub pfik_list: pfi_kif__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_kif__bindgen_ty_1__bindgen_ty_1 { - pub rbe_link: [*mut pfi_kif; 3usize], -} -#[test] -fn bindgen_test_layout_pfi_kif__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pfi_kif__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfi_kif__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_link) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rbe_link) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_kif__bindgen_ty_1__bindgen_ty_2 { - pub le_next: *mut pfi_kif, - pub le_prev: *mut *mut pfi_kif, -} -#[test] -fn bindgen_test_layout_pfi_kif__bindgen_ty_1__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfi_kif__bindgen_ty_1__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfi_kif__bindgen_ty_1__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).le_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(le_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).le_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(le_prev) - ) - ); -} -#[test] -fn bindgen_test_layout_pfi_kif__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pfi_kif__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfi_kif__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_tree) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_1), - "::", - stringify!(pfik_tree) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_list) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_1), - "::", - stringify!(pfik_list) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_kif__bindgen_ty_2 { - pub tqh_first: *mut pfi_dynaddr, - pub tqh_last: *mut *mut pfi_dynaddr, -} -#[test] -fn bindgen_test_layout_pfi_kif__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfi_kif__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfi_kif__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_2), - "::", - stringify!(tqh_first) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_last) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_2), - "::", - stringify!(tqh_last) - ) - ); -} -#[test] -fn bindgen_test_layout_pfi_kif() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 216usize, - concat!("Size of: ", stringify!(pfi_kif)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfi_kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_packets) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_packets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_bytes) as usize - ptr as usize }, - 104usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_bytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_tzero) as usize - ptr as usize }, - 168usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_tzero)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_flags) as usize - ptr as usize }, - 172usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_ifp) as usize - ptr as usize }, - 176usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_ifp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_group) as usize - ptr as usize }, - 184usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_group)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_rulerefs) as usize - ptr as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif), - "::", - stringify!(pfik_rulerefs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_dynaddrs) as usize - ptr as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif), - "::", - stringify!(pfik_dynaddrs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_status { - pub counters: [u64; 16usize], - pub lcounters: [u64; 7usize], - pub fcounters: [u64; 3usize], - pub scounters: [u64; 3usize], - pub pcounters: [[[u64; 3usize]; 2usize]; 2usize], - pub bcounters: [[u64; 2usize]; 2usize], - pub running: u32, - pub states: u32, - pub src_nodes: u32, - pub since: u32, - pub debug: u32, - pub hostid: u32, - pub ifname: [::std::os::raw::c_char; 16usize], - pub pf_chksum: [u8; 16usize], -} -#[test] -fn bindgen_test_layout_pf_status() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 416usize, - concat!("Size of: ", stringify!(pf_status)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_status)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).counters) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(counters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lcounters) as usize - ptr as usize }, - 128usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(lcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fcounters) as usize - ptr as usize }, - 184usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(fcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scounters) as usize - ptr as usize }, - 208usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(scounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pcounters) as usize - ptr as usize }, - 232usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(pcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bcounters) as usize - ptr as usize }, - 328usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(bcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).running) as usize - ptr as usize }, - 360usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(running)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states) as usize - ptr as usize }, - 364usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src_nodes) as usize - ptr as usize }, - 368usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(src_nodes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).since) as usize - ptr as usize }, - 372usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(since)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).debug) as usize - ptr as usize }, - 376usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(debug)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hostid) as usize - ptr as usize }, - 380usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(hostid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 384usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pf_chksum) as usize - ptr as usize }, - 400usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(pf_chksum)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_addr { - pub pfa: pf_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_addr__bindgen_ty_1 { - pub v4: in_addr, - pub v6: in6_addr, - pub addr8: [u_int8_t; 16usize], - pub addr16: [u_int16_t; 8usize], - pub addr32: [u_int32_t; 4usize], -} -#[test] -fn bindgen_test_layout_pf_addr__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_addr__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).v4) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(v4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).v6) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(v6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(addr8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr16) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(addr16) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr32) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(addr32) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_addr() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_addr_wrap { - pub v: pf_addr_wrap__bindgen_ty_1, - pub p: pf_addr_wrap__bindgen_ty_2, - pub type_: u_int8_t, - pub iflags: u_int8_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_addr_wrap__bindgen_ty_1 { - pub a: pf_addr_wrap__bindgen_ty_1__bindgen_ty_1, - pub ifname: [::std::os::raw::c_char; 16usize], - pub tblname: [::std::os::raw::c_char; 32usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_addr_wrap__bindgen_ty_1__bindgen_ty_1 { - pub addr: pf_addr, - pub mask: pf_addr, -} -#[test] -fn bindgen_test_layout_pf_addr_wrap__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mask) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(mask) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_addr_wrap__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_addr_wrap__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr_wrap__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).a) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(a) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tblname) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(tblname) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_addr_wrap__bindgen_ty_2 { - pub dyn_: *mut pfi_dynaddr, - pub tbl: *mut pfr_ktable, - pub dyncnt: ::std::os::raw::c_int, - pub tblcnt: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_addr_wrap__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_addr_wrap__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_addr_wrap__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dyn_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(dyn_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tbl) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(tbl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dyncnt) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(dyncnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tblcnt) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(tblcnt) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_addr_wrap() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(pf_addr_wrap)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_addr_wrap)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).v) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(v)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).p) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(p)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(type_)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).iflags) as usize - ptr as usize }, - 41usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(iflags)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_rule_ptr { - pub ptr: *mut pf_rule, - pub nr: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_rule_ptr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_rule_ptr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule_ptr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ptr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_ptr), "::", stringify!(ptr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_ptr), "::", stringify!(nr)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule_uid { - pub uid: [uid_t; 2usize], - pub op: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_rule_uid() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(pf_rule_uid)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule_uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_uid), "::", stringify!(uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).op) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_rule_uid), "::", stringify!(op)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule_gid { - pub gid: [uid_t; 2usize], - pub op: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_rule_gid() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(pf_rule_gid)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule_gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_gid), "::", stringify!(gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).op) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_rule_gid), "::", stringify!(op)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_rule_addr { - pub addr: pf_addr_wrap, - pub port: [u_int16_t; 2usize], - pub neg: u_int8_t, - pub port_op: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_rule_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(pf_rule_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).neg) as usize - ptr as usize }, - 52usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(neg)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port_op) as usize - ptr as usize }, - 53usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(port_op)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_pooladdr { - pub addr: pf_addr_wrap, - pub entries: pf_pooladdr__bindgen_ty_1, - pub ifname: [::std::os::raw::c_char; 16usize], - pub kif: *mut pfi_kif, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_pooladdr__bindgen_ty_1 { - pub tqe_next: *mut pf_pooladdr, - pub tqe_prev: *mut *mut pf_pooladdr, -} -#[test] -fn bindgen_test_layout_pf_pooladdr__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_pooladdr__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_pooladdr__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_pooladdr__bindgen_ty_1), - "::", - stringify!(tqe_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_pooladdr__bindgen_ty_1), - "::", - stringify!(tqe_prev) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_pooladdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(pf_pooladdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_pooladdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_pooladdr), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_pooladdr), "::", stringify!(entries)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_pooladdr), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pf_pooladdr), "::", stringify!(kif)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_palist { - pub tqh_first: *mut pf_pooladdr, - pub tqh_last: *mut *mut pf_pooladdr, -} -#[test] -fn bindgen_test_layout_pf_palist() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_palist)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_palist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_first) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_palist), "::", stringify!(tqh_first)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_last) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_palist), "::", stringify!(tqh_last)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_poolhashkey { - pub __bindgen_anon_1: pf_poolhashkey__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_poolhashkey__bindgen_ty_1 { - pub key8: [u_int8_t; 16usize], - pub key16: [u_int16_t; 8usize], - pub key32: [u_int32_t; 4usize], -} -#[test] -fn bindgen_test_layout_pf_poolhashkey__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_poolhashkey__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_poolhashkey__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_poolhashkey__bindgen_ty_1), - "::", - stringify!(key8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key16) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_poolhashkey__bindgen_ty_1), - "::", - stringify!(key16) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key32) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_poolhashkey__bindgen_ty_1), - "::", - stringify!(key32) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_poolhashkey() { - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_poolhashkey)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_poolhashkey)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_mape_portset { - pub offset: u_int8_t, - pub psidlen: u_int8_t, - pub psid: u_int16_t, -} -#[test] -fn bindgen_test_layout_pf_mape_portset() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(pf_mape_portset)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(pf_mape_portset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_mape_portset), - "::", - stringify!(offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psidlen) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(pf_mape_portset), - "::", - stringify!(psidlen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psid) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(pf_mape_portset), "::", stringify!(psid)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_pool { - pub list: pf_palist, - pub cur: *mut pf_pooladdr, - pub key: pf_poolhashkey, - pub counter: pf_addr, - pub tblidx: ::std::os::raw::c_int, - pub proxy_port: [u_int16_t; 2usize], - pub opts: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_pool() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 72usize, - concat!("Size of: ", stringify!(pf_pool)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_pool)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).list) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(list)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cur) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(cur)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(key)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).counter) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(counter)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tblidx) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(tblidx)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proxy_port) as usize - ptr as usize }, - 60usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(proxy_port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).opts) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(opts)) - ); -} -pub type pf_osfp_t = u_int32_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_osfp_entry { - pub fp_entry: pf_osfp_entry__bindgen_ty_1, - pub fp_os: pf_osfp_t, - pub fp_enflags: ::std::os::raw::c_int, - pub fp_class_nm: [::std::os::raw::c_char; 32usize], - pub fp_version_nm: [::std::os::raw::c_char; 32usize], - pub fp_subtype_nm: [::std::os::raw::c_char; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_osfp_entry__bindgen_ty_1 { - pub sle_next: *mut pf_osfp_entry, -} -#[test] -fn bindgen_test_layout_pf_osfp_entry__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_osfp_entry__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_osfp_entry__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry__bindgen_ty_1), - "::", - stringify!(sle_next) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_osfp_entry() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 112usize, - concat!("Size of: ", stringify!(pf_osfp_entry)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_osfp_entry)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_entry) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_entry) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_os) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_osfp_entry), "::", stringify!(fp_os)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_enflags) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_enflags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_class_nm) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_class_nm) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_version_nm) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_version_nm) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_subtype_nm) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_subtype_nm) - ) - ); -} -pub type pf_tcpopts_t = u_int64_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_os_fingerprint { - pub fp_oses: pf_os_fingerprint_pf_osfp_enlist, - pub fp_tcpopts: pf_tcpopts_t, - pub fp_wsize: u_int16_t, - pub fp_psize: u_int16_t, - pub fp_mss: u_int16_t, - pub fp_flags: u_int16_t, - pub fp_optcnt: u_int8_t, - pub fp_wscale: u_int8_t, - pub fp_ttl: u_int8_t, - pub fp_next: pf_os_fingerprint__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_os_fingerprint_pf_osfp_enlist { - pub slh_first: *mut pf_osfp_entry, -} -#[test] -fn bindgen_test_layout_pf_os_fingerprint_pf_osfp_enlist() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_os_fingerprint_pf_osfp_enlist)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_os_fingerprint_pf_osfp_enlist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).slh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint_pf_osfp_enlist), - "::", - stringify!(slh_first) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_os_fingerprint__bindgen_ty_1 { - pub sle_next: *mut pf_os_fingerprint, -} -#[test] -fn bindgen_test_layout_pf_os_fingerprint__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_os_fingerprint__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_os_fingerprint__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint__bindgen_ty_1), - "::", - stringify!(sle_next) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_os_fingerprint() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pf_os_fingerprint)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_os_fingerprint)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_oses) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_oses) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_tcpopts) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_tcpopts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wsize) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_wsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_psize) as usize - ptr as usize }, - 18usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_psize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_mss) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_mss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_flags) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_optcnt) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_optcnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wscale) as usize - ptr as usize }, - 25usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_wscale) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_ttl) as usize - ptr as usize }, - 26usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_next) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_next) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_osfp_ioctl { - pub fp_os: pf_osfp_entry, - pub fp_tcpopts: pf_tcpopts_t, - pub fp_wsize: u_int16_t, - pub fp_psize: u_int16_t, - pub fp_mss: u_int16_t, - pub fp_flags: u_int16_t, - pub fp_optcnt: u_int8_t, - pub fp_wscale: u_int8_t, - pub fp_ttl: u_int8_t, - pub fp_getnum: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_osfp_ioctl() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 136usize, - concat!("Size of: ", stringify!(pf_osfp_ioctl)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_osfp_ioctl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_os) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_osfp_ioctl), "::", stringify!(fp_os)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_tcpopts) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_tcpopts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wsize) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_wsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_psize) as usize - ptr as usize }, - 122usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_psize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_mss) as usize - ptr as usize }, - 124usize, - concat!("Offset of field: ", stringify!(pf_osfp_ioctl), "::", stringify!(fp_mss)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_flags) as usize - ptr as usize }, - 126usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_optcnt) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_optcnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wscale) as usize - ptr as usize }, - 129usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_wscale) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_ttl) as usize - ptr as usize }, - 130usize, - concat!("Offset of field: ", stringify!(pf_osfp_ioctl), "::", stringify!(fp_ttl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_getnum) as usize - ptr as usize }, - 132usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_getnum) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_rule { - pub src: pf_rule_addr, - pub dst: pf_rule_addr, - pub skip: [pf_rule_ptr; 8usize], - pub label: [::std::os::raw::c_char; 64usize], - pub ifname: [::std::os::raw::c_char; 16usize], - pub qname: [::std::os::raw::c_char; 64usize], - pub pqname: [::std::os::raw::c_char; 64usize], - pub tagname: [::std::os::raw::c_char; 64usize], - pub match_tagname: [::std::os::raw::c_char; 64usize], - pub overload_tblname: [::std::os::raw::c_char; 32usize], - pub entries: pf_rule__bindgen_ty_1, - pub rpool: pf_pool, - pub evaluations: u_int64_t, - pub packets: [u_int64_t; 2usize], - pub bytes: [u_int64_t; 2usize], - pub kif: *mut pfi_kif, - pub anchor: *mut pf_anchor, - pub overload_tbl: *mut pfr_ktable, - pub os_fingerprint: pf_osfp_t, - pub rtableid: ::std::os::raw::c_int, - pub timeout: [u_int32_t; 20usize], - pub max_states: u_int32_t, - pub max_src_nodes: u_int32_t, - pub max_src_states: u_int32_t, - pub max_src_conn: u_int32_t, - pub max_src_conn_rate: pf_rule__bindgen_ty_2, - pub qid: u_int32_t, - pub pqid: u_int32_t, - pub rt_listid: u_int32_t, - pub nr: u_int32_t, - pub prob: u_int32_t, - pub cuid: uid_t, - pub cpid: pid_t, - pub states_cur: counter_u64_t, - pub states_tot: counter_u64_t, - pub src_nodes: counter_u64_t, - pub return_icmp: u_int16_t, - pub return_icmp6: u_int16_t, - pub max_mss: u_int16_t, - pub tag: u_int16_t, - pub match_tag: u_int16_t, - pub scrub_flags: u_int16_t, - pub uid: pf_rule_uid, - pub gid: pf_rule_gid, - pub rule_flag: u_int32_t, - pub action: u_int8_t, - pub direction: u_int8_t, - pub log: u_int8_t, - pub logif: u_int8_t, - pub quick: u_int8_t, - pub ifnot: u_int8_t, - pub match_tag_not: u_int8_t, - pub natpass: u_int8_t, - pub keep_state: u_int8_t, - pub af: sa_family_t, - pub proto: u_int8_t, - pub type_: u_int8_t, - pub code: u_int8_t, - pub flags: u_int8_t, - pub flagset: u_int8_t, - pub min_ttl: u_int8_t, - pub allow_opts: u_int8_t, - pub rt: u_int8_t, - pub return_ttl: u_int8_t, - pub tos: u_int8_t, - pub set_tos: u_int8_t, - pub anchor_relative: u_int8_t, - pub anchor_wildcard: u_int8_t, - pub flush: u_int8_t, - pub prio: u_int8_t, - pub set_prio: [u_int8_t; 2usize], - pub divert: pf_rule__bindgen_ty_3, - pub u_states_cur: u64, - pub u_states_tot: u64, - pub u_src_nodes: u64, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule__bindgen_ty_1 { - pub tqe_next: *mut pf_rule, - pub tqe_prev: *mut *mut pf_rule, -} -#[test] -fn bindgen_test_layout_pf_rule__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_rule__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_1), - "::", - stringify!(tqe_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_1), - "::", - stringify!(tqe_prev) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule__bindgen_ty_2 { - pub limit: u_int32_t, - pub seconds: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_rule__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_rule__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).limit) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_2), - "::", - stringify!(limit) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seconds) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_2), - "::", - stringify!(seconds) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_rule__bindgen_ty_3 { - pub addr: pf_addr, - pub port: u_int16_t, -} -#[test] -fn bindgen_test_layout_pf_rule__bindgen_ty_3() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(pf_rule__bindgen_ty_3)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule__bindgen_ty_3)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_3), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_3), - "::", - stringify!(port) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_rule() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 976usize, - concat!("Size of: ", stringify!(pf_rule)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(src)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dst) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(dst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).skip) as usize - ptr as usize }, - 112usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(skip)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).label) as usize - ptr as usize }, - 176usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(label)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 240usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qname) as usize - ptr as usize }, - 256usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(qname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pqname) as usize - ptr as usize }, - 320usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(pqname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tagname) as usize - ptr as usize }, - 384usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(tagname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_tagname) as usize - ptr as usize }, - 448usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(match_tagname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).overload_tblname) as usize - ptr as usize }, - 512usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(overload_tblname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, - 544usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(entries)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rpool) as usize - ptr as usize }, - 560usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rpool)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).evaluations) as usize - ptr as usize }, - 632usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(evaluations)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).packets) as usize - ptr as usize }, - 640usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(packets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bytes) as usize - ptr as usize }, - 656usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(bytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 672usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 680usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).overload_tbl) as usize - ptr as usize }, - 688usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(overload_tbl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).os_fingerprint) as usize - ptr as usize }, - 696usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(os_fingerprint) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtableid) as usize - ptr as usize }, - 700usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rtableid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 704usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(timeout)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_states) as usize - ptr as usize }, - 784usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(max_states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_nodes) as usize - ptr as usize }, - 788usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(max_src_nodes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_states) as usize - ptr as usize }, - 792usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(max_src_states) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_conn) as usize - ptr as usize }, - 796usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(max_src_conn)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_conn_rate) as usize - ptr as usize }, - 800usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(max_src_conn_rate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qid) as usize - ptr as usize }, - 808usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(qid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pqid) as usize - ptr as usize }, - 812usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(pqid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt_listid) as usize - ptr as usize }, - 816usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rt_listid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 820usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).prob) as usize - ptr as usize }, - 824usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(prob)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cuid) as usize - ptr as usize }, - 828usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(cuid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cpid) as usize - ptr as usize }, - 832usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(cpid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states_cur) as usize - ptr as usize }, - 840usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(states_cur)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states_tot) as usize - ptr as usize }, - 848usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(states_tot)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src_nodes) as usize - ptr as usize }, - 856usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(src_nodes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).return_icmp) as usize - ptr as usize }, - 864usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(return_icmp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).return_icmp6) as usize - ptr as usize }, - 866usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(return_icmp6)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_mss) as usize - ptr as usize }, - 868usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(max_mss)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize }, - 870usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_tag) as usize - ptr as usize }, - 872usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(match_tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub_flags) as usize - ptr as usize }, - 874usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(scrub_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uid) as usize - ptr as usize }, - 876usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gid) as usize - ptr as usize }, - 888usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule_flag) as usize - ptr as usize }, - 900usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rule_flag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, - 904usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(action)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 905usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(direction)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).log) as usize - ptr as usize }, - 906usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(log)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).logif) as usize - ptr as usize }, - 907usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(logif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).quick) as usize - ptr as usize }, - 908usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(quick)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnot) as usize - ptr as usize }, - 909usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(ifnot)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_tag_not) as usize - ptr as usize }, - 910usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(match_tag_not) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).natpass) as usize - ptr as usize }, - 911usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(natpass)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).keep_state) as usize - ptr as usize }, - 912usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(keep_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 913usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 914usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 915usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(type_)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).code) as usize - ptr as usize }, - 916usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(code)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 917usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flagset) as usize - ptr as usize }, - 918usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(flagset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).min_ttl) as usize - ptr as usize }, - 919usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(min_ttl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).allow_opts) as usize - ptr as usize }, - 920usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(allow_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt) as usize - ptr as usize }, - 921usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).return_ttl) as usize - ptr as usize }, - 922usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(return_ttl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos) as usize - ptr as usize }, - 923usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(tos)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_tos) as usize - ptr as usize }, - 924usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(set_tos)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor_relative) as usize - ptr as usize }, - 925usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(anchor_relative) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor_wildcard) as usize - ptr as usize }, - 926usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(anchor_wildcard) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flush) as usize - ptr as usize }, - 927usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(flush)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).prio) as usize - ptr as usize }, - 928usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(prio)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_prio) as usize - ptr as usize }, - 929usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(set_prio)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).divert) as usize - ptr as usize }, - 932usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(divert)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u_states_cur) as usize - ptr as usize }, - 952usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(u_states_cur)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u_states_tot) as usize - ptr as usize }, - 960usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(u_states_tot)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u_src_nodes) as usize - ptr as usize }, - 968usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(u_src_nodes)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_threshold { - pub limit: u_int32_t, - pub seconds: u_int32_t, - pub count: u_int32_t, - pub last: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_threshold() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_threshold)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_threshold)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).limit) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(limit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seconds) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(seconds)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(count)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).last) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(last)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_src_node { - pub entry: pf_src_node__bindgen_ty_1, - pub addr: pf_addr, - pub raddr: pf_addr, - pub rule: pf_rule_ptr, - pub kif: *mut pfi_kif, - pub bytes: [u_int64_t; 2usize], - pub packets: [u_int64_t; 2usize], - pub states: u_int32_t, - pub conn: u_int32_t, - pub conn_rate: pf_threshold, - pub creation: u_int32_t, - pub expire: u_int32_t, - pub af: sa_family_t, - pub ruletype: u_int8_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_src_node__bindgen_ty_1 { - pub le_next: *mut pf_src_node, - pub le_prev: *mut *mut pf_src_node, -} -#[test] -fn bindgen_test_layout_pf_src_node__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_src_node__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_src_node__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).le_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node__bindgen_ty_1), - "::", - stringify!(le_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).le_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node__bindgen_ty_1), - "::", - stringify!(le_prev) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_src_node() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 136usize, - concat!("Size of: ", stringify!(pf_src_node)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_src_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(entry)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).raddr) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(raddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bytes) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(bytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).packets) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(packets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states) as usize - ptr as usize }, - 96usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).conn) as usize - ptr as usize }, - 100usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(conn)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).conn_rate) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node), - "::", - stringify!(conn_rate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creation) as usize - ptr as usize }, - 120usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(creation)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).expire) as usize - ptr as usize }, - 124usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(expire)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 128usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ruletype) as usize - ptr as usize }, - 129usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(ruletype)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rulequeue { - pub tqh_first: *mut pf_rule, - pub tqh_last: *mut *mut pf_rule, -} -#[test] -fn bindgen_test_layout_pf_rulequeue() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_rulequeue)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rulequeue)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rulequeue), - "::", - stringify!(tqh_first) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_last) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_rulequeue), - "::", - stringify!(tqh_last) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ruleset { - pub rules: [pf_ruleset__bindgen_ty_1; 5usize], - pub anchor: *mut pf_anchor, - pub tticket: u_int32_t, - pub tables: ::std::os::raw::c_int, - pub topen: ::std::os::raw::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ruleset__bindgen_ty_1 { - pub queues: [pf_rulequeue; 2usize], - pub active: pf_ruleset__bindgen_ty_1__bindgen_ty_1, - pub inactive: pf_ruleset__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ruleset__bindgen_ty_1__bindgen_ty_1 { - pub ptr: *mut pf_rulequeue, - pub ptr_array: *mut *mut pf_rule, - pub rcount: u_int32_t, - pub ticket: u_int32_t, - pub open: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_ruleset__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ptr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(ptr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ptr_array) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(ptr_array) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rcount) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rcount) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(ticket) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).open) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(open) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_ruleset__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(pf_ruleset__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_ruleset__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).queues) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1), - "::", - stringify!(queues) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).active) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1), - "::", - stringify!(active) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).inactive) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1), - "::", - stringify!(inactive) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_ruleset() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 504usize, - concat!("Size of: ", stringify!(pf_ruleset)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_ruleset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rules) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(rules)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 480usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tticket) as usize - ptr as usize }, - 488usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(tticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tables) as usize - ptr as usize }, - 492usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(tables)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).topen) as usize - ptr as usize }, - 496usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(topen)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor_global { - pub rbh_root: *mut pf_anchor, -} -#[test] -fn bindgen_test_layout_pf_anchor_global() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_anchor_global)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor_global)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbh_root) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor_global), - "::", - stringify!(rbh_root) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor_node { - pub rbh_root: *mut pf_anchor, -} -#[test] -fn bindgen_test_layout_pf_anchor_node() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_anchor_node)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbh_root) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor_node), - "::", - stringify!(rbh_root) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor { - pub entry_global: pf_anchor__bindgen_ty_1, - pub entry_node: pf_anchor__bindgen_ty_2, - pub parent: *mut pf_anchor, - pub children: pf_anchor_node, - pub name: [::std::os::raw::c_char; 64usize], - pub path: [::std::os::raw::c_char; 1024usize], - pub ruleset: pf_ruleset, - pub refcnt: ::std::os::raw::c_int, - pub match_: ::std::os::raw::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor__bindgen_ty_1 { - pub rbe_link: [*mut pf_anchor; 3usize], -} -#[test] -fn bindgen_test_layout_pf_anchor__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pf_anchor__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_link) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_1), - "::", - stringify!(rbe_link) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor__bindgen_ty_2 { - pub rbe_link: [*mut pf_anchor; 3usize], -} -#[test] -fn bindgen_test_layout_pf_anchor__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pf_anchor__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_link) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_2), - "::", - stringify!(rbe_link) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_anchor() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1664usize, - concat!("Size of: ", stringify!(pf_anchor)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry_global) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor), - "::", - stringify!(entry_global) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry_node) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(entry_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).children) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(children)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).path) as usize - ptr as usize }, - 128usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(path)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ruleset) as usize - ptr as usize }, - 1152usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(ruleset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).refcnt) as usize - ptr as usize }, - 1656usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(refcnt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_) as usize - ptr as usize }, - 1660usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(match_)) - ); -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_INSERT_COLOR( - arg1: *mut pf_anchor_global, - arg2: *mut pf_anchor, - arg3: *mut pf_anchor, - ) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_REMOVE_COLOR( - arg1: *mut pf_anchor_global, - arg2: *mut pf_anchor, - arg3: *mut pf_anchor, - ) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_INSERT_FINISH( - arg1: *mut pf_anchor_global, - arg2: *mut pf_anchor, - arg3: *mut *mut pf_anchor, - arg4: *mut pf_anchor, - ) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_INSERT(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_REMOVE(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_FIND(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_NFIND(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_NEXT(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_INSERT_NEXT( - arg1: *mut pf_anchor_global, - arg2: *mut pf_anchor, - arg3: *mut pf_anchor, - ) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_PREV(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_INSERT_PREV( - arg1: *mut pf_anchor_global, - arg2: *mut pf_anchor, - arg3: *mut pf_anchor, - ) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_MINMAX(arg1: *mut pf_anchor_global, arg2: ::std::os::raw::c_int) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_REINSERT(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_INSERT_COLOR( - arg1: *mut pf_anchor_node, - arg2: *mut pf_anchor, - arg3: *mut pf_anchor, - ) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_REMOVE_COLOR( - arg1: *mut pf_anchor_node, - arg2: *mut pf_anchor, - arg3: *mut pf_anchor, - ) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_INSERT_FINISH( - arg1: *mut pf_anchor_node, - arg2: *mut pf_anchor, - arg3: *mut *mut pf_anchor, - arg4: *mut pf_anchor, - ) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_INSERT(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_REMOVE(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_FIND(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_NFIND(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_NEXT(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_INSERT_NEXT( - arg1: *mut pf_anchor_node, - arg2: *mut pf_anchor, - arg3: *mut pf_anchor, - ) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_PREV(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_INSERT_PREV( - arg1: *mut pf_anchor_node, - arg2: *mut pf_anchor, - arg3: *mut pf_anchor, - ) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_MINMAX(arg1: *mut pf_anchor_node, arg2: ::std::os::raw::c_int) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_REINSERT(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_get_ruleset_number(arg1: u_int8_t) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cbq_opts { - pub minburst: u_int, - pub maxburst: u_int, - pub pktsize: u_int, - pub maxpktsize: u_int, - pub ns_per_byte: u_int, - pub maxidle: u_int, - pub minidle: ::std::os::raw::c_int, - pub offtime: u_int, - pub flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_cbq_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 36usize, - concat!("Size of: ", stringify!(cbq_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(cbq_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).minburst) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(minburst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).maxburst) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(maxburst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pktsize) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(pktsize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).maxpktsize) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(maxpktsize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ns_per_byte) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(ns_per_byte)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).maxidle) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(maxidle)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).minidle) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(minidle)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).offtime) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(offtime)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct codel_opts { - pub target: u_int, - pub interval: u_int, - pub ecn: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_codel_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(codel_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(codel_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).target) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(codel_opts), "::", stringify!(target)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).interval) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(codel_opts), "::", stringify!(interval)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(codel_opts), "::", stringify!(ecn)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct priq_opts { - pub flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_priq_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(priq_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(priq_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(priq_opts), "::", stringify!(flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct hfsc_opts_v0 { - pub rtsc_m1: u_int, - pub rtsc_d: u_int, - pub rtsc_m2: u_int, - pub lssc_m1: u_int, - pub lssc_d: u_int, - pub lssc_m2: u_int, - pub ulsc_m1: u_int, - pub ulsc_d: u_int, - pub ulsc_m2: u_int, - pub flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_hfsc_opts_v0() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(hfsc_opts_v0)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(hfsc_opts_v0)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_m1) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v0), "::", stringify!(rtsc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_d) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v0), "::", stringify!(rtsc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_m2) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v0), "::", stringify!(rtsc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m1) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v0), "::", stringify!(lssc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_d) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v0), "::", stringify!(lssc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m2) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v0), "::", stringify!(lssc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_m1) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v0), "::", stringify!(ulsc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_d) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v0), "::", stringify!(ulsc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_m2) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v0), "::", stringify!(ulsc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 36usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v0), "::", stringify!(flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct hfsc_opts_v1 { - pub rtsc_m1: u_int64_t, - pub rtsc_d: u_int, - pub rtsc_m2: u_int64_t, - pub lssc_m1: u_int64_t, - pub lssc_d: u_int, - pub lssc_m2: u_int64_t, - pub ulsc_m1: u_int64_t, - pub ulsc_d: u_int, - pub ulsc_m2: u_int64_t, - pub flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_hfsc_opts_v1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 80usize, - concat!("Size of: ", stringify!(hfsc_opts_v1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(hfsc_opts_v1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_m1) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v1), "::", stringify!(rtsc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_d) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v1), "::", stringify!(rtsc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_m2) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v1), "::", stringify!(rtsc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m1) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v1), "::", stringify!(lssc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_d) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v1), "::", stringify!(lssc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m2) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v1), "::", stringify!(lssc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_m1) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v1), "::", stringify!(ulsc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_d) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v1), "::", stringify!(ulsc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_m2) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v1), "::", stringify!(ulsc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(hfsc_opts_v1), "::", stringify!(flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fairq_opts { - pub nbuckets: u_int, - pub hogs_m1: u_int, - pub flags: ::std::os::raw::c_int, - pub lssc_m1: u_int, - pub lssc_d: u_int, - pub lssc_m2: u_int, -} -#[test] -fn bindgen_test_layout_fairq_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(fairq_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(fairq_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nbuckets) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(nbuckets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hogs_m1) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(hogs_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m1) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(lssc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_d) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(lssc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m2) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(lssc_m2)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_altq_v0 { - pub ifname: [::std::os::raw::c_char; 16usize], - pub unused1: *mut ::std::os::raw::c_void, - pub entries: pf_altq_v0__bindgen_ty_1, - pub scheduler: u8, - pub tbrsize: u16, - pub ifbandwidth: u32, - pub qname: [::std::os::raw::c_char; 64usize], - pub parent: [::std::os::raw::c_char; 64usize], - pub parent_qid: u32, - pub bandwidth: u32, - pub priority: u8, - pub local_flags: u8, - pub qlimit: u16, - pub flags: u16, - pub pq_u: pf_altq_v0__bindgen_ty_2, - pub qid: u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_altq_v0__bindgen_ty_1 { - pub tqe_next: *mut pf_altq_v0, - pub tqe_prev: *mut *mut pf_altq_v0, -} -#[test] -fn bindgen_test_layout_pf_altq_v0__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_altq_v0__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_altq_v0__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v0__bindgen_ty_1), - "::", - stringify!(tqe_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v0__bindgen_ty_1), - "::", - stringify!(tqe_prev) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_altq_v0__bindgen_ty_2 { - pub cbq_opts: cbq_opts, - pub codel_opts: codel_opts, - pub priq_opts: priq_opts, - pub hfsc_opts: hfsc_opts_v0, - pub fairq_opts: fairq_opts, -} -#[test] -fn bindgen_test_layout_pf_altq_v0__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pf_altq_v0__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_altq_v0__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cbq_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v0__bindgen_ty_2), - "::", - stringify!(cbq_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).codel_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v0__bindgen_ty_2), - "::", - stringify!(codel_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).priq_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v0__bindgen_ty_2), - "::", - stringify!(priq_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hfsc_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v0__bindgen_ty_2), - "::", - stringify!(hfsc_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fairq_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v0__bindgen_ty_2), - "::", - stringify!(fairq_opts) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_altq_v0() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 240usize, - concat!("Size of: ", stringify!(pf_altq_v0)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_altq_v0)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).unused1) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(unused1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(entries)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scheduler) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(scheduler)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tbrsize) as usize - ptr as usize }, - 42usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(tbrsize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifbandwidth) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v0), - "::", - stringify!(ifbandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qname) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(qname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent) as usize - ptr as usize }, - 112usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent_qid) as usize - ptr as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v0), - "::", - stringify!(parent_qid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bandwidth) as usize - ptr as usize }, - 180usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(bandwidth)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).priority) as usize - ptr as usize }, - 184usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(priority)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).local_flags) as usize - ptr as usize }, - 185usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v0), - "::", - stringify!(local_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qlimit) as usize - ptr as usize }, - 186usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(qlimit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 188usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pq_u) as usize - ptr as usize }, - 192usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(pq_u)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qid) as usize - ptr as usize }, - 232usize, - concat!("Offset of field: ", stringify!(pf_altq_v0), "::", stringify!(qid)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_altq_v1 { - pub ifname: [::std::os::raw::c_char; 16usize], - pub entries: pf_altq_v1__bindgen_ty_1, - pub scheduler: u8, - pub tbrsize: u32, - pub ifbandwidth: u64, - pub qname: [::std::os::raw::c_char; 64usize], - pub parent: [::std::os::raw::c_char; 64usize], - pub parent_qid: u32, - pub bandwidth: u64, - pub priority: u8, - pub local_flags: u8, - pub qlimit: u16, - pub flags: u16, - pub pq_u: pf_altq_v1__bindgen_ty_2, - pub qid: u32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_altq_v1__bindgen_ty_1 { - pub tqe_next: *mut pf_altq_v1, - pub tqe_prev: *mut *mut pf_altq_v1, -} -#[test] -fn bindgen_test_layout_pf_altq_v1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_altq_v1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_altq_v1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v1__bindgen_ty_1), - "::", - stringify!(tqe_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v1__bindgen_ty_1), - "::", - stringify!(tqe_prev) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_altq_v1__bindgen_ty_2 { - pub cbq_opts: cbq_opts, - pub codel_opts: codel_opts, - pub priq_opts: priq_opts, - pub hfsc_opts: hfsc_opts_v1, - pub fairq_opts: fairq_opts, -} -#[test] -fn bindgen_test_layout_pf_altq_v1__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 80usize, - concat!("Size of: ", stringify!(pf_altq_v1__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_altq_v1__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cbq_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v1__bindgen_ty_2), - "::", - stringify!(cbq_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).codel_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v1__bindgen_ty_2), - "::", - stringify!(codel_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).priq_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v1__bindgen_ty_2), - "::", - stringify!(priq_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hfsc_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v1__bindgen_ty_2), - "::", - stringify!(hfsc_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fairq_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v1__bindgen_ty_2), - "::", - stringify!(fairq_opts) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_altq_v1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 288usize, - concat!("Size of: ", stringify!(pf_altq_v1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_altq_v1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(entries)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scheduler) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(scheduler)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tbrsize) as usize - ptr as usize }, - 36usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(tbrsize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifbandwidth) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v1), - "::", - stringify!(ifbandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qname) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(qname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent) as usize - ptr as usize }, - 112usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent_qid) as usize - ptr as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v1), - "::", - stringify!(parent_qid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bandwidth) as usize - ptr as usize }, - 184usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(bandwidth)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).priority) as usize - ptr as usize }, - 192usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(priority)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).local_flags) as usize - ptr as usize }, - 193usize, - concat!( - "Offset of field: ", - stringify!(pf_altq_v1), - "::", - stringify!(local_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qlimit) as usize - ptr as usize }, - 194usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(qlimit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 196usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pq_u) as usize - ptr as usize }, - 200usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(pq_u)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qid) as usize - ptr as usize }, - 280usize, - concat!("Offset of field: ", stringify!(pf_altq_v1), "::", stringify!(qid)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_scrub { - pub pfss_last: timeval, - pub pfss_tsecr: u_int32_t, - pub pfss_tsval: u_int32_t, - pub pfss_tsval0: u_int32_t, - pub pfss_flags: u_int16_t, - pub pfss_ttl: u_int8_t, - pub pad: u_int8_t, - pub pfss_ts_mod: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_state_scrub() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pf_state_scrub)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_scrub)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_last) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_last) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_tsecr) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_tsecr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_tsval) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_tsval) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_tsval0) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_tsval0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_flags) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ttl) as usize - ptr as usize }, - 30usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 31usize, - concat!("Offset of field: ", stringify!(pf_state_scrub), "::", stringify!(pad)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ts_mod) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_ts_mod) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_state_host { - pub addr: pf_addr, - pub port: u_int16_t, - pub pad: u_int16_t, -} -#[test] -fn bindgen_test_layout_pf_state_host() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(pf_state_host)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_state_host)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_state_host), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_state_host), "::", stringify!(port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(pf_state_host), "::", stringify!(pad)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_peer { - pub scrub: *mut pf_state_scrub, - pub seqlo: u_int32_t, - pub seqhi: u_int32_t, - pub seqdiff: u_int32_t, - pub max_win: u_int16_t, - pub mss: u_int16_t, - pub state: u_int8_t, - pub wscale: u_int8_t, - pub tcp_est: u_int8_t, - pub pad: [u_int8_t; 1usize], -} -#[test] -fn bindgen_test_layout_pf_state_peer() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_state_peer)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_peer)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(scrub)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqlo) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(seqlo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqhi) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(seqhi)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqdiff) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer), - "::", - stringify!(seqdiff) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_win) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer), - "::", - stringify!(max_win) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mss) as usize - ptr as usize }, - 22usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(mss)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).wscale) as usize - ptr as usize }, - 25usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(wscale)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tcp_est) as usize - ptr as usize }, - 26usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer), - "::", - stringify!(tcp_est) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 27usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(pad)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_state_key_cmp { - pub addr: [pf_addr; 2usize], - pub port: [u_int16_t; 2usize], - pub af: sa_family_t, - pub proto: u_int8_t, - pub pad: [u_int8_t; 2usize], -} -#[test] -fn bindgen_test_layout_pf_state_key_cmp() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pf_state_key_cmp)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_state_key_cmp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key_cmp), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key_cmp), - "::", - stringify!(port) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 36usize, - concat!("Offset of field: ", stringify!(pf_state_key_cmp), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 37usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key_cmp), - "::", - stringify!(proto) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 38usize, - concat!("Offset of field: ", stringify!(pf_state_key_cmp), "::", stringify!(pad)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_state_key { - pub addr: [pf_addr; 2usize], - pub port: [u_int16_t; 2usize], - pub af: sa_family_t, - pub proto: u_int8_t, - pub pad: [u_int8_t; 2usize], - pub entry: pf_state_key__bindgen_ty_1, - pub states: [pf_state_key__bindgen_ty_2; 2usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_key__bindgen_ty_1 { - pub le_next: *mut pf_state_key, - pub le_prev: *mut *mut pf_state_key, -} -#[test] -fn bindgen_test_layout_pf_state_key__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_state_key__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_key__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).le_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key__bindgen_ty_1), - "::", - stringify!(le_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).le_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key__bindgen_ty_1), - "::", - stringify!(le_prev) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_key__bindgen_ty_2 { - pub tqh_first: *mut pf_kstate, - pub tqh_last: *mut *mut pf_kstate, -} -#[test] -fn bindgen_test_layout_pf_state_key__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_state_key__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_key__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key__bindgen_ty_2), - "::", - stringify!(tqh_first) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_last) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key__bindgen_ty_2), - "::", - stringify!(tqh_last) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_state_key() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(pf_state_key)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_key)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_state_key), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pf_state_key), "::", stringify!(port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 36usize, - concat!("Offset of field: ", stringify!(pf_state_key), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 37usize, - concat!("Offset of field: ", stringify!(pf_state_key), "::", stringify!(proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 38usize, - concat!("Offset of field: ", stringify!(pf_state_key), "::", stringify!(pad)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pf_state_key), "::", stringify!(entry)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_state_key), "::", stringify!(states)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_cmp { - pub id: u_int64_t, - pub creatorid: u_int32_t, - pub direction: u_int8_t, - pub pad: [u_int8_t; 3usize], -} -#[test] -fn bindgen_test_layout_pf_state_cmp() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_state_cmp)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_cmp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_state_cmp), "::", stringify!(id)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creatorid) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_state_cmp), - "::", - stringify!(creatorid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pf_state_cmp), - "::", - stringify!(direction) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 13usize, - concat!("Offset of field: ", stringify!(pf_state_cmp), "::", stringify!(pad)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_scrub_export { - pub pfss_flags: u16, - pub pfss_ttl: u8, - pub scrub_flag: u8, - pub pfss_ts_mod: u32, -} -#[test] -fn bindgen_test_layout_pf_state_scrub_export() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_state_scrub_export)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_state_scrub_export)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub_export), - "::", - stringify!(pfss_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ttl) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub_export), - "::", - stringify!(pfss_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub_flag) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub_export), - "::", - stringify!(scrub_flag) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ts_mod) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub_export), - "::", - stringify!(pfss_ts_mod) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_state_key_export { - pub addr: [pf_addr; 2usize], - pub port: [u16; 2usize], -} -#[test] -fn bindgen_test_layout_pf_state_key_export() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 36usize, - concat!("Size of: ", stringify!(pf_state_key_export)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_state_key_export)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key_export), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key_export), - "::", - stringify!(port) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_peer_export { - pub scrub: pf_state_scrub_export, - pub seqlo: u32, - pub seqhi: u32, - pub seqdiff: u32, - pub max_win: u16, - pub mss: u16, - pub state: u8, - pub wscale: u8, - pub dummy: [u8; 6usize], -} -#[test] -fn bindgen_test_layout_pf_state_peer_export() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_state_peer_export)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_state_peer_export)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer_export), - "::", - stringify!(scrub) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqlo) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer_export), - "::", - stringify!(seqlo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqhi) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer_export), - "::", - stringify!(seqhi) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqdiff) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer_export), - "::", - stringify!(seqdiff) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_win) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer_export), - "::", - stringify!(max_win) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mss) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer_export), - "::", - stringify!(mss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer_export), - "::", - stringify!(state) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).wscale) as usize - ptr as usize }, - 25usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer_export), - "::", - stringify!(wscale) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dummy) as usize - ptr as usize }, - 26usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer_export), - "::", - stringify!(dummy) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_state_export { - pub version: u64, - pub id: u64, - pub ifname: [::std::os::raw::c_char; 16usize], - pub orig_ifname: [::std::os::raw::c_char; 16usize], - pub key: [pf_state_key_export; 2usize], - pub src: pf_state_peer_export, - pub dst: pf_state_peer_export, - pub rt_addr: pf_addr, - pub rule: u32, - pub anchor: u32, - pub nat_rule: u32, - pub creation: u32, - pub expire: u32, - pub spare0: u32, - pub packets: [u64; 2usize], - pub bytes: [u64; 2usize], - pub creatorid: u32, - pub spare1: u32, - pub af: sa_family_t, - pub proto: u8, - pub direction: u8, - pub log: u8, - pub state_flags_compat: u8, - pub timeout: u8, - pub sync_flags: u8, - pub updates: u8, - pub state_flags: u16, - pub qid: u16, - pub pqid: u16, - pub dnpipe: u16, - pub dnrpipe: u16, - pub rtableid: i32, - pub min_ttl: u8, - pub set_tos: u8, - pub max_mss: u16, - pub set_prio: [u8; 2usize], - pub rt: u8, - pub rt_ifname: [::std::os::raw::c_char; 16usize], - pub spare: [u8; 72usize], -} -#[test] -fn bindgen_test_layout_pf_state_export() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 384usize, - concat!("Size of: ", stringify!(pf_state_export)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_export)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).version) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_state_export), "::", stringify!(id)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).orig_ifname) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(orig_ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_state_export), "::", stringify!(key)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src) as usize - ptr as usize }, - 120usize, - concat!("Offset of field: ", stringify!(pf_state_export), "::", stringify!(src)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dst) as usize - ptr as usize }, - 152usize, - concat!("Offset of field: ", stringify!(pf_state_export), "::", stringify!(dst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt_addr) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(rt_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule) as usize - ptr as usize }, - 200usize, - concat!("Offset of field: ", stringify!(pf_state_export), "::", stringify!(rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 204usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(anchor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nat_rule) as usize - ptr as usize }, - 208usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(nat_rule) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creation) as usize - ptr as usize }, - 212usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(creation) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).expire) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(expire) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).spare0) as usize - ptr as usize }, - 220usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(spare0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).packets) as usize - ptr as usize }, - 224usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(packets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bytes) as usize - ptr as usize }, - 240usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creatorid) as usize - ptr as usize }, - 256usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(creatorid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).spare1) as usize - ptr as usize }, - 260usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(spare1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 264usize, - concat!("Offset of field: ", stringify!(pf_state_export), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 265usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(proto) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 266usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(direction) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).log) as usize - ptr as usize }, - 267usize, - concat!("Offset of field: ", stringify!(pf_state_export), "::", stringify!(log)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state_flags_compat) as usize - ptr as usize }, - 268usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(state_flags_compat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 269usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(timeout) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sync_flags) as usize - ptr as usize }, - 270usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(sync_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).updates) as usize - ptr as usize }, - 271usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(updates) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state_flags) as usize - ptr as usize }, - 272usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(state_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qid) as usize - ptr as usize }, - 274usize, - concat!("Offset of field: ", stringify!(pf_state_export), "::", stringify!(qid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pqid) as usize - ptr as usize }, - 276usize, - concat!("Offset of field: ", stringify!(pf_state_export), "::", stringify!(pqid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dnpipe) as usize - ptr as usize }, - 278usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(dnpipe) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dnrpipe) as usize - ptr as usize }, - 280usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(dnrpipe) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtableid) as usize - ptr as usize }, - 284usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(rtableid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).min_ttl) as usize - ptr as usize }, - 288usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(min_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_tos) as usize - ptr as usize }, - 289usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(set_tos) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_mss) as usize - ptr as usize }, - 290usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(max_mss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_prio) as usize - ptr as usize }, - 292usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(set_prio) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt) as usize - ptr as usize }, - 294usize, - concat!("Offset of field: ", stringify!(pf_state_export), "::", stringify!(rt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt_ifname) as usize - ptr as usize }, - 295usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(rt_ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).spare) as usize - ptr as usize }, - 311usize, - concat!( - "Offset of field: ", - stringify!(pf_state_export), - "::", - stringify!(spare) - ) - ); -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct pfsync_state_scrub { - pub pfss_flags: u_int16_t, - pub pfss_ttl: u_int8_t, - pub scrub_flag: u_int8_t, - pub pfss_ts_mod: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfsync_state_scrub() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfsync_state_scrub)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state_scrub)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(pfss_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ttl) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(pfss_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub_flag) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(scrub_flag) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ts_mod) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(pfss_ts_mod) - ) - ); -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct pfsync_state_peer { - pub scrub: pfsync_state_scrub, - pub seqlo: u_int32_t, - pub seqhi: u_int32_t, - pub seqdiff: u_int32_t, - pub max_win: u_int16_t, - pub mss: u_int16_t, - pub state: u_int8_t, - pub wscale: u_int8_t, - pub pad: [u_int8_t; 6usize], -} -#[test] -fn bindgen_test_layout_pfsync_state_peer() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pfsync_state_peer)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state_peer)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(scrub) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqlo) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(seqlo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqhi) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(seqhi) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqdiff) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(seqdiff) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_win) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(max_win) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mss) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(mss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(state) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).wscale) as usize - ptr as usize }, - 25usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(wscale) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 26usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(pad) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfsync_state_key { - pub addr: [pf_addr; 2usize], - pub port: [u_int16_t; 2usize], -} -#[test] -fn bindgen_test_layout_pfsync_state_key() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 36usize, - concat!("Size of: ", stringify!(pfsync_state_key)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfsync_state_key)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_key), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_key), - "::", - stringify!(port) - ) - ); -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct pfsync_state_1301 { - pub id: u_int64_t, - pub ifname: [::std::os::raw::c_char; 16usize], - pub key: [pfsync_state_key; 2usize], - pub src: pfsync_state_peer, - pub dst: pfsync_state_peer, - pub rt_addr: pf_addr, - pub rule: u_int32_t, - pub anchor: u_int32_t, - pub nat_rule: u_int32_t, - pub creation: u_int32_t, - pub expire: u_int32_t, - pub packets: [[u_int32_t; 2usize]; 2usize], - pub bytes: [[u_int32_t; 2usize]; 2usize], - pub creatorid: u_int32_t, - pub af: sa_family_t, - pub proto: u_int8_t, - pub direction: u_int8_t, - pub __spare: [u_int8_t; 2usize], - pub log: u_int8_t, - pub state_flags: u_int8_t, - pub timeout: u_int8_t, - pub sync_flags: u_int8_t, - pub updates: u_int8_t, -} -#[test] -fn bindgen_test_layout_pfsync_state_1301() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 242usize, - concat!("Size of: ", stringify!(pfsync_state_1301)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state_1301)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfsync_state_1301), "::", stringify!(id)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(key) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(src) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dst) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(dst) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt_addr) as usize - ptr as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(rt_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule) as usize - ptr as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(rule) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 180usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(anchor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nat_rule) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(nat_rule) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creation) as usize - ptr as usize }, - 188usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(creation) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).expire) as usize - ptr as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(expire) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).packets) as usize - ptr as usize }, - 196usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(packets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bytes) as usize - ptr as usize }, - 212usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creatorid) as usize - ptr as usize }, - 228usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(creatorid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 232usize, - concat!("Offset of field: ", stringify!(pfsync_state_1301), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 233usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(proto) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 234usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(direction) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__spare) as usize - ptr as usize }, - 235usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(__spare) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).log) as usize - ptr as usize }, - 237usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(log) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state_flags) as usize - ptr as usize }, - 238usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(state_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 239usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(timeout) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sync_flags) as usize - ptr as usize }, - 240usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(sync_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).updates) as usize - ptr as usize }, - 241usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1301), - "::", - stringify!(updates) - ) - ); -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct pfsync_state_1400 { - pub id: u_int64_t, - pub ifname: [::std::os::raw::c_char; 16usize], - pub key: [pfsync_state_key; 2usize], - pub src: pfsync_state_peer, - pub dst: pfsync_state_peer, - pub rt_addr: pf_addr, - pub rule: u_int32_t, - pub anchor: u_int32_t, - pub nat_rule: u_int32_t, - pub creation: u_int32_t, - pub expire: u_int32_t, - pub packets: [[u_int32_t; 2usize]; 2usize], - pub bytes: [[u_int32_t; 2usize]; 2usize], - pub creatorid: u_int32_t, - pub af: sa_family_t, - pub proto: u_int8_t, - pub direction: u_int8_t, - pub state_flags: u_int16_t, - pub log: u_int8_t, - pub __spare: u_int8_t, - pub timeout: u_int8_t, - pub sync_flags: u_int8_t, - pub updates: u_int8_t, - pub qid: u_int16_t, - pub pqid: u_int16_t, - pub dnpipe: u_int16_t, - pub dnrpipe: u_int16_t, - pub rtableid: i32, - pub min_ttl: u_int8_t, - pub set_tos: u_int8_t, - pub max_mss: u_int16_t, - pub set_prio: [u_int8_t; 2usize], - pub rt: u_int8_t, - pub rt_ifname: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_pfsync_state_1400() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 277usize, - concat!("Size of: ", stringify!(pfsync_state_1400)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state_1400)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfsync_state_1400), "::", stringify!(id)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(key) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(src) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dst) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(dst) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt_addr) as usize - ptr as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(rt_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule) as usize - ptr as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(rule) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 180usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(anchor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nat_rule) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(nat_rule) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creation) as usize - ptr as usize }, - 188usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(creation) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).expire) as usize - ptr as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(expire) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).packets) as usize - ptr as usize }, - 196usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(packets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bytes) as usize - ptr as usize }, - 212usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creatorid) as usize - ptr as usize }, - 228usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(creatorid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 232usize, - concat!("Offset of field: ", stringify!(pfsync_state_1400), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 233usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(proto) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 234usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(direction) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state_flags) as usize - ptr as usize }, - 235usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(state_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).log) as usize - ptr as usize }, - 237usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(log) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__spare) as usize - ptr as usize }, - 238usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(__spare) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 239usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(timeout) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sync_flags) as usize - ptr as usize }, - 240usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(sync_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).updates) as usize - ptr as usize }, - 241usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(updates) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qid) as usize - ptr as usize }, - 242usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(qid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pqid) as usize - ptr as usize }, - 244usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(pqid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dnpipe) as usize - ptr as usize }, - 246usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(dnpipe) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dnrpipe) as usize - ptr as usize }, - 248usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(dnrpipe) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtableid) as usize - ptr as usize }, - 250usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(rtableid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).min_ttl) as usize - ptr as usize }, - 254usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(min_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_tos) as usize - ptr as usize }, - 255usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(set_tos) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_mss) as usize - ptr as usize }, - 256usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(max_mss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_prio) as usize - ptr as usize }, - 258usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(set_prio) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt) as usize - ptr as usize }, - 260usize, - concat!("Offset of field: ", stringify!(pfsync_state_1400), "::", stringify!(rt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt_ifname) as usize - ptr as usize }, - 261usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_1400), - "::", - stringify!(rt_ifname) - ) - ); -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union pfsync_state_union { - pub pfs_1301: pfsync_state_1301, - pub pfs_1400: pfsync_state_1400, -} -#[test] -fn bindgen_test_layout_pfsync_state_union() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 277usize, - concat!("Size of: ", stringify!(pfsync_state_union)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state_union)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfs_1301) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_union), - "::", - stringify!(pfs_1301) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfs_1400) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_union), - "::", - stringify!(pfs_1400) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_krulequeue { - pub tqh_first: *mut pf_krule, - pub tqh_last: *mut *mut pf_krule, -} -#[test] -fn bindgen_test_layout_pf_krulequeue() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_krulequeue)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_krulequeue)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_krulequeue), - "::", - stringify!(tqh_first) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_last) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_krulequeue), - "::", - stringify!(tqh_last) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_kruleset { - pub rules: [pf_kruleset__bindgen_ty_1; 5usize], - pub anchor: *mut pf_kanchor, - pub tticket: u_int32_t, - pub tables: ::std::os::raw::c_int, - pub topen: ::std::os::raw::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_kruleset__bindgen_ty_1 { - pub queues: [pf_krulequeue; 2usize], - pub active: pf_kruleset__bindgen_ty_1__bindgen_ty_1, - pub inactive: pf_kruleset__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_kruleset__bindgen_ty_1__bindgen_ty_1 { - pub ptr: *mut pf_krulequeue, - pub ptr_array: *mut *mut pf_krule, - pub rcount: u_int32_t, - pub ticket: u_int32_t, - pub open: ::std::os::raw::c_int, - pub tree: *mut pf_krule_global, -} -#[test] -fn bindgen_test_layout_pf_kruleset__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pf_kruleset__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_kruleset__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ptr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_kruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(ptr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ptr_array) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_kruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(ptr_array) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rcount) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_kruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rcount) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pf_kruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(ticket) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).open) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_kruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(open) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tree) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_kruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(tree) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_kruleset__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 112usize, - concat!("Size of: ", stringify!(pf_kruleset__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_kruleset__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).queues) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_kruleset__bindgen_ty_1), - "::", - stringify!(queues) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).active) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_kruleset__bindgen_ty_1), - "::", - stringify!(active) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).inactive) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(pf_kruleset__bindgen_ty_1), - "::", - stringify!(inactive) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_kruleset() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 584usize, - concat!("Size of: ", stringify!(pf_kruleset)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_kruleset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rules) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_kruleset), "::", stringify!(rules)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 560usize, - concat!("Offset of field: ", stringify!(pf_kruleset), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tticket) as usize - ptr as usize }, - 568usize, - concat!("Offset of field: ", stringify!(pf_kruleset), "::", stringify!(tticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tables) as usize - ptr as usize }, - 572usize, - concat!("Offset of field: ", stringify!(pf_kruleset), "::", stringify!(tables)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).topen) as usize - ptr as usize }, - 576usize, - concat!("Offset of field: ", stringify!(pf_kruleset), "::", stringify!(topen)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_kanchor_global { - pub rbh_root: *mut pf_kanchor, -} -#[test] -fn bindgen_test_layout_pf_kanchor_global() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_kanchor_global)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_kanchor_global)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbh_root) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_kanchor_global), - "::", - stringify!(rbh_root) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_kanchor_node { - pub rbh_root: *mut pf_kanchor, -} -#[test] -fn bindgen_test_layout_pf_kanchor_node() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_kanchor_node)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_kanchor_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbh_root) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_kanchor_node), - "::", - stringify!(rbh_root) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_kanchor { - pub entry_global: pf_kanchor__bindgen_ty_1, - pub entry_node: pf_kanchor__bindgen_ty_2, - pub parent: *mut pf_kanchor, - pub children: pf_kanchor_node, - pub name: [::std::os::raw::c_char; 64usize], - pub path: [::std::os::raw::c_char; 1024usize], - pub ruleset: pf_kruleset, - pub refcnt: ::std::os::raw::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_kanchor__bindgen_ty_1 { - pub rbe_link: [*mut pf_kanchor; 3usize], -} -#[test] -fn bindgen_test_layout_pf_kanchor__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pf_kanchor__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_kanchor__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_link) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_kanchor__bindgen_ty_1), - "::", - stringify!(rbe_link) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_kanchor__bindgen_ty_2 { - pub rbe_link: [*mut pf_kanchor; 3usize], -} -#[test] -fn bindgen_test_layout_pf_kanchor__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pf_kanchor__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_kanchor__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_link) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_kanchor__bindgen_ty_2), - "::", - stringify!(rbe_link) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_kanchor() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1744usize, - concat!("Size of: ", stringify!(pf_kanchor)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_kanchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry_global) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_kanchor), - "::", - stringify!(entry_global) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry_node) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_kanchor), - "::", - stringify!(entry_node) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_kanchor), "::", stringify!(parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).children) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_kanchor), "::", stringify!(children)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_kanchor), "::", stringify!(name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).path) as usize - ptr as usize }, - 128usize, - concat!("Offset of field: ", stringify!(pf_kanchor), "::", stringify!(path)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ruleset) as usize - ptr as usize }, - 1152usize, - concat!("Offset of field: ", stringify!(pf_kanchor), "::", stringify!(ruleset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).refcnt) as usize - ptr as usize }, - 1736usize, - concat!("Offset of field: ", stringify!(pf_kanchor), "::", stringify!(refcnt)) - ); -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_INSERT_COLOR( - arg1: *mut pf_kanchor_global, - arg2: *mut pf_kanchor, - arg3: *mut pf_kanchor, - ) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_REMOVE_COLOR( - arg1: *mut pf_kanchor_global, - arg2: *mut pf_kanchor, - arg3: *mut pf_kanchor, - ) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_INSERT_FINISH( - arg1: *mut pf_kanchor_global, - arg2: *mut pf_kanchor, - arg3: *mut *mut pf_kanchor, - arg4: *mut pf_kanchor, - ) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_INSERT(arg1: *mut pf_kanchor_global, arg2: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_REMOVE(arg1: *mut pf_kanchor_global, arg2: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_FIND(arg1: *mut pf_kanchor_global, arg2: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_NFIND(arg1: *mut pf_kanchor_global, arg2: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_NEXT(arg1: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_INSERT_NEXT( - arg1: *mut pf_kanchor_global, - arg2: *mut pf_kanchor, - arg3: *mut pf_kanchor, - ) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_PREV(arg1: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_INSERT_PREV( - arg1: *mut pf_kanchor_global, - arg2: *mut pf_kanchor, - arg3: *mut pf_kanchor, - ) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_MINMAX(arg1: *mut pf_kanchor_global, arg2: ::std::os::raw::c_int) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_global_RB_REINSERT(arg1: *mut pf_kanchor_global, arg2: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_INSERT_COLOR( - arg1: *mut pf_kanchor_node, - arg2: *mut pf_kanchor, - arg3: *mut pf_kanchor, - ) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_REMOVE_COLOR( - arg1: *mut pf_kanchor_node, - arg2: *mut pf_kanchor, - arg3: *mut pf_kanchor, - ) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_INSERT_FINISH( - arg1: *mut pf_kanchor_node, - arg2: *mut pf_kanchor, - arg3: *mut *mut pf_kanchor, - arg4: *mut pf_kanchor, - ) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_INSERT(arg1: *mut pf_kanchor_node, arg2: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_REMOVE(arg1: *mut pf_kanchor_node, arg2: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_FIND(arg1: *mut pf_kanchor_node, arg2: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_NFIND(arg1: *mut pf_kanchor_node, arg2: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_NEXT(arg1: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_INSERT_NEXT( - arg1: *mut pf_kanchor_node, - arg2: *mut pf_kanchor, - arg3: *mut pf_kanchor, - ) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_PREV(arg1: *mut pf_kanchor) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_INSERT_PREV( - arg1: *mut pf_kanchor_node, - arg2: *mut pf_kanchor, - arg3: *mut pf_kanchor, - ) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_MINMAX(arg1: *mut pf_kanchor_node, arg2: ::std::os::raw::c_int) -> *mut pf_kanchor; -} -unsafe extern "C" { - pub fn pf_kanchor_node_RB_REINSERT(arg1: *mut pf_kanchor_node, arg2: *mut pf_kanchor) -> *mut pf_kanchor; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_kanchor_stackframe { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_keth_anchor_stackframe { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_table { - pub pfrt_anchor: [::std::os::raw::c_char; 1024usize], - pub pfrt_name: [::std::os::raw::c_char; 32usize], - pub pfrt_flags: u_int32_t, - pub pfrt_fback: u_int8_t, -} -#[test] -fn bindgen_test_layout_pfr_table() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1064usize, - concat!("Size of: ", stringify!(pfr_table)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfr_table)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_anchor) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_table), - "::", - stringify!(pfrt_anchor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_name) as usize - ptr as usize }, - 1024usize, - concat!("Offset of field: ", stringify!(pfr_table), "::", stringify!(pfrt_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_flags) as usize - ptr as usize }, - 1056usize, - concat!("Offset of field: ", stringify!(pfr_table), "::", stringify!(pfrt_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_fback) as usize - ptr as usize }, - 1060usize, - concat!("Offset of field: ", stringify!(pfr_table), "::", stringify!(pfrt_fback)) - ); -} -pub const PFR_FB_NONE: _bindgen_ty_15 = 0; -pub const PFR_FB_MATCH: _bindgen_ty_15 = 1; -pub const PFR_FB_ADDED: _bindgen_ty_15 = 2; -pub const PFR_FB_DELETED: _bindgen_ty_15 = 3; -pub const PFR_FB_CHANGED: _bindgen_ty_15 = 4; -pub const PFR_FB_CLEARED: _bindgen_ty_15 = 5; -pub const PFR_FB_DUPLICATE: _bindgen_ty_15 = 6; -pub const PFR_FB_NOTMATCH: _bindgen_ty_15 = 7; -pub const PFR_FB_CONFLICT: _bindgen_ty_15 = 8; -pub const PFR_FB_NOCOUNT: _bindgen_ty_15 = 9; -pub const PFR_FB_MAX: _bindgen_ty_15 = 10; -pub type _bindgen_ty_15 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfr_addr { - pub pfra_u: pfr_addr__bindgen_ty_1, - pub pfra_af: u_int8_t, - pub pfra_net: u_int8_t, - pub pfra_not: u_int8_t, - pub pfra_fback: u_int8_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfr_addr__bindgen_ty_1 { - pub _pfra_ip4addr: in_addr, - pub _pfra_ip6addr: in6_addr, -} -#[test] -fn bindgen_test_layout_pfr_addr__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfr_addr__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfr_addr__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfra_ip4addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_addr__bindgen_ty_1), - "::", - stringify!(_pfra_ip4addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfra_ip6addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_addr__bindgen_ty_1), - "::", - stringify!(_pfra_ip6addr) - ) - ); -} -#[test] -fn bindgen_test_layout_pfr_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(pfr_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfr_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_u) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_u)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_af) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_net) as usize - ptr as usize }, - 17usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_net)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_not) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_not)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_fback) as usize - ptr as usize }, - 19usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_fback)) - ); -} -pub const PFR_DIR_IN: _bindgen_ty_16 = 0; -pub const PFR_DIR_OUT: _bindgen_ty_16 = 1; -pub const PFR_DIR_MAX: _bindgen_ty_16 = 2; -pub type _bindgen_ty_16 = ::std::os::raw::c_uint; -pub const PFR_OP_BLOCK: _bindgen_ty_17 = 0; -pub const PFR_OP_PASS: _bindgen_ty_17 = 1; -pub const PFR_OP_ADDR_MAX: _bindgen_ty_17 = 2; -pub const PFR_OP_TABLE_MAX: _bindgen_ty_17 = 3; -pub type _bindgen_ty_17 = ::std::os::raw::c_uint; -pub const PFR_TYPE_PACKETS: _bindgen_ty_18 = 0; -pub const PFR_TYPE_BYTES: _bindgen_ty_18 = 1; -pub const PFR_TYPE_MAX: _bindgen_ty_18 = 2; -pub type _bindgen_ty_18 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfr_astats { - pub pfras_a: pfr_addr, - pub pfras_packets: [[u_int64_t; 2usize]; 2usize], - pub pfras_bytes: [[u_int64_t; 2usize]; 2usize], - pub pfras_tzero: ::std::os::raw::c_long, -} -#[test] -fn bindgen_test_layout_pfr_astats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(pfr_astats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_astats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_a) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_astats), "::", stringify!(pfras_a)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_packets) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfr_astats), - "::", - stringify!(pfras_packets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_bytes) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(pfr_astats), - "::", - stringify!(pfras_bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_tzero) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(pfr_astats), - "::", - stringify!(pfras_tzero) - ) - ); -} -pub const PFR_REFCNT_RULE: _bindgen_ty_19 = 0; -pub const PFR_REFCNT_ANCHOR: _bindgen_ty_19 = 1; -pub const PFR_REFCNT_MAX: _bindgen_ty_19 = 2; -pub type _bindgen_ty_19 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_tstats { - pub pfrts_t: pfr_table, - pub pfrts_packets: [[u_int64_t; 3usize]; 2usize], - pub pfrts_bytes: [[u_int64_t; 3usize]; 2usize], - pub pfrts_match: u_int64_t, - pub pfrts_nomatch: u_int64_t, - pub pfrts_tzero: ::std::os::raw::c_long, - pub pfrts_cnt: ::std::os::raw::c_int, - pub pfrts_refcnt: [::std::os::raw::c_int; 2usize], -} -#[test] -fn bindgen_test_layout_pfr_tstats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1200usize, - concat!("Size of: ", stringify!(pfr_tstats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_tstats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_t) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_tstats), "::", stringify!(pfrts_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_packets) as usize - ptr as usize }, - 1064usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_packets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_bytes) as usize - ptr as usize }, - 1112usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_match) as usize - ptr as usize }, - 1160usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_match) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_nomatch) as usize - ptr as usize }, - 1168usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_nomatch) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_tzero) as usize - ptr as usize }, - 1176usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_tzero) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_cnt) as usize - ptr as usize }, - 1184usize, - concat!("Offset of field: ", stringify!(pfr_tstats), "::", stringify!(pfrts_cnt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_refcnt) as usize - ptr as usize }, - 1188usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_refcnt) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sockaddr_union { - pub sa: sockaddr, - pub sin: sockaddr_in, - pub sin6: sockaddr_in6, -} -#[test] -fn bindgen_test_layout_sockaddr_union() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 28usize, - concat!("Size of: ", stringify!(sockaddr_union)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockaddr_union)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_union), "::", stringify!(sa)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_union), "::", stringify!(sin)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_union), "::", stringify!(sin6)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_kcounters { - pub pfrkc_counters: counter_u64_t, - pub pfrkc_tzero: ::std::os::raw::c_long, -} -#[test] -fn bindgen_test_layout_pfr_kcounters() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfr_kcounters)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_kcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkc_counters) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_kcounters), - "::", - stringify!(pfrkc_counters) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkc_tzero) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfr_kcounters), - "::", - stringify!(pfrkc_tzero) - ) - ); -} -pub const pf_syncookies_mode_PF_SYNCOOKIES_NEVER: pf_syncookies_mode = 0; -pub const pf_syncookies_mode_PF_SYNCOOKIES_ALWAYS: pf_syncookies_mode = 1; -pub const pf_syncookies_mode_PF_SYNCOOKIES_ADAPTIVE: pf_syncookies_mode = 2; -pub const pf_syncookies_mode_PF_SYNCOOKIES_MODE_MAX: pf_syncookies_mode = 2; -pub type pf_syncookies_mode = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_divert { - pub addr: pf_divert__bindgen_ty_1, - pub port: u_int16_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_divert__bindgen_ty_1 { - pub ipv4: in_addr, - pub ipv6: in6_addr, -} -#[test] -fn bindgen_test_layout_pf_divert__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_divert__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_divert__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipv4) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_divert__bindgen_ty_1), - "::", - stringify!(ipv4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipv6) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_divert__bindgen_ty_1), - "::", - stringify!(ipv6) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_divert() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(pf_divert)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_divert)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_divert), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_divert), "::", stringify!(port)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_pooladdr { - pub action: u_int32_t, - pub ticket: u_int32_t, - pub nr: u_int32_t, - pub r_num: u_int32_t, - pub r_action: u_int8_t, - pub r_last: u_int8_t, - pub af: u_int8_t, - pub anchor: [::std::os::raw::c_char; 1024usize], - pub addr: pf_pooladdr, -} -#[test] -fn bindgen_test_layout_pfioc_pooladdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1136usize, - concat!("Size of: ", stringify!(pfioc_pooladdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_pooladdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_pooladdr), - "::", - stringify!(action) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pfioc_pooladdr), - "::", - stringify!(ticket) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_pooladdr), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).r_num) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(pfioc_pooladdr), "::", stringify!(r_num)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).r_action) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfioc_pooladdr), - "::", - stringify!(r_action) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).r_last) as usize - ptr as usize }, - 17usize, - concat!( - "Offset of field: ", - stringify!(pfioc_pooladdr), - "::", - stringify!(r_last) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(pfioc_pooladdr), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 19usize, - concat!( - "Offset of field: ", - stringify!(pfioc_pooladdr), - "::", - stringify!(anchor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 1048usize, - concat!("Offset of field: ", stringify!(pfioc_pooladdr), "::", stringify!(addr)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_rule { - pub action: u_int32_t, - pub ticket: u_int32_t, - pub pool_ticket: u_int32_t, - pub nr: u_int32_t, - pub anchor: [::std::os::raw::c_char; 1024usize], - pub anchor_call: [::std::os::raw::c_char; 1024usize], - pub rule: pf_rule, -} -#[test] -fn bindgen_test_layout_pfioc_rule() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 3040usize, - concat!("Size of: ", stringify!(pfioc_rule)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(action)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(ticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pool_ticket) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_rule), - "::", - stringify!(pool_ticket) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor_call) as usize - ptr as usize }, - 1040usize, - concat!( - "Offset of field: ", - stringify!(pfioc_rule), - "::", - stringify!(anchor_call) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule) as usize - ptr as usize }, - 2064usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(rule)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_natlook { - pub saddr: pf_addr, - pub daddr: pf_addr, - pub rsaddr: pf_addr, - pub rdaddr: pf_addr, - pub sport: u_int16_t, - pub dport: u_int16_t, - pub rsport: u_int16_t, - pub rdport: u_int16_t, - pub af: sa_family_t, - pub proto: u_int8_t, - pub direction: u_int8_t, -} -#[test] -fn bindgen_test_layout_pfioc_natlook() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 76usize, - concat!("Size of: ", stringify!(pfioc_natlook)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_natlook)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).saddr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(saddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).daddr) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(daddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rsaddr) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(rsaddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rdaddr) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(rdaddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sport) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(sport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dport) as usize - ptr as usize }, - 66usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(dport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rsport) as usize - ptr as usize }, - 68usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(rsport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rdport) as usize - ptr as usize }, - 70usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(rdport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 73usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 74usize, - concat!( - "Offset of field: ", - stringify!(pfioc_natlook), - "::", - stringify!(direction) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_state { - pub state: pfsync_state_1301, -} -#[test] -fn bindgen_test_layout_pfioc_state() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 242usize, - concat!("Size of: ", stringify!(pfioc_state)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfioc_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_state), "::", stringify!(state)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_src_node_kill { - pub psnk_af: sa_family_t, - pub psnk_src: pf_rule_addr, - pub psnk_dst: pf_rule_addr, - pub psnk_killed: u_int, -} -#[test] -fn bindgen_test_layout_pfioc_src_node_kill() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(pfioc_src_node_kill)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_src_node_kill)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psnk_af) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_node_kill), - "::", - stringify!(psnk_af) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psnk_src) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_node_kill), - "::", - stringify!(psnk_src) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psnk_dst) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_node_kill), - "::", - stringify!(psnk_dst) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psnk_killed) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_node_kill), - "::", - stringify!(psnk_killed) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_state_kill { - pub psk_pfcmp: pf_state_cmp, - pub psk_af: sa_family_t, - pub psk_proto: ::std::os::raw::c_int, - pub psk_src: pf_rule_addr, - pub psk_dst: pf_rule_addr, - pub psk_ifname: [::std::os::raw::c_char; 16usize], - pub psk_label: [::std::os::raw::c_char; 64usize], - pub psk_killed: u_int, -} -#[test] -fn bindgen_test_layout_pfioc_state_kill() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 224usize, - concat!("Size of: ", stringify!(pfioc_state_kill)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_state_kill)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_pfcmp) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_pfcmp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_af) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_af) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_proto) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_proto) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_src) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_src) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_dst) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_dst) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_ifname) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_label) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_label) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_killed) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_killed) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_states { - pub ps_len: ::std::os::raw::c_int, - pub __bindgen_anon_1: pfioc_states__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfioc_states__bindgen_ty_1 { - pub ps_buf: *mut ::std::os::raw::c_void, - pub ps_states: *mut pfsync_state_1301, -} -#[test] -fn bindgen_test_layout_pfioc_states__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_states__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_states__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ps_buf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_states__bindgen_ty_1), - "::", - stringify!(ps_buf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ps_states) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_states__bindgen_ty_1), - "::", - stringify!(ps_states) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_states() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_states)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ps_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_states), "::", stringify!(ps_len)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_states_v2 { - pub ps_len: ::std::os::raw::c_int, - pub ps_req_version: u64, - pub __bindgen_anon_1: pfioc_states_v2__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfioc_states_v2__bindgen_ty_1 { - pub ps_buf: *mut ::std::os::raw::c_void, - pub ps_states: *mut pf_state_export, -} -#[test] -fn bindgen_test_layout_pfioc_states_v2__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_states_v2__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_states_v2__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ps_buf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_states_v2__bindgen_ty_1), - "::", - stringify!(ps_buf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ps_states) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_states_v2__bindgen_ty_1), - "::", - stringify!(ps_states) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_states_v2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pfioc_states_v2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_states_v2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ps_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_states_v2), - "::", - stringify!(ps_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ps_req_version) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_states_v2), - "::", - stringify!(ps_req_version) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_src_nodes { - pub psn_len: ::std::os::raw::c_int, - pub __bindgen_anon_1: pfioc_src_nodes__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfioc_src_nodes__bindgen_ty_1 { - pub psn_buf: *mut ::std::os::raw::c_void, - pub psn_src_nodes: *mut pf_src_node, -} -#[test] -fn bindgen_test_layout_pfioc_src_nodes__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_src_nodes__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_src_nodes__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psn_buf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_nodes__bindgen_ty_1), - "::", - stringify!(psn_buf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psn_src_nodes) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_nodes__bindgen_ty_1), - "::", - stringify!(psn_src_nodes) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_src_nodes() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_src_nodes)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_src_nodes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psn_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_nodes), - "::", - stringify!(psn_len) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_if { - pub ifname: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_pfioc_if() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_if)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfioc_if)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_if), "::", stringify!(ifname)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_tm { - pub timeout: ::std::os::raw::c_int, - pub seconds: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pfioc_tm() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_tm)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_tm)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_tm), "::", stringify!(timeout)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seconds) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_tm), "::", stringify!(seconds)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_limit { - pub index: ::std::os::raw::c_int, - pub limit: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_pfioc_limit() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_limit)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_limit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).index) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_limit), "::", stringify!(index)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).limit) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_limit), "::", stringify!(limit)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_altq_v0 { - pub action: u_int32_t, - pub ticket: u_int32_t, - pub nr: u_int32_t, - pub altq: pf_altq_v0, -} -#[test] -fn bindgen_test_layout_pfioc_altq_v0() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 256usize, - concat!("Size of: ", stringify!(pfioc_altq_v0)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_altq_v0)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_altq_v0), "::", stringify!(action)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_altq_v0), "::", stringify!(ticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_altq_v0), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).altq) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfioc_altq_v0), "::", stringify!(altq)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_altq_v1 { - pub action: u_int32_t, - pub ticket: u_int32_t, - pub nr: u_int32_t, - pub version: u_int32_t, - pub altq: pf_altq_v1, -} -#[test] -fn bindgen_test_layout_pfioc_altq_v1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 304usize, - concat!("Size of: ", stringify!(pfioc_altq_v1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_altq_v1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_altq_v1), "::", stringify!(action)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_altq_v1), "::", stringify!(ticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_altq_v1), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).version) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pfioc_altq_v1), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).altq) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfioc_altq_v1), "::", stringify!(altq)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_qstats_v0 { - pub ticket: u_int32_t, - pub nr: u_int32_t, - pub buf: *mut ::std::os::raw::c_void, - pub nbytes: ::std::os::raw::c_int, - pub scheduler: u_int8_t, -} -#[test] -fn bindgen_test_layout_pfioc_qstats_v0() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pfioc_qstats_v0)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_qstats_v0)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_qstats_v0), - "::", - stringify!(ticket) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_qstats_v0), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).buf) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_qstats_v0), "::", stringify!(buf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nbytes) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfioc_qstats_v0), - "::", - stringify!(nbytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scheduler) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pfioc_qstats_v0), - "::", - stringify!(scheduler) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_qstats_v1 { - pub ticket: u_int32_t, - pub nr: u_int32_t, - pub buf: *mut ::std::os::raw::c_void, - pub nbytes: ::std::os::raw::c_int, - pub scheduler: u_int8_t, - pub version: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfioc_qstats_v1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pfioc_qstats_v1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_qstats_v1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_qstats_v1), - "::", - stringify!(ticket) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_qstats_v1), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).buf) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_qstats_v1), "::", stringify!(buf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nbytes) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfioc_qstats_v1), - "::", - stringify!(nbytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scheduler) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pfioc_qstats_v1), - "::", - stringify!(scheduler) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).version) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfioc_qstats_v1), - "::", - stringify!(version) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_ruleset { - pub nr: u_int32_t, - pub path: [::std::os::raw::c_char; 1024usize], - pub name: [::std::os::raw::c_char; 64usize], -} -#[test] -fn bindgen_test_layout_pfioc_ruleset() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1092usize, - concat!("Size of: ", stringify!(pfioc_ruleset)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_ruleset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_ruleset), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).path) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_ruleset), "::", stringify!(path)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, - 1028usize, - concat!("Offset of field: ", stringify!(pfioc_ruleset), "::", stringify!(name)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_trans { - pub size: ::std::os::raw::c_int, - pub esize: ::std::os::raw::c_int, - pub array: *mut pfioc_trans_pfioc_trans_e, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_trans_pfioc_trans_e { - pub rs_num: ::std::os::raw::c_int, - pub anchor: [::std::os::raw::c_char; 1024usize], - pub ticket: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfioc_trans_pfioc_trans_e() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1032usize, - concat!("Size of: ", stringify!(pfioc_trans_pfioc_trans_e)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_trans_pfioc_trans_e)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rs_num) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_trans_pfioc_trans_e), - "::", - stringify!(rs_num) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pfioc_trans_pfioc_trans_e), - "::", - stringify!(anchor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 1028usize, - concat!( - "Offset of field: ", - stringify!(pfioc_trans_pfioc_trans_e), - "::", - stringify!(ticket) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_trans() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_trans)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_trans)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_trans), "::", stringify!(size)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).esize) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_trans), "::", stringify!(esize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).array) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_trans), "::", stringify!(array)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_table { - pub pfrio_table: pfr_table, - pub pfrio_buffer: *mut ::std::os::raw::c_void, - pub pfrio_esize: ::std::os::raw::c_int, - pub pfrio_size: ::std::os::raw::c_int, - pub pfrio_size2: ::std::os::raw::c_int, - pub pfrio_nadd: ::std::os::raw::c_int, - pub pfrio_ndel: ::std::os::raw::c_int, - pub pfrio_nchange: ::std::os::raw::c_int, - pub pfrio_flags: ::std::os::raw::c_int, - pub pfrio_ticket: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfioc_table() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1104usize, - concat!("Size of: ", stringify!(pfioc_table)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_table)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_table) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_table) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_buffer) as usize - ptr as usize }, - 1064usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_buffer) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_esize) as usize - ptr as usize }, - 1072usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_esize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_size) as usize - ptr as usize }, - 1076usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_size2) as usize - ptr as usize }, - 1080usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_size2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_nadd) as usize - ptr as usize }, - 1084usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_nadd) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_ndel) as usize - ptr as usize }, - 1088usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_ndel) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_nchange) as usize - ptr as usize }, - 1092usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_nchange) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_flags) as usize - ptr as usize }, - 1096usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_ticket) as usize - ptr as usize }, - 1100usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_ticket) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_iface { - pub pfiio_name: [::std::os::raw::c_char; 16usize], - pub pfiio_buffer: *mut ::std::os::raw::c_void, - pub pfiio_esize: ::std::os::raw::c_int, - pub pfiio_size: ::std::os::raw::c_int, - pub pfiio_nzero: ::std::os::raw::c_int, - pub pfiio_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pfioc_iface() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pfioc_iface)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_iface)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_name) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_buffer) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_buffer) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_esize) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_esize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_size) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_nzero) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_nzero) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_flags) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_flags) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ifspeed_v0 { - pub ifname: [::std::os::raw::c_char; 16usize], - pub baudrate: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_ifspeed_v0() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(pf_ifspeed_v0)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_ifspeed_v0)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_ifspeed_v0), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).baudrate) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_ifspeed_v0), - "::", - stringify!(baudrate) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ifspeed_v1 { - pub ifname: [::std::os::raw::c_char; 16usize], - pub baudrate32: u_int32_t, - pub baudrate: u_int64_t, -} -#[test] -fn bindgen_test_layout_pf_ifspeed_v1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_ifspeed_v1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_ifspeed_v1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_ifspeed_v1), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).baudrate32) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_ifspeed_v1), - "::", - stringify!(baudrate32) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).baudrate) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_ifspeed_v1), - "::", - stringify!(baudrate) - ) - ); -} -unsafe extern "C" { - pub fn pf_osfp_add(arg1: *mut pf_osfp_ioctl) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_osfp_flush(); -} -unsafe extern "C" { - pub fn pf_osfp_get(arg1: *mut pf_osfp_ioctl) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_osfp_match(arg1: *mut pf_os_fingerprint_pf_osfp_enlist, arg2: pf_osfp_t) -> ::std::os::raw::c_int; -} -pub type __builtin_va_list = [__va_list_tag; 1usize]; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __va_list_tag { - pub gp_offset: ::std::os::raw::c_uint, - pub fp_offset: ::std::os::raw::c_uint, - pub overflow_arg_area: *mut ::std::os::raw::c_void, - pub reg_save_area: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___va_list_tag() { - const UNINIT: ::std::mem::MaybeUninit<__va_list_tag> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__va_list_tag>(), - 24usize, - concat!("Size of: ", stringify!(__va_list_tag)) - ); - assert_eq!( - ::std::mem::align_of::<__va_list_tag>(), - 8usize, - concat!("Alignment of ", stringify!(__va_list_tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gp_offset) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(gp_offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_offset) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(fp_offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).overflow_arg_area) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(overflow_arg_area) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reg_save_area) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(reg_save_area) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct witness { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct llentry { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifg_group { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_dynaddr { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_ktable { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_kstate { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_krule { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_krule_global { - pub _address: u8, -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/pfvar_bindgen_macos.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/pfvar_bindgen_macos.rs deleted file mode 100644 index 79c79a2..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/pfvar_bindgen_macos.rs +++ /dev/null @@ -1,23530 +0,0 @@ -// automatically generated by rust-bindgen 0.69.2 - -#[repr(C)] -#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] -pub struct __BindgenBitfieldUnit { - storage: Storage, -} -impl __BindgenBitfieldUnit { - #[inline] - pub const fn new(storage: Storage) -> Self { - Self { storage } - } -} -impl __BindgenBitfieldUnit -where - Storage: AsRef<[u8]> + AsMut<[u8]>, -{ - #[inline] - pub fn get_bit(&self, index: usize) -> bool { - debug_assert!(index / 8 < self.storage.as_ref().len()); - let byte_index = index / 8; - let byte = self.storage.as_ref()[byte_index]; - let bit_index = if cfg!(target_endian = "big") { - 7 - (index % 8) - } else { - index % 8 - }; - let mask = 1 << bit_index; - byte & mask == mask - } - - #[inline] - pub fn set_bit(&mut self, index: usize, val: bool) { - debug_assert!(index / 8 < self.storage.as_ref().len()); - let byte_index = index / 8; - let byte = &mut self.storage.as_mut()[byte_index]; - let bit_index = if cfg!(target_endian = "big") { - 7 - (index % 8) - } else { - index % 8 - }; - let mask = 1 << bit_index; - if val { - *byte |= mask; - } else { - *byte &= !mask; - } - } - - #[inline] - pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 { - debug_assert!(bit_width <= 64); - debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); - debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); - let mut val = 0; - for i in 0..(bit_width as usize) { - if self.get_bit(i + bit_offset) { - let index = if cfg!(target_endian = "big") { - bit_width as usize - 1 - i - } else { - i - }; - val |= 1 << index; - } - } - val - } - - #[inline] - pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) { - debug_assert!(bit_width <= 64); - debug_assert!(bit_offset / 8 < self.storage.as_ref().len()); - debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len()); - for i in 0..(bit_width as usize) { - let mask = 1 << i; - let val_bit_is_set = val & mask == mask; - let index = if cfg!(target_endian = "big") { - bit_width as usize - 1 - i - } else { - i - }; - self.set_bit(index + bit_offset, val_bit_is_set); - } - } -} -pub const __bool_true_false_are_defined: u32 = 1; -pub const true_: u32 = 1; -pub const false_: u32 = 0; -pub const BSD: u32 = 199506; -pub const BSD4_3: u32 = 1; -pub const BSD4_4: u32 = 1; -pub const NeXTBSD: u32 = 1995064; -pub const NeXTBSD4_0: u32 = 0; -pub const __DARWIN_UNIX03: u32 = 1; -pub const __DARWIN_64_BIT_INO_T: u32 = 1; -pub const __DARWIN_VERS_1050: u32 = 1; -pub const __DARWIN_NON_CANCELABLE: u32 = 0; -pub const __DARWIN_SUF_UNIX03: &[u8; 10] = b"$UNIX2003\0"; -pub const __DARWIN_SUF_64_BIT_INO_T: &[u8; 9] = b"$INODE64\0"; -pub const __DARWIN_SUF_1050: &[u8; 6] = b"$1050\0"; -pub const __DARWIN_SUF_EXTSN: &[u8; 14] = b"$DARWIN_EXTSN\0"; -pub const __DARWIN_C_ANSI: u32 = 4096; -pub const __DARWIN_C_FULL: u32 = 900000; -pub const __DARWIN_C_LEVEL: u32 = 900000; -pub const __STDC_WANT_LIB_EXT1__: u32 = 1; -pub const __DARWIN_NO_LONG_LONG: u32 = 0; -pub const _DARWIN_FEATURE_64_BIT_INODE: u32 = 1; -pub const _DARWIN_FEATURE_UNIX_CONFORMANCE: u32 = 3; -pub const __PTHREAD_SIZE__: u32 = 8176; -pub const __PTHREAD_ATTR_SIZE__: u32 = 56; -pub const __PTHREAD_MUTEXATTR_SIZE__: u32 = 8; -pub const __PTHREAD_MUTEX_SIZE__: u32 = 56; -pub const __PTHREAD_CONDATTR_SIZE__: u32 = 8; -pub const __PTHREAD_COND_SIZE__: u32 = 40; -pub const __PTHREAD_ONCE_SIZE__: u32 = 8; -pub const __PTHREAD_RWLOCK_SIZE__: u32 = 192; -pub const __PTHREAD_RWLOCKATTR_SIZE__: u32 = 16; -pub const _QUAD_HIGHWORD: u32 = 1; -pub const _QUAD_LOWWORD: u32 = 0; -pub const __DARWIN_LITTLE_ENDIAN: u32 = 1234; -pub const __DARWIN_BIG_ENDIAN: u32 = 4321; -pub const __DARWIN_PDP_ENDIAN: u32 = 3412; -pub const __DARWIN_BYTE_ORDER: u32 = 1234; -pub const LITTLE_ENDIAN: u32 = 1234; -pub const BIG_ENDIAN: u32 = 4321; -pub const PDP_ENDIAN: u32 = 3412; -pub const BYTE_ORDER: u32 = 1234; -pub const __API_TO_BE_DEPRECATED: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_MACOS: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_IOS: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_MACCATALYST: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_WATCHOS: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_TVOS: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_DRIVERKIT: u32 = 100000; -pub const __API_TO_BE_DEPRECATED_VISIONOS: u32 = 100000; -pub const __MAC_10_0: u32 = 1000; -pub const __MAC_10_1: u32 = 1010; -pub const __MAC_10_2: u32 = 1020; -pub const __MAC_10_3: u32 = 1030; -pub const __MAC_10_4: u32 = 1040; -pub const __MAC_10_5: u32 = 1050; -pub const __MAC_10_6: u32 = 1060; -pub const __MAC_10_7: u32 = 1070; -pub const __MAC_10_8: u32 = 1080; -pub const __MAC_10_9: u32 = 1090; -pub const __MAC_10_10: u32 = 101000; -pub const __MAC_10_10_2: u32 = 101002; -pub const __MAC_10_10_3: u32 = 101003; -pub const __MAC_10_11: u32 = 101100; -pub const __MAC_10_11_2: u32 = 101102; -pub const __MAC_10_11_3: u32 = 101103; -pub const __MAC_10_11_4: u32 = 101104; -pub const __MAC_10_12: u32 = 101200; -pub const __MAC_10_12_1: u32 = 101201; -pub const __MAC_10_12_2: u32 = 101202; -pub const __MAC_10_12_4: u32 = 101204; -pub const __MAC_10_13: u32 = 101300; -pub const __MAC_10_13_1: u32 = 101301; -pub const __MAC_10_13_2: u32 = 101302; -pub const __MAC_10_13_4: u32 = 101304; -pub const __MAC_10_14: u32 = 101400; -pub const __MAC_10_14_1: u32 = 101401; -pub const __MAC_10_14_4: u32 = 101404; -pub const __MAC_10_14_5: u32 = 101405; -pub const __MAC_10_14_6: u32 = 101406; -pub const __MAC_10_15: u32 = 101500; -pub const __MAC_10_15_1: u32 = 101501; -pub const __MAC_10_15_4: u32 = 101504; -pub const __MAC_10_16: u32 = 101600; -pub const __MAC_11_0: u32 = 110000; -pub const __MAC_11_1: u32 = 110100; -pub const __MAC_11_3: u32 = 110300; -pub const __MAC_11_4: u32 = 110400; -pub const __MAC_11_5: u32 = 110500; -pub const __MAC_11_6: u32 = 110600; -pub const __MAC_12_0: u32 = 120000; -pub const __MAC_12_1: u32 = 120100; -pub const __MAC_12_2: u32 = 120200; -pub const __MAC_12_3: u32 = 120300; -pub const __MAC_12_4: u32 = 120400; -pub const __MAC_12_5: u32 = 120500; -pub const __MAC_12_6: u32 = 120600; -pub const __MAC_12_7: u32 = 120700; -pub const __MAC_13_0: u32 = 130000; -pub const __MAC_13_1: u32 = 130100; -pub const __MAC_13_2: u32 = 130200; -pub const __MAC_13_3: u32 = 130300; -pub const __MAC_13_4: u32 = 130400; -pub const __MAC_13_5: u32 = 130500; -pub const __MAC_13_6: u32 = 130600; -pub const __MAC_14_0: u32 = 140000; -pub const __MAC_14_1: u32 = 140100; -pub const __MAC_14_2: u32 = 140200; -pub const __IPHONE_2_0: u32 = 20000; -pub const __IPHONE_2_1: u32 = 20100; -pub const __IPHONE_2_2: u32 = 20200; -pub const __IPHONE_3_0: u32 = 30000; -pub const __IPHONE_3_1: u32 = 30100; -pub const __IPHONE_3_2: u32 = 30200; -pub const __IPHONE_4_0: u32 = 40000; -pub const __IPHONE_4_1: u32 = 40100; -pub const __IPHONE_4_2: u32 = 40200; -pub const __IPHONE_4_3: u32 = 40300; -pub const __IPHONE_5_0: u32 = 50000; -pub const __IPHONE_5_1: u32 = 50100; -pub const __IPHONE_6_0: u32 = 60000; -pub const __IPHONE_6_1: u32 = 60100; -pub const __IPHONE_7_0: u32 = 70000; -pub const __IPHONE_7_1: u32 = 70100; -pub const __IPHONE_8_0: u32 = 80000; -pub const __IPHONE_8_1: u32 = 80100; -pub const __IPHONE_8_2: u32 = 80200; -pub const __IPHONE_8_3: u32 = 80300; -pub const __IPHONE_8_4: u32 = 80400; -pub const __IPHONE_9_0: u32 = 90000; -pub const __IPHONE_9_1: u32 = 90100; -pub const __IPHONE_9_2: u32 = 90200; -pub const __IPHONE_9_3: u32 = 90300; -pub const __IPHONE_10_0: u32 = 100000; -pub const __IPHONE_10_1: u32 = 100100; -pub const __IPHONE_10_2: u32 = 100200; -pub const __IPHONE_10_3: u32 = 100300; -pub const __IPHONE_11_0: u32 = 110000; -pub const __IPHONE_11_1: u32 = 110100; -pub const __IPHONE_11_2: u32 = 110200; -pub const __IPHONE_11_3: u32 = 110300; -pub const __IPHONE_11_4: u32 = 110400; -pub const __IPHONE_12_0: u32 = 120000; -pub const __IPHONE_12_1: u32 = 120100; -pub const __IPHONE_12_2: u32 = 120200; -pub const __IPHONE_12_3: u32 = 120300; -pub const __IPHONE_12_4: u32 = 120400; -pub const __IPHONE_13_0: u32 = 130000; -pub const __IPHONE_13_1: u32 = 130100; -pub const __IPHONE_13_2: u32 = 130200; -pub const __IPHONE_13_3: u32 = 130300; -pub const __IPHONE_13_4: u32 = 130400; -pub const __IPHONE_13_5: u32 = 130500; -pub const __IPHONE_13_6: u32 = 130600; -pub const __IPHONE_13_7: u32 = 130700; -pub const __IPHONE_14_0: u32 = 140000; -pub const __IPHONE_14_1: u32 = 140100; -pub const __IPHONE_14_2: u32 = 140200; -pub const __IPHONE_14_3: u32 = 140300; -pub const __IPHONE_14_5: u32 = 140500; -pub const __IPHONE_14_4: u32 = 140400; -pub const __IPHONE_14_6: u32 = 140600; -pub const __IPHONE_14_7: u32 = 140700; -pub const __IPHONE_14_8: u32 = 140800; -pub const __IPHONE_15_0: u32 = 150000; -pub const __IPHONE_15_1: u32 = 150100; -pub const __IPHONE_15_2: u32 = 150200; -pub const __IPHONE_15_3: u32 = 150300; -pub const __IPHONE_15_4: u32 = 150400; -pub const __IPHONE_15_5: u32 = 150500; -pub const __IPHONE_15_6: u32 = 150600; -pub const __IPHONE_16_0: u32 = 160000; -pub const __IPHONE_16_1: u32 = 160100; -pub const __IPHONE_16_2: u32 = 160200; -pub const __IPHONE_16_3: u32 = 160300; -pub const __IPHONE_16_4: u32 = 160400; -pub const __IPHONE_16_5: u32 = 160500; -pub const __IPHONE_16_6: u32 = 160600; -pub const __IPHONE_16_7: u32 = 160700; -pub const __IPHONE_17_0: u32 = 170000; -pub const __IPHONE_17_1: u32 = 170100; -pub const __IPHONE_17_2: u32 = 170200; -pub const __WATCHOS_1_0: u32 = 10000; -pub const __WATCHOS_2_0: u32 = 20000; -pub const __WATCHOS_2_1: u32 = 20100; -pub const __WATCHOS_2_2: u32 = 20200; -pub const __WATCHOS_3_0: u32 = 30000; -pub const __WATCHOS_3_1: u32 = 30100; -pub const __WATCHOS_3_1_1: u32 = 30101; -pub const __WATCHOS_3_2: u32 = 30200; -pub const __WATCHOS_4_0: u32 = 40000; -pub const __WATCHOS_4_1: u32 = 40100; -pub const __WATCHOS_4_2: u32 = 40200; -pub const __WATCHOS_4_3: u32 = 40300; -pub const __WATCHOS_5_0: u32 = 50000; -pub const __WATCHOS_5_1: u32 = 50100; -pub const __WATCHOS_5_2: u32 = 50200; -pub const __WATCHOS_5_3: u32 = 50300; -pub const __WATCHOS_6_0: u32 = 60000; -pub const __WATCHOS_6_1: u32 = 60100; -pub const __WATCHOS_6_2: u32 = 60200; -pub const __WATCHOS_7_0: u32 = 70000; -pub const __WATCHOS_7_1: u32 = 70100; -pub const __WATCHOS_7_2: u32 = 70200; -pub const __WATCHOS_7_3: u32 = 70300; -pub const __WATCHOS_7_4: u32 = 70400; -pub const __WATCHOS_7_5: u32 = 70500; -pub const __WATCHOS_7_6: u32 = 70600; -pub const __WATCHOS_8_0: u32 = 80000; -pub const __WATCHOS_8_1: u32 = 80100; -pub const __WATCHOS_8_3: u32 = 80300; -pub const __WATCHOS_8_4: u32 = 80400; -pub const __WATCHOS_8_5: u32 = 80500; -pub const __WATCHOS_8_6: u32 = 80600; -pub const __WATCHOS_8_7: u32 = 80700; -pub const __WATCHOS_9_0: u32 = 90000; -pub const __WATCHOS_9_1: u32 = 90100; -pub const __WATCHOS_9_2: u32 = 90200; -pub const __WATCHOS_9_3: u32 = 90300; -pub const __WATCHOS_9_4: u32 = 90400; -pub const __WATCHOS_9_5: u32 = 90500; -pub const __WATCHOS_9_6: u32 = 90600; -pub const __WATCHOS_10_0: u32 = 100000; -pub const __WATCHOS_10_1: u32 = 100100; -pub const __WATCHOS_10_2: u32 = 100200; -pub const __TVOS_9_0: u32 = 90000; -pub const __TVOS_9_1: u32 = 90100; -pub const __TVOS_9_2: u32 = 90200; -pub const __TVOS_10_0: u32 = 100000; -pub const __TVOS_10_0_1: u32 = 100001; -pub const __TVOS_10_1: u32 = 100100; -pub const __TVOS_10_2: u32 = 100200; -pub const __TVOS_11_0: u32 = 110000; -pub const __TVOS_11_1: u32 = 110100; -pub const __TVOS_11_2: u32 = 110200; -pub const __TVOS_11_3: u32 = 110300; -pub const __TVOS_11_4: u32 = 110400; -pub const __TVOS_12_0: u32 = 120000; -pub const __TVOS_12_1: u32 = 120100; -pub const __TVOS_12_2: u32 = 120200; -pub const __TVOS_12_3: u32 = 120300; -pub const __TVOS_12_4: u32 = 120400; -pub const __TVOS_13_0: u32 = 130000; -pub const __TVOS_13_2: u32 = 130200; -pub const __TVOS_13_3: u32 = 130300; -pub const __TVOS_13_4: u32 = 130400; -pub const __TVOS_14_0: u32 = 140000; -pub const __TVOS_14_1: u32 = 140100; -pub const __TVOS_14_2: u32 = 140200; -pub const __TVOS_14_3: u32 = 140300; -pub const __TVOS_14_5: u32 = 140500; -pub const __TVOS_14_6: u32 = 140600; -pub const __TVOS_14_7: u32 = 140700; -pub const __TVOS_15_0: u32 = 150000; -pub const __TVOS_15_1: u32 = 150100; -pub const __TVOS_15_2: u32 = 150200; -pub const __TVOS_15_3: u32 = 150300; -pub const __TVOS_15_4: u32 = 150400; -pub const __TVOS_15_5: u32 = 150500; -pub const __TVOS_15_6: u32 = 150600; -pub const __TVOS_16_0: u32 = 160000; -pub const __TVOS_16_1: u32 = 160100; -pub const __TVOS_16_2: u32 = 160200; -pub const __TVOS_16_3: u32 = 160300; -pub const __TVOS_16_4: u32 = 160400; -pub const __TVOS_16_5: u32 = 160500; -pub const __TVOS_16_6: u32 = 160600; -pub const __TVOS_17_0: u32 = 170000; -pub const __TVOS_17_1: u32 = 170100; -pub const __TVOS_17_2: u32 = 170200; -pub const __BRIDGEOS_2_0: u32 = 20000; -pub const __BRIDGEOS_3_0: u32 = 30000; -pub const __BRIDGEOS_3_1: u32 = 30100; -pub const __BRIDGEOS_3_4: u32 = 30400; -pub const __BRIDGEOS_4_0: u32 = 40000; -pub const __BRIDGEOS_4_1: u32 = 40100; -pub const __BRIDGEOS_5_0: u32 = 50000; -pub const __BRIDGEOS_5_1: u32 = 50100; -pub const __BRIDGEOS_5_3: u32 = 50300; -pub const __BRIDGEOS_6_0: u32 = 60000; -pub const __BRIDGEOS_6_2: u32 = 60200; -pub const __BRIDGEOS_6_4: u32 = 60400; -pub const __BRIDGEOS_6_5: u32 = 60500; -pub const __BRIDGEOS_6_6: u32 = 60600; -pub const __BRIDGEOS_7_0: u32 = 70000; -pub const __BRIDGEOS_7_1: u32 = 70100; -pub const __BRIDGEOS_7_2: u32 = 70200; -pub const __BRIDGEOS_7_3: u32 = 70300; -pub const __BRIDGEOS_7_4: u32 = 70400; -pub const __BRIDGEOS_7_6: u32 = 70600; -pub const __BRIDGEOS_8_0: u32 = 80000; -pub const __BRIDGEOS_8_1: u32 = 80100; -pub const __BRIDGEOS_8_2: u32 = 80200; -pub const __DRIVERKIT_19_0: u32 = 190000; -pub const __DRIVERKIT_20_0: u32 = 200000; -pub const __DRIVERKIT_21_0: u32 = 210000; -pub const __DRIVERKIT_22_0: u32 = 220000; -pub const __DRIVERKIT_22_4: u32 = 220400; -pub const __DRIVERKIT_22_5: u32 = 220500; -pub const __DRIVERKIT_22_6: u32 = 220600; -pub const __DRIVERKIT_23_0: u32 = 230000; -pub const __DRIVERKIT_23_1: u32 = 230100; -pub const __DRIVERKIT_23_2: u32 = 230200; -pub const __VISIONOS_1_0: u32 = 10000; -pub const MAC_OS_X_VERSION_10_0: u32 = 1000; -pub const MAC_OS_X_VERSION_10_1: u32 = 1010; -pub const MAC_OS_X_VERSION_10_2: u32 = 1020; -pub const MAC_OS_X_VERSION_10_3: u32 = 1030; -pub const MAC_OS_X_VERSION_10_4: u32 = 1040; -pub const MAC_OS_X_VERSION_10_5: u32 = 1050; -pub const MAC_OS_X_VERSION_10_6: u32 = 1060; -pub const MAC_OS_X_VERSION_10_7: u32 = 1070; -pub const MAC_OS_X_VERSION_10_8: u32 = 1080; -pub const MAC_OS_X_VERSION_10_9: u32 = 1090; -pub const MAC_OS_X_VERSION_10_10: u32 = 101000; -pub const MAC_OS_X_VERSION_10_10_2: u32 = 101002; -pub const MAC_OS_X_VERSION_10_10_3: u32 = 101003; -pub const MAC_OS_X_VERSION_10_11: u32 = 101100; -pub const MAC_OS_X_VERSION_10_11_2: u32 = 101102; -pub const MAC_OS_X_VERSION_10_11_3: u32 = 101103; -pub const MAC_OS_X_VERSION_10_11_4: u32 = 101104; -pub const MAC_OS_X_VERSION_10_12: u32 = 101200; -pub const MAC_OS_X_VERSION_10_12_1: u32 = 101201; -pub const MAC_OS_X_VERSION_10_12_2: u32 = 101202; -pub const MAC_OS_X_VERSION_10_12_4: u32 = 101204; -pub const MAC_OS_X_VERSION_10_13: u32 = 101300; -pub const MAC_OS_X_VERSION_10_13_1: u32 = 101301; -pub const MAC_OS_X_VERSION_10_13_2: u32 = 101302; -pub const MAC_OS_X_VERSION_10_13_4: u32 = 101304; -pub const MAC_OS_X_VERSION_10_14: u32 = 101400; -pub const MAC_OS_X_VERSION_10_14_1: u32 = 101401; -pub const MAC_OS_X_VERSION_10_14_4: u32 = 101404; -pub const MAC_OS_X_VERSION_10_14_5: u32 = 101405; -pub const MAC_OS_X_VERSION_10_14_6: u32 = 101406; -pub const MAC_OS_X_VERSION_10_15: u32 = 101500; -pub const MAC_OS_X_VERSION_10_15_1: u32 = 101501; -pub const MAC_OS_X_VERSION_10_15_4: u32 = 101504; -pub const MAC_OS_X_VERSION_10_16: u32 = 101600; -pub const MAC_OS_VERSION_11_0: u32 = 110000; -pub const MAC_OS_VERSION_11_1: u32 = 110100; -pub const MAC_OS_VERSION_11_3: u32 = 110300; -pub const MAC_OS_VERSION_11_4: u32 = 110400; -pub const MAC_OS_VERSION_11_5: u32 = 110500; -pub const MAC_OS_VERSION_11_6: u32 = 110600; -pub const MAC_OS_VERSION_12_0: u32 = 120000; -pub const MAC_OS_VERSION_12_1: u32 = 120100; -pub const MAC_OS_VERSION_12_2: u32 = 120200; -pub const MAC_OS_VERSION_12_3: u32 = 120300; -pub const MAC_OS_VERSION_12_4: u32 = 120400; -pub const MAC_OS_VERSION_12_5: u32 = 120500; -pub const MAC_OS_VERSION_12_6: u32 = 120600; -pub const MAC_OS_VERSION_12_7: u32 = 120700; -pub const MAC_OS_VERSION_13_0: u32 = 130000; -pub const MAC_OS_VERSION_13_1: u32 = 130100; -pub const MAC_OS_VERSION_13_2: u32 = 130200; -pub const MAC_OS_VERSION_13_3: u32 = 130300; -pub const MAC_OS_VERSION_13_4: u32 = 130400; -pub const MAC_OS_VERSION_13_5: u32 = 130500; -pub const MAC_OS_VERSION_13_6: u32 = 130600; -pub const MAC_OS_VERSION_14_0: u32 = 140000; -pub const MAC_OS_VERSION_14_1: u32 = 140100; -pub const MAC_OS_VERSION_14_2: u32 = 140200; -pub const __MAC_OS_X_VERSION_MAX_ALLOWED: u32 = 140200; -pub const __ENABLE_LEGACY_MAC_AVAILABILITY: u32 = 1; -pub const __DARWIN_FD_SETSIZE: u32 = 1024; -pub const __DARWIN_NBBY: u32 = 8; -pub const NBBY: u32 = 8; -pub const FD_SETSIZE: u32 = 1024; -pub const ARG_MAX: u32 = 1048576; -pub const CHILD_MAX: u32 = 266; -pub const GID_MAX: u32 = 2147483647; -pub const LINK_MAX: u32 = 32767; -pub const MAX_CANON: u32 = 1024; -pub const MAX_INPUT: u32 = 1024; -pub const NAME_MAX: u32 = 255; -pub const NGROUPS_MAX: u32 = 16; -pub const UID_MAX: u32 = 2147483647; -pub const OPEN_MAX: u32 = 10240; -pub const PATH_MAX: u32 = 1024; -pub const PIPE_BUF: u32 = 512; -pub const BC_BASE_MAX: u32 = 99; -pub const BC_DIM_MAX: u32 = 2048; -pub const BC_SCALE_MAX: u32 = 99; -pub const BC_STRING_MAX: u32 = 1000; -pub const CHARCLASS_NAME_MAX: u32 = 14; -pub const COLL_WEIGHTS_MAX: u32 = 2; -pub const EQUIV_CLASS_MAX: u32 = 2; -pub const EXPR_NEST_MAX: u32 = 32; -pub const LINE_MAX: u32 = 2048; -pub const RE_DUP_MAX: u32 = 255; -pub const NZERO: u32 = 20; -pub const MAXCOMLEN: u32 = 16; -pub const MAXINTERP: u32 = 64; -pub const MAXLOGNAME: u32 = 255; -pub const MAXUPRC: u32 = 266; -pub const NCARGS: u32 = 1048576; -pub const NGROUPS: u32 = 16; -pub const NOFILE: u32 = 256; -pub const NOGROUP: u32 = 65535; -pub const MAXHOSTNAMELEN: u32 = 256; -pub const MAXDOMNAMELEN: u32 = 256; -pub const NBPG: u32 = 4096; -pub const PGOFSET: u32 = 4095; -pub const PGSHIFT: u32 = 12; -pub const DEV_BSIZE: u32 = 512; -pub const DEV_BSHIFT: u32 = 9; -pub const BLKDEV_IOSIZE: u32 = 2048; -pub const MAXPHYS: u32 = 131072; -pub const CLSIZE: u32 = 1; -pub const CLSIZELOG2: u32 = 0; -pub const MSIZESHIFT: u32 = 8; -pub const MSIZE: u32 = 256; -pub const MCLSHIFT: u32 = 11; -pub const MCLBYTES: u32 = 2048; -pub const MBIGCLSHIFT: u32 = 12; -pub const MBIGCLBYTES: u32 = 4096; -pub const M16KCLSHIFT: u32 = 14; -pub const M16KCLBYTES: u32 = 16384; -pub const MCLOFSET: u32 = 2047; -pub const NMBCLUSTERS: u32 = 512; -pub const __DARWIN_CLK_TCK: u32 = 100; -pub const CHAR_BIT: u32 = 8; -pub const MB_LEN_MAX: u32 = 6; -pub const CLK_TCK: u32 = 100; -pub const SCHAR_MAX: u32 = 127; -pub const SCHAR_MIN: i32 = -128; -pub const UCHAR_MAX: u32 = 255; -pub const CHAR_MAX: u32 = 127; -pub const CHAR_MIN: i32 = -128; -pub const USHRT_MAX: u32 = 65535; -pub const SHRT_MAX: u32 = 32767; -pub const SHRT_MIN: i32 = -32768; -pub const UINT_MAX: u32 = 4294967295; -pub const INT_MAX: u32 = 2147483647; -pub const INT_MIN: i32 = -2147483648; -pub const ULONG_MAX: i32 = -1; -pub const LONG_MAX: u64 = 9223372036854775807; -pub const LONG_MIN: i64 = -9223372036854775808; -pub const ULLONG_MAX: i32 = -1; -pub const LLONG_MAX: u64 = 9223372036854775807; -pub const LLONG_MIN: i64 = -9223372036854775808; -pub const LONG_BIT: u32 = 64; -pub const SSIZE_MAX: u64 = 9223372036854775807; -pub const WORD_BIT: u32 = 32; -pub const SIZE_T_MAX: i32 = -1; -pub const UQUAD_MAX: i32 = -1; -pub const QUAD_MAX: u64 = 9223372036854775807; -pub const QUAD_MIN: i64 = -9223372036854775808; -pub const _POSIX_ARG_MAX: u32 = 4096; -pub const _POSIX_CHILD_MAX: u32 = 25; -pub const _POSIX_LINK_MAX: u32 = 8; -pub const _POSIX_MAX_CANON: u32 = 255; -pub const _POSIX_MAX_INPUT: u32 = 255; -pub const _POSIX_NAME_MAX: u32 = 14; -pub const _POSIX_NGROUPS_MAX: u32 = 8; -pub const _POSIX_OPEN_MAX: u32 = 20; -pub const _POSIX_PATH_MAX: u32 = 256; -pub const _POSIX_PIPE_BUF: u32 = 512; -pub const _POSIX_SSIZE_MAX: u32 = 32767; -pub const _POSIX_STREAM_MAX: u32 = 8; -pub const _POSIX_TZNAME_MAX: u32 = 6; -pub const _POSIX2_BC_BASE_MAX: u32 = 99; -pub const _POSIX2_BC_DIM_MAX: u32 = 2048; -pub const _POSIX2_BC_SCALE_MAX: u32 = 99; -pub const _POSIX2_BC_STRING_MAX: u32 = 1000; -pub const _POSIX2_EQUIV_CLASS_MAX: u32 = 2; -pub const _POSIX2_EXPR_NEST_MAX: u32 = 32; -pub const _POSIX2_LINE_MAX: u32 = 2048; -pub const _POSIX2_RE_DUP_MAX: u32 = 255; -pub const _POSIX_AIO_LISTIO_MAX: u32 = 2; -pub const _POSIX_AIO_MAX: u32 = 1; -pub const _POSIX_DELAYTIMER_MAX: u32 = 32; -pub const _POSIX_MQ_OPEN_MAX: u32 = 8; -pub const _POSIX_MQ_PRIO_MAX: u32 = 32; -pub const _POSIX_RTSIG_MAX: u32 = 8; -pub const _POSIX_SEM_NSEMS_MAX: u32 = 256; -pub const _POSIX_SEM_VALUE_MAX: u32 = 32767; -pub const _POSIX_SIGQUEUE_MAX: u32 = 32; -pub const _POSIX_TIMER_MAX: u32 = 32; -pub const _POSIX_CLOCKRES_MIN: u32 = 20000000; -pub const _POSIX_THREAD_DESTRUCTOR_ITERATIONS: u32 = 4; -pub const _POSIX_THREAD_KEYS_MAX: u32 = 128; -pub const _POSIX_THREAD_THREADS_MAX: u32 = 64; -pub const PTHREAD_DESTRUCTOR_ITERATIONS: u32 = 4; -pub const PTHREAD_KEYS_MAX: u32 = 512; -pub const PTHREAD_STACK_MIN: u32 = 8192; -pub const _POSIX_HOST_NAME_MAX: u32 = 255; -pub const _POSIX_LOGIN_NAME_MAX: u32 = 9; -pub const _POSIX_SS_REPL_MAX: u32 = 4; -pub const _POSIX_SYMLINK_MAX: u32 = 255; -pub const _POSIX_SYMLOOP_MAX: u32 = 8; -pub const _POSIX_TRACE_EVENT_NAME_MAX: u32 = 30; -pub const _POSIX_TRACE_NAME_MAX: u32 = 8; -pub const _POSIX_TRACE_SYS_MAX: u32 = 8; -pub const _POSIX_TRACE_USER_EVENT_MAX: u32 = 32; -pub const _POSIX_TTY_NAME_MAX: u32 = 9; -pub const _POSIX2_CHARCLASS_NAME_MAX: u32 = 14; -pub const _POSIX2_COLL_WEIGHTS_MAX: u32 = 2; -pub const _POSIX_RE_DUP_MAX: u32 = 255; -pub const OFF_MIN: i64 = -9223372036854775808; -pub const OFF_MAX: u64 = 9223372036854775807; -pub const PASS_MAX: u32 = 128; -pub const NL_ARGMAX: u32 = 9; -pub const NL_LANGMAX: u32 = 14; -pub const NL_MSGMAX: u32 = 32767; -pub const NL_NMAX: u32 = 1; -pub const NL_SETMAX: u32 = 255; -pub const NL_TEXTMAX: u32 = 2048; -pub const _XOPEN_IOV_MAX: u32 = 16; -pub const IOV_MAX: u32 = 1024; -pub const _XOPEN_NAME_MAX: u32 = 255; -pub const _XOPEN_PATH_MAX: u32 = 1024; -pub const __DARWIN_NSIG: u32 = 32; -pub const NSIG: u32 = 32; -pub const _I386_SIGNAL_H_: u32 = 1; -pub const SIGHUP: u32 = 1; -pub const SIGINT: u32 = 2; -pub const SIGQUIT: u32 = 3; -pub const SIGILL: u32 = 4; -pub const SIGTRAP: u32 = 5; -pub const SIGABRT: u32 = 6; -pub const SIGIOT: u32 = 6; -pub const SIGEMT: u32 = 7; -pub const SIGFPE: u32 = 8; -pub const SIGKILL: u32 = 9; -pub const SIGBUS: u32 = 10; -pub const SIGSEGV: u32 = 11; -pub const SIGSYS: u32 = 12; -pub const SIGPIPE: u32 = 13; -pub const SIGALRM: u32 = 14; -pub const SIGTERM: u32 = 15; -pub const SIGURG: u32 = 16; -pub const SIGSTOP: u32 = 17; -pub const SIGTSTP: u32 = 18; -pub const SIGCONT: u32 = 19; -pub const SIGCHLD: u32 = 20; -pub const SIGTTIN: u32 = 21; -pub const SIGTTOU: u32 = 22; -pub const SIGIO: u32 = 23; -pub const SIGXCPU: u32 = 24; -pub const SIGXFSZ: u32 = 25; -pub const SIGVTALRM: u32 = 26; -pub const SIGPROF: u32 = 27; -pub const SIGWINCH: u32 = 28; -pub const SIGINFO: u32 = 29; -pub const SIGUSR1: u32 = 30; -pub const SIGUSR2: u32 = 31; -pub const FP_PREC_24B: u32 = 0; -pub const FP_PREC_53B: u32 = 2; -pub const FP_PREC_64B: u32 = 3; -pub const FP_RND_NEAR: u32 = 0; -pub const FP_RND_DOWN: u32 = 1; -pub const FP_RND_UP: u32 = 2; -pub const FP_CHOP: u32 = 3; -pub const FP_STATE_BYTES: u32 = 512; -pub const _X86_INSTRUCTION_STATE_MAX_INSN_BYTES: u32 = 2380; -pub const _X86_INSTRUCTION_STATE_CACHELINE_SIZE: u32 = 64; -pub const __LASTBRANCH_MAX: u32 = 32; -pub const SIGEV_NONE: u32 = 0; -pub const SIGEV_SIGNAL: u32 = 1; -pub const SIGEV_THREAD: u32 = 3; -pub const ILL_NOOP: u32 = 0; -pub const ILL_ILLOPC: u32 = 1; -pub const ILL_ILLTRP: u32 = 2; -pub const ILL_PRVOPC: u32 = 3; -pub const ILL_ILLOPN: u32 = 4; -pub const ILL_ILLADR: u32 = 5; -pub const ILL_PRVREG: u32 = 6; -pub const ILL_COPROC: u32 = 7; -pub const ILL_BADSTK: u32 = 8; -pub const FPE_NOOP: u32 = 0; -pub const FPE_FLTDIV: u32 = 1; -pub const FPE_FLTOVF: u32 = 2; -pub const FPE_FLTUND: u32 = 3; -pub const FPE_FLTRES: u32 = 4; -pub const FPE_FLTINV: u32 = 5; -pub const FPE_FLTSUB: u32 = 6; -pub const FPE_INTDIV: u32 = 7; -pub const FPE_INTOVF: u32 = 8; -pub const SEGV_NOOP: u32 = 0; -pub const SEGV_MAPERR: u32 = 1; -pub const SEGV_ACCERR: u32 = 2; -pub const BUS_NOOP: u32 = 0; -pub const BUS_ADRALN: u32 = 1; -pub const BUS_ADRERR: u32 = 2; -pub const BUS_OBJERR: u32 = 3; -pub const TRAP_BRKPT: u32 = 1; -pub const TRAP_TRACE: u32 = 2; -pub const CLD_NOOP: u32 = 0; -pub const CLD_EXITED: u32 = 1; -pub const CLD_KILLED: u32 = 2; -pub const CLD_DUMPED: u32 = 3; -pub const CLD_TRAPPED: u32 = 4; -pub const CLD_STOPPED: u32 = 5; -pub const CLD_CONTINUED: u32 = 6; -pub const POLL_IN: u32 = 1; -pub const POLL_OUT: u32 = 2; -pub const POLL_MSG: u32 = 3; -pub const POLL_ERR: u32 = 4; -pub const POLL_PRI: u32 = 5; -pub const POLL_HUP: u32 = 6; -pub const SA_ONSTACK: u32 = 1; -pub const SA_RESTART: u32 = 2; -pub const SA_RESETHAND: u32 = 4; -pub const SA_NOCLDSTOP: u32 = 8; -pub const SA_NODEFER: u32 = 16; -pub const SA_NOCLDWAIT: u32 = 32; -pub const SA_SIGINFO: u32 = 64; -pub const SA_USERTRAMP: u32 = 256; -pub const SA_64REGSET: u32 = 512; -pub const SA_USERSPACE_MASK: u32 = 127; -pub const SIG_BLOCK: u32 = 1; -pub const SIG_UNBLOCK: u32 = 2; -pub const SIG_SETMASK: u32 = 3; -pub const SI_USER: u32 = 65537; -pub const SI_QUEUE: u32 = 65538; -pub const SI_TIMER: u32 = 65539; -pub const SI_ASYNCIO: u32 = 65540; -pub const SI_MESGQ: u32 = 65541; -pub const SS_ONSTACK: u32 = 1; -pub const SS_DISABLE: u32 = 4; -pub const MINSIGSTKSZ: u32 = 32768; -pub const SIGSTKSZ: u32 = 131072; -pub const SV_ONSTACK: u32 = 1; -pub const SV_INTERRUPT: u32 = 2; -pub const SV_RESETHAND: u32 = 4; -pub const SV_NODEFER: u32 = 16; -pub const SV_NOCLDSTOP: u32 = 8; -pub const SV_SIGINFO: u32 = 64; -pub const PSWP: u32 = 0; -pub const PVM: u32 = 4; -pub const PINOD: u32 = 8; -pub const PRIBIO: u32 = 16; -pub const PVFS: u32 = 20; -pub const PZERO: u32 = 22; -pub const PSOCK: u32 = 24; -pub const PWAIT: u32 = 32; -pub const PLOCK: u32 = 36; -pub const PPAUSE: u32 = 40; -pub const PUSER: u32 = 50; -pub const MAXPRI: u32 = 127; -pub const PRIMASK: u32 = 255; -pub const PCATCH: u32 = 256; -pub const PTTYBLOCK: u32 = 512; -pub const PDROP: u32 = 1024; -pub const PSPIN: u32 = 2048; -pub const CMASK: u32 = 18; -pub const CLBYTES: u32 = 4096; -pub const CLOFSET: u32 = 4095; -pub const CLOFF: u32 = 4095; -pub const CLSHIFT: u32 = 12; -pub const CBLOCK: u32 = 64; -pub const CBQSIZE: u32 = 8; -pub const CROUND: u32 = 63; -pub const MAXBSIZE: u32 = 1048576; -pub const MAXPHYSIO: u32 = 131072; -pub const MAXFRAG: u32 = 8; -pub const MAXPHYSIO_WIRED: u32 = 16777216; -pub const MAXPATHLEN: u32 = 1024; -pub const MAXSYMLINKS: u32 = 32; -pub const FSHIFT: u32 = 11; -pub const FSCALE: u32 = 2048; -pub const SPLAY_NEGINF: i32 = -1; -pub const SPLAY_INF: u32 = 1; -pub const RB_BLACK: u32 = 0; -pub const RB_RED: u32 = 1; -pub const RB_NEGINF: i32 = -1; -pub const RB_INF: u32 = 1; -pub const RNF_NORMAL: u32 = 1; -pub const RNF_ROOT: u32 = 2; -pub const RNF_ACTIVE: u32 = 4; -pub const __WORDSIZE: u32 = 64; -pub const INT8_MAX: u32 = 127; -pub const INT16_MAX: u32 = 32767; -pub const INT32_MAX: u32 = 2147483647; -pub const INT64_MAX: u64 = 9223372036854775807; -pub const INT8_MIN: i32 = -128; -pub const INT16_MIN: i32 = -32768; -pub const INT32_MIN: i32 = -2147483648; -pub const INT64_MIN: i64 = -9223372036854775808; -pub const UINT8_MAX: u32 = 255; -pub const UINT16_MAX: u32 = 65535; -pub const UINT32_MAX: u32 = 4294967295; -pub const UINT64_MAX: i32 = -1; -pub const INT_LEAST8_MIN: i32 = -128; -pub const INT_LEAST16_MIN: i32 = -32768; -pub const INT_LEAST32_MIN: i32 = -2147483648; -pub const INT_LEAST64_MIN: i64 = -9223372036854775808; -pub const INT_LEAST8_MAX: u32 = 127; -pub const INT_LEAST16_MAX: u32 = 32767; -pub const INT_LEAST32_MAX: u32 = 2147483647; -pub const INT_LEAST64_MAX: u64 = 9223372036854775807; -pub const UINT_LEAST8_MAX: u32 = 255; -pub const UINT_LEAST16_MAX: u32 = 65535; -pub const UINT_LEAST32_MAX: u32 = 4294967295; -pub const UINT_LEAST64_MAX: i32 = -1; -pub const INT_FAST8_MIN: i32 = -128; -pub const INT_FAST16_MIN: i32 = -32768; -pub const INT_FAST32_MIN: i32 = -2147483648; -pub const INT_FAST64_MIN: i64 = -9223372036854775808; -pub const INT_FAST8_MAX: u32 = 127; -pub const INT_FAST16_MAX: u32 = 32767; -pub const INT_FAST32_MAX: u32 = 2147483647; -pub const INT_FAST64_MAX: u64 = 9223372036854775807; -pub const UINT_FAST8_MAX: u32 = 255; -pub const UINT_FAST16_MAX: u32 = 65535; -pub const UINT_FAST32_MAX: u32 = 4294967295; -pub const UINT_FAST64_MAX: i32 = -1; -pub const INTPTR_MAX: u64 = 9223372036854775807; -pub const INTPTR_MIN: i64 = -9223372036854775808; -pub const UINTPTR_MAX: i32 = -1; -pub const SIZE_MAX: i32 = -1; -pub const RSIZE_MAX: i32 = -1; -pub const WINT_MIN: i32 = -2147483648; -pub const WINT_MAX: u32 = 2147483647; -pub const SIG_ATOMIC_MIN: i32 = -2147483648; -pub const SIG_ATOMIC_MAX: u32 = 2147483647; -pub const KEV_INET_SUBCLASS: u32 = 1; -pub const KEV_INET_NEW_ADDR: u32 = 1; -pub const KEV_INET_CHANGED_ADDR: u32 = 2; -pub const KEV_INET_ADDR_DELETED: u32 = 3; -pub const KEV_INET_SIFDSTADDR: u32 = 4; -pub const KEV_INET_SIFBRDADDR: u32 = 5; -pub const KEV_INET_SIFNETMASK: u32 = 6; -pub const KEV_INET_ARPCOLLISION: u32 = 7; -pub const KEV_INET_PORTINUSE: u32 = 8; -pub const KEV_INET_ARPRTRFAILURE: u32 = 9; -pub const KEV_INET_ARPRTRALIVE: u32 = 10; -pub const KEV_DL_SUBCLASS: u32 = 2; -pub const KEV_DL_SIFFLAGS: u32 = 1; -pub const KEV_DL_SIFMETRICS: u32 = 2; -pub const KEV_DL_SIFMTU: u32 = 3; -pub const KEV_DL_SIFPHYS: u32 = 4; -pub const KEV_DL_SIFMEDIA: u32 = 5; -pub const KEV_DL_SIFGENERIC: u32 = 6; -pub const KEV_DL_ADDMULTI: u32 = 7; -pub const KEV_DL_DELMULTI: u32 = 8; -pub const KEV_DL_IF_ATTACHED: u32 = 9; -pub const KEV_DL_IF_DETACHING: u32 = 10; -pub const KEV_DL_IF_DETACHED: u32 = 11; -pub const KEV_DL_LINK_OFF: u32 = 12; -pub const KEV_DL_LINK_ON: u32 = 13; -pub const KEV_DL_PROTO_ATTACHED: u32 = 14; -pub const KEV_DL_PROTO_DETACHED: u32 = 15; -pub const KEV_DL_LINK_ADDRESS_CHANGED: u32 = 16; -pub const KEV_DL_WAKEFLAGS_CHANGED: u32 = 17; -pub const KEV_DL_IF_IDLE_ROUTE_REFCNT: u32 = 18; -pub const KEV_DL_IFCAP_CHANGED: u32 = 19; -pub const KEV_DL_LINK_QUALITY_METRIC_CHANGED: u32 = 20; -pub const KEV_DL_NODE_PRESENCE: u32 = 21; -pub const KEV_DL_NODE_ABSENCE: u32 = 22; -pub const KEV_DL_MASTER_ELECTED: u32 = 23; -pub const KEV_DL_ISSUES: u32 = 24; -pub const KEV_DL_IFDELEGATE_CHANGED: u32 = 25; -pub const KEV_DL_AWDL_RESTRICTED: u32 = 26; -pub const KEV_DL_AWDL_UNRESTRICTED: u32 = 27; -pub const KEV_DL_RRC_STATE_CHANGED: u32 = 28; -pub const KEV_DL_QOS_MODE_CHANGED: u32 = 29; -pub const KEV_DL_LOW_POWER_MODE_CHANGED: u32 = 30; -pub const KEV_NETPOLICY_SUBCLASS: u32 = 3; -pub const KEV_NETPOLICY_IFDENIED: u32 = 1; -pub const KEV_NETPOLICY_IFFAILED: u32 = 2; -pub const KEV_NETPOLICY_NETDENIED: u32 = 3; -pub const NETPOLICY_NETWORKTYPE_LOCAL: u32 = 1; -pub const KEV_SOCKET_SUBCLASS: u32 = 4; -pub const KEV_SOCKET_CLOSED: u32 = 1; -pub const KEV_INET6_SUBCLASS: u32 = 6; -pub const KEV_INET6_NEW_USER_ADDR: u32 = 1; -pub const KEV_INET6_CHANGED_ADDR: u32 = 2; -pub const KEV_INET6_ADDR_DELETED: u32 = 3; -pub const KEV_INET6_NEW_LL_ADDR: u32 = 4; -pub const KEV_INET6_NEW_RTADV_ADDR: u32 = 5; -pub const KEV_INET6_DEFROUTER: u32 = 6; -pub const KEV_INET6_REQUEST_NAT64_PREFIX: u32 = 7; -pub const KEV_ND6_SUBCLASS: u32 = 7; -pub const KEV_ND6_RA: u32 = 1; -pub const KEV_ND6_NDFAILURE: u32 = 2; -pub const KEV_ND6_NDALIVE: u32 = 3; -pub const KEV_ND6_DAD_FAILURE: u32 = 4; -pub const KEV_ND6_DAD_SUCCESS: u32 = 5; -pub const KEV_ND6_ADDR_DETACHED: u32 = 6; -pub const KEV_ND6_ADDR_DEPRECATED: u32 = 7; -pub const KEV_ND6_ADDR_EXPIRED: u32 = 8; -pub const KEV_ND6_RTR_EXPIRED: u32 = 9; -pub const KEV_ND6_PFX_EXPIRED: u32 = 10; -pub const KEV_NECP_SUBCLASS: u32 = 8; -pub const KEV_NECP_POLICIES_CHANGED: u32 = 1; -pub const KEV_NETAGENT_SUBCLASS: u32 = 9; -pub const KEV_NETAGENT_REGISTERED: u32 = 1; -pub const KEV_NETAGENT_UNREGISTERED: u32 = 2; -pub const KEV_NETAGENT_UPDATED: u32 = 3; -pub const KEV_NETAGENT_UPDATED_INTERFACES: u32 = 4; -pub const KEV_LOG_SUBCLASS: u32 = 10; -pub const IPFWLOGEVENT: u32 = 0; -pub const KEV_NETEVENT_SUBCLASS: u32 = 11; -pub const KEV_NETEVENT_APNFALLBACK: u32 = 1; -pub const KEV_NETEVENT_CLAT46_EVENT: u32 = 2; -pub const KEV_MPTCP_SUBCLASS: u32 = 12; -pub const KEV_MPTCP_CELLUSE: u32 = 1; -pub const KEV_IPSEC_SUBCLASS: u32 = 13; -pub const KEV_IPSEC_WAKE_PACKET: u32 = 1; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const SO_DEBUG: u32 = 1; -pub const SO_ACCEPTCONN: u32 = 2; -pub const SO_REUSEADDR: u32 = 4; -pub const SO_KEEPALIVE: u32 = 8; -pub const SO_DONTROUTE: u32 = 16; -pub const SO_BROADCAST: u32 = 32; -pub const SO_USELOOPBACK: u32 = 64; -pub const SO_LINGER: u32 = 128; -pub const SO_OOBINLINE: u32 = 256; -pub const SO_REUSEPORT: u32 = 512; -pub const SO_TIMESTAMP: u32 = 1024; -pub const SO_TIMESTAMP_MONOTONIC: u32 = 2048; -pub const SO_DONTTRUNC: u32 = 8192; -pub const SO_WANTMORE: u32 = 16384; -pub const SO_WANTOOBFLAG: u32 = 32768; -pub const SO_NOWAKEFROMSLEEP: u32 = 65536; -pub const SO_NOAPNFALLBK: u32 = 131072; -pub const SO_TIMESTAMP_CONTINUOUS: u32 = 262144; -pub const SO_SNDBUF: u32 = 4097; -pub const SO_RCVBUF: u32 = 4098; -pub const SO_SNDLOWAT: u32 = 4099; -pub const SO_RCVLOWAT: u32 = 4100; -pub const SO_SNDTIMEO: u32 = 4101; -pub const SO_RCVTIMEO: u32 = 4102; -pub const SO_ERROR: u32 = 4103; -pub const SO_TYPE: u32 = 4104; -pub const SO_LABEL: u32 = 4112; -pub const SO_PEERLABEL: u32 = 4113; -pub const SO_NREAD: u32 = 4128; -pub const SO_NKE: u32 = 4129; -pub const SO_NOSIGPIPE: u32 = 4130; -pub const SO_NOADDRERR: u32 = 4131; -pub const SO_NWRITE: u32 = 4132; -pub const SO_REUSESHAREUID: u32 = 4133; -pub const SO_NOTIFYCONFLICT: u32 = 4134; -pub const SO_UPCALLCLOSEWAIT: u32 = 4135; -pub const SO_LINGER_SEC: u32 = 4224; -pub const SO_RESTRICTIONS: u32 = 4225; -pub const SO_RESTRICT_DENY_IN: u32 = 1; -pub const SO_RESTRICT_DENY_OUT: u32 = 2; -pub const SO_RESTRICT_DENY_CELLULAR: u32 = 4; -pub const SO_RESTRICT_DENY_EXPENSIVE: u32 = 8; -pub const SO_RESTRICT_DENY_CONSTRAINED: u32 = 16; -pub const SO_RANDOMPORT: u32 = 4226; -pub const SO_NP_EXTENSIONS: u32 = 4227; -pub const SO_EXECPATH: u32 = 4229; -pub const SO_TRAFFIC_CLASS: u32 = 4230; -pub const SO_TC_BK_SYS: u32 = 100; -pub const SO_TC_BK: u32 = 200; -pub const SO_TC_BE: u32 = 0; -pub const SO_TC_RD: u32 = 300; -pub const SO_TC_OAM: u32 = 400; -pub const SO_TC_AV: u32 = 500; -pub const SO_TC_RV: u32 = 600; -pub const SO_TC_VI: u32 = 700; -pub const SO_TC_VO: u32 = 800; -pub const SO_TC_CTL: u32 = 900; -pub const SO_TC_MAX: u32 = 10; -pub const TRAFFIC_MGT_SO_BACKGROUND: u32 = 1; -pub const TRAFFIC_MGT_TCP_RECVBG: u32 = 2; -pub const SO_RECV_TRAFFIC_CLASS: u32 = 4231; -pub const SO_TRAFFIC_CLASS_DBG: u32 = 4232; -pub const SO_OPTION_UNUSED_0: u32 = 4233; -pub const SO_PRIVILEGED_TRAFFIC_CLASS: u32 = 4240; -pub const SO_DEFUNCTIT: u32 = 4241; -pub const SO_DEFUNCTOK: u32 = 4352; -pub const SO_ISDEFUNCT: u32 = 4353; -pub const SO_OPPORTUNISTIC: u32 = 4354; -pub const SO_FLUSH: u32 = 4355; -pub const SO_TC_ALL: i32 = -1; -pub const SO_RECV_ANYIF: u32 = 4356; -pub const SO_TRAFFIC_MGT_BACKGROUND: u32 = 4357; -pub const SO_FLOW_DIVERT_TOKEN: u32 = 4358; -pub const SO_DELEGATED: u32 = 4359; -pub const SO_DELEGATED_UUID: u32 = 4360; -pub const SO_NECP_ATTRIBUTES: u32 = 4361; -pub const SO_CFIL_SOCK_ID: u32 = 4368; -pub const SO_NECP_CLIENTUUID: u32 = 4369; -pub const SO_NUMRCVPKT: u32 = 4370; -pub const SO_AWDL_UNRESTRICTED: u32 = 4371; -pub const SO_EXTENDED_BK_IDLE: u32 = 4372; -pub const SO_MARK_CELLFALLBACK: u32 = 4373; -pub const SO_NET_SERVICE_TYPE: u32 = 4374; -pub const SO_QOSMARKING_POLICY_OVERRIDE: u32 = 4375; -pub const SO_INTCOPROC_ALLOW: u32 = 4376; -pub const SO_NETSVC_MARKING_LEVEL: u32 = 4377; -pub const SO_NECP_LISTENUUID: u32 = 4384; -pub const SO_MPKL_SEND_INFO: u32 = 4386; -pub const SO_STATISTICS_EVENT: u32 = 4387; -pub const SO_WANT_KEV_SOCKET_CLOSED: u32 = 4388; -pub const NET_SERVICE_TYPE_BE: u32 = 0; -pub const NET_SERVICE_TYPE_BK: u32 = 1; -pub const NET_SERVICE_TYPE_SIG: u32 = 2; -pub const NET_SERVICE_TYPE_VI: u32 = 3; -pub const NET_SERVICE_TYPE_VO: u32 = 4; -pub const NET_SERVICE_TYPE_RV: u32 = 5; -pub const NET_SERVICE_TYPE_AV: u32 = 6; -pub const NET_SERVICE_TYPE_OAM: u32 = 7; -pub const NET_SERVICE_TYPE_RD: u32 = 8; -pub const _NET_SERVICE_TYPE_COUNT: u32 = 9; -pub const SO_TC_NET_SERVICE_OFFSET: u32 = 10000; -pub const SO_TC_NETSVC_SIG: u32 = 10002; -pub const NETSVC_MRKNG_UNKNOWN: u32 = 0; -pub const NETSVC_MRKNG_LVL_L2: u32 = 1; -pub const NETSVC_MRKNG_LVL_L3L2_ALL: u32 = 2; -pub const NETSVC_MRKNG_LVL_L3L2_BK: u32 = 3; -pub const SAE_ASSOCID_ANY: u32 = 0; -pub const SAE_CONNID_ANY: u32 = 0; -pub const CONNECT_RESUME_ON_READ_WRITE: u32 = 1; -pub const CONNECT_DATA_IDEMPOTENT: u32 = 2; -pub const CONNECT_DATA_AUTHENTICATED: u32 = 4; -pub const SONPX_SETOPTSHUT: u32 = 1; -pub const SOL_SOCKET: u32 = 65535; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_LOCAL: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_IMPLINK: u32 = 3; -pub const AF_PUP: u32 = 4; -pub const AF_CHAOS: u32 = 5; -pub const AF_NS: u32 = 6; -pub const AF_ISO: u32 = 7; -pub const AF_OSI: u32 = 7; -pub const AF_ECMA: u32 = 8; -pub const AF_DATAKIT: u32 = 9; -pub const AF_CCITT: u32 = 10; -pub const AF_SNA: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_DLI: u32 = 13; -pub const AF_LAT: u32 = 14; -pub const AF_HYLINK: u32 = 15; -pub const AF_APPLETALK: u32 = 16; -pub const AF_ROUTE: u32 = 17; -pub const AF_LINK: u32 = 18; -pub const pseudo_AF_XTP: u32 = 19; -pub const AF_COIP: u32 = 20; -pub const AF_CNT: u32 = 21; -pub const pseudo_AF_RTIP: u32 = 22; -pub const AF_IPX: u32 = 23; -pub const AF_SIP: u32 = 24; -pub const pseudo_AF_PIP: u32 = 25; -pub const AF_NDRV: u32 = 27; -pub const AF_ISDN: u32 = 28; -pub const AF_E164: u32 = 28; -pub const pseudo_AF_KEY: u32 = 29; -pub const AF_INET6: u32 = 30; -pub const AF_NATM: u32 = 31; -pub const AF_SYSTEM: u32 = 32; -pub const AF_NETBIOS: u32 = 33; -pub const AF_PPP: u32 = 34; -pub const pseudo_AF_HDRCMPLT: u32 = 35; -pub const AF_AFP: u32 = 36; -pub const AF_IEEE80211: u32 = 37; -pub const AF_UTUN: u32 = 38; -pub const AF_MULTIPATH: u32 = 39; -pub const AF_VSOCK: u32 = 40; -pub const AF_MAX: u32 = 41; -pub const SOCK_MAXADDRLEN: u32 = 255; -pub const _SS_MAXSIZE: u32 = 128; -pub const PF_UNSPEC: u32 = 0; -pub const PF_LOCAL: u32 = 1; -pub const PF_UNIX: u32 = 1; -pub const PF_INET: u32 = 2; -pub const PF_IMPLINK: u32 = 3; -pub const PF_PUP: u32 = 4; -pub const PF_CHAOS: u32 = 5; -pub const PF_NS: u32 = 6; -pub const PF_ISO: u32 = 7; -pub const PF_OSI: u32 = 7; -pub const PF_ECMA: u32 = 8; -pub const PF_DATAKIT: u32 = 9; -pub const PF_CCITT: u32 = 10; -pub const PF_SNA: u32 = 11; -pub const PF_DECnet: u32 = 12; -pub const PF_DLI: u32 = 13; -pub const PF_LAT: u32 = 14; -pub const PF_HYLINK: u32 = 15; -pub const PF_APPLETALK: u32 = 16; -pub const PF_ROUTE: u32 = 17; -pub const PF_LINK: u32 = 18; -pub const PF_XTP: u32 = 19; -pub const PF_COIP: u32 = 20; -pub const PF_CNT: u32 = 21; -pub const PF_SIP: u32 = 24; -pub const PF_IPX: u32 = 23; -pub const PF_RTIP: u32 = 22; -pub const PF_PIP: u32 = 25; -pub const PF_NDRV: u32 = 27; -pub const PF_ISDN: u32 = 28; -pub const PF_KEY: u32 = 29; -pub const PF_INET6: u32 = 30; -pub const PF_NATM: u32 = 31; -pub const PF_SYSTEM: u32 = 32; -pub const PF_NETBIOS: u32 = 33; -pub const PF_PPP: u32 = 34; -pub const PF_AFP: u32 = 36; -pub const PF_UTUN: u32 = 38; -pub const PF_MULTIPATH: u32 = 39; -pub const PF_VSOCK: u32 = 40; -pub const PF_MAX: u32 = 41; -pub const NET_MAXID: u32 = 41; -pub const NET_RT_DUMP: u32 = 1; -pub const NET_RT_FLAGS: u32 = 2; -pub const NET_RT_IFLIST: u32 = 3; -pub const NET_RT_STAT: u32 = 4; -pub const NET_RT_TRASH: u32 = 5; -pub const NET_RT_IFLIST2: u32 = 6; -pub const NET_RT_DUMP2: u32 = 7; -pub const NET_RT_DUMPX: u32 = 8; -pub const NET_RT_DUMPX_FLAGS: u32 = 9; -pub const NET_RT_FLAGS_PRIV: u32 = 10; -pub const NET_RT_MAXID: u32 = 11; -pub const SO_STATISTICS_EVENT_ENTER_CELLFALLBACK: u32 = 1; -pub const SO_STATISTICS_EVENT_EXIT_CELLFALLBACK: u32 = 2; -pub const SO_STATISTICS_EVENT_RESERVED_1: u32 = 4; -pub const SO_STATISTICS_EVENT_RESERVED_2: u32 = 8; -pub const SOMAXCONN: u32 = 128; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_EOR: u32 = 8; -pub const MSG_TRUNC: u32 = 16; -pub const MSG_CTRUNC: u32 = 32; -pub const MSG_WAITALL: u32 = 64; -pub const MSG_DONTWAIT: u32 = 128; -pub const MSG_EOF: u32 = 256; -pub const MSG_WAITSTREAM: u32 = 512; -pub const MSG_FLUSH: u32 = 1024; -pub const MSG_HOLD: u32 = 2048; -pub const MSG_SEND: u32 = 4096; -pub const MSG_HAVEMORE: u32 = 8192; -pub const MSG_RCVMORE: u32 = 16384; -pub const MSG_NEEDSA: u32 = 65536; -pub const MSG_NOSIGNAL: u32 = 524288; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_TIMESTAMP: u32 = 2; -pub const SCM_CREDS: u32 = 3; -pub const SCM_TIMESTAMP_MONOTONIC: u32 = 4; -pub const SCM_TIMESTAMP_CONTINUOUS: u32 = 7; -pub const SCM_MPKL_SEND_INFO: u32 = 8; -pub const SCM_MPKL_RECV_INFO: u32 = 9; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const CIF_CONNECTING: u32 = 1; -pub const CIF_CONNECTED: u32 = 2; -pub const CIF_DISCONNECTING: u32 = 4; -pub const CIF_DISCONNECTED: u32 = 8; -pub const CIF_BOUND_IF: u32 = 16; -pub const CIF_BOUND_IP: u32 = 32; -pub const CIF_BOUND_PORT: u32 = 64; -pub const CIF_PREFERRED: u32 = 128; -pub const CIF_MP_CAPABLE: u32 = 256; -pub const CIF_MP_READY: u32 = 512; -pub const CIF_MP_DEGRADED: u32 = 1024; -pub const CIF_MP_ACTIVE: u32 = 2048; -pub const CIAUX_TCP: u32 = 1; -pub const CIAUX_MPTCP: u32 = 2; -pub const IPPROTO_IP: u32 = 0; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ICMP: u32 = 1; -pub const IPPROTO_IGMP: u32 = 2; -pub const IPPROTO_GGP: u32 = 3; -pub const IPPROTO_IPV4: u32 = 4; -pub const IPPROTO_IPIP: u32 = 4; -pub const IPPROTO_TCP: u32 = 6; -pub const IPPROTO_ST: u32 = 7; -pub const IPPROTO_EGP: u32 = 8; -pub const IPPROTO_PIGP: u32 = 9; -pub const IPPROTO_RCCMON: u32 = 10; -pub const IPPROTO_NVPII: u32 = 11; -pub const IPPROTO_PUP: u32 = 12; -pub const IPPROTO_ARGUS: u32 = 13; -pub const IPPROTO_EMCON: u32 = 14; -pub const IPPROTO_XNET: u32 = 15; -pub const IPPROTO_CHAOS: u32 = 16; -pub const IPPROTO_UDP: u32 = 17; -pub const IPPROTO_MUX: u32 = 18; -pub const IPPROTO_MEAS: u32 = 19; -pub const IPPROTO_HMP: u32 = 20; -pub const IPPROTO_PRM: u32 = 21; -pub const IPPROTO_IDP: u32 = 22; -pub const IPPROTO_TRUNK1: u32 = 23; -pub const IPPROTO_TRUNK2: u32 = 24; -pub const IPPROTO_LEAF1: u32 = 25; -pub const IPPROTO_LEAF2: u32 = 26; -pub const IPPROTO_RDP: u32 = 27; -pub const IPPROTO_IRTP: u32 = 28; -pub const IPPROTO_TP: u32 = 29; -pub const IPPROTO_BLT: u32 = 30; -pub const IPPROTO_NSP: u32 = 31; -pub const IPPROTO_INP: u32 = 32; -pub const IPPROTO_SEP: u32 = 33; -pub const IPPROTO_3PC: u32 = 34; -pub const IPPROTO_IDPR: u32 = 35; -pub const IPPROTO_XTP: u32 = 36; -pub const IPPROTO_DDP: u32 = 37; -pub const IPPROTO_CMTP: u32 = 38; -pub const IPPROTO_TPXX: u32 = 39; -pub const IPPROTO_IL: u32 = 40; -pub const IPPROTO_IPV6: u32 = 41; -pub const IPPROTO_SDRP: u32 = 42; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_IDRP: u32 = 45; -pub const IPPROTO_RSVP: u32 = 46; -pub const IPPROTO_GRE: u32 = 47; -pub const IPPROTO_MHRP: u32 = 48; -pub const IPPROTO_BHA: u32 = 49; -pub const IPPROTO_ESP: u32 = 50; -pub const IPPROTO_AH: u32 = 51; -pub const IPPROTO_INLSP: u32 = 52; -pub const IPPROTO_SWIPE: u32 = 53; -pub const IPPROTO_NHRP: u32 = 54; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_AHIP: u32 = 61; -pub const IPPROTO_CFTP: u32 = 62; -pub const IPPROTO_HELLO: u32 = 63; -pub const IPPROTO_SATEXPAK: u32 = 64; -pub const IPPROTO_KRYPTOLAN: u32 = 65; -pub const IPPROTO_RVD: u32 = 66; -pub const IPPROTO_IPPC: u32 = 67; -pub const IPPROTO_ADFS: u32 = 68; -pub const IPPROTO_SATMON: u32 = 69; -pub const IPPROTO_VISA: u32 = 70; -pub const IPPROTO_IPCV: u32 = 71; -pub const IPPROTO_CPNX: u32 = 72; -pub const IPPROTO_CPHB: u32 = 73; -pub const IPPROTO_WSN: u32 = 74; -pub const IPPROTO_PVP: u32 = 75; -pub const IPPROTO_BRSATMON: u32 = 76; -pub const IPPROTO_ND: u32 = 77; -pub const IPPROTO_WBMON: u32 = 78; -pub const IPPROTO_WBEXPAK: u32 = 79; -pub const IPPROTO_EON: u32 = 80; -pub const IPPROTO_VMTP: u32 = 81; -pub const IPPROTO_SVMTP: u32 = 82; -pub const IPPROTO_VINES: u32 = 83; -pub const IPPROTO_TTP: u32 = 84; -pub const IPPROTO_IGP: u32 = 85; -pub const IPPROTO_DGP: u32 = 86; -pub const IPPROTO_TCF: u32 = 87; -pub const IPPROTO_IGRP: u32 = 88; -pub const IPPROTO_OSPFIGP: u32 = 89; -pub const IPPROTO_SRPC: u32 = 90; -pub const IPPROTO_LARP: u32 = 91; -pub const IPPROTO_MTP: u32 = 92; -pub const IPPROTO_AX25: u32 = 93; -pub const IPPROTO_IPEIP: u32 = 94; -pub const IPPROTO_MICP: u32 = 95; -pub const IPPROTO_SCCSP: u32 = 96; -pub const IPPROTO_ETHERIP: u32 = 97; -pub const IPPROTO_ENCAP: u32 = 98; -pub const IPPROTO_APES: u32 = 99; -pub const IPPROTO_GMTP: u32 = 100; -pub const IPPROTO_PIM: u32 = 103; -pub const IPPROTO_IPCOMP: u32 = 108; -pub const IPPROTO_PGM: u32 = 113; -pub const IPPROTO_SCTP: u32 = 132; -pub const IPPROTO_QUIC: u32 = 253; -pub const IPPROTO_DIVERT: u32 = 254; -pub const IPPROTO_RAW: u32 = 255; -pub const IPPROTO_MAX: u32 = 256; -pub const IPPROTO_DONE: u32 = 257; -pub const __DARWIN_IPPORT_RESERVED: u32 = 1024; -pub const IPPORT_RESERVED: u32 = 1024; -pub const IPPORT_USERRESERVED: u32 = 5000; -pub const IPPORT_HIFIRSTAUTO: u32 = 49152; -pub const IPPORT_HILASTAUTO: u32 = 65535; -pub const IPPORT_RESERVEDSTART: u32 = 600; -pub const IN_CLASSA_NET: u32 = 4278190080; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_HOST: u32 = 16777215; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NET: u32 = 4294901760; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_HOST: u32 = 65535; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NET: u32 = 4294967040; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSC_HOST: u32 = 255; -pub const IN_CLASSD_NET: u32 = 4026531840; -pub const IN_CLASSD_NSHIFT: u32 = 28; -pub const IN_CLASSD_HOST: u32 = 268435455; -pub const INADDR_NONE: u32 = 4294967295; -pub const IN_LOOPBACKNET: u32 = 127; -pub const INET_ADDRSTRLEN: u32 = 16; -pub const IP_OPTIONS: u32 = 1; -pub const IP_HDRINCL: u32 = 2; -pub const IP_TOS: u32 = 3; -pub const IP_TTL: u32 = 4; -pub const IP_RECVOPTS: u32 = 5; -pub const IP_RECVRETOPTS: u32 = 6; -pub const IP_RECVDSTADDR: u32 = 7; -pub const IP_RETOPTS: u32 = 8; -pub const IP_MULTICAST_IF: u32 = 9; -pub const IP_MULTICAST_TTL: u32 = 10; -pub const IP_MULTICAST_LOOP: u32 = 11; -pub const IP_ADD_MEMBERSHIP: u32 = 12; -pub const IP_DROP_MEMBERSHIP: u32 = 13; -pub const IP_MULTICAST_VIF: u32 = 14; -pub const IP_RSVP_ON: u32 = 15; -pub const IP_RSVP_OFF: u32 = 16; -pub const IP_RSVP_VIF_ON: u32 = 17; -pub const IP_RSVP_VIF_OFF: u32 = 18; -pub const IP_PORTRANGE: u32 = 19; -pub const IP_RECVIF: u32 = 20; -pub const IP_IPSEC_POLICY: u32 = 21; -pub const IP_FAITH: u32 = 22; -pub const IP_STRIPHDR: u32 = 23; -pub const IP_RECVTTL: u32 = 24; -pub const IP_BOUND_IF: u32 = 25; -pub const IP_PKTINFO: u32 = 26; -pub const IP_RECVPKTINFO: u32 = 26; -pub const IP_RECVTOS: u32 = 27; -pub const IP_DONTFRAG: u32 = 28; -pub const IP_FW_ADD: u32 = 40; -pub const IP_FW_DEL: u32 = 41; -pub const IP_FW_FLUSH: u32 = 42; -pub const IP_FW_ZERO: u32 = 43; -pub const IP_FW_GET: u32 = 44; -pub const IP_FW_RESETLOG: u32 = 45; -pub const IP_OLD_FW_ADD: u32 = 50; -pub const IP_OLD_FW_DEL: u32 = 51; -pub const IP_OLD_FW_FLUSH: u32 = 52; -pub const IP_OLD_FW_ZERO: u32 = 53; -pub const IP_OLD_FW_GET: u32 = 54; -pub const IP_NAT__XXX: u32 = 55; -pub const IP_OLD_FW_RESETLOG: u32 = 56; -pub const IP_DUMMYNET_CONFIGURE: u32 = 60; -pub const IP_DUMMYNET_DEL: u32 = 61; -pub const IP_DUMMYNET_FLUSH: u32 = 62; -pub const IP_DUMMYNET_GET: u32 = 64; -pub const IP_TRAFFIC_MGT_BACKGROUND: u32 = 65; -pub const IP_MULTICAST_IFINDEX: u32 = 66; -pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 70; -pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 71; -pub const IP_BLOCK_SOURCE: u32 = 72; -pub const IP_UNBLOCK_SOURCE: u32 = 73; -pub const IP_MSFILTER: u32 = 74; -pub const MCAST_JOIN_GROUP: u32 = 80; -pub const MCAST_LEAVE_GROUP: u32 = 81; -pub const MCAST_JOIN_SOURCE_GROUP: u32 = 82; -pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 83; -pub const MCAST_BLOCK_SOURCE: u32 = 84; -pub const MCAST_UNBLOCK_SOURCE: u32 = 85; -pub const IP_NO_IFT_CELLULAR: u32 = 6969; -pub const IP_NO_IFT_PDP: u32 = 6969; -pub const IP_OUT_IF: u32 = 9696; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const IP_MIN_MEMBERSHIPS: u32 = 31; -pub const IP_MAX_MEMBERSHIPS: u32 = 4095; -pub const IP_MAX_GROUP_SRC_FILTER: u32 = 512; -pub const IP_MAX_SOCK_SRC_FILTER: u32 = 128; -pub const IP_MAX_SOCK_MUTE_FILTER: u32 = 128; -pub const MCAST_UNDEFINED: u32 = 0; -pub const MCAST_INCLUDE: u32 = 1; -pub const MCAST_EXCLUDE: u32 = 2; -pub const IP_PORTRANGE_DEFAULT: u32 = 0; -pub const IP_PORTRANGE_HIGH: u32 = 1; -pub const IP_PORTRANGE_LOW: u32 = 2; -pub const IPPROTO_MAXID: u32 = 52; -pub const IPCTL_FORWARDING: u32 = 1; -pub const IPCTL_SENDREDIRECTS: u32 = 2; -pub const IPCTL_DEFTTL: u32 = 3; -pub const IPCTL_RTEXPIRE: u32 = 5; -pub const IPCTL_RTMINEXPIRE: u32 = 6; -pub const IPCTL_RTMAXCACHE: u32 = 7; -pub const IPCTL_SOURCEROUTE: u32 = 8; -pub const IPCTL_DIRECTEDBROADCAST: u32 = 9; -pub const IPCTL_INTRQMAXLEN: u32 = 10; -pub const IPCTL_INTRQDROPS: u32 = 11; -pub const IPCTL_STATS: u32 = 12; -pub const IPCTL_ACCEPTSOURCEROUTE: u32 = 13; -pub const IPCTL_FASTFORWARDING: u32 = 14; -pub const IPCTL_KEEPFAITH: u32 = 15; -pub const IPCTL_GIF_TTL: u32 = 16; -pub const IPCTL_MAXID: u32 = 17; -pub const __KAME_VERSION: &[u8; 18] = b"2009/apple-darwin\0"; -pub const IPV6PORT_RESERVED: u32 = 1024; -pub const IPV6PORT_ANONMIN: u32 = 49152; -pub const IPV6PORT_ANONMAX: u32 = 65535; -pub const IPV6PORT_RESERVEDMIN: u32 = 600; -pub const IPV6PORT_RESERVEDMAX: u32 = 1023; -pub const INET6_ADDRSTRLEN: u32 = 46; -pub const __IPV6_ADDR_SCOPE_NODELOCAL: u32 = 1; -pub const __IPV6_ADDR_SCOPE_INTFACELOCAL: u32 = 1; -pub const __IPV6_ADDR_SCOPE_LINKLOCAL: u32 = 2; -pub const __IPV6_ADDR_SCOPE_SITELOCAL: u32 = 5; -pub const __IPV6_ADDR_SCOPE_ORGLOCAL: u32 = 8; -pub const __IPV6_ADDR_SCOPE_GLOBAL: u32 = 14; -pub const IPV6_ADDR_MC_FLAGS_TRANSIENT: u32 = 16; -pub const IPV6_ADDR_MC_FLAGS_PREFIX: u32 = 32; -pub const IPV6_ADDR_MC_FLAGS_UNICAST_BASED: u32 = 48; -pub const IPV6_SOCKOPT_RESERVED1: u32 = 3; -pub const IPV6_UNICAST_HOPS: u32 = 4; -pub const IPV6_MULTICAST_IF: u32 = 9; -pub const IPV6_MULTICAST_HOPS: u32 = 10; -pub const IPV6_MULTICAST_LOOP: u32 = 11; -pub const IPV6_JOIN_GROUP: u32 = 12; -pub const IPV6_LEAVE_GROUP: u32 = 13; -pub const IPV6_PORTRANGE: u32 = 14; -pub const ICMP6_FILTER: u32 = 18; -pub const IPV6_2292PKTINFO: u32 = 19; -pub const IPV6_2292HOPLIMIT: u32 = 20; -pub const IPV6_2292NEXTHOP: u32 = 21; -pub const IPV6_2292HOPOPTS: u32 = 22; -pub const IPV6_2292DSTOPTS: u32 = 23; -pub const IPV6_2292RTHDR: u32 = 24; -pub const IPV6_2292PKTOPTIONS: u32 = 25; -pub const IPV6_CHECKSUM: u32 = 26; -pub const IPV6_V6ONLY: u32 = 27; -pub const IPV6_BINDV6ONLY: u32 = 27; -pub const IPV6_IPSEC_POLICY: u32 = 28; -pub const IPV6_FAITH: u32 = 29; -pub const IPV6_FW_ADD: u32 = 30; -pub const IPV6_FW_DEL: u32 = 31; -pub const IPV6_FW_FLUSH: u32 = 32; -pub const IPV6_FW_ZERO: u32 = 33; -pub const IPV6_FW_GET: u32 = 34; -pub const IPV6_RECVTCLASS: u32 = 35; -pub const IPV6_TCLASS: u32 = 36; -pub const IPV6_BOUND_IF: u32 = 125; -pub const IPV6_NO_IFT_CELLULAR: u32 = 6969; -pub const IPV6_OUT_IF: u32 = 9696; -pub const IPV6_RTHDR_LOOSE: u32 = 0; -pub const IPV6_RTHDR_STRICT: u32 = 1; -pub const IPV6_RTHDR_TYPE_0: u32 = 0; -pub const IPV6_DEFAULT_MULTICAST_HOPS: u32 = 1; -pub const IPV6_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const IPV6_MIN_MEMBERSHIPS: u32 = 31; -pub const IPV6_MAX_MEMBERSHIPS: u32 = 4095; -pub const IPV6_MAX_GROUP_SRC_FILTER: u32 = 512; -pub const IPV6_MAX_SOCK_SRC_FILTER: u32 = 128; -pub const IPV6_PORTRANGE_DEFAULT: u32 = 0; -pub const IPV6_PORTRANGE_HIGH: u32 = 1; -pub const IPV6_PORTRANGE_LOW: u32 = 2; -pub const IPV6PROTO_MAXID: u32 = 104; -pub const IPV6CTL_FORWARDING: u32 = 1; -pub const IPV6CTL_SENDREDIRECTS: u32 = 2; -pub const IPV6CTL_DEFHLIM: u32 = 3; -pub const IPV6CTL_FORWSRCRT: u32 = 5; -pub const IPV6CTL_STATS: u32 = 6; -pub const IPV6CTL_MRTSTATS: u32 = 7; -pub const IPV6CTL_MRTPROTO: u32 = 8; -pub const IPV6CTL_MAXFRAGPACKETS: u32 = 9; -pub const IPV6CTL_SOURCECHECK: u32 = 10; -pub const IPV6CTL_SOURCECHECK_LOGINT: u32 = 11; -pub const IPV6CTL_ACCEPT_RTADV: u32 = 12; -pub const IPV6CTL_KEEPFAITH: u32 = 13; -pub const IPV6CTL_LOG_INTERVAL: u32 = 14; -pub const IPV6CTL_HDRNESTLIMIT: u32 = 15; -pub const IPV6CTL_DAD_COUNT: u32 = 16; -pub const IPV6CTL_AUTO_FLOWLABEL: u32 = 17; -pub const IPV6CTL_DEFMCASTHLIM: u32 = 18; -pub const IPV6CTL_GIF_HLIM: u32 = 19; -pub const IPV6CTL_KAME_VERSION: u32 = 20; -pub const IPV6CTL_USE_DEPRECATED: u32 = 21; -pub const IPV6CTL_RR_PRUNE: u32 = 22; -pub const IPV6CTL_V6ONLY: u32 = 24; -pub const IPV6CTL_RTEXPIRE: u32 = 25; -pub const IPV6CTL_RTMINEXPIRE: u32 = 26; -pub const IPV6CTL_RTMAXCACHE: u32 = 27; -pub const IPV6CTL_USETEMPADDR: u32 = 32; -pub const IPV6CTL_TEMPPLTIME: u32 = 33; -pub const IPV6CTL_TEMPVLTIME: u32 = 34; -pub const IPV6CTL_AUTO_LINKLOCAL: u32 = 35; -pub const IPV6CTL_RIP6STATS: u32 = 36; -pub const IPV6CTL_PREFER_TEMPADDR: u32 = 37; -pub const IPV6CTL_ADDRCTLPOLICY: u32 = 38; -pub const IPV6CTL_USE_DEFAULTZONE: u32 = 39; -pub const IPV6CTL_MAXFRAGS: u32 = 41; -pub const IPV6CTL_MCAST_PMTU: u32 = 44; -pub const IPV6CTL_NEIGHBORGCTHRESH: u32 = 46; -pub const IPV6CTL_MAXIFPREFIXES: u32 = 47; -pub const IPV6CTL_MAXIFDEFROUTERS: u32 = 48; -pub const IPV6CTL_MAXDYNROUTES: u32 = 49; -pub const ICMPV6CTL_ND6_ONLINKNSRFC4861: u32 = 50; -pub const IPV6CTL_ULA_USETEMPADDR: u32 = 51; -pub const IPV6CTL_MAXID: u32 = 51; -pub const _DSCP_DF: u32 = 0; -pub const _DSCP_CS0: u32 = 0; -pub const _DSCP_CS1: u32 = 8; -pub const _DSCP_CS2: u32 = 16; -pub const _DSCP_CS3: u32 = 24; -pub const _DSCP_CS4: u32 = 32; -pub const _DSCP_CS5: u32 = 40; -pub const _DSCP_CS6: u32 = 48; -pub const _DSCP_CS7: u32 = 56; -pub const _DSCP_EF: u32 = 46; -pub const _DSCP_VA: u32 = 44; -pub const _DSCP_AF11: u32 = 10; -pub const _DSCP_AF12: u32 = 12; -pub const _DSCP_AF13: u32 = 14; -pub const _DSCP_AF21: u32 = 18; -pub const _DSCP_AF22: u32 = 20; -pub const _DSCP_AF23: u32 = 22; -pub const _DSCP_AF31: u32 = 26; -pub const _DSCP_AF32: u32 = 28; -pub const _DSCP_AF33: u32 = 30; -pub const _DSCP_AF41: u32 = 34; -pub const _DSCP_AF42: u32 = 36; -pub const _DSCP_AF43: u32 = 38; -pub const _DSCP_52: u32 = 52; -pub const _MAX_DSCP: u32 = 63; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const DST_NONE: u32 = 0; -pub const DST_USA: u32 = 1; -pub const DST_AUST: u32 = 2; -pub const DST_WET: u32 = 3; -pub const DST_MET: u32 = 4; -pub const DST_EET: u32 = 5; -pub const DST_CAN: u32 = 6; -pub const __DARWIN_WCHAR_MIN: i32 = -2147483648; -pub const _FORTIFY_SOURCE: u32 = 2; -pub const TIME_UTC: u32 = 1; -pub const RTM_RTTUNIT: u32 = 1000000; -pub const RTF_UP: u32 = 1; -pub const RTF_GATEWAY: u32 = 2; -pub const RTF_HOST: u32 = 4; -pub const RTF_REJECT: u32 = 8; -pub const RTF_DYNAMIC: u32 = 16; -pub const RTF_MODIFIED: u32 = 32; -pub const RTF_DONE: u32 = 64; -pub const RTF_DELCLONE: u32 = 128; -pub const RTF_CLONING: u32 = 256; -pub const RTF_XRESOLVE: u32 = 512; -pub const RTF_LLINFO: u32 = 1024; -pub const RTF_LLDATA: u32 = 1024; -pub const RTF_STATIC: u32 = 2048; -pub const RTF_BLACKHOLE: u32 = 4096; -pub const RTF_NOIFREF: u32 = 8192; -pub const RTF_PROTO2: u32 = 16384; -pub const RTF_PROTO1: u32 = 32768; -pub const RTF_PRCLONING: u32 = 65536; -pub const RTF_WASCLONED: u32 = 131072; -pub const RTF_PROTO3: u32 = 262144; -pub const RTF_PINNED: u32 = 1048576; -pub const RTF_LOCAL: u32 = 2097152; -pub const RTF_BROADCAST: u32 = 4194304; -pub const RTF_MULTICAST: u32 = 8388608; -pub const RTF_IFSCOPE: u32 = 16777216; -pub const RTF_CONDEMNED: u32 = 33554432; -pub const RTF_IFREF: u32 = 67108864; -pub const RTF_PROXY: u32 = 134217728; -pub const RTF_ROUTER: u32 = 268435456; -pub const RTF_DEAD: u32 = 536870912; -pub const RTF_GLOBAL: u32 = 1073741824; -pub const RTPRF_OURS: u32 = 262144; -pub const RTF_BITS : & [u8 ; 223] = b"\x10\x01UP\x02GATEWAY\x03HOST\x04REJECT\x05DYNAMIC\x06MODIFIED\x07DONE\x08DELCLONE\tCLONING\nXRESOLVE\x0BLLINFO\x0CSTATIC\rBLACKHOLE\x0ENOIFREF\x0FPROTO2\x10PROTO1\x11PRCLONING\x12WASCLONED\x13PROTO3\x15PINNED\x16LOCAL\x17BROADCAST\x18MULTICAST\x19IFSCOPE\x1ACONDEMNED\x1BIFREF\x1CPROXY\x1DROUTER\x1FGLOBAL\0" ; -pub const RTM_VERSION: u32 = 5; -pub const RTM_ADD: u32 = 1; -pub const RTM_DELETE: u32 = 2; -pub const RTM_CHANGE: u32 = 3; -pub const RTM_GET: u32 = 4; -pub const RTM_LOSING: u32 = 5; -pub const RTM_REDIRECT: u32 = 6; -pub const RTM_MISS: u32 = 7; -pub const RTM_LOCK: u32 = 8; -pub const RTM_OLDADD: u32 = 9; -pub const RTM_OLDDEL: u32 = 10; -pub const RTM_RESOLVE: u32 = 11; -pub const RTM_NEWADDR: u32 = 12; -pub const RTM_DELADDR: u32 = 13; -pub const RTM_IFINFO: u32 = 14; -pub const RTM_NEWMADDR: u32 = 15; -pub const RTM_DELMADDR: u32 = 16; -pub const RTM_GET_SILENT: u32 = 17; -pub const RTM_IFINFO2: u32 = 18; -pub const RTM_NEWMADDR2: u32 = 19; -pub const RTM_GET2: u32 = 20; -pub const RTM_GET_EXT: u32 = 21; -pub const RTV_MTU: u32 = 1; -pub const RTV_HOPCOUNT: u32 = 2; -pub const RTV_EXPIRE: u32 = 4; -pub const RTV_RPIPE: u32 = 8; -pub const RTV_SPIPE: u32 = 16; -pub const RTV_SSTHRESH: u32 = 32; -pub const RTV_RTT: u32 = 64; -pub const RTV_RTTVAR: u32 = 128; -pub const RTV_REFRESH_HOST: u32 = 256; -pub const RTA_DST: u32 = 1; -pub const RTA_GATEWAY: u32 = 2; -pub const RTA_NETMASK: u32 = 4; -pub const RTA_GENMASK: u32 = 8; -pub const RTA_IFP: u32 = 16; -pub const RTA_IFA: u32 = 32; -pub const RTA_AUTHOR: u32 = 64; -pub const RTA_BRD: u32 = 128; -pub const RTAX_DST: u32 = 0; -pub const RTAX_GATEWAY: u32 = 1; -pub const RTAX_NETMASK: u32 = 2; -pub const RTAX_GENMASK: u32 = 3; -pub const RTAX_IFP: u32 = 4; -pub const RTAX_IFA: u32 = 5; -pub const RTAX_AUTHOR: u32 = 6; -pub const RTAX_BRD: u32 = 7; -pub const RTAX_MAX: u32 = 8; -pub const IFSCOPE_NONE: u32 = 0; -pub const APPLE_IF_FAM_LOOPBACK: u32 = 1; -pub const APPLE_IF_FAM_ETHERNET: u32 = 2; -pub const APPLE_IF_FAM_SLIP: u32 = 3; -pub const APPLE_IF_FAM_TUN: u32 = 4; -pub const APPLE_IF_FAM_VLAN: u32 = 5; -pub const APPLE_IF_FAM_PPP: u32 = 6; -pub const APPLE_IF_FAM_PVC: u32 = 7; -pub const APPLE_IF_FAM_DISC: u32 = 8; -pub const APPLE_IF_FAM_MDECAP: u32 = 9; -pub const APPLE_IF_FAM_GIF: u32 = 10; -pub const APPLE_IF_FAM_FAITH: u32 = 11; -pub const APPLE_IF_FAM_STF: u32 = 12; -pub const APPLE_IF_FAM_FIREWIRE: u32 = 13; -pub const APPLE_IF_FAM_BOND: u32 = 14; -pub const APPLE_IF_FAM_CELLULAR: u32 = 15; -pub const APPLE_IF_FAM_6LOWPAN: u32 = 16; -pub const APPLE_IF_FAM_UTUN: u32 = 17; -pub const APPLE_IF_FAM_IPSEC: u32 = 18; -pub const IF_MINMTU: u32 = 72; -pub const IF_MAXMTU: u32 = 65535; -pub const IFNAMSIZ: u32 = 16; -pub const IF_NETEM_PARAMS_PSCALE: u32 = 100000; -pub const IF_VAR_H_HAS_IFNET_STATS_PER_FLOW: u32 = 1; -pub const IF_CELLULAR_STATUS_REPORT_VERSION_1: u32 = 1; -pub const IF_WIFI_STATUS_REPORT_VERSION_1: u32 = 1; -pub const IF_CELLULAR_STATUS_REPORT_CURRENT_VERSION: u32 = 1; -pub const IF_WIFI_STATUS_REPORT_CURRENT_VERSION: u32 = 1; -pub const IF_CELL_LINK_QUALITY_METRIC_VALID: u32 = 1; -pub const IF_CELL_UL_EFFECTIVE_BANDWIDTH_VALID: u32 = 2; -pub const IF_CELL_UL_MAX_BANDWIDTH_VALID: u32 = 4; -pub const IF_CELL_UL_MIN_LATENCY_VALID: u32 = 8; -pub const IF_CELL_UL_EFFECTIVE_LATENCY_VALID: u32 = 16; -pub const IF_CELL_UL_MAX_LATENCY_VALID: u32 = 32; -pub const IF_CELL_UL_RETXT_LEVEL_VALID: u32 = 64; -pub const IF_CELL_UL_BYTES_LOST_VALID: u32 = 128; -pub const IF_CELL_UL_MIN_QUEUE_SIZE_VALID: u32 = 256; -pub const IF_CELL_UL_AVG_QUEUE_SIZE_VALID: u32 = 512; -pub const IF_CELL_UL_MAX_QUEUE_SIZE_VALID: u32 = 1024; -pub const IF_CELL_DL_EFFECTIVE_BANDWIDTH_VALID: u32 = 2048; -pub const IF_CELL_DL_MAX_BANDWIDTH_VALID: u32 = 4096; -pub const IF_CELL_CONFIG_INACTIVITY_TIME_VALID: u32 = 8192; -pub const IF_CELL_CONFIG_BACKOFF_TIME_VALID: u32 = 16384; -pub const IF_CELL_UL_MSS_RECOMMENDED_VALID: u32 = 32768; -pub const IF_CELL_UL_RETXT_LEVEL_NONE: u32 = 1; -pub const IF_CELL_UL_RETXT_LEVEL_LOW: u32 = 2; -pub const IF_CELL_UL_RETXT_LEVEL_MEDIUM: u32 = 3; -pub const IF_CELL_UL_RETXT_LEVEL_HIGH: u32 = 4; -pub const IF_CELL_UL_MSS_RECOMMENDED_NONE: u32 = 0; -pub const IF_CELL_UL_MSS_RECOMMENDED_MEDIUM: u32 = 1; -pub const IF_CELL_UL_MSS_RECOMMENDED_LOW: u32 = 2; -pub const IF_WIFI_LINK_QUALITY_METRIC_VALID: u32 = 1; -pub const IF_WIFI_UL_EFFECTIVE_BANDWIDTH_VALID: u32 = 2; -pub const IF_WIFI_UL_MAX_BANDWIDTH_VALID: u32 = 4; -pub const IF_WIFI_UL_MIN_LATENCY_VALID: u32 = 8; -pub const IF_WIFI_UL_EFFECTIVE_LATENCY_VALID: u32 = 16; -pub const IF_WIFI_UL_MAX_LATENCY_VALID: u32 = 32; -pub const IF_WIFI_UL_RETXT_LEVEL_VALID: u32 = 64; -pub const IF_WIFI_UL_ERROR_RATE_VALID: u32 = 128; -pub const IF_WIFI_UL_BYTES_LOST_VALID: u32 = 256; -pub const IF_WIFI_DL_EFFECTIVE_BANDWIDTH_VALID: u32 = 512; -pub const IF_WIFI_DL_MAX_BANDWIDTH_VALID: u32 = 1024; -pub const IF_WIFI_DL_MIN_LATENCY_VALID: u32 = 2048; -pub const IF_WIFI_DL_EFFECTIVE_LATENCY_VALID: u32 = 4096; -pub const IF_WIFI_DL_MAX_LATENCY_VALID: u32 = 8192; -pub const IF_WIFI_DL_ERROR_RATE_VALID: u32 = 16384; -pub const IF_WIFI_CONFIG_FREQUENCY_VALID: u32 = 32768; -pub const IF_WIFI_CONFIG_MULTICAST_RATE_VALID: u32 = 65536; -pub const IF_WIFI_CONFIG_SCAN_COUNT_VALID: u32 = 131072; -pub const IF_WIFI_CONFIG_SCAN_DURATION_VALID: u32 = 262144; -pub const IF_WIFI_UL_RETXT_LEVEL_NONE: u32 = 1; -pub const IF_WIFI_UL_RETXT_LEVEL_LOW: u32 = 2; -pub const IF_WIFI_UL_RETXT_LEVEL_MEDIUM: u32 = 3; -pub const IF_WIFI_UL_RETXT_LEVEL_HIGH: u32 = 4; -pub const IF_WIFI_CONFIG_FREQUENCY_2_4_GHZ: u32 = 1; -pub const IF_WIFI_CONFIG_FREQUENCY_5_0_GHZ: u32 = 2; -pub const IF_INTERFACE_STATE_RRC_STATE_VALID: u32 = 1; -pub const IF_INTERFACE_STATE_LQM_STATE_VALID: u32 = 2; -pub const IF_INTERFACE_STATE_INTERFACE_AVAILABILITY_VALID: u32 = 4; -pub const IF_INTERFACE_STATE_RRC_STATE_IDLE: u32 = 0; -pub const IF_INTERFACE_STATE_RRC_STATE_CONNECTED: u32 = 1; -pub const IF_INTERFACE_STATE_INTERFACE_AVAILABLE: u32 = 0; -pub const IF_INTERFACE_STATE_INTERFACE_UNAVAILABLE: u32 = 1; -pub const IF_INTERFACE_ADVISORY_VERSION_1: u32 = 1; -pub const IF_INTERFACE_ADVISORY_VERSION_CURRENT: u32 = 1; -pub const IF_INTERFACE_ADVISORY_DIRECTION_TX: u32 = 1; -pub const IF_INTERFACE_ADVISORY_DIRECTION_RX: u32 = 2; -pub const IF_INTERFACE_ADVISORY_RATE_SUGGESTION_RAMP_UP: u32 = 2147483647; -pub const IF_INTERFACE_ADVISORY_RATE_SUGGESTION_RAMP_DOWN: i32 = -2147483648; -pub const IF_INTERFACE_ADVISORY_RATE_SUGGESTION_RAMP_NEUTRAL: u32 = 0; -pub const IF_HWASSIST_CSUM_IP: u32 = 1; -pub const IF_HWASSIST_CSUM_TCP: u32 = 2; -pub const IF_HWASSIST_CSUM_UDP: u32 = 4; -pub const IF_HWASSIST_CSUM_IP_FRAGS: u32 = 8; -pub const IF_HWASSIST_CSUM_FRAGMENT: u32 = 16; -pub const IF_HWASSIST_CSUM_TCPIPV6: u32 = 32; -pub const IF_HWASSIST_CSUM_UDPIPV6: u32 = 64; -pub const IF_HWASSIST_CSUM_FRAGMENT_IPV6: u32 = 128; -pub const IF_HWASSIST_CSUM_PARTIAL: u32 = 4096; -pub const IF_HWASSIST_CSUM_ZERO_INVERT: u32 = 8192; -pub const IF_HWASSIST_CSUM_MASK: u32 = 65535; -pub const IF_HWASSIST_VLAN_TAGGING: u32 = 65536; -pub const IF_HWASSIST_VLAN_MTU: u32 = 131072; -pub const IF_HWASSIST_TSO_V4: u32 = 2097152; -pub const IF_HWASSIST_TSO_V6: u32 = 4194304; -pub const IFXNAMSIZ: u32 = 24; -pub const IFNET_NETWORK_ID_LEN: u32 = 32; -pub const PF_MD5_DIGEST_LENGTH: u32 = 16; -pub const PF_GRE_PPTP_VARIANT: u32 = 1; -pub const PFTM_TCP_FIRST_PACKET_VAL: u32 = 120; -pub const PFTM_TCP_OPENING_VAL: u32 = 30; -pub const PFTM_TCP_ESTABLISHED_VAL: u32 = 86400; -pub const PFTM_TCP_CLOSING_VAL: u32 = 900; -pub const PFTM_TCP_FIN_WAIT_VAL: u32 = 45; -pub const PFTM_TCP_CLOSED_VAL: u32 = 90; -pub const PFTM_UDP_FIRST_PACKET_VAL: u32 = 60; -pub const PFTM_UDP_SINGLE_VAL: u32 = 30; -pub const PFTM_UDP_MULTIPLE_VAL: u32 = 60; -pub const PFTM_ICMP_FIRST_PACKET_VAL: u32 = 20; -pub const PFTM_ICMP_ERROR_REPLY_VAL: u32 = 10; -pub const PFTM_GREv1_FIRST_PACKET_VAL: u32 = 120; -pub const PFTM_GREv1_INITIATING_VAL: u32 = 30; -pub const PFTM_GREv1_ESTABLISHED_VAL: u32 = 1800; -pub const PFTM_ESP_FIRST_PACKET_VAL: u32 = 120; -pub const PFTM_ESP_INITIATING_VAL: u32 = 30; -pub const PFTM_ESP_ESTABLISHED_VAL: u32 = 900; -pub const PFTM_OTHER_FIRST_PACKET_VAL: u32 = 60; -pub const PFTM_OTHER_SINGLE_VAL: u32 = 30; -pub const PFTM_OTHER_MULTIPLE_VAL: u32 = 60; -pub const PFTM_FRAG_VAL: u32 = 30; -pub const PFTM_INTERVAL_VAL: u32 = 10; -pub const PFTM_SRC_NODE_VAL: u32 = 0; -pub const PFTM_TS_DIFF_VAL: u32 = 30; -pub const PF_POOL_IDMASK: u32 = 15; -pub const PF_POOL_TYPEMASK: u32 = 15; -pub const PF_POOL_STICKYADDR: u32 = 32; -pub const PF_WSCALE_FLAG: u32 = 128; -pub const PF_WSCALE_MASK: u32 = 15; -pub const PF_LOG: u32 = 1; -pub const PF_LOG_ALL: u32 = 2; -pub const PF_LOG_SOCKET_LOOKUP: u32 = 4; -pub const PF_TABLE_NAME_SIZE: u32 = 32; -pub const PFI_AFLAG_NETWORK: u32 = 1; -pub const PFI_AFLAG_BROADCAST: u32 = 2; -pub const PFI_AFLAG_PEER: u32 = 4; -pub const PFI_AFLAG_MODEMASK: u32 = 7; -pub const PFI_AFLAG_NOALIAS: u32 = 8; -pub const RTLABEL_LEN: u32 = 32; -pub const PF_OSFP_EXPANDED: u32 = 1; -pub const PF_OSFP_GENERIC: u32 = 2; -pub const PF_OSFP_NODETAIL: u32 = 4; -pub const PF_OSFP_LEN: u32 = 32; -pub const _FP_RESERVED_BIT: u32 = 1; -pub const _FP_UNUSED_BITS: u32 = 1; -pub const _FP_CLASS_BITS: u32 = 10; -pub const _FP_VERSION_BITS: u32 = 10; -pub const _FP_SUBTYPE_BITS: u32 = 10; -pub const PF_OSFP_WSIZE_MOD: u32 = 1; -pub const PF_OSFP_WSIZE_DC: u32 = 2; -pub const PF_OSFP_WSIZE_MSS: u32 = 4; -pub const PF_OSFP_WSIZE_MTU: u32 = 8; -pub const PF_OSFP_PSIZE_MOD: u32 = 16; -pub const PF_OSFP_PSIZE_DC: u32 = 32; -pub const PF_OSFP_WSCALE: u32 = 64; -pub const PF_OSFP_WSCALE_MOD: u32 = 128; -pub const PF_OSFP_WSCALE_DC: u32 = 256; -pub const PF_OSFP_MSS: u32 = 512; -pub const PF_OSFP_MSS_MOD: u32 = 1024; -pub const PF_OSFP_MSS_DC: u32 = 2048; -pub const PF_OSFP_DF: u32 = 4096; -pub const PF_OSFP_TS0: u32 = 8192; -pub const PF_OSFP_INET6: u32 = 16384; -pub const PF_OSFP_MAXTTL_OFFSET: u32 = 40; -pub const PF_OSFP_TCPOPT_NOP: u32 = 0; -pub const PF_OSFP_TCPOPT_WSCALE: u32 = 1; -pub const PF_OSFP_TCPOPT_MSS: u32 = 2; -pub const PF_OSFP_TCPOPT_SACK: u32 = 3; -pub const PF_OSFP_TCPOPT_TS: u32 = 4; -pub const PF_OSFP_TCPOPT_BITS: u32 = 3; -pub const PF_ANCHOR_NAME_SIZE: u32 = 64; -pub const PF_SKIP_IFP: u32 = 0; -pub const PF_SKIP_DIR: u32 = 1; -pub const PF_SKIP_AF: u32 = 2; -pub const PF_SKIP_PROTO: u32 = 3; -pub const PF_SKIP_SRC_ADDR: u32 = 4; -pub const PF_SKIP_SRC_PORT: u32 = 5; -pub const PF_SKIP_DST_ADDR: u32 = 6; -pub const PF_SKIP_DST_PORT: u32 = 7; -pub const PF_SKIP_COUNT: u32 = 8; -pub const PF_RULE_LABEL_SIZE: u32 = 64; -pub const PF_QNAME_SIZE: u32 = 64; -pub const PF_TAG_NAME_SIZE: u32 = 64; -pub const PF_OWNER_NAME_SIZE: u32 = 64; -pub const PF_STATE_NORMAL: u32 = 1; -pub const PF_STATE_MODULATE: u32 = 2; -pub const PF_STATE_SYNPROXY: u32 = 3; -pub const SCIDX_MASK: u32 = 15; -pub const SC_BE: u32 = 16; -pub const SC_BK_SYS: u32 = 17; -pub const SC_BK: u32 = 18; -pub const SC_RD: u32 = 19; -pub const SC_OAM: u32 = 20; -pub const SC_AV: u32 = 21; -pub const SC_RV: u32 = 22; -pub const SC_VI: u32 = 23; -pub const SC_SIG: u32 = 23; -pub const SC_VO: u32 = 24; -pub const SC_CTL: u32 = 25; -pub const DSCP_MASK: u32 = 252; -pub const DSCP_CUMASK: u32 = 3; -pub const DSCP_EF: u32 = 184; -pub const DSCP_AF11: u32 = 40; -pub const DSCP_AF12: u32 = 48; -pub const DSCP_AF13: u32 = 56; -pub const DSCP_AF21: u32 = 72; -pub const DSCP_AF22: u32 = 80; -pub const DSCP_AF23: u32 = 88; -pub const DSCP_AF31: u32 = 104; -pub const DSCP_AF32: u32 = 112; -pub const DSCP_AF33: u32 = 120; -pub const DSCP_AF41: u32 = 136; -pub const DSCP_AF42: u32 = 144; -pub const DSCP_AF43: u32 = 152; -pub const AF_CLASSMASK: u32 = 224; -pub const AF_DROPPRECMASK: u32 = 24; -pub const PF_FLUSH: u32 = 1; -pub const PF_FLUSH_GLOBAL: u32 = 2; -pub const PFDEV_PF: u32 = 0; -pub const PFDEV_PFM: u32 = 1; -pub const PFDEV_MAX: u32 = 2; -pub const PFRULE_DROP: u32 = 0; -pub const PFRULE_RETURNRST: u32 = 1; -pub const PFRULE_FRAGMENT: u32 = 2; -pub const PFRULE_RETURNICMP: u32 = 4; -pub const PFRULE_RETURN: u32 = 8; -pub const PFRULE_NOSYNC: u32 = 16; -pub const PFRULE_SRCTRACK: u32 = 32; -pub const PFRULE_RULESRCTRACK: u32 = 64; -pub const PFRULE_NODF: u32 = 256; -pub const PFRULE_FRAGCROP: u32 = 512; -pub const PFRULE_FRAGDROP: u32 = 1024; -pub const PFRULE_RANDOMID: u32 = 2048; -pub const PFRULE_REASSEMBLE_TCP: u32 = 4096; -pub const PFRULE_TOS: u32 = 8192; -pub const PFRULE_DSCP: u32 = 16384; -pub const PFRULE_SC: u32 = 32768; -pub const PFRULE_IFBOUND: u32 = 65536; -pub const PFRULE_PFM: u32 = 131072; -pub const PFSTATE_HIWAT: u32 = 10000; -pub const PFSTATE_ADAPT_START: u32 = 6000; -pub const PFSTATE_ADAPT_END: u32 = 12000; -pub const PFAPPSTATE_HIWAT: u32 = 10000; -pub const PF_TAG_NAME_SYSTEM_SERVICE: &[u8; 32] = b"com.apple.pf.system_service_tag\0"; -pub const PF_TAG_NAME_STACK_DROP: &[u8; 28] = b"com.apple.pf.stack_drop_tag\0"; -pub const PF_THRESHOLD_MULT: u32 = 1000; -pub const PF_THRESHOLD_MAX: u32 = 4294967; -pub const PFSNODE_HIWAT: u32 = 10000; -pub const PFSTATE_NOSYNC: u32 = 1; -pub const PFSTATE_FROMSYNC: u32 = 2; -pub const PFSTATE_STALE: u32 = 4; -pub const PFSYNC_SCRUB_FLAG_VALID: u32 = 1; -pub const PFSYNC_FLAG_COMPRESS: u32 = 1; -pub const PFSYNC_FLAG_STALE: u32 = 2; -pub const PFSYNC_FLAG_SRCNODE: u32 = 4; -pub const PFSYNC_FLAG_NATSRCNODE: u32 = 8; -pub const PF_RESERVED_ANCHOR: &[u8; 4] = b"_pf\0"; -pub const PFR_TFLAG_PERSIST: u32 = 1; -pub const PFR_TFLAG_CONST: u32 = 2; -pub const PFR_TFLAG_ACTIVE: u32 = 4; -pub const PFR_TFLAG_INACTIVE: u32 = 8; -pub const PFR_TFLAG_REFERENCED: u32 = 16; -pub const PFR_TFLAG_REFDANCHOR: u32 = 32; -pub const PFR_TFLAG_USRMASK: u32 = 3; -pub const PFR_TFLAG_SETMASK: u32 = 60; -pub const PFR_TFLAG_ALLMASK: u32 = 63; -pub const PFI_IFLAG_SKIP: u32 = 256; -pub const PF_DPORT_RANGE: u32 = 1; -pub const PF_RPORT_RANGE: u32 = 2; -pub const PFRES_MATCH: u32 = 0; -pub const PFRES_BADOFF: u32 = 1; -pub const PFRES_FRAG: u32 = 2; -pub const PFRES_SHORT: u32 = 3; -pub const PFRES_NORM: u32 = 4; -pub const PFRES_MEMORY: u32 = 5; -pub const PFRES_TS: u32 = 6; -pub const PFRES_CONGEST: u32 = 7; -pub const PFRES_IPOPTIONS: u32 = 8; -pub const PFRES_PROTCKSUM: u32 = 9; -pub const PFRES_BADSTATE: u32 = 10; -pub const PFRES_STATEINS: u32 = 11; -pub const PFRES_MAXSTATES: u32 = 12; -pub const PFRES_SRCLIMIT: u32 = 13; -pub const PFRES_SYNPROXY: u32 = 14; -pub const PFRES_DUMMYNET: u32 = 15; -pub const PFRES_MAX: u32 = 16; -pub const LCNT_STATES: u32 = 0; -pub const LCNT_SRCSTATES: u32 = 1; -pub const LCNT_SRCNODES: u32 = 2; -pub const LCNT_SRCCONN: u32 = 3; -pub const LCNT_SRCCONNRATE: u32 = 4; -pub const LCNT_OVERLOAD_TABLE: u32 = 5; -pub const LCNT_OVERLOAD_FLUSH: u32 = 6; -pub const LCNT_MAX: u32 = 7; -pub const PFUDPS_NO_TRAFFIC: u32 = 0; -pub const PFUDPS_SINGLE: u32 = 1; -pub const PFUDPS_MULTIPLE: u32 = 2; -pub const PFUDPS_NSTATES: u32 = 3; -pub const PFGRE1S_NO_TRAFFIC: u32 = 0; -pub const PFGRE1S_INITIATING: u32 = 1; -pub const PFGRE1S_ESTABLISHED: u32 = 2; -pub const PFGRE1S_NSTATES: u32 = 3; -pub const PFESPS_NO_TRAFFIC: u32 = 0; -pub const PFESPS_INITIATING: u32 = 1; -pub const PFESPS_ESTABLISHED: u32 = 2; -pub const PFESPS_NSTATES: u32 = 3; -pub const PFOTHERS_NO_TRAFFIC: u32 = 0; -pub const PFOTHERS_SINGLE: u32 = 1; -pub const PFOTHERS_MULTIPLE: u32 = 2; -pub const PFOTHERS_NSTATES: u32 = 3; -pub const FCNT_STATE_SEARCH: u32 = 0; -pub const FCNT_STATE_INSERT: u32 = 1; -pub const FCNT_STATE_REMOVALS: u32 = 2; -pub const FCNT_MAX: u32 = 3; -pub const SCNT_SRC_NODE_SEARCH: u32 = 0; -pub const SCNT_SRC_NODE_INSERT: u32 = 1; -pub const SCNT_SRC_NODE_REMOVALS: u32 = 2; -pub const SCNT_MAX: u32 = 3; -pub const PF_ALTQ_BW_ABSOLUTE: u32 = 1; -pub const PF_ALTQ_BW_PERCENT: u32 = 2; -pub const PF_ALTQF_TBR: u32 = 1; -pub const PF_ALTQ_QRF_WEIGHT: u32 = 1; -pub const PFFRAG_FRENT_HIWAT: u32 = 5000; -pub const PFFRAG_FRAG_HIWAT: u32 = 1000; -pub const PFFRAG_FRCENT_HIWAT: u32 = 50000; -pub const PFFRAG_FRCACHE_HIWAT: u32 = 10000; -pub const PFR_KTABLE_HIWAT: u32 = 1000; -pub const PFR_KENTRY_HIWAT: u32 = 200000; -pub const PFR_KENTRY_HIWAT_SMALL: u32 = 100000; -pub const PFTOK_PROCNAME_LEN: u32 = 64; -pub const PFR_FLAG_ATOMIC: u32 = 1; -pub const PFR_FLAG_DUMMY: u32 = 2; -pub const PFR_FLAG_FEEDBACK: u32 = 4; -pub const PFR_FLAG_CLSTATS: u32 = 8; -pub const PFR_FLAG_ADDRSTOO: u32 = 16; -pub const PFR_FLAG_REPLACE: u32 = 32; -pub const PFR_FLAG_ALLRSETS: u32 = 64; -pub const PFR_FLAG_ALLMASK: u32 = 127; -pub type __int8_t = ::std::os::raw::c_schar; -pub type __uint8_t = ::std::os::raw::c_uchar; -pub type __int16_t = ::std::os::raw::c_short; -pub type __uint16_t = ::std::os::raw::c_ushort; -pub type __int32_t = ::std::os::raw::c_int; -pub type __uint32_t = ::std::os::raw::c_uint; -pub type __int64_t = ::std::os::raw::c_longlong; -pub type __uint64_t = ::std::os::raw::c_ulonglong; -pub type __darwin_intptr_t = ::std::os::raw::c_long; -pub type __darwin_natural_t = ::std::os::raw::c_uint; -pub type __darwin_ct_rune_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __mbstate_t { - pub __mbstate8: [::std::os::raw::c_char; 128usize], - pub _mbstateL: ::std::os::raw::c_longlong, -} -#[test] -fn bindgen_test_layout___mbstate_t() { - const UNINIT: ::std::mem::MaybeUninit<__mbstate_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__mbstate_t>(), - 128usize, - concat!("Size of: ", stringify!(__mbstate_t)) - ); - assert_eq!( - ::std::mem::align_of::<__mbstate_t>(), - 8usize, - concat!("Alignment of ", stringify!(__mbstate_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__mbstate8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__mbstate_t), - "::", - stringify!(__mbstate8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._mbstateL) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__mbstate_t), - "::", - stringify!(_mbstateL) - ) - ); -} -pub type __darwin_mbstate_t = __mbstate_t; -pub type __darwin_ptrdiff_t = ::std::os::raw::c_long; -pub type __darwin_size_t = ::std::os::raw::c_ulong; -pub type __darwin_va_list = __builtin_va_list; -pub type __darwin_wchar_t = ::std::os::raw::c_int; -pub type __darwin_rune_t = __darwin_wchar_t; -pub type __darwin_wint_t = ::std::os::raw::c_int; -pub type __darwin_clock_t = ::std::os::raw::c_ulong; -pub type __darwin_socklen_t = __uint32_t; -pub type __darwin_ssize_t = ::std::os::raw::c_long; -pub type __darwin_time_t = ::std::os::raw::c_long; -pub type __darwin_blkcnt_t = __int64_t; -pub type __darwin_blksize_t = __int32_t; -pub type __darwin_dev_t = __int32_t; -pub type __darwin_fsblkcnt_t = ::std::os::raw::c_uint; -pub type __darwin_fsfilcnt_t = ::std::os::raw::c_uint; -pub type __darwin_gid_t = __uint32_t; -pub type __darwin_id_t = __uint32_t; -pub type __darwin_ino64_t = __uint64_t; -pub type __darwin_ino_t = __darwin_ino64_t; -pub type __darwin_mach_port_name_t = __darwin_natural_t; -pub type __darwin_mach_port_t = __darwin_mach_port_name_t; -pub type __darwin_mode_t = __uint16_t; -pub type __darwin_off_t = __int64_t; -pub type __darwin_pid_t = __int32_t; -pub type __darwin_sigset_t = __uint32_t; -pub type __darwin_suseconds_t = __int32_t; -pub type __darwin_uid_t = __uint32_t; -pub type __darwin_useconds_t = __uint32_t; -pub type __darwin_uuid_t = [::std::os::raw::c_uchar; 16usize]; -pub type __darwin_uuid_string_t = [::std::os::raw::c_char; 37usize]; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_pthread_handler_rec { - pub __routine: ::std::option::Option, - pub __arg: *mut ::std::os::raw::c_void, - pub __next: *mut __darwin_pthread_handler_rec, -} -#[test] -fn bindgen_test_layout___darwin_pthread_handler_rec() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_pthread_handler_rec> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_pthread_handler_rec>(), - 24usize, - concat!("Size of: ", stringify!(__darwin_pthread_handler_rec)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_pthread_handler_rec>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_pthread_handler_rec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__routine) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_pthread_handler_rec), - "::", - stringify!(__routine) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__arg) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_pthread_handler_rec), - "::", - stringify!(__arg) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__next) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_pthread_handler_rec), - "::", - stringify!(__next) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_attr_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 56usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_attr_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_attr_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_attr_t>(), - 64usize, - concat!("Size of: ", stringify!(_opaque_pthread_attr_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_attr_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_attr_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_attr_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_attr_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_cond_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 40usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_cond_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_cond_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_cond_t>(), - 48usize, - concat!("Size of: ", stringify!(_opaque_pthread_cond_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_cond_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_cond_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_cond_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_cond_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_condattr_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 8usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_condattr_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_condattr_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_condattr_t>(), - 16usize, - concat!("Size of: ", stringify!(_opaque_pthread_condattr_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_condattr_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_condattr_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_condattr_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_condattr_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_mutex_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 56usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_mutex_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_mutex_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_mutex_t>(), - 64usize, - concat!("Size of: ", stringify!(_opaque_pthread_mutex_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_mutex_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_mutex_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_mutex_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_mutex_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_mutexattr_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 8usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_mutexattr_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_mutexattr_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_mutexattr_t>(), - 16usize, - concat!("Size of: ", stringify!(_opaque_pthread_mutexattr_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_mutexattr_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_mutexattr_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_mutexattr_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_mutexattr_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_once_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 8usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_once_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_once_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_once_t>(), - 16usize, - concat!("Size of: ", stringify!(_opaque_pthread_once_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_once_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_once_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_once_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_once_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_rwlock_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 192usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_rwlock_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_rwlock_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_rwlock_t>(), - 200usize, - concat!("Size of: ", stringify!(_opaque_pthread_rwlock_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_rwlock_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_rwlock_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_rwlock_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_rwlock_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_rwlockattr_t { - pub __sig: ::std::os::raw::c_long, - pub __opaque: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_rwlockattr_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_rwlockattr_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_rwlockattr_t>(), - 24usize, - concat!("Size of: ", stringify!(_opaque_pthread_rwlockattr_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_rwlockattr_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_rwlockattr_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_rwlockattr_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_rwlockattr_t), - "::", - stringify!(__opaque) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _opaque_pthread_t { - pub __sig: ::std::os::raw::c_long, - pub __cleanup_stack: *mut __darwin_pthread_handler_rec, - pub __opaque: [::std::os::raw::c_char; 8176usize], -} -#[test] -fn bindgen_test_layout__opaque_pthread_t() { - const UNINIT: ::std::mem::MaybeUninit<_opaque_pthread_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_opaque_pthread_t>(), - 8192usize, - concat!("Size of: ", stringify!(_opaque_pthread_t)) - ); - assert_eq!( - ::std::mem::align_of::<_opaque_pthread_t>(), - 8usize, - concat!("Alignment of ", stringify!(_opaque_pthread_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sig) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_t), - "::", - stringify!(__sig) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__cleanup_stack) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_t), - "::", - stringify!(__cleanup_stack) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opaque) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(_opaque_pthread_t), - "::", - stringify!(__opaque) - ) - ); -} -pub type __darwin_pthread_attr_t = _opaque_pthread_attr_t; -pub type __darwin_pthread_cond_t = _opaque_pthread_cond_t; -pub type __darwin_pthread_condattr_t = _opaque_pthread_condattr_t; -pub type __darwin_pthread_key_t = ::std::os::raw::c_ulong; -pub type __darwin_pthread_mutex_t = _opaque_pthread_mutex_t; -pub type __darwin_pthread_mutexattr_t = _opaque_pthread_mutexattr_t; -pub type __darwin_pthread_once_t = _opaque_pthread_once_t; -pub type __darwin_pthread_rwlock_t = _opaque_pthread_rwlock_t; -pub type __darwin_pthread_rwlockattr_t = _opaque_pthread_rwlockattr_t; -pub type __darwin_pthread_t = *mut _opaque_pthread_t; -pub type u_int8_t = ::std::os::raw::c_uchar; -pub type u_int16_t = ::std::os::raw::c_ushort; -pub type u_int32_t = ::std::os::raw::c_uint; -pub type u_int64_t = ::std::os::raw::c_ulonglong; -pub type register_t = i64; -pub type user_addr_t = u_int64_t; -pub type user_size_t = u_int64_t; -pub type user_ssize_t = i64; -pub type user_long_t = i64; -pub type user_ulong_t = u_int64_t; -pub type user_time_t = i64; -pub type user_off_t = i64; -pub type syscall_arg_t = u_int64_t; -pub type u_char = ::std::os::raw::c_uchar; -pub type u_short = ::std::os::raw::c_ushort; -pub type u_int = ::std::os::raw::c_uint; -pub type u_long = ::std::os::raw::c_ulong; -pub type ushort = ::std::os::raw::c_ushort; -pub type uint = ::std::os::raw::c_uint; -pub type u_quad_t = u_int64_t; -pub type quad_t = i64; -pub type qaddr_t = *mut quad_t; -pub type caddr_t = *mut ::std::os::raw::c_char; -pub type daddr_t = i32; -pub type dev_t = __darwin_dev_t; -pub type fixpt_t = u_int32_t; -pub type blkcnt_t = __darwin_blkcnt_t; -pub type blksize_t = __darwin_blksize_t; -pub type gid_t = __darwin_gid_t; -pub type in_addr_t = __uint32_t; -pub type in_port_t = __uint16_t; -pub type ino_t = __darwin_ino_t; -pub type ino64_t = __darwin_ino64_t; -pub type key_t = __int32_t; -pub type mode_t = __darwin_mode_t; -pub type nlink_t = __uint16_t; -pub type id_t = __darwin_id_t; -pub type pid_t = __darwin_pid_t; -pub type off_t = __darwin_off_t; -pub type segsz_t = i32; -pub type swblk_t = i32; -pub type uid_t = __darwin_uid_t; -pub type clock_t = __darwin_clock_t; -pub type time_t = __darwin_time_t; -pub type useconds_t = __darwin_useconds_t; -pub type suseconds_t = __darwin_suseconds_t; -pub type rsize_t = __darwin_size_t; -pub type errno_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fd_set { - pub fds_bits: [__int32_t; 32usize], -} -#[test] -fn bindgen_test_layout_fd_set() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(fd_set)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(fd_set)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fds_bits) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(fd_set), "::", stringify!(fds_bits)) - ); -} -unsafe extern "C" { - pub fn __darwin_check_fd_set_overflow( - arg1: ::std::os::raw::c_int, - arg2: *const ::std::os::raw::c_void, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -pub type fd_mask = __int32_t; -pub type pthread_attr_t = __darwin_pthread_attr_t; -pub type pthread_cond_t = __darwin_pthread_cond_t; -pub type pthread_condattr_t = __darwin_pthread_condattr_t; -pub type pthread_mutex_t = __darwin_pthread_mutex_t; -pub type pthread_mutexattr_t = __darwin_pthread_mutexattr_t; -pub type pthread_once_t = __darwin_pthread_once_t; -pub type pthread_rwlock_t = __darwin_pthread_rwlock_t; -pub type pthread_rwlockattr_t = __darwin_pthread_rwlockattr_t; -pub type pthread_t = __darwin_pthread_t; -pub type pthread_key_t = __darwin_pthread_key_t; -pub type fsblkcnt_t = __darwin_fsblkcnt_t; -pub type fsfilcnt_t = __darwin_fsfilcnt_t; -pub type sig_atomic_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_i386_thread_state { - pub __eax: ::std::os::raw::c_uint, - pub __ebx: ::std::os::raw::c_uint, - pub __ecx: ::std::os::raw::c_uint, - pub __edx: ::std::os::raw::c_uint, - pub __edi: ::std::os::raw::c_uint, - pub __esi: ::std::os::raw::c_uint, - pub __ebp: ::std::os::raw::c_uint, - pub __esp: ::std::os::raw::c_uint, - pub __ss: ::std::os::raw::c_uint, - pub __eflags: ::std::os::raw::c_uint, - pub __eip: ::std::os::raw::c_uint, - pub __cs: ::std::os::raw::c_uint, - pub __ds: ::std::os::raw::c_uint, - pub __es: ::std::os::raw::c_uint, - pub __fs: ::std::os::raw::c_uint, - pub __gs: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout___darwin_i386_thread_state() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_i386_thread_state> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_i386_thread_state>(), - 64usize, - concat!("Size of: ", stringify!(__darwin_i386_thread_state)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_i386_thread_state>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_i386_thread_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__eax) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__eax) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ebx) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__ebx) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ecx) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__ecx) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__edx) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__edx) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__edi) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__edi) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__esi) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__esi) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ebp) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__ebp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__esp) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__esp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__ss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__eflags) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__eflags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__eip) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__eip) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__cs) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__cs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ds) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__ds) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__es) as usize - ptr as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__es) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fs) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__fs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__gs) as usize - ptr as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_thread_state), - "::", - stringify!(__gs) - ) - ); -} -#[repr(C)] -#[repr(align(2))] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_fp_control { - pub _bitfield_align_1: [u8; 0], - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -} -#[test] -fn bindgen_test_layout___darwin_fp_control() { - assert_eq!( - ::std::mem::size_of::<__darwin_fp_control>(), - 2usize, - concat!("Size of: ", stringify!(__darwin_fp_control)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_fp_control>(), - 2usize, - concat!("Alignment of ", stringify!(__darwin_fp_control)) - ); -} -impl __darwin_fp_control { - #[inline] - pub fn __invalid(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u16) } - } - - #[inline] - pub fn set___invalid(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(0usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __denorm(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u16) } - } - - #[inline] - pub fn set___denorm(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(1usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __zdiv(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u16) } - } - - #[inline] - pub fn set___zdiv(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(2usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __ovrfl(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u16) } - } - - #[inline] - pub fn set___ovrfl(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(3usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __undfl(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u16) } - } - - #[inline] - pub fn set___undfl(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(4usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __precis(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u16) } - } - - #[inline] - pub fn set___precis(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(5usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __pc(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 2u8) as u16) } - } - - #[inline] - pub fn set___pc(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(8usize, 2u8, val as u64) - } - } - - #[inline] - pub fn __rc(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(10usize, 2u8) as u16) } - } - - #[inline] - pub fn set___rc(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(10usize, 2u8, val as u64) - } - } - - #[inline] - pub fn new_bitfield_1( - __invalid: ::std::os::raw::c_ushort, - __denorm: ::std::os::raw::c_ushort, - __zdiv: ::std::os::raw::c_ushort, - __ovrfl: ::std::os::raw::c_ushort, - __undfl: ::std::os::raw::c_ushort, - __precis: ::std::os::raw::c_ushort, - __pc: ::std::os::raw::c_ushort, - __rc: ::std::os::raw::c_ushort, - ) -> __BindgenBitfieldUnit<[u8; 2usize]> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); - __bindgen_bitfield_unit.set(0usize, 1u8, { - let __invalid: u16 = unsafe { ::std::mem::transmute(__invalid) }; - __invalid as u64 - }); - __bindgen_bitfield_unit.set(1usize, 1u8, { - let __denorm: u16 = unsafe { ::std::mem::transmute(__denorm) }; - __denorm as u64 - }); - __bindgen_bitfield_unit.set(2usize, 1u8, { - let __zdiv: u16 = unsafe { ::std::mem::transmute(__zdiv) }; - __zdiv as u64 - }); - __bindgen_bitfield_unit.set(3usize, 1u8, { - let __ovrfl: u16 = unsafe { ::std::mem::transmute(__ovrfl) }; - __ovrfl as u64 - }); - __bindgen_bitfield_unit.set(4usize, 1u8, { - let __undfl: u16 = unsafe { ::std::mem::transmute(__undfl) }; - __undfl as u64 - }); - __bindgen_bitfield_unit.set(5usize, 1u8, { - let __precis: u16 = unsafe { ::std::mem::transmute(__precis) }; - __precis as u64 - }); - __bindgen_bitfield_unit.set(8usize, 2u8, { - let __pc: u16 = unsafe { ::std::mem::transmute(__pc) }; - __pc as u64 - }); - __bindgen_bitfield_unit.set(10usize, 2u8, { - let __rc: u16 = unsafe { ::std::mem::transmute(__rc) }; - __rc as u64 - }); - __bindgen_bitfield_unit - } -} -pub type __darwin_fp_control_t = __darwin_fp_control; -#[repr(C)] -#[repr(align(2))] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_fp_status { - pub _bitfield_align_1: [u8; 0], - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -} -#[test] -fn bindgen_test_layout___darwin_fp_status() { - assert_eq!( - ::std::mem::size_of::<__darwin_fp_status>(), - 2usize, - concat!("Size of: ", stringify!(__darwin_fp_status)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_fp_status>(), - 2usize, - concat!("Alignment of ", stringify!(__darwin_fp_status)) - ); -} -impl __darwin_fp_status { - #[inline] - pub fn __invalid(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u16) } - } - - #[inline] - pub fn set___invalid(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(0usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __denorm(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u16) } - } - - #[inline] - pub fn set___denorm(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(1usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __zdiv(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u16) } - } - - #[inline] - pub fn set___zdiv(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(2usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __ovrfl(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u16) } - } - - #[inline] - pub fn set___ovrfl(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(3usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __undfl(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u16) } - } - - #[inline] - pub fn set___undfl(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(4usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __precis(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u16) } - } - - #[inline] - pub fn set___precis(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(5usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __stkflt(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u16) } - } - - #[inline] - pub fn set___stkflt(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(6usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __errsumm(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u16) } - } - - #[inline] - pub fn set___errsumm(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(7usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __c0(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } - } - - #[inline] - pub fn set___c0(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(8usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __c1(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } - } - - #[inline] - pub fn set___c1(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(9usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __c2(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) } - } - - #[inline] - pub fn set___c2(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(10usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __tos(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 3u8) as u16) } - } - - #[inline] - pub fn set___tos(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(11usize, 3u8, val as u64) - } - } - - #[inline] - pub fn __c3(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) } - } - - #[inline] - pub fn set___c3(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(14usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __busy(&self) -> ::std::os::raw::c_ushort { - unsafe { ::std::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) } - } - - #[inline] - pub fn set___busy(&mut self, val: ::std::os::raw::c_ushort) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(15usize, 1u8, val as u64) - } - } - - #[inline] - pub fn new_bitfield_1( - __invalid: ::std::os::raw::c_ushort, - __denorm: ::std::os::raw::c_ushort, - __zdiv: ::std::os::raw::c_ushort, - __ovrfl: ::std::os::raw::c_ushort, - __undfl: ::std::os::raw::c_ushort, - __precis: ::std::os::raw::c_ushort, - __stkflt: ::std::os::raw::c_ushort, - __errsumm: ::std::os::raw::c_ushort, - __c0: ::std::os::raw::c_ushort, - __c1: ::std::os::raw::c_ushort, - __c2: ::std::os::raw::c_ushort, - __tos: ::std::os::raw::c_ushort, - __c3: ::std::os::raw::c_ushort, - __busy: ::std::os::raw::c_ushort, - ) -> __BindgenBitfieldUnit<[u8; 2usize]> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); - __bindgen_bitfield_unit.set(0usize, 1u8, { - let __invalid: u16 = unsafe { ::std::mem::transmute(__invalid) }; - __invalid as u64 - }); - __bindgen_bitfield_unit.set(1usize, 1u8, { - let __denorm: u16 = unsafe { ::std::mem::transmute(__denorm) }; - __denorm as u64 - }); - __bindgen_bitfield_unit.set(2usize, 1u8, { - let __zdiv: u16 = unsafe { ::std::mem::transmute(__zdiv) }; - __zdiv as u64 - }); - __bindgen_bitfield_unit.set(3usize, 1u8, { - let __ovrfl: u16 = unsafe { ::std::mem::transmute(__ovrfl) }; - __ovrfl as u64 - }); - __bindgen_bitfield_unit.set(4usize, 1u8, { - let __undfl: u16 = unsafe { ::std::mem::transmute(__undfl) }; - __undfl as u64 - }); - __bindgen_bitfield_unit.set(5usize, 1u8, { - let __precis: u16 = unsafe { ::std::mem::transmute(__precis) }; - __precis as u64 - }); - __bindgen_bitfield_unit.set(6usize, 1u8, { - let __stkflt: u16 = unsafe { ::std::mem::transmute(__stkflt) }; - __stkflt as u64 - }); - __bindgen_bitfield_unit.set(7usize, 1u8, { - let __errsumm: u16 = unsafe { ::std::mem::transmute(__errsumm) }; - __errsumm as u64 - }); - __bindgen_bitfield_unit.set(8usize, 1u8, { - let __c0: u16 = unsafe { ::std::mem::transmute(__c0) }; - __c0 as u64 - }); - __bindgen_bitfield_unit.set(9usize, 1u8, { - let __c1: u16 = unsafe { ::std::mem::transmute(__c1) }; - __c1 as u64 - }); - __bindgen_bitfield_unit.set(10usize, 1u8, { - let __c2: u16 = unsafe { ::std::mem::transmute(__c2) }; - __c2 as u64 - }); - __bindgen_bitfield_unit.set(11usize, 3u8, { - let __tos: u16 = unsafe { ::std::mem::transmute(__tos) }; - __tos as u64 - }); - __bindgen_bitfield_unit.set(14usize, 1u8, { - let __c3: u16 = unsafe { ::std::mem::transmute(__c3) }; - __c3 as u64 - }); - __bindgen_bitfield_unit.set(15usize, 1u8, { - let __busy: u16 = unsafe { ::std::mem::transmute(__busy) }; - __busy as u64 - }); - __bindgen_bitfield_unit - } -} -pub type __darwin_fp_status_t = __darwin_fp_status; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_mmst_reg { - pub __mmst_reg: [::std::os::raw::c_char; 10usize], - pub __mmst_rsrv: [::std::os::raw::c_char; 6usize], -} -#[test] -fn bindgen_test_layout___darwin_mmst_reg() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_mmst_reg> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_mmst_reg>(), - 16usize, - concat!("Size of: ", stringify!(__darwin_mmst_reg)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_mmst_reg>(), - 1usize, - concat!("Alignment of ", stringify!(__darwin_mmst_reg)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__mmst_reg) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mmst_reg), - "::", - stringify!(__mmst_reg) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__mmst_rsrv) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mmst_reg), - "::", - stringify!(__mmst_rsrv) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_xmm_reg { - pub __xmm_reg: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout___darwin_xmm_reg() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_xmm_reg> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_xmm_reg>(), - 16usize, - concat!("Size of: ", stringify!(__darwin_xmm_reg)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_xmm_reg>(), - 1usize, - concat!("Alignment of ", stringify!(__darwin_xmm_reg)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__xmm_reg) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_xmm_reg), - "::", - stringify!(__xmm_reg) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_ymm_reg { - pub __ymm_reg: [::std::os::raw::c_char; 32usize], -} -#[test] -fn bindgen_test_layout___darwin_ymm_reg() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_ymm_reg> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_ymm_reg>(), - 32usize, - concat!("Size of: ", stringify!(__darwin_ymm_reg)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_ymm_reg>(), - 1usize, - concat!("Alignment of ", stringify!(__darwin_ymm_reg)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ymm_reg) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_ymm_reg), - "::", - stringify!(__ymm_reg) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_zmm_reg { - pub __zmm_reg: [::std::os::raw::c_char; 64usize], -} -#[test] -fn bindgen_test_layout___darwin_zmm_reg() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_zmm_reg> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_zmm_reg>(), - 64usize, - concat!("Size of: ", stringify!(__darwin_zmm_reg)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_zmm_reg>(), - 1usize, - concat!("Alignment of ", stringify!(__darwin_zmm_reg)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__zmm_reg) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_zmm_reg), - "::", - stringify!(__zmm_reg) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_opmask_reg { - pub __opmask_reg: [::std::os::raw::c_char; 8usize], -} -#[test] -fn bindgen_test_layout___darwin_opmask_reg() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_opmask_reg> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_opmask_reg>(), - 8usize, - concat!("Size of: ", stringify!(__darwin_opmask_reg)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_opmask_reg>(), - 1usize, - concat!("Alignment of ", stringify!(__darwin_opmask_reg)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__opmask_reg) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_opmask_reg), - "::", - stringify!(__opmask_reg) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_i386_float_state { - pub __fpu_reserved: [::std::os::raw::c_int; 2usize], - pub __fpu_fcw: __darwin_fp_control, - pub __fpu_fsw: __darwin_fp_status, - pub __fpu_ftw: __uint8_t, - pub __fpu_rsrv1: __uint8_t, - pub __fpu_fop: __uint16_t, - pub __fpu_ip: __uint32_t, - pub __fpu_cs: __uint16_t, - pub __fpu_rsrv2: __uint16_t, - pub __fpu_dp: __uint32_t, - pub __fpu_ds: __uint16_t, - pub __fpu_rsrv3: __uint16_t, - pub __fpu_mxcsr: __uint32_t, - pub __fpu_mxcsrmask: __uint32_t, - pub __fpu_stmm0: __darwin_mmst_reg, - pub __fpu_stmm1: __darwin_mmst_reg, - pub __fpu_stmm2: __darwin_mmst_reg, - pub __fpu_stmm3: __darwin_mmst_reg, - pub __fpu_stmm4: __darwin_mmst_reg, - pub __fpu_stmm5: __darwin_mmst_reg, - pub __fpu_stmm6: __darwin_mmst_reg, - pub __fpu_stmm7: __darwin_mmst_reg, - pub __fpu_xmm0: __darwin_xmm_reg, - pub __fpu_xmm1: __darwin_xmm_reg, - pub __fpu_xmm2: __darwin_xmm_reg, - pub __fpu_xmm3: __darwin_xmm_reg, - pub __fpu_xmm4: __darwin_xmm_reg, - pub __fpu_xmm5: __darwin_xmm_reg, - pub __fpu_xmm6: __darwin_xmm_reg, - pub __fpu_xmm7: __darwin_xmm_reg, - pub __fpu_rsrv4: [::std::os::raw::c_char; 224usize], - pub __fpu_reserved1: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___darwin_i386_float_state() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_i386_float_state> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_i386_float_state>(), - 524usize, - concat!("Size of: ", stringify!(__darwin_i386_float_state)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_i386_float_state>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_i386_float_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_reserved) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fcw) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_fcw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fsw) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_fsw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ftw) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_ftw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv1) as usize - ptr as usize }, - 13usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_rsrv1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fop) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_fop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ip) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_ip) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_cs) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_cs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv2) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_rsrv2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_dp) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_dp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ds) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_ds) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv3) as usize - ptr as usize }, - 30usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_rsrv3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsr) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_mxcsr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsrmask) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_mxcsrmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm0) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_stmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm1) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_stmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm2) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_stmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm3) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_stmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm4) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_stmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm5) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_stmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm6) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_stmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm7) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_stmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm0) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_xmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm1) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_xmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm2) as usize - ptr as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_xmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm3) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_xmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm4) as usize - ptr as usize }, - 232usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_xmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm5) as usize - ptr as usize }, - 248usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_xmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm6) as usize - ptr as usize }, - 264usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_xmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm7) as usize - ptr as usize }, - 280usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_xmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv4) as usize - ptr as usize }, - 296usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_rsrv4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved1) as usize - ptr as usize }, - 520usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_float_state), - "::", - stringify!(__fpu_reserved1) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_i386_avx_state { - pub __fpu_reserved: [::std::os::raw::c_int; 2usize], - pub __fpu_fcw: __darwin_fp_control, - pub __fpu_fsw: __darwin_fp_status, - pub __fpu_ftw: __uint8_t, - pub __fpu_rsrv1: __uint8_t, - pub __fpu_fop: __uint16_t, - pub __fpu_ip: __uint32_t, - pub __fpu_cs: __uint16_t, - pub __fpu_rsrv2: __uint16_t, - pub __fpu_dp: __uint32_t, - pub __fpu_ds: __uint16_t, - pub __fpu_rsrv3: __uint16_t, - pub __fpu_mxcsr: __uint32_t, - pub __fpu_mxcsrmask: __uint32_t, - pub __fpu_stmm0: __darwin_mmst_reg, - pub __fpu_stmm1: __darwin_mmst_reg, - pub __fpu_stmm2: __darwin_mmst_reg, - pub __fpu_stmm3: __darwin_mmst_reg, - pub __fpu_stmm4: __darwin_mmst_reg, - pub __fpu_stmm5: __darwin_mmst_reg, - pub __fpu_stmm6: __darwin_mmst_reg, - pub __fpu_stmm7: __darwin_mmst_reg, - pub __fpu_xmm0: __darwin_xmm_reg, - pub __fpu_xmm1: __darwin_xmm_reg, - pub __fpu_xmm2: __darwin_xmm_reg, - pub __fpu_xmm3: __darwin_xmm_reg, - pub __fpu_xmm4: __darwin_xmm_reg, - pub __fpu_xmm5: __darwin_xmm_reg, - pub __fpu_xmm6: __darwin_xmm_reg, - pub __fpu_xmm7: __darwin_xmm_reg, - pub __fpu_rsrv4: [::std::os::raw::c_char; 224usize], - pub __fpu_reserved1: ::std::os::raw::c_int, - pub __avx_reserved1: [::std::os::raw::c_char; 64usize], - pub __fpu_ymmh0: __darwin_xmm_reg, - pub __fpu_ymmh1: __darwin_xmm_reg, - pub __fpu_ymmh2: __darwin_xmm_reg, - pub __fpu_ymmh3: __darwin_xmm_reg, - pub __fpu_ymmh4: __darwin_xmm_reg, - pub __fpu_ymmh5: __darwin_xmm_reg, - pub __fpu_ymmh6: __darwin_xmm_reg, - pub __fpu_ymmh7: __darwin_xmm_reg, -} -#[test] -fn bindgen_test_layout___darwin_i386_avx_state() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_i386_avx_state> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_i386_avx_state>(), - 716usize, - concat!("Size of: ", stringify!(__darwin_i386_avx_state)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_i386_avx_state>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_i386_avx_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_reserved) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fcw) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_fcw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fsw) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_fsw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ftw) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_ftw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv1) as usize - ptr as usize }, - 13usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_rsrv1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fop) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_fop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ip) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_ip) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_cs) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_cs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv2) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_rsrv2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_dp) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_dp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ds) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_ds) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv3) as usize - ptr as usize }, - 30usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_rsrv3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsr) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_mxcsr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsrmask) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_mxcsrmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm0) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_stmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm1) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_stmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm2) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_stmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm3) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_stmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm4) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_stmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm5) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_stmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm6) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_stmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm7) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_stmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm0) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_xmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm1) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_xmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm2) as usize - ptr as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_xmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm3) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_xmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm4) as usize - ptr as usize }, - 232usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_xmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm5) as usize - ptr as usize }, - 248usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_xmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm6) as usize - ptr as usize }, - 264usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_xmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm7) as usize - ptr as usize }, - 280usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_xmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv4) as usize - ptr as usize }, - 296usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_rsrv4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved1) as usize - ptr as usize }, - 520usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__avx_reserved1) as usize - ptr as usize }, - 524usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__avx_reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh0) as usize - ptr as usize }, - 588usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_ymmh0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh1) as usize - ptr as usize }, - 604usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_ymmh1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh2) as usize - ptr as usize }, - 620usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_ymmh2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh3) as usize - ptr as usize }, - 636usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_ymmh3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh4) as usize - ptr as usize }, - 652usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_ymmh4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh5) as usize - ptr as usize }, - 668usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_ymmh5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh6) as usize - ptr as usize }, - 684usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_ymmh6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh7) as usize - ptr as usize }, - 700usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx_state), - "::", - stringify!(__fpu_ymmh7) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_i386_avx512_state { - pub __fpu_reserved: [::std::os::raw::c_int; 2usize], - pub __fpu_fcw: __darwin_fp_control, - pub __fpu_fsw: __darwin_fp_status, - pub __fpu_ftw: __uint8_t, - pub __fpu_rsrv1: __uint8_t, - pub __fpu_fop: __uint16_t, - pub __fpu_ip: __uint32_t, - pub __fpu_cs: __uint16_t, - pub __fpu_rsrv2: __uint16_t, - pub __fpu_dp: __uint32_t, - pub __fpu_ds: __uint16_t, - pub __fpu_rsrv3: __uint16_t, - pub __fpu_mxcsr: __uint32_t, - pub __fpu_mxcsrmask: __uint32_t, - pub __fpu_stmm0: __darwin_mmst_reg, - pub __fpu_stmm1: __darwin_mmst_reg, - pub __fpu_stmm2: __darwin_mmst_reg, - pub __fpu_stmm3: __darwin_mmst_reg, - pub __fpu_stmm4: __darwin_mmst_reg, - pub __fpu_stmm5: __darwin_mmst_reg, - pub __fpu_stmm6: __darwin_mmst_reg, - pub __fpu_stmm7: __darwin_mmst_reg, - pub __fpu_xmm0: __darwin_xmm_reg, - pub __fpu_xmm1: __darwin_xmm_reg, - pub __fpu_xmm2: __darwin_xmm_reg, - pub __fpu_xmm3: __darwin_xmm_reg, - pub __fpu_xmm4: __darwin_xmm_reg, - pub __fpu_xmm5: __darwin_xmm_reg, - pub __fpu_xmm6: __darwin_xmm_reg, - pub __fpu_xmm7: __darwin_xmm_reg, - pub __fpu_rsrv4: [::std::os::raw::c_char; 224usize], - pub __fpu_reserved1: ::std::os::raw::c_int, - pub __avx_reserved1: [::std::os::raw::c_char; 64usize], - pub __fpu_ymmh0: __darwin_xmm_reg, - pub __fpu_ymmh1: __darwin_xmm_reg, - pub __fpu_ymmh2: __darwin_xmm_reg, - pub __fpu_ymmh3: __darwin_xmm_reg, - pub __fpu_ymmh4: __darwin_xmm_reg, - pub __fpu_ymmh5: __darwin_xmm_reg, - pub __fpu_ymmh6: __darwin_xmm_reg, - pub __fpu_ymmh7: __darwin_xmm_reg, - pub __fpu_k0: __darwin_opmask_reg, - pub __fpu_k1: __darwin_opmask_reg, - pub __fpu_k2: __darwin_opmask_reg, - pub __fpu_k3: __darwin_opmask_reg, - pub __fpu_k4: __darwin_opmask_reg, - pub __fpu_k5: __darwin_opmask_reg, - pub __fpu_k6: __darwin_opmask_reg, - pub __fpu_k7: __darwin_opmask_reg, - pub __fpu_zmmh0: __darwin_ymm_reg, - pub __fpu_zmmh1: __darwin_ymm_reg, - pub __fpu_zmmh2: __darwin_ymm_reg, - pub __fpu_zmmh3: __darwin_ymm_reg, - pub __fpu_zmmh4: __darwin_ymm_reg, - pub __fpu_zmmh5: __darwin_ymm_reg, - pub __fpu_zmmh6: __darwin_ymm_reg, - pub __fpu_zmmh7: __darwin_ymm_reg, -} -#[test] -fn bindgen_test_layout___darwin_i386_avx512_state() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_i386_avx512_state> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_i386_avx512_state>(), - 1036usize, - concat!("Size of: ", stringify!(__darwin_i386_avx512_state)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_i386_avx512_state>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_i386_avx512_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_reserved) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fcw) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_fcw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fsw) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_fsw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ftw) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_ftw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv1) as usize - ptr as usize }, - 13usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_rsrv1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fop) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_fop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ip) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_ip) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_cs) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_cs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv2) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_rsrv2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_dp) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_dp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ds) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_ds) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv3) as usize - ptr as usize }, - 30usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_rsrv3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsr) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_mxcsr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsrmask) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_mxcsrmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm0) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_stmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm1) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_stmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm2) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_stmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm3) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_stmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm4) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_stmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm5) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_stmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm6) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_stmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm7) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_stmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm0) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_xmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm1) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_xmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm2) as usize - ptr as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_xmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm3) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_xmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm4) as usize - ptr as usize }, - 232usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_xmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm5) as usize - ptr as usize }, - 248usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_xmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm6) as usize - ptr as usize }, - 264usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_xmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm7) as usize - ptr as usize }, - 280usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_xmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv4) as usize - ptr as usize }, - 296usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_rsrv4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved1) as usize - ptr as usize }, - 520usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__avx_reserved1) as usize - ptr as usize }, - 524usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__avx_reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh0) as usize - ptr as usize }, - 588usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_ymmh0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh1) as usize - ptr as usize }, - 604usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_ymmh1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh2) as usize - ptr as usize }, - 620usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_ymmh2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh3) as usize - ptr as usize }, - 636usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_ymmh3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh4) as usize - ptr as usize }, - 652usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_ymmh4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh5) as usize - ptr as usize }, - 668usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_ymmh5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh6) as usize - ptr as usize }, - 684usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_ymmh6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh7) as usize - ptr as usize }, - 700usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_ymmh7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k0) as usize - ptr as usize }, - 716usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_k0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k1) as usize - ptr as usize }, - 724usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_k1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k2) as usize - ptr as usize }, - 732usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_k2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k3) as usize - ptr as usize }, - 740usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_k3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k4) as usize - ptr as usize }, - 748usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_k4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k5) as usize - ptr as usize }, - 756usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_k5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k6) as usize - ptr as usize }, - 764usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_k6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k7) as usize - ptr as usize }, - 772usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_k7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh0) as usize - ptr as usize }, - 780usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_zmmh0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh1) as usize - ptr as usize }, - 812usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_zmmh1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh2) as usize - ptr as usize }, - 844usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_zmmh2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh3) as usize - ptr as usize }, - 876usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_zmmh3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh4) as usize - ptr as usize }, - 908usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_zmmh4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh5) as usize - ptr as usize }, - 940usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_zmmh5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh6) as usize - ptr as usize }, - 972usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_zmmh6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh7) as usize - ptr as usize }, - 1004usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_avx512_state), - "::", - stringify!(__fpu_zmmh7) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_i386_exception_state { - pub __trapno: __uint16_t, - pub __cpu: __uint16_t, - pub __err: __uint32_t, - pub __faultvaddr: __uint32_t, -} -#[test] -fn bindgen_test_layout___darwin_i386_exception_state() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_i386_exception_state> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_i386_exception_state>(), - 12usize, - concat!("Size of: ", stringify!(__darwin_i386_exception_state)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_i386_exception_state>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_i386_exception_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__trapno) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_exception_state), - "::", - stringify!(__trapno) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__cpu) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_exception_state), - "::", - stringify!(__cpu) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__err) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_exception_state), - "::", - stringify!(__err) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__faultvaddr) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_i386_exception_state), - "::", - stringify!(__faultvaddr) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_x86_debug_state32 { - pub __dr0: ::std::os::raw::c_uint, - pub __dr1: ::std::os::raw::c_uint, - pub __dr2: ::std::os::raw::c_uint, - pub __dr3: ::std::os::raw::c_uint, - pub __dr4: ::std::os::raw::c_uint, - pub __dr5: ::std::os::raw::c_uint, - pub __dr6: ::std::os::raw::c_uint, - pub __dr7: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout___darwin_x86_debug_state32() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_x86_debug_state32> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_x86_debug_state32>(), - 32usize, - concat!("Size of: ", stringify!(__darwin_x86_debug_state32)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_x86_debug_state32>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_x86_debug_state32)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr0) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state32), - "::", - stringify!(__dr0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr1) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state32), - "::", - stringify!(__dr1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr2) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state32), - "::", - stringify!(__dr2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr3) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state32), - "::", - stringify!(__dr3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr4) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state32), - "::", - stringify!(__dr4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr5) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state32), - "::", - stringify!(__dr5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr6) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state32), - "::", - stringify!(__dr6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr7) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state32), - "::", - stringify!(__dr7) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __x86_instruction_state { - pub __insn_stream_valid_bytes: ::std::os::raw::c_int, - pub __insn_offset: ::std::os::raw::c_int, - pub __out_of_synch: ::std::os::raw::c_int, - pub __insn_bytes: [__uint8_t; 2380usize], - pub __insn_cacheline: [__uint8_t; 64usize], -} -#[test] -fn bindgen_test_layout___x86_instruction_state() { - const UNINIT: ::std::mem::MaybeUninit<__x86_instruction_state> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__x86_instruction_state>(), - 2456usize, - concat!("Size of: ", stringify!(__x86_instruction_state)) - ); - assert_eq!( - ::std::mem::align_of::<__x86_instruction_state>(), - 4usize, - concat!("Alignment of ", stringify!(__x86_instruction_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__insn_stream_valid_bytes) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__x86_instruction_state), - "::", - stringify!(__insn_stream_valid_bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__insn_offset) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__x86_instruction_state), - "::", - stringify!(__insn_offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__out_of_synch) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__x86_instruction_state), - "::", - stringify!(__out_of_synch) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__insn_bytes) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__x86_instruction_state), - "::", - stringify!(__insn_bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__insn_cacheline) as usize - ptr as usize }, - 2392usize, - concat!( - "Offset of field: ", - stringify!(__x86_instruction_state), - "::", - stringify!(__insn_cacheline) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __last_branch_record { - pub __from_ip: __uint64_t, - pub __to_ip: __uint64_t, - pub _bitfield_align_1: [u16; 0], - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>, - pub __bindgen_padding_0: u32, -} -#[test] -fn bindgen_test_layout___last_branch_record() { - const UNINIT: ::std::mem::MaybeUninit<__last_branch_record> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__last_branch_record>(), - 24usize, - concat!("Size of: ", stringify!(__last_branch_record)) - ); - assert_eq!( - ::std::mem::align_of::<__last_branch_record>(), - 8usize, - concat!("Alignment of ", stringify!(__last_branch_record)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__from_ip) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__last_branch_record), - "::", - stringify!(__from_ip) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__to_ip) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__last_branch_record), - "::", - stringify!(__to_ip) - ) - ); -} -impl __last_branch_record { - #[inline] - pub fn __mispredict(&self) -> __uint32_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) } - } - - #[inline] - pub fn set___mispredict(&mut self, val: __uint32_t) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(0usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __tsx_abort(&self) -> __uint32_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) } - } - - #[inline] - pub fn set___tsx_abort(&mut self, val: __uint32_t) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(1usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __in_tsx(&self) -> __uint32_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) } - } - - #[inline] - pub fn set___in_tsx(&mut self, val: __uint32_t) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(2usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __cycle_count(&self) -> __uint32_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 16u8) as u32) } - } - - #[inline] - pub fn set___cycle_count(&mut self, val: __uint32_t) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(3usize, 16u8, val as u64) - } - } - - #[inline] - pub fn __reserved(&self) -> __uint32_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(19usize, 13u8) as u32) } - } - - #[inline] - pub fn set___reserved(&mut self, val: __uint32_t) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(19usize, 13u8, val as u64) - } - } - - #[inline] - pub fn new_bitfield_1( - __mispredict: __uint32_t, - __tsx_abort: __uint32_t, - __in_tsx: __uint32_t, - __cycle_count: __uint32_t, - __reserved: __uint32_t, - ) -> __BindgenBitfieldUnit<[u8; 4usize]> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default(); - __bindgen_bitfield_unit.set(0usize, 1u8, { - let __mispredict: u32 = unsafe { ::std::mem::transmute(__mispredict) }; - __mispredict as u64 - }); - __bindgen_bitfield_unit.set(1usize, 1u8, { - let __tsx_abort: u32 = unsafe { ::std::mem::transmute(__tsx_abort) }; - __tsx_abort as u64 - }); - __bindgen_bitfield_unit.set(2usize, 1u8, { - let __in_tsx: u32 = unsafe { ::std::mem::transmute(__in_tsx) }; - __in_tsx as u64 - }); - __bindgen_bitfield_unit.set(3usize, 16u8, { - let __cycle_count: u32 = unsafe { ::std::mem::transmute(__cycle_count) }; - __cycle_count as u64 - }); - __bindgen_bitfield_unit.set(19usize, 13u8, { - let __reserved: u32 = unsafe { ::std::mem::transmute(__reserved) }; - __reserved as u64 - }); - __bindgen_bitfield_unit - } -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __last_branch_state { - pub __lbr_count: ::std::os::raw::c_int, - pub _bitfield_align_1: [u32; 0], - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>, - pub __lbrs: [__last_branch_record; 32usize], -} -#[test] -fn bindgen_test_layout___last_branch_state() { - const UNINIT: ::std::mem::MaybeUninit<__last_branch_state> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__last_branch_state>(), - 776usize, - concat!("Size of: ", stringify!(__last_branch_state)) - ); - assert_eq!( - ::std::mem::align_of::<__last_branch_state>(), - 8usize, - concat!("Alignment of ", stringify!(__last_branch_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__lbr_count) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__last_branch_state), - "::", - stringify!(__lbr_count) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__lbrs) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__last_branch_state), - "::", - stringify!(__lbrs) - ) - ); -} -impl __last_branch_state { - #[inline] - pub fn __lbr_supported_tsx(&self) -> __uint32_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) } - } - - #[inline] - pub fn set___lbr_supported_tsx(&mut self, val: __uint32_t) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(0usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __lbr_supported_cycle_count(&self) -> __uint32_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) } - } - - #[inline] - pub fn set___lbr_supported_cycle_count(&mut self, val: __uint32_t) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(1usize, 1u8, val as u64) - } - } - - #[inline] - pub fn __reserved(&self) -> __uint32_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 30u8) as u32) } - } - - #[inline] - pub fn set___reserved(&mut self, val: __uint32_t) { - unsafe { - let val: u32 = ::std::mem::transmute(val); - self._bitfield_1.set(2usize, 30u8, val as u64) - } - } - - #[inline] - pub fn new_bitfield_1( - __lbr_supported_tsx: __uint32_t, - __lbr_supported_cycle_count: __uint32_t, - __reserved: __uint32_t, - ) -> __BindgenBitfieldUnit<[u8; 4usize]> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default(); - __bindgen_bitfield_unit.set(0usize, 1u8, { - let __lbr_supported_tsx: u32 = unsafe { ::std::mem::transmute(__lbr_supported_tsx) }; - __lbr_supported_tsx as u64 - }); - __bindgen_bitfield_unit.set(1usize, 1u8, { - let __lbr_supported_cycle_count: u32 = unsafe { ::std::mem::transmute(__lbr_supported_cycle_count) }; - __lbr_supported_cycle_count as u64 - }); - __bindgen_bitfield_unit.set(2usize, 30u8, { - let __reserved: u32 = unsafe { ::std::mem::transmute(__reserved) }; - __reserved as u64 - }); - __bindgen_bitfield_unit - } -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __x86_pagein_state { - pub __pagein_error: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___x86_pagein_state() { - const UNINIT: ::std::mem::MaybeUninit<__x86_pagein_state> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__x86_pagein_state>(), - 4usize, - concat!("Size of: ", stringify!(__x86_pagein_state)) - ); - assert_eq!( - ::std::mem::align_of::<__x86_pagein_state>(), - 4usize, - concat!("Alignment of ", stringify!(__x86_pagein_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__pagein_error) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__x86_pagein_state), - "::", - stringify!(__pagein_error) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_x86_thread_state64 { - pub __rax: __uint64_t, - pub __rbx: __uint64_t, - pub __rcx: __uint64_t, - pub __rdx: __uint64_t, - pub __rdi: __uint64_t, - pub __rsi: __uint64_t, - pub __rbp: __uint64_t, - pub __rsp: __uint64_t, - pub __r8: __uint64_t, - pub __r9: __uint64_t, - pub __r10: __uint64_t, - pub __r11: __uint64_t, - pub __r12: __uint64_t, - pub __r13: __uint64_t, - pub __r14: __uint64_t, - pub __r15: __uint64_t, - pub __rip: __uint64_t, - pub __rflags: __uint64_t, - pub __cs: __uint64_t, - pub __fs: __uint64_t, - pub __gs: __uint64_t, -} -#[test] -fn bindgen_test_layout___darwin_x86_thread_state64() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_x86_thread_state64> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_x86_thread_state64>(), - 168usize, - concat!("Size of: ", stringify!(__darwin_x86_thread_state64)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_x86_thread_state64>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_x86_thread_state64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__rax) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__rax) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__rbx) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__rbx) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__rcx) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__rcx) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__rdx) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__rdx) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__rdi) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__rdi) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__rsi) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__rsi) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__rbp) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__rbp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__rsp) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__rsp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__r8) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__r8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__r9) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__r9) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__r10) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__r10) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__r11) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__r11) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__r12) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__r12) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__r13) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__r13) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__r14) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__r14) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__r15) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__r15) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__rip) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__rip) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__rflags) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__rflags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__cs) as usize - ptr as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__cs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fs) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__fs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__gs) as usize - ptr as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_state64), - "::", - stringify!(__gs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_x86_thread_full_state64 { - pub __ss64: __darwin_x86_thread_state64, - pub __ds: __uint64_t, - pub __es: __uint64_t, - pub __ss: __uint64_t, - pub __gsbase: __uint64_t, -} -#[test] -fn bindgen_test_layout___darwin_x86_thread_full_state64() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_x86_thread_full_state64> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_x86_thread_full_state64>(), - 200usize, - concat!("Size of: ", stringify!(__darwin_x86_thread_full_state64)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_x86_thread_full_state64>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_x86_thread_full_state64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss64) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_full_state64), - "::", - stringify!(__ss64) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ds) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_full_state64), - "::", - stringify!(__ds) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__es) as usize - ptr as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_full_state64), - "::", - stringify!(__es) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_full_state64), - "::", - stringify!(__ss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__gsbase) as usize - ptr as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_thread_full_state64), - "::", - stringify!(__gsbase) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_x86_float_state64 { - pub __fpu_reserved: [::std::os::raw::c_int; 2usize], - pub __fpu_fcw: __darwin_fp_control, - pub __fpu_fsw: __darwin_fp_status, - pub __fpu_ftw: __uint8_t, - pub __fpu_rsrv1: __uint8_t, - pub __fpu_fop: __uint16_t, - pub __fpu_ip: __uint32_t, - pub __fpu_cs: __uint16_t, - pub __fpu_rsrv2: __uint16_t, - pub __fpu_dp: __uint32_t, - pub __fpu_ds: __uint16_t, - pub __fpu_rsrv3: __uint16_t, - pub __fpu_mxcsr: __uint32_t, - pub __fpu_mxcsrmask: __uint32_t, - pub __fpu_stmm0: __darwin_mmst_reg, - pub __fpu_stmm1: __darwin_mmst_reg, - pub __fpu_stmm2: __darwin_mmst_reg, - pub __fpu_stmm3: __darwin_mmst_reg, - pub __fpu_stmm4: __darwin_mmst_reg, - pub __fpu_stmm5: __darwin_mmst_reg, - pub __fpu_stmm6: __darwin_mmst_reg, - pub __fpu_stmm7: __darwin_mmst_reg, - pub __fpu_xmm0: __darwin_xmm_reg, - pub __fpu_xmm1: __darwin_xmm_reg, - pub __fpu_xmm2: __darwin_xmm_reg, - pub __fpu_xmm3: __darwin_xmm_reg, - pub __fpu_xmm4: __darwin_xmm_reg, - pub __fpu_xmm5: __darwin_xmm_reg, - pub __fpu_xmm6: __darwin_xmm_reg, - pub __fpu_xmm7: __darwin_xmm_reg, - pub __fpu_xmm8: __darwin_xmm_reg, - pub __fpu_xmm9: __darwin_xmm_reg, - pub __fpu_xmm10: __darwin_xmm_reg, - pub __fpu_xmm11: __darwin_xmm_reg, - pub __fpu_xmm12: __darwin_xmm_reg, - pub __fpu_xmm13: __darwin_xmm_reg, - pub __fpu_xmm14: __darwin_xmm_reg, - pub __fpu_xmm15: __darwin_xmm_reg, - pub __fpu_rsrv4: [::std::os::raw::c_char; 96usize], - pub __fpu_reserved1: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___darwin_x86_float_state64() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_x86_float_state64> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_x86_float_state64>(), - 524usize, - concat!("Size of: ", stringify!(__darwin_x86_float_state64)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_x86_float_state64>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_x86_float_state64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_reserved) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fcw) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_fcw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fsw) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_fsw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ftw) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_ftw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv1) as usize - ptr as usize }, - 13usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_rsrv1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fop) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_fop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ip) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_ip) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_cs) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_cs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv2) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_rsrv2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_dp) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_dp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ds) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_ds) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv3) as usize - ptr as usize }, - 30usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_rsrv3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsr) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_mxcsr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsrmask) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_mxcsrmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm0) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_stmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm1) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_stmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm2) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_stmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm3) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_stmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm4) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_stmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm5) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_stmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm6) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_stmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm7) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_stmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm0) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm1) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm2) as usize - ptr as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm3) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm4) as usize - ptr as usize }, - 232usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm5) as usize - ptr as usize }, - 248usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm6) as usize - ptr as usize }, - 264usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm7) as usize - ptr as usize }, - 280usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm8) as usize - ptr as usize }, - 296usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm9) as usize - ptr as usize }, - 312usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm9) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm10) as usize - ptr as usize }, - 328usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm10) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm11) as usize - ptr as usize }, - 344usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm11) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm12) as usize - ptr as usize }, - 360usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm12) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm13) as usize - ptr as usize }, - 376usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm13) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm14) as usize - ptr as usize }, - 392usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm14) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm15) as usize - ptr as usize }, - 408usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_xmm15) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv4) as usize - ptr as usize }, - 424usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_rsrv4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved1) as usize - ptr as usize }, - 520usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_float_state64), - "::", - stringify!(__fpu_reserved1) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_x86_avx_state64 { - pub __fpu_reserved: [::std::os::raw::c_int; 2usize], - pub __fpu_fcw: __darwin_fp_control, - pub __fpu_fsw: __darwin_fp_status, - pub __fpu_ftw: __uint8_t, - pub __fpu_rsrv1: __uint8_t, - pub __fpu_fop: __uint16_t, - pub __fpu_ip: __uint32_t, - pub __fpu_cs: __uint16_t, - pub __fpu_rsrv2: __uint16_t, - pub __fpu_dp: __uint32_t, - pub __fpu_ds: __uint16_t, - pub __fpu_rsrv3: __uint16_t, - pub __fpu_mxcsr: __uint32_t, - pub __fpu_mxcsrmask: __uint32_t, - pub __fpu_stmm0: __darwin_mmst_reg, - pub __fpu_stmm1: __darwin_mmst_reg, - pub __fpu_stmm2: __darwin_mmst_reg, - pub __fpu_stmm3: __darwin_mmst_reg, - pub __fpu_stmm4: __darwin_mmst_reg, - pub __fpu_stmm5: __darwin_mmst_reg, - pub __fpu_stmm6: __darwin_mmst_reg, - pub __fpu_stmm7: __darwin_mmst_reg, - pub __fpu_xmm0: __darwin_xmm_reg, - pub __fpu_xmm1: __darwin_xmm_reg, - pub __fpu_xmm2: __darwin_xmm_reg, - pub __fpu_xmm3: __darwin_xmm_reg, - pub __fpu_xmm4: __darwin_xmm_reg, - pub __fpu_xmm5: __darwin_xmm_reg, - pub __fpu_xmm6: __darwin_xmm_reg, - pub __fpu_xmm7: __darwin_xmm_reg, - pub __fpu_xmm8: __darwin_xmm_reg, - pub __fpu_xmm9: __darwin_xmm_reg, - pub __fpu_xmm10: __darwin_xmm_reg, - pub __fpu_xmm11: __darwin_xmm_reg, - pub __fpu_xmm12: __darwin_xmm_reg, - pub __fpu_xmm13: __darwin_xmm_reg, - pub __fpu_xmm14: __darwin_xmm_reg, - pub __fpu_xmm15: __darwin_xmm_reg, - pub __fpu_rsrv4: [::std::os::raw::c_char; 96usize], - pub __fpu_reserved1: ::std::os::raw::c_int, - pub __avx_reserved1: [::std::os::raw::c_char; 64usize], - pub __fpu_ymmh0: __darwin_xmm_reg, - pub __fpu_ymmh1: __darwin_xmm_reg, - pub __fpu_ymmh2: __darwin_xmm_reg, - pub __fpu_ymmh3: __darwin_xmm_reg, - pub __fpu_ymmh4: __darwin_xmm_reg, - pub __fpu_ymmh5: __darwin_xmm_reg, - pub __fpu_ymmh6: __darwin_xmm_reg, - pub __fpu_ymmh7: __darwin_xmm_reg, - pub __fpu_ymmh8: __darwin_xmm_reg, - pub __fpu_ymmh9: __darwin_xmm_reg, - pub __fpu_ymmh10: __darwin_xmm_reg, - pub __fpu_ymmh11: __darwin_xmm_reg, - pub __fpu_ymmh12: __darwin_xmm_reg, - pub __fpu_ymmh13: __darwin_xmm_reg, - pub __fpu_ymmh14: __darwin_xmm_reg, - pub __fpu_ymmh15: __darwin_xmm_reg, -} -#[test] -fn bindgen_test_layout___darwin_x86_avx_state64() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_x86_avx_state64> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_x86_avx_state64>(), - 844usize, - concat!("Size of: ", stringify!(__darwin_x86_avx_state64)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_x86_avx_state64>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_x86_avx_state64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_reserved) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fcw) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_fcw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fsw) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_fsw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ftw) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ftw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv1) as usize - ptr as usize }, - 13usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_rsrv1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fop) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_fop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ip) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ip) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_cs) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_cs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv2) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_rsrv2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_dp) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_dp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ds) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ds) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv3) as usize - ptr as usize }, - 30usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_rsrv3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsr) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_mxcsr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsrmask) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_mxcsrmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm0) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_stmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm1) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_stmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm2) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_stmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm3) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_stmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm4) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_stmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm5) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_stmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm6) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_stmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm7) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_stmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm0) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm1) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm2) as usize - ptr as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm3) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm4) as usize - ptr as usize }, - 232usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm5) as usize - ptr as usize }, - 248usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm6) as usize - ptr as usize }, - 264usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm7) as usize - ptr as usize }, - 280usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm8) as usize - ptr as usize }, - 296usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm9) as usize - ptr as usize }, - 312usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm9) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm10) as usize - ptr as usize }, - 328usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm10) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm11) as usize - ptr as usize }, - 344usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm11) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm12) as usize - ptr as usize }, - 360usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm12) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm13) as usize - ptr as usize }, - 376usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm13) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm14) as usize - ptr as usize }, - 392usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm14) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm15) as usize - ptr as usize }, - 408usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_xmm15) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv4) as usize - ptr as usize }, - 424usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_rsrv4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved1) as usize - ptr as usize }, - 520usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__avx_reserved1) as usize - ptr as usize }, - 524usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__avx_reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh0) as usize - ptr as usize }, - 588usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh1) as usize - ptr as usize }, - 604usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh2) as usize - ptr as usize }, - 620usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh3) as usize - ptr as usize }, - 636usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh4) as usize - ptr as usize }, - 652usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh5) as usize - ptr as usize }, - 668usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh6) as usize - ptr as usize }, - 684usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh7) as usize - ptr as usize }, - 700usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh8) as usize - ptr as usize }, - 716usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh9) as usize - ptr as usize }, - 732usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh9) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh10) as usize - ptr as usize }, - 748usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh10) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh11) as usize - ptr as usize }, - 764usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh11) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh12) as usize - ptr as usize }, - 780usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh12) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh13) as usize - ptr as usize }, - 796usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh13) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh14) as usize - ptr as usize }, - 812usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh14) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh15) as usize - ptr as usize }, - 828usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx_state64), - "::", - stringify!(__fpu_ymmh15) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_x86_avx512_state64 { - pub __fpu_reserved: [::std::os::raw::c_int; 2usize], - pub __fpu_fcw: __darwin_fp_control, - pub __fpu_fsw: __darwin_fp_status, - pub __fpu_ftw: __uint8_t, - pub __fpu_rsrv1: __uint8_t, - pub __fpu_fop: __uint16_t, - pub __fpu_ip: __uint32_t, - pub __fpu_cs: __uint16_t, - pub __fpu_rsrv2: __uint16_t, - pub __fpu_dp: __uint32_t, - pub __fpu_ds: __uint16_t, - pub __fpu_rsrv3: __uint16_t, - pub __fpu_mxcsr: __uint32_t, - pub __fpu_mxcsrmask: __uint32_t, - pub __fpu_stmm0: __darwin_mmst_reg, - pub __fpu_stmm1: __darwin_mmst_reg, - pub __fpu_stmm2: __darwin_mmst_reg, - pub __fpu_stmm3: __darwin_mmst_reg, - pub __fpu_stmm4: __darwin_mmst_reg, - pub __fpu_stmm5: __darwin_mmst_reg, - pub __fpu_stmm6: __darwin_mmst_reg, - pub __fpu_stmm7: __darwin_mmst_reg, - pub __fpu_xmm0: __darwin_xmm_reg, - pub __fpu_xmm1: __darwin_xmm_reg, - pub __fpu_xmm2: __darwin_xmm_reg, - pub __fpu_xmm3: __darwin_xmm_reg, - pub __fpu_xmm4: __darwin_xmm_reg, - pub __fpu_xmm5: __darwin_xmm_reg, - pub __fpu_xmm6: __darwin_xmm_reg, - pub __fpu_xmm7: __darwin_xmm_reg, - pub __fpu_xmm8: __darwin_xmm_reg, - pub __fpu_xmm9: __darwin_xmm_reg, - pub __fpu_xmm10: __darwin_xmm_reg, - pub __fpu_xmm11: __darwin_xmm_reg, - pub __fpu_xmm12: __darwin_xmm_reg, - pub __fpu_xmm13: __darwin_xmm_reg, - pub __fpu_xmm14: __darwin_xmm_reg, - pub __fpu_xmm15: __darwin_xmm_reg, - pub __fpu_rsrv4: [::std::os::raw::c_char; 96usize], - pub __fpu_reserved1: ::std::os::raw::c_int, - pub __avx_reserved1: [::std::os::raw::c_char; 64usize], - pub __fpu_ymmh0: __darwin_xmm_reg, - pub __fpu_ymmh1: __darwin_xmm_reg, - pub __fpu_ymmh2: __darwin_xmm_reg, - pub __fpu_ymmh3: __darwin_xmm_reg, - pub __fpu_ymmh4: __darwin_xmm_reg, - pub __fpu_ymmh5: __darwin_xmm_reg, - pub __fpu_ymmh6: __darwin_xmm_reg, - pub __fpu_ymmh7: __darwin_xmm_reg, - pub __fpu_ymmh8: __darwin_xmm_reg, - pub __fpu_ymmh9: __darwin_xmm_reg, - pub __fpu_ymmh10: __darwin_xmm_reg, - pub __fpu_ymmh11: __darwin_xmm_reg, - pub __fpu_ymmh12: __darwin_xmm_reg, - pub __fpu_ymmh13: __darwin_xmm_reg, - pub __fpu_ymmh14: __darwin_xmm_reg, - pub __fpu_ymmh15: __darwin_xmm_reg, - pub __fpu_k0: __darwin_opmask_reg, - pub __fpu_k1: __darwin_opmask_reg, - pub __fpu_k2: __darwin_opmask_reg, - pub __fpu_k3: __darwin_opmask_reg, - pub __fpu_k4: __darwin_opmask_reg, - pub __fpu_k5: __darwin_opmask_reg, - pub __fpu_k6: __darwin_opmask_reg, - pub __fpu_k7: __darwin_opmask_reg, - pub __fpu_zmmh0: __darwin_ymm_reg, - pub __fpu_zmmh1: __darwin_ymm_reg, - pub __fpu_zmmh2: __darwin_ymm_reg, - pub __fpu_zmmh3: __darwin_ymm_reg, - pub __fpu_zmmh4: __darwin_ymm_reg, - pub __fpu_zmmh5: __darwin_ymm_reg, - pub __fpu_zmmh6: __darwin_ymm_reg, - pub __fpu_zmmh7: __darwin_ymm_reg, - pub __fpu_zmmh8: __darwin_ymm_reg, - pub __fpu_zmmh9: __darwin_ymm_reg, - pub __fpu_zmmh10: __darwin_ymm_reg, - pub __fpu_zmmh11: __darwin_ymm_reg, - pub __fpu_zmmh12: __darwin_ymm_reg, - pub __fpu_zmmh13: __darwin_ymm_reg, - pub __fpu_zmmh14: __darwin_ymm_reg, - pub __fpu_zmmh15: __darwin_ymm_reg, - pub __fpu_zmm16: __darwin_zmm_reg, - pub __fpu_zmm17: __darwin_zmm_reg, - pub __fpu_zmm18: __darwin_zmm_reg, - pub __fpu_zmm19: __darwin_zmm_reg, - pub __fpu_zmm20: __darwin_zmm_reg, - pub __fpu_zmm21: __darwin_zmm_reg, - pub __fpu_zmm22: __darwin_zmm_reg, - pub __fpu_zmm23: __darwin_zmm_reg, - pub __fpu_zmm24: __darwin_zmm_reg, - pub __fpu_zmm25: __darwin_zmm_reg, - pub __fpu_zmm26: __darwin_zmm_reg, - pub __fpu_zmm27: __darwin_zmm_reg, - pub __fpu_zmm28: __darwin_zmm_reg, - pub __fpu_zmm29: __darwin_zmm_reg, - pub __fpu_zmm30: __darwin_zmm_reg, - pub __fpu_zmm31: __darwin_zmm_reg, -} -#[test] -fn bindgen_test_layout___darwin_x86_avx512_state64() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_x86_avx512_state64> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_x86_avx512_state64>(), - 2444usize, - concat!("Size of: ", stringify!(__darwin_x86_avx512_state64)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_x86_avx512_state64>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_x86_avx512_state64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_reserved) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fcw) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_fcw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fsw) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_fsw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ftw) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ftw) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv1) as usize - ptr as usize }, - 13usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_rsrv1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_fop) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_fop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ip) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ip) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_cs) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_cs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv2) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_rsrv2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_dp) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_dp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ds) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ds) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv3) as usize - ptr as usize }, - 30usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_rsrv3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsr) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_mxcsr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_mxcsrmask) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_mxcsrmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm0) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_stmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm1) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_stmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm2) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_stmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm3) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_stmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm4) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_stmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm5) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_stmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm6) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_stmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_stmm7) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_stmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm0) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm1) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm2) as usize - ptr as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm3) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm4) as usize - ptr as usize }, - 232usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm5) as usize - ptr as usize }, - 248usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm6) as usize - ptr as usize }, - 264usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm7) as usize - ptr as usize }, - 280usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm8) as usize - ptr as usize }, - 296usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm9) as usize - ptr as usize }, - 312usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm9) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm10) as usize - ptr as usize }, - 328usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm10) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm11) as usize - ptr as usize }, - 344usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm11) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm12) as usize - ptr as usize }, - 360usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm12) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm13) as usize - ptr as usize }, - 376usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm13) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm14) as usize - ptr as usize }, - 392usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm14) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_xmm15) as usize - ptr as usize }, - 408usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_xmm15) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_rsrv4) as usize - ptr as usize }, - 424usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_rsrv4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_reserved1) as usize - ptr as usize }, - 520usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__avx_reserved1) as usize - ptr as usize }, - 524usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__avx_reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh0) as usize - ptr as usize }, - 588usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh1) as usize - ptr as usize }, - 604usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh2) as usize - ptr as usize }, - 620usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh3) as usize - ptr as usize }, - 636usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh4) as usize - ptr as usize }, - 652usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh5) as usize - ptr as usize }, - 668usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh6) as usize - ptr as usize }, - 684usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh7) as usize - ptr as usize }, - 700usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh8) as usize - ptr as usize }, - 716usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh9) as usize - ptr as usize }, - 732usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh9) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh10) as usize - ptr as usize }, - 748usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh10) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh11) as usize - ptr as usize }, - 764usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh11) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh12) as usize - ptr as usize }, - 780usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh12) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh13) as usize - ptr as usize }, - 796usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh13) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh14) as usize - ptr as usize }, - 812usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh14) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_ymmh15) as usize - ptr as usize }, - 828usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_ymmh15) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k0) as usize - ptr as usize }, - 844usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_k0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k1) as usize - ptr as usize }, - 852usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_k1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k2) as usize - ptr as usize }, - 860usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_k2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k3) as usize - ptr as usize }, - 868usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_k3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k4) as usize - ptr as usize }, - 876usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_k4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k5) as usize - ptr as usize }, - 884usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_k5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k6) as usize - ptr as usize }, - 892usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_k6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_k7) as usize - ptr as usize }, - 900usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_k7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh0) as usize - ptr as usize }, - 908usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh1) as usize - ptr as usize }, - 940usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh2) as usize - ptr as usize }, - 972usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh3) as usize - ptr as usize }, - 1004usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh4) as usize - ptr as usize }, - 1036usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh5) as usize - ptr as usize }, - 1068usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh6) as usize - ptr as usize }, - 1100usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh7) as usize - ptr as usize }, - 1132usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh7) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh8) as usize - ptr as usize }, - 1164usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh9) as usize - ptr as usize }, - 1196usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh9) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh10) as usize - ptr as usize }, - 1228usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh10) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh11) as usize - ptr as usize }, - 1260usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh11) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh12) as usize - ptr as usize }, - 1292usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh12) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh13) as usize - ptr as usize }, - 1324usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh13) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh14) as usize - ptr as usize }, - 1356usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh14) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmmh15) as usize - ptr as usize }, - 1388usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmmh15) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm16) as usize - ptr as usize }, - 1420usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm16) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm17) as usize - ptr as usize }, - 1484usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm17) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm18) as usize - ptr as usize }, - 1548usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm18) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm19) as usize - ptr as usize }, - 1612usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm19) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm20) as usize - ptr as usize }, - 1676usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm20) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm21) as usize - ptr as usize }, - 1740usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm21) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm22) as usize - ptr as usize }, - 1804usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm22) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm23) as usize - ptr as usize }, - 1868usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm23) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm24) as usize - ptr as usize }, - 1932usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm24) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm25) as usize - ptr as usize }, - 1996usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm25) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm26) as usize - ptr as usize }, - 2060usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm26) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm27) as usize - ptr as usize }, - 2124usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm27) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm28) as usize - ptr as usize }, - 2188usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm28) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm29) as usize - ptr as usize }, - 2252usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm29) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm30) as usize - ptr as usize }, - 2316usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm30) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fpu_zmm31) as usize - ptr as usize }, - 2380usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_avx512_state64), - "::", - stringify!(__fpu_zmm31) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_x86_exception_state64 { - pub __trapno: __uint16_t, - pub __cpu: __uint16_t, - pub __err: __uint32_t, - pub __faultvaddr: __uint64_t, -} -#[test] -fn bindgen_test_layout___darwin_x86_exception_state64() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_x86_exception_state64> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_x86_exception_state64>(), - 16usize, - concat!("Size of: ", stringify!(__darwin_x86_exception_state64)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_x86_exception_state64>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_x86_exception_state64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__trapno) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_exception_state64), - "::", - stringify!(__trapno) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__cpu) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_exception_state64), - "::", - stringify!(__cpu) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__err) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_exception_state64), - "::", - stringify!(__err) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__faultvaddr) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_exception_state64), - "::", - stringify!(__faultvaddr) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_x86_debug_state64 { - pub __dr0: __uint64_t, - pub __dr1: __uint64_t, - pub __dr2: __uint64_t, - pub __dr3: __uint64_t, - pub __dr4: __uint64_t, - pub __dr5: __uint64_t, - pub __dr6: __uint64_t, - pub __dr7: __uint64_t, -} -#[test] -fn bindgen_test_layout___darwin_x86_debug_state64() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_x86_debug_state64> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_x86_debug_state64>(), - 64usize, - concat!("Size of: ", stringify!(__darwin_x86_debug_state64)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_x86_debug_state64>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_x86_debug_state64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr0) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state64), - "::", - stringify!(__dr0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr1) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state64), - "::", - stringify!(__dr1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr2) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state64), - "::", - stringify!(__dr2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr3) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state64), - "::", - stringify!(__dr3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr4) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state64), - "::", - stringify!(__dr4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr5) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state64), - "::", - stringify!(__dr5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr6) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state64), - "::", - stringify!(__dr6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__dr7) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_debug_state64), - "::", - stringify!(__dr7) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_x86_cpmu_state64 { - pub __ctrs: [__uint64_t; 16usize], -} -#[test] -fn bindgen_test_layout___darwin_x86_cpmu_state64() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_x86_cpmu_state64> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_x86_cpmu_state64>(), - 128usize, - concat!("Size of: ", stringify!(__darwin_x86_cpmu_state64)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_x86_cpmu_state64>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_x86_cpmu_state64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ctrs) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_x86_cpmu_state64), - "::", - stringify!(__ctrs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_mcontext32 { - pub __es: __darwin_i386_exception_state, - pub __ss: __darwin_i386_thread_state, - pub __fs: __darwin_i386_float_state, -} -#[test] -fn bindgen_test_layout___darwin_mcontext32() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_mcontext32> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_mcontext32>(), - 600usize, - concat!("Size of: ", stringify!(__darwin_mcontext32)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_mcontext32>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_mcontext32)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__es) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext32), - "::", - stringify!(__es) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext32), - "::", - stringify!(__ss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fs) as usize - ptr as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext32), - "::", - stringify!(__fs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_mcontext_avx32 { - pub __es: __darwin_i386_exception_state, - pub __ss: __darwin_i386_thread_state, - pub __fs: __darwin_i386_avx_state, -} -#[test] -fn bindgen_test_layout___darwin_mcontext_avx32() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_mcontext_avx32> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_mcontext_avx32>(), - 792usize, - concat!("Size of: ", stringify!(__darwin_mcontext_avx32)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_mcontext_avx32>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_mcontext_avx32)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__es) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx32), - "::", - stringify!(__es) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx32), - "::", - stringify!(__ss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fs) as usize - ptr as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx32), - "::", - stringify!(__fs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_mcontext_avx512_32 { - pub __es: __darwin_i386_exception_state, - pub __ss: __darwin_i386_thread_state, - pub __fs: __darwin_i386_avx512_state, -} -#[test] -fn bindgen_test_layout___darwin_mcontext_avx512_32() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_mcontext_avx512_32> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_mcontext_avx512_32>(), - 1112usize, - concat!("Size of: ", stringify!(__darwin_mcontext_avx512_32)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_mcontext_avx512_32>(), - 4usize, - concat!("Alignment of ", stringify!(__darwin_mcontext_avx512_32)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__es) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx512_32), - "::", - stringify!(__es) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx512_32), - "::", - stringify!(__ss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fs) as usize - ptr as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx512_32), - "::", - stringify!(__fs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_mcontext64 { - pub __es: __darwin_x86_exception_state64, - pub __ss: __darwin_x86_thread_state64, - pub __fs: __darwin_x86_float_state64, -} -#[test] -fn bindgen_test_layout___darwin_mcontext64() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_mcontext64> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_mcontext64>(), - 712usize, - concat!("Size of: ", stringify!(__darwin_mcontext64)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_mcontext64>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_mcontext64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__es) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext64), - "::", - stringify!(__es) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext64), - "::", - stringify!(__ss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fs) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext64), - "::", - stringify!(__fs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_mcontext64_full { - pub __es: __darwin_x86_exception_state64, - pub __ss: __darwin_x86_thread_full_state64, - pub __fs: __darwin_x86_float_state64, -} -#[test] -fn bindgen_test_layout___darwin_mcontext64_full() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_mcontext64_full> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_mcontext64_full>(), - 744usize, - concat!("Size of: ", stringify!(__darwin_mcontext64_full)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_mcontext64_full>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_mcontext64_full)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__es) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext64_full), - "::", - stringify!(__es) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext64_full), - "::", - stringify!(__ss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fs) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext64_full), - "::", - stringify!(__fs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_mcontext_avx64 { - pub __es: __darwin_x86_exception_state64, - pub __ss: __darwin_x86_thread_state64, - pub __fs: __darwin_x86_avx_state64, -} -#[test] -fn bindgen_test_layout___darwin_mcontext_avx64() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_mcontext_avx64> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_mcontext_avx64>(), - 1032usize, - concat!("Size of: ", stringify!(__darwin_mcontext_avx64)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_mcontext_avx64>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_mcontext_avx64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__es) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx64), - "::", - stringify!(__es) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx64), - "::", - stringify!(__ss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fs) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx64), - "::", - stringify!(__fs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_mcontext_avx64_full { - pub __es: __darwin_x86_exception_state64, - pub __ss: __darwin_x86_thread_full_state64, - pub __fs: __darwin_x86_avx_state64, -} -#[test] -fn bindgen_test_layout___darwin_mcontext_avx64_full() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_mcontext_avx64_full> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_mcontext_avx64_full>(), - 1064usize, - concat!("Size of: ", stringify!(__darwin_mcontext_avx64_full)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_mcontext_avx64_full>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_mcontext_avx64_full)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__es) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx64_full), - "::", - stringify!(__es) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx64_full), - "::", - stringify!(__ss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fs) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx64_full), - "::", - stringify!(__fs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_mcontext_avx512_64 { - pub __es: __darwin_x86_exception_state64, - pub __ss: __darwin_x86_thread_state64, - pub __fs: __darwin_x86_avx512_state64, -} -#[test] -fn bindgen_test_layout___darwin_mcontext_avx512_64() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_mcontext_avx512_64> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_mcontext_avx512_64>(), - 2632usize, - concat!("Size of: ", stringify!(__darwin_mcontext_avx512_64)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_mcontext_avx512_64>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_mcontext_avx512_64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__es) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx512_64), - "::", - stringify!(__es) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx512_64), - "::", - stringify!(__ss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fs) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx512_64), - "::", - stringify!(__fs) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_mcontext_avx512_64_full { - pub __es: __darwin_x86_exception_state64, - pub __ss: __darwin_x86_thread_full_state64, - pub __fs: __darwin_x86_avx512_state64, -} -#[test] -fn bindgen_test_layout___darwin_mcontext_avx512_64_full() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_mcontext_avx512_64_full> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_mcontext_avx512_64_full>(), - 2664usize, - concat!("Size of: ", stringify!(__darwin_mcontext_avx512_64_full)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_mcontext_avx512_64_full>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_mcontext_avx512_64_full)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__es) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx512_64_full), - "::", - stringify!(__es) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx512_64_full), - "::", - stringify!(__ss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__fs) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(__darwin_mcontext_avx512_64_full), - "::", - stringify!(__fs) - ) - ); -} -pub type mcontext_t = *mut __darwin_mcontext64; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_sigaltstack { - pub ss_sp: *mut ::std::os::raw::c_void, - pub ss_size: __darwin_size_t, - pub ss_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___darwin_sigaltstack() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_sigaltstack> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_sigaltstack>(), - 24usize, - concat!("Size of: ", stringify!(__darwin_sigaltstack)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_sigaltstack>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_sigaltstack)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_sp) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_sigaltstack), - "::", - stringify!(ss_sp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_size) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_sigaltstack), - "::", - stringify!(ss_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_flags) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__darwin_sigaltstack), - "::", - stringify!(ss_flags) - ) - ); -} -pub type stack_t = __darwin_sigaltstack; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __darwin_ucontext { - pub uc_onstack: ::std::os::raw::c_int, - pub uc_sigmask: __darwin_sigset_t, - pub uc_stack: __darwin_sigaltstack, - pub uc_link: *mut __darwin_ucontext, - pub uc_mcsize: __darwin_size_t, - pub uc_mcontext: *mut __darwin_mcontext64, -} -#[test] -fn bindgen_test_layout___darwin_ucontext() { - const UNINIT: ::std::mem::MaybeUninit<__darwin_ucontext> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__darwin_ucontext>(), - 56usize, - concat!("Size of: ", stringify!(__darwin_ucontext)) - ); - assert_eq!( - ::std::mem::align_of::<__darwin_ucontext>(), - 8usize, - concat!("Alignment of ", stringify!(__darwin_ucontext)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uc_onstack) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__darwin_ucontext), - "::", - stringify!(uc_onstack) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uc_sigmask) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__darwin_ucontext), - "::", - stringify!(uc_sigmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uc_stack) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__darwin_ucontext), - "::", - stringify!(uc_stack) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uc_link) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(__darwin_ucontext), - "::", - stringify!(uc_link) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uc_mcsize) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(__darwin_ucontext), - "::", - stringify!(uc_mcsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uc_mcontext) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(__darwin_ucontext), - "::", - stringify!(uc_mcontext) - ) - ); -} -pub type ucontext_t = __darwin_ucontext; -pub type sigset_t = __darwin_sigset_t; -#[repr(C)] -#[derive(Copy, Clone)] -pub union sigval { - pub sival_int: ::std::os::raw::c_int, - pub sival_ptr: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout_sigval() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sigval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigval)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sival_int) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigval), "::", stringify!(sival_int)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sival_ptr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigval), "::", stringify!(sival_ptr)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigevent { - pub sigev_notify: ::std::os::raw::c_int, - pub sigev_signo: ::std::os::raw::c_int, - pub sigev_value: sigval, - pub sigev_notify_function: ::std::option::Option, - pub sigev_notify_attributes: *mut pthread_attr_t, -} -#[test] -fn bindgen_test_layout_sigevent() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(sigevent)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigevent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigev_notify) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_notify) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigev_signo) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(sigevent), "::", stringify!(sigev_signo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigev_value) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sigevent), "::", stringify!(sigev_value)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigev_notify_function) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_notify_function) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigev_notify_attributes) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sigevent), - "::", - stringify!(sigev_notify_attributes) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __siginfo { - pub si_signo: ::std::os::raw::c_int, - pub si_errno: ::std::os::raw::c_int, - pub si_code: ::std::os::raw::c_int, - pub si_pid: pid_t, - pub si_uid: uid_t, - pub si_status: ::std::os::raw::c_int, - pub si_addr: *mut ::std::os::raw::c_void, - pub si_value: sigval, - pub si_band: ::std::os::raw::c_long, - pub __pad: [::std::os::raw::c_ulong; 7usize], -} -#[test] -fn bindgen_test_layout___siginfo() { - const UNINIT: ::std::mem::MaybeUninit<__siginfo> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__siginfo>(), - 104usize, - concat!("Size of: ", stringify!(__siginfo)) - ); - assert_eq!( - ::std::mem::align_of::<__siginfo>(), - 8usize, - concat!("Alignment of ", stringify!(__siginfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_signo) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_signo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_errno) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_errno)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_code) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_code)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_pid) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_pid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_uid) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_status) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_status)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_addr) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_value) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_value)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).si_band) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(si_band)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__pad) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(__siginfo), "::", stringify!(__pad)) - ); -} -pub type siginfo_t = __siginfo; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __sigaction_u { - pub __sa_handler: ::std::option::Option, - pub __sa_sigaction: ::std::option::Option< - unsafe extern "C" fn(arg1: ::std::os::raw::c_int, arg2: *mut __siginfo, arg3: *mut ::std::os::raw::c_void), - >, -} -#[test] -fn bindgen_test_layout___sigaction_u() { - const UNINIT: ::std::mem::MaybeUninit<__sigaction_u> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__sigaction_u>(), - 8usize, - concat!("Size of: ", stringify!(__sigaction_u)) - ); - assert_eq!( - ::std::mem::align_of::<__sigaction_u>(), - 8usize, - concat!("Alignment of ", stringify!(__sigaction_u)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sa_handler) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sigaction_u), - "::", - stringify!(__sa_handler) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sa_sigaction) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sigaction_u), - "::", - stringify!(__sa_sigaction) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct __sigaction { - pub __sigaction_u: __sigaction_u, - pub sa_tramp: ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut ::std::os::raw::c_void, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: *mut siginfo_t, - arg5: *mut ::std::os::raw::c_void, - ), - >, - pub sa_mask: sigset_t, - pub sa_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout___sigaction() { - const UNINIT: ::std::mem::MaybeUninit<__sigaction> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__sigaction>(), - 24usize, - concat!("Size of: ", stringify!(__sigaction)) - ); - assert_eq!( - ::std::mem::align_of::<__sigaction>(), - 8usize, - concat!("Alignment of ", stringify!(__sigaction)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sigaction_u) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__sigaction), - "::", - stringify!(__sigaction_u) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_tramp) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(__sigaction), "::", stringify!(sa_tramp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_mask) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(__sigaction), "::", stringify!(sa_mask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_flags) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(__sigaction), "::", stringify!(sa_flags)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sigaction { - pub __sigaction_u: __sigaction_u, - pub sa_mask: sigset_t, - pub sa_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sigaction() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sigaction)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigaction)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__sigaction_u) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sigaction), - "::", - stringify!(__sigaction_u) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_mask) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sigaction), "::", stringify!(sa_mask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_flags) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(sigaction), "::", stringify!(sa_flags)) - ); -} -pub type sig_t = ::std::option::Option; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigvec { - pub sv_handler: ::std::option::Option, - pub sv_mask: ::std::os::raw::c_int, - pub sv_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sigvec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sigvec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigvec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sv_handler) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigvec), "::", stringify!(sv_handler)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sv_mask) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sigvec), "::", stringify!(sv_mask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sv_flags) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(sigvec), "::", stringify!(sv_flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sigstack { - pub ss_sp: *mut ::std::os::raw::c_char, - pub ss_onstack: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sigstack() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sigstack)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sigstack)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_sp) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sigstack), "::", stringify!(ss_sp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_onstack) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sigstack), "::", stringify!(ss_onstack)) - ); -} -unsafe extern "C" { - pub fn signal( - arg1: ::std::os::raw::c_int, - arg2: ::std::option::Option, - ) -> ::std::option::Option< - unsafe extern "C" fn( - arg1: ::std::os::raw::c_int, - arg2: ::std::option::Option, - ), - >; -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct radix_node { - pub rn_mklist: *mut radix_mask, - pub rn_parent: *mut radix_node, - pub rn_bit: ::std::os::raw::c_short, - pub rn_bmask: ::std::os::raw::c_char, - pub rn_flags: u_char, - pub rn_u: radix_node__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union radix_node__bindgen_ty_1 { - pub rn_leaf: radix_node__bindgen_ty_1__bindgen_ty_1, - pub rn_node: radix_node__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct radix_node__bindgen_ty_1__bindgen_ty_1 { - pub rn_Key: caddr_t, - pub rn_Mask: caddr_t, - pub rn_Dupedkey: *mut radix_node, -} -#[test] -fn bindgen_test_layout_radix_node__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Key) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rn_Key) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Mask) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rn_Mask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Dupedkey) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rn_Dupedkey) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct radix_node__bindgen_ty_1__bindgen_ty_2 { - pub rn_Off: ::std::os::raw::c_int, - pub rn_L: *mut radix_node, - pub rn_R: *mut radix_node, -} -#[test] -fn bindgen_test_layout_radix_node__bindgen_ty_1__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Off) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(rn_Off) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_L) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(rn_L) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_R) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(rn_R) - ) - ); -} -#[test] -fn bindgen_test_layout_radix_node__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(radix_node__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_leaf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1), - "::", - stringify!(rn_leaf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_node) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1), - "::", - stringify!(rn_node) - ) - ); -} -#[test] -fn bindgen_test_layout_radix_node() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(radix_node)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_mklist) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_mklist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_parent) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_bit) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_bit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_bmask) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_bmask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_flags) as usize - ptr as usize }, - 19usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_u) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_u)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct radix_mask { - pub rm_bit: ::std::os::raw::c_short, - pub rm_unused: ::std::os::raw::c_char, - pub rm_flags: u_char, - pub rm_mklist: *mut radix_mask, - pub rm_rmu: radix_mask__bindgen_ty_1, - pub rm_refs: ::std::os::raw::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union radix_mask__bindgen_ty_1 { - pub rmu_mask: caddr_t, - pub rmu_leaf: *mut radix_node, -} -#[test] -fn bindgen_test_layout_radix_mask__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(radix_mask__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_mask__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmu_mask) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_mask__bindgen_ty_1), - "::", - stringify!(rmu_mask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmu_leaf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_mask__bindgen_ty_1), - "::", - stringify!(rmu_leaf) - ) - ); -} -#[test] -fn bindgen_test_layout_radix_mask() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(radix_mask)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_mask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_bit) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_bit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_unused) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_unused)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_flags) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_mklist) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_mklist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_rmu) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_rmu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_refs) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_refs)) - ); -} -pub type walktree_f_t = ::std::option::Option< - unsafe extern "C" fn(arg1: *mut radix_node, arg2: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int, ->; -pub type rn_matchf_t = ::std::option::Option< - unsafe extern "C" fn(arg1: *mut radix_node, arg2: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int, ->; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct radix_node_head { - pub rnh_treetop: *mut radix_node, - pub rnh_addrsize: ::std::os::raw::c_int, - pub rnh_pktsize: ::std::os::raw::c_int, - pub rnh_addaddr: ::std::option::Option< - unsafe extern "C" fn( - v: *mut ::std::os::raw::c_void, - mask: *mut ::std::os::raw::c_void, - head: *mut radix_node_head, - nodes: *mut radix_node, - ) -> *mut radix_node, - >, - pub rnh_addpkt: ::std::option::Option< - unsafe extern "C" fn( - v: *mut ::std::os::raw::c_void, - mask: *mut ::std::os::raw::c_void, - head: *mut radix_node_head, - nodes: *mut radix_node, - ) -> *mut radix_node, - >, - pub rnh_deladdr: ::std::option::Option< - unsafe extern "C" fn( - v: *mut ::std::os::raw::c_void, - mask: *mut ::std::os::raw::c_void, - head: *mut radix_node_head, - ) -> *mut radix_node, - >, - pub rnh_delpkt: ::std::option::Option< - unsafe extern "C" fn( - v: *mut ::std::os::raw::c_void, - mask: *mut ::std::os::raw::c_void, - head: *mut radix_node_head, - ) -> *mut radix_node, - >, - pub rnh_matchaddr: ::std::option::Option< - unsafe extern "C" fn(v: *mut ::std::os::raw::c_void, head: *mut radix_node_head) -> *mut radix_node, - >, - pub rnh_matchaddr_args: ::std::option::Option< - unsafe extern "C" fn( - v: *mut ::std::os::raw::c_void, - head: *mut radix_node_head, - f: rn_matchf_t, - w: *mut ::std::os::raw::c_void, - ) -> *mut radix_node, - >, - pub rnh_lookup: ::std::option::Option< - unsafe extern "C" fn( - v: *mut ::std::os::raw::c_void, - mask: *mut ::std::os::raw::c_void, - head: *mut radix_node_head, - ) -> *mut radix_node, - >, - pub rnh_lookup_args: ::std::option::Option< - unsafe extern "C" fn( - v: *mut ::std::os::raw::c_void, - mask: *mut ::std::os::raw::c_void, - head: *mut radix_node_head, - f: rn_matchf_t, - arg1: *mut ::std::os::raw::c_void, - ) -> *mut radix_node, - >, - pub rnh_matchpkt: ::std::option::Option< - unsafe extern "C" fn(v: *mut ::std::os::raw::c_void, head: *mut radix_node_head) -> *mut radix_node, - >, - pub rnh_walktree: ::std::option::Option< - unsafe extern "C" fn( - head: *mut radix_node_head, - f: walktree_f_t, - w: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int, - >, - pub rnh_walktree_from: ::std::option::Option< - unsafe extern "C" fn( - head: *mut radix_node_head, - a: *mut ::std::os::raw::c_void, - m: *mut ::std::os::raw::c_void, - f: walktree_f_t, - w: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int, - >, - pub rnh_close: ::std::option::Option, - pub rnh_nodes: [radix_node; 3usize], - pub rnh_cnt: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_radix_node_head() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 264usize, - concat!("Size of: ", stringify!(radix_node_head)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node_head)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_treetop) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_treetop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_addrsize) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_addrsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_pktsize) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_pktsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_addaddr) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_addaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_addpkt) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_addpkt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_deladdr) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_deladdr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_delpkt) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_delpkt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_matchaddr) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_matchaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_matchaddr_args) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_matchaddr_args) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_lookup) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_lookup) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_lookup_args) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_lookup_args) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_matchpkt) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_matchpkt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_walktree) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_walktree) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_walktree_from) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_walktree_from) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_close) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_close) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_nodes) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_nodes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_cnt) as usize - ptr as usize }, - 256usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_cnt) - ) - ); -} -unsafe extern "C" { - pub fn rn_init(); -} -unsafe extern "C" { - pub fn rn_inithead(arg1: *mut *mut ::std::os::raw::c_void, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn rn_refines(arg1: *mut ::std::os::raw::c_void, arg2: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn rn_addmask( - arg1: *mut ::std::os::raw::c_void, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - ) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_addroute( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut ::std::os::raw::c_void, - arg3: *mut radix_node_head, - arg4: *mut radix_node, - ) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_delete( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut ::std::os::raw::c_void, - arg3: *mut radix_node_head, - ) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_lookup( - v_arg: *mut ::std::os::raw::c_void, - m_arg: *mut ::std::os::raw::c_void, - head: *mut radix_node_head, - ) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_lookup_args( - v_arg: *mut ::std::os::raw::c_void, - m_arg: *mut ::std::os::raw::c_void, - head: *mut radix_node_head, - arg1: rn_matchf_t, - arg2: *mut ::std::os::raw::c_void, - ) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_match(arg1: *mut ::std::os::raw::c_void, arg2: *mut radix_node_head) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_match_args( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut radix_node_head, - arg3: rn_matchf_t, - arg4: *mut ::std::os::raw::c_void, - ) -> *mut radix_node; -} -pub type int_least8_t = i8; -pub type int_least16_t = i16; -pub type int_least32_t = i32; -pub type int_least64_t = i64; -pub type uint_least8_t = u8; -pub type uint_least16_t = u16; -pub type uint_least32_t = u32; -pub type uint_least64_t = u64; -pub type int_fast8_t = i8; -pub type int_fast16_t = i16; -pub type int_fast32_t = i32; -pub type int_fast64_t = i64; -pub type uint_fast8_t = u8; -pub type uint_fast16_t = u16; -pub type uint_fast32_t = u32; -pub type uint_fast64_t = u64; -pub type intmax_t = ::std::os::raw::c_long; -pub type uintmax_t = ::std::os::raw::c_ulong; -pub type uuid_t = __darwin_uuid_t; -pub type uuid_string_t = __darwin_uuid_string_t; -unsafe extern "C" { - pub static UUID_NULL: uuid_t; -} -unsafe extern "C" { - pub fn uuid_clear(uu: *mut ::std::os::raw::c_uchar); -} -unsafe extern "C" { - pub fn uuid_compare(uu1: *mut ::std::os::raw::c_uchar, uu2: *mut ::std::os::raw::c_uchar) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn uuid_copy(dst: *mut ::std::os::raw::c_uchar, src: *mut ::std::os::raw::c_uchar); -} -unsafe extern "C" { - pub fn uuid_generate(out: *mut ::std::os::raw::c_uchar); -} -unsafe extern "C" { - pub fn uuid_generate_random(out: *mut ::std::os::raw::c_uchar); -} -unsafe extern "C" { - pub fn uuid_generate_time(out: *mut ::std::os::raw::c_uchar); -} -unsafe extern "C" { - pub fn uuid_generate_early_random(out: *mut ::std::os::raw::c_uchar); -} -unsafe extern "C" { - pub fn uuid_is_null(uu: *mut ::std::os::raw::c_uchar) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn uuid_parse(in_: *mut ::std::os::raw::c_char, uu: *mut ::std::os::raw::c_uchar) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn uuid_unparse(uu: *mut ::std::os::raw::c_uchar, out: *mut ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn uuid_unparse_lower(uu: *mut ::std::os::raw::c_uchar, out: *mut ::std::os::raw::c_char); -} -unsafe extern "C" { - pub fn uuid_unparse_upper(uu: *mut ::std::os::raw::c_uchar, out: *mut ::std::os::raw::c_char); -} -pub type sa_family_t = __uint8_t; -pub type socklen_t = __darwin_socklen_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iovec { - pub iov_base: *mut ::std::os::raw::c_void, - pub iov_len: usize, -} -#[test] -fn bindgen_test_layout_iovec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(iovec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(iovec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).iov_base) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(iovec), "::", stringify!(iov_base)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).iov_len) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(iovec), "::", stringify!(iov_len)) - ); -} -unsafe extern "C" { - pub static sotc_by_netservicetype: [::std::os::raw::c_int; 9usize]; -} -pub type sae_associd_t = __uint32_t; -pub type sae_connid_t = __uint32_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sa_endpoints { - pub sae_srcif: ::std::os::raw::c_uint, - pub sae_srcaddr: *const sockaddr, - pub sae_srcaddrlen: socklen_t, - pub sae_dstaddr: *const sockaddr, - pub sae_dstaddrlen: socklen_t, -} -#[test] -fn bindgen_test_layout_sa_endpoints() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(sa_endpoints)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sa_endpoints)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sae_srcif) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sa_endpoints), - "::", - stringify!(sae_srcif) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sae_srcaddr) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sa_endpoints), - "::", - stringify!(sae_srcaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sae_srcaddrlen) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sa_endpoints), - "::", - stringify!(sae_srcaddrlen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sae_dstaddr) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sa_endpoints), - "::", - stringify!(sae_dstaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sae_dstaddrlen) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(sa_endpoints), - "::", - stringify!(sae_dstaddrlen) - ) - ); -} -pub type sa_endpoints_t = sa_endpoints; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { - pub l_onoff: ::std::os::raw::c_int, - pub l_linger: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_linger() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(linger)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(linger)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).l_onoff) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(linger), "::", stringify!(l_onoff)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).l_linger) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(linger), "::", stringify!(l_linger)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct so_np_extensions { - pub npx_flags: u_int32_t, - pub npx_mask: u_int32_t, -} -#[test] -fn bindgen_test_layout_so_np_extensions() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(so_np_extensions)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(so_np_extensions)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).npx_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(so_np_extensions), - "::", - stringify!(npx_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).npx_mask) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(so_np_extensions), - "::", - stringify!(npx_mask) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr { - pub sa_len: __uint8_t, - pub sa_family: sa_family_t, - pub sa_data: [::std::os::raw::c_char; 14usize], -} -#[test] -fn bindgen_test_layout_sockaddr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sockaddr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(sockaddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr), "::", stringify!(sa_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_family) as usize - ptr as usize }, - 1usize, - concat!("Offset of field: ", stringify!(sockaddr), "::", stringify!(sa_family)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_data) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(sockaddr), "::", stringify!(sa_data)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockproto { - pub sp_family: __uint16_t, - pub sp_protocol: __uint16_t, -} -#[test] -fn bindgen_test_layout_sockproto() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sockproto)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(sockproto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sp_family) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockproto), "::", stringify!(sp_family)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sp_protocol) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockproto), - "::", - stringify!(sp_protocol) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_storage { - pub ss_len: __uint8_t, - pub ss_family: sa_family_t, - pub __ss_pad1: [::std::os::raw::c_char; 6usize], - pub __ss_align: __int64_t, - pub __ss_pad2: [::std::os::raw::c_char; 112usize], -} -#[test] -fn bindgen_test_layout_sockaddr_storage() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(sockaddr_storage)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sockaddr_storage)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(ss_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(ss_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss_pad1) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(__ss_pad1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss_align) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(__ss_align) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss_pad2) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(__ss_pad2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { - pub msg_name: *mut ::std::os::raw::c_void, - pub msg_namelen: socklen_t, - pub msg_iov: *mut iovec, - pub msg_iovlen: ::std::os::raw::c_int, - pub msg_control: *mut ::std::os::raw::c_void, - pub msg_controllen: socklen_t, - pub msg_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_msghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(msghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(msghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_namelen) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_namelen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_iov) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_iov)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_iovlen) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_iovlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_control) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_control)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_controllen) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(msghdr), - "::", - stringify!(msg_controllen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_flags) as usize - ptr as usize }, - 44usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr_x { - pub msg_name: *mut ::std::os::raw::c_void, - pub msg_namelen: socklen_t, - pub msg_iov: *mut iovec, - pub msg_iovlen: ::std::os::raw::c_int, - pub msg_control: *mut ::std::os::raw::c_void, - pub msg_controllen: socklen_t, - pub msg_flags: ::std::os::raw::c_int, - pub msg_datalen: usize, -} -#[test] -fn bindgen_test_layout_msghdr_x() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(msghdr_x)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(msghdr_x)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(msghdr_x), "::", stringify!(msg_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_namelen) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(msghdr_x), "::", stringify!(msg_namelen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_iov) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(msghdr_x), "::", stringify!(msg_iov)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_iovlen) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(msghdr_x), "::", stringify!(msg_iovlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_control) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(msghdr_x), "::", stringify!(msg_control)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_controllen) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(msghdr_x), - "::", - stringify!(msg_controllen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_flags) as usize - ptr as usize }, - 44usize, - concat!("Offset of field: ", stringify!(msghdr_x), "::", stringify!(msg_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_datalen) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(msghdr_x), "::", stringify!(msg_datalen)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { - pub cmsg_len: socklen_t, - pub cmsg_level: ::std::os::raw::c_int, - pub cmsg_type: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_cmsghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(cmsghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(cmsghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmsg_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(cmsghdr), "::", stringify!(cmsg_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmsg_level) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(cmsghdr), "::", stringify!(cmsg_level)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmsg_type) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(cmsghdr), "::", stringify!(cmsg_type)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sf_hdtr { - pub headers: *mut iovec, - pub hdr_cnt: ::std::os::raw::c_int, - pub trailers: *mut iovec, - pub trl_cnt: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_sf_hdtr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(sf_hdtr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sf_hdtr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).headers) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sf_hdtr), "::", stringify!(headers)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hdr_cnt) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sf_hdtr), "::", stringify!(hdr_cnt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).trailers) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(sf_hdtr), "::", stringify!(trailers)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).trl_cnt) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(sf_hdtr), "::", stringify!(trl_cnt)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct so_aidreq { - pub sar_cnt: __uint32_t, - pub sar_aidp: *mut sae_associd_t, -} -#[test] -fn bindgen_test_layout_so_aidreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(so_aidreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(so_aidreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sar_cnt) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(so_aidreq), "::", stringify!(sar_cnt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sar_aidp) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(so_aidreq), "::", stringify!(sar_aidp)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct so_cidreq { - pub scr_aid: sae_associd_t, - pub scr_cnt: __uint32_t, - pub scr_cidp: *mut sae_connid_t, -} -#[test] -fn bindgen_test_layout_so_cidreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(so_cidreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(so_cidreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scr_aid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(so_cidreq), "::", stringify!(scr_aid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scr_cnt) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(so_cidreq), "::", stringify!(scr_cnt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scr_cidp) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(so_cidreq), "::", stringify!(scr_cidp)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct so_cinforeq { - pub scir_cid: sae_connid_t, - pub scir_flags: __uint32_t, - pub scir_ifindex: __uint32_t, - pub scir_error: __int32_t, - pub scir_src: *mut sockaddr, - pub scir_src_len: socklen_t, - pub scir_dst: *mut sockaddr, - pub scir_dst_len: socklen_t, - pub scir_aux_type: __uint32_t, - pub scir_aux_data: *mut ::std::os::raw::c_void, - pub scir_aux_len: __uint32_t, -} -#[test] -fn bindgen_test_layout_so_cinforeq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(so_cinforeq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(so_cinforeq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scir_cid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(so_cinforeq), "::", stringify!(scir_cid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scir_flags) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(so_cinforeq), - "::", - stringify!(scir_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scir_ifindex) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(so_cinforeq), - "::", - stringify!(scir_ifindex) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scir_error) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(so_cinforeq), - "::", - stringify!(scir_error) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scir_src) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(so_cinforeq), "::", stringify!(scir_src)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scir_src_len) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(so_cinforeq), - "::", - stringify!(scir_src_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scir_dst) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(so_cinforeq), "::", stringify!(scir_dst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scir_dst_len) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(so_cinforeq), - "::", - stringify!(scir_dst_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scir_aux_type) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(so_cinforeq), - "::", - stringify!(scir_aux_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scir_aux_data) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(so_cinforeq), - "::", - stringify!(scir_aux_data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scir_aux_len) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(so_cinforeq), - "::", - stringify!(scir_aux_len) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct so_cordreq { - pub sco_cid: sae_connid_t, - pub sco_rank: __uint32_t, -} -#[test] -fn bindgen_test_layout_so_cordreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(so_cordreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(so_cordreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sco_cid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(so_cordreq), "::", stringify!(sco_cid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sco_rank) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(so_cordreq), "::", stringify!(sco_rank)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct netpolicy_event_data { - pub eupid: __uint64_t, - pub epid: __uint64_t, - pub euuid: uuid_t, -} -#[test] -fn bindgen_test_layout_netpolicy_event_data() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(netpolicy_event_data)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(netpolicy_event_data)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).eupid) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(netpolicy_event_data), - "::", - stringify!(eupid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).epid) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(netpolicy_event_data), - "::", - stringify!(epid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).euuid) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(netpolicy_event_data), - "::", - stringify!(euuid) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kev_netpolicy_ifdenied { - pub ev_data: netpolicy_event_data, - pub ev_if_functional_type: __uint32_t, -} -#[test] -fn bindgen_test_layout_kev_netpolicy_ifdenied() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(kev_netpolicy_ifdenied)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(kev_netpolicy_ifdenied)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ev_data) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(kev_netpolicy_ifdenied), - "::", - stringify!(ev_data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ev_if_functional_type) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(kev_netpolicy_ifdenied), - "::", - stringify!(ev_if_functional_type) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kev_netpolicy_netdenied { - pub ev_data: netpolicy_event_data, - pub ev_network_type: __uint32_t, -} -#[test] -fn bindgen_test_layout_kev_netpolicy_netdenied() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(kev_netpolicy_netdenied)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(kev_netpolicy_netdenied)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ev_data) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(kev_netpolicy_netdenied), - "::", - stringify!(ev_data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ev_network_type) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(kev_netpolicy_netdenied), - "::", - stringify!(ev_network_type) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct netsvctype_dscp_map { - pub netsvctype: ::std::os::raw::c_int, - pub dscp: u_int8_t, -} -#[test] -fn bindgen_test_layout_netsvctype_dscp_map() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(netsvctype_dscp_map)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(netsvctype_dscp_map)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).netsvctype) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(netsvctype_dscp_map), - "::", - stringify!(netsvctype) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dscp) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(netsvctype_dscp_map), - "::", - stringify!(dscp) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct so_mpkl_send_info { - pub mpkl_uuid: uuid_t, - pub mpkl_proto: __uint8_t, -} -#[test] -fn bindgen_test_layout_so_mpkl_send_info() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 17usize, - concat!("Size of: ", stringify!(so_mpkl_send_info)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(so_mpkl_send_info)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mpkl_uuid) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(so_mpkl_send_info), - "::", - stringify!(mpkl_uuid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mpkl_proto) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(so_mpkl_send_info), - "::", - stringify!(mpkl_proto) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct so_mpkl_recv_info { - pub mpkl_seq: __uint32_t, - pub mpkl_proto: __uint8_t, -} -#[test] -fn bindgen_test_layout_so_mpkl_recv_info() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(so_mpkl_recv_info)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(so_mpkl_recv_info)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mpkl_seq) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(so_mpkl_recv_info), - "::", - stringify!(mpkl_seq) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mpkl_proto) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(so_mpkl_recv_info), - "::", - stringify!(mpkl_proto) - ) - ); -} -unsafe extern "C" { - pub fn peeloff(s: ::std::os::raw::c_int, arg1: sae_associd_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn socket_delegate( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: pid_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn recvmsg_x( - s: ::std::os::raw::c_int, - msgp: *const msghdr_x, - cnt: u_int, - flags: ::std::os::raw::c_int, - ) -> isize; -} -unsafe extern "C" { - pub fn sendmsg_x( - s: ::std::os::raw::c_int, - msgp: *const msghdr_x, - cnt: u_int, - flags: ::std::os::raw::c_int, - ) -> isize; -} -unsafe extern "C" { - #[link_name = "\u{1}_accept$UNIX2003"] - pub fn accept(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr, arg3: *mut socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - #[link_name = "\u{1}_bind$UNIX2003"] - pub fn bind(arg1: ::std::os::raw::c_int, arg2: *const sockaddr, arg3: socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - #[link_name = "\u{1}_connect$UNIX2003"] - pub fn connect(arg1: ::std::os::raw::c_int, arg2: *const sockaddr, arg3: socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - #[link_name = "\u{1}_getpeername$UNIX2003"] - pub fn getpeername(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr, arg3: *mut socklen_t) - -> ::std::os::raw::c_int; -} -unsafe extern "C" { - #[link_name = "\u{1}_getsockname$UNIX2003"] - pub fn getsockname(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr, arg3: *mut socklen_t) - -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getsockopt( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: *mut ::std::os::raw::c_void, - arg5: *mut socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - #[link_name = "\u{1}_listen$UNIX2003"] - pub fn listen(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - #[link_name = "\u{1}_recv$UNIX2003"] - pub fn recv( - arg1: ::std::os::raw::c_int, - arg2: *mut ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - ) -> isize; -} -unsafe extern "C" { - #[link_name = "\u{1}_recvfrom$UNIX2003"] - pub fn recvfrom( - arg1: ::std::os::raw::c_int, - arg2: *mut ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - arg5: *mut sockaddr, - arg6: *mut socklen_t, - ) -> isize; -} -unsafe extern "C" { - #[link_name = "\u{1}_recvmsg$UNIX2003"] - pub fn recvmsg(arg1: ::std::os::raw::c_int, arg2: *mut msghdr, arg3: ::std::os::raw::c_int) -> isize; -} -unsafe extern "C" { - #[link_name = "\u{1}_send$UNIX2003"] - pub fn send( - arg1: ::std::os::raw::c_int, - arg2: *const ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - ) -> isize; -} -unsafe extern "C" { - #[link_name = "\u{1}_sendmsg$UNIX2003"] - pub fn sendmsg(arg1: ::std::os::raw::c_int, arg2: *const msghdr, arg3: ::std::os::raw::c_int) -> isize; -} -unsafe extern "C" { - #[link_name = "\u{1}_sendto$UNIX2003"] - pub fn sendto( - arg1: ::std::os::raw::c_int, - arg2: *const ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - arg5: *const sockaddr, - arg6: socklen_t, - ) -> isize; -} -unsafe extern "C" { - pub fn setsockopt( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: *const ::std::os::raw::c_void, - arg5: socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn shutdown(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn sockatmark(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn socket( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - #[link_name = "\u{1}_socketpair$UNIX2003"] - pub fn socketpair( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn sendfile( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: off_t, - arg4: *mut off_t, - arg5: *mut sf_hdtr, - arg6: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pfctlinput(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr); -} -unsafe extern "C" { - pub fn connectx( - arg1: ::std::os::raw::c_int, - arg2: *const sa_endpoints_t, - arg3: sae_associd_t, - arg4: ::std::os::raw::c_uint, - arg5: *const iovec, - arg6: ::std::os::raw::c_uint, - arg7: *mut usize, - arg8: *mut sae_connid_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn disconnectx(arg1: ::std::os::raw::c_int, arg2: sae_associd_t, arg3: sae_connid_t) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { - pub s_addr: in_addr_t, -} -#[test] -fn bindgen_test_layout_in_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(in_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).s_addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(in_addr), "::", stringify!(s_addr)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { - pub sin_len: __uint8_t, - pub sin_family: sa_family_t, - pub sin_port: in_port_t, - pub sin_addr: in_addr, - pub sin_zero: [::std::os::raw::c_char; 8usize], -} -#[test] -fn bindgen_test_layout_sockaddr_in() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sockaddr_in)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockaddr_in)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in), - "::", - stringify!(sin_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_port) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_addr) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_zero) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_zero)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_inifscope { - pub sin_len: __uint8_t, - pub sin_family: sa_family_t, - pub sin_port: in_port_t, - pub sin_addr: in_addr, - pub un: sockaddr_inifscope__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sockaddr_inifscope__bindgen_ty_1 { - pub sin_zero: [::std::os::raw::c_char; 8usize], - pub _in_index: sockaddr_inifscope__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_inifscope__bindgen_ty_1__bindgen_ty_1 { - pub ifscope: __uint32_t, -} -#[test] -fn bindgen_test_layout_sockaddr_inifscope__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(sockaddr_inifscope__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!( - "Alignment of ", - stringify!(sockaddr_inifscope__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifscope) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_inifscope__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(ifscope) - ) - ); -} -#[test] -fn bindgen_test_layout_sockaddr_inifscope__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sockaddr_inifscope__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockaddr_inifscope__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_zero) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_inifscope__bindgen_ty_1), - "::", - stringify!(sin_zero) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._in_index) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_inifscope__bindgen_ty_1), - "::", - stringify!(_in_index) - ) - ); -} -#[test] -fn bindgen_test_layout_sockaddr_inifscope() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sockaddr_inifscope)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockaddr_inifscope)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_inifscope), - "::", - stringify!(sin_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_inifscope), - "::", - stringify!(sin_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_port) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_inifscope), - "::", - stringify!(sin_port) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_addr) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_inifscope), - "::", - stringify!(sin_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).un) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_inifscope), - "::", - stringify!(un) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_opts { - pub ip_dst: in_addr, - pub ip_opts: [::std::os::raw::c_char; 40usize], -} -#[test] -fn bindgen_test_layout_ip_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 44usize, - concat!("Size of: ", stringify!(ip_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ip_dst) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ip_opts), "::", stringify!(ip_dst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ip_opts) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(ip_opts), "::", stringify!(ip_opts)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { - pub imr_multiaddr: in_addr, - pub imr_interface: in_addr, -} -#[test] -fn bindgen_test_layout_ip_mreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ip_mreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip_mreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_multiaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq), - "::", - stringify!(imr_multiaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_interface) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq), - "::", - stringify!(imr_interface) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { - pub imr_multiaddr: in_addr, - pub imr_address: in_addr, - pub imr_ifindex: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_ip_mreqn() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(ip_mreqn)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip_mreqn)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_multiaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ip_mreqn), - "::", - stringify!(imr_multiaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_address) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(ip_mreqn), "::", stringify!(imr_address)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_ifindex) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(ip_mreqn), "::", stringify!(imr_ifindex)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq_source { - pub imr_multiaddr: in_addr, - pub imr_sourceaddr: in_addr, - pub imr_interface: in_addr, -} -#[test] -fn bindgen_test_layout_ip_mreq_source() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(ip_mreq_source)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip_mreq_source)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_multiaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq_source), - "::", - stringify!(imr_multiaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_sourceaddr) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq_source), - "::", - stringify!(imr_sourceaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_interface) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq_source), - "::", - stringify!(imr_interface) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct group_req { - pub gr_interface: u32, - pub gr_group: sockaddr_storage, -} -#[test] -fn bindgen_test_layout_group_req() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 132usize, - concat!("Size of: ", stringify!(group_req)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(group_req)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gr_interface) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(group_req), - "::", - stringify!(gr_interface) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gr_group) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(group_req), "::", stringify!(gr_group)) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct group_source_req { - pub gsr_interface: u32, - pub gsr_group: sockaddr_storage, - pub gsr_source: sockaddr_storage, -} -#[test] -fn bindgen_test_layout_group_source_req() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 260usize, - concat!("Size of: ", stringify!(group_source_req)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(group_source_req)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gsr_interface) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(group_source_req), - "::", - stringify!(gsr_interface) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gsr_group) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(group_source_req), - "::", - stringify!(gsr_group) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gsr_source) as usize - ptr as usize }, - 132usize, - concat!( - "Offset of field: ", - stringify!(group_source_req), - "::", - stringify!(gsr_source) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct __msfilterreq { - pub msfr_ifindex: u32, - pub msfr_fmode: u32, - pub msfr_nsrcs: u32, - pub __msfr_align: u32, - pub msfr_group: sockaddr_storage, - pub msfr_srcs: *mut sockaddr_storage, -} -#[test] -fn bindgen_test_layout___msfilterreq() { - const UNINIT: ::std::mem::MaybeUninit<__msfilterreq> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__msfilterreq>(), - 152usize, - concat!("Size of: ", stringify!(__msfilterreq)) - ); - assert_eq!( - ::std::mem::align_of::<__msfilterreq>(), - 4usize, - concat!("Alignment of ", stringify!(__msfilterreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msfr_ifindex) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__msfilterreq), - "::", - stringify!(msfr_ifindex) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msfr_fmode) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__msfilterreq), - "::", - stringify!(msfr_fmode) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msfr_nsrcs) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__msfilterreq), - "::", - stringify!(msfr_nsrcs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__msfr_align) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(__msfilterreq), - "::", - stringify!(__msfr_align) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msfr_group) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__msfilterreq), - "::", - stringify!(msfr_group) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msfr_srcs) as usize - ptr as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(__msfilterreq), - "::", - stringify!(msfr_srcs) - ) - ); -} -unsafe extern "C" { - pub fn setipv4sourcefilter( - arg1: ::std::os::raw::c_int, - arg2: in_addr, - arg3: in_addr, - arg4: u32, - arg5: u32, - arg6: *mut in_addr, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getipv4sourcefilter( - arg1: ::std::os::raw::c_int, - arg2: in_addr, - arg3: in_addr, - arg4: *mut u32, - arg5: *mut u32, - arg6: *mut in_addr, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn setsourcefilter( - arg1: ::std::os::raw::c_int, - arg2: u32, - arg3: *mut sockaddr, - arg4: socklen_t, - arg5: u32, - arg6: u32, - arg7: *mut sockaddr_storage, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getsourcefilter( - arg1: ::std::os::raw::c_int, - arg2: u32, - arg3: *mut sockaddr, - arg4: socklen_t, - arg5: *mut u32, - arg6: *mut u32, - arg7: *mut sockaddr_storage, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_pktinfo { - pub ipi_ifindex: ::std::os::raw::c_uint, - pub ipi_spec_dst: in_addr, - pub ipi_addr: in_addr, -} -#[test] -fn bindgen_test_layout_in_pktinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(in_pktinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in_pktinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipi_ifindex) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in_pktinfo), - "::", - stringify!(ipi_ifindex) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipi_spec_dst) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(in_pktinfo), - "::", - stringify!(ipi_spec_dst) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipi_addr) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(in_pktinfo), "::", stringify!(ipi_addr)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { - pub __u6_addr: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { - pub __u6_addr8: [__uint8_t; 16usize], - pub __u6_addr16: [__uint16_t; 8usize], - pub __u6_addr32: [__uint32_t; 4usize], -} -#[test] -fn bindgen_test_layout_in6_addr__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(in6_addr__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in6_addr__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_addr__bindgen_ty_1), - "::", - stringify!(__u6_addr8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr16) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_addr__bindgen_ty_1), - "::", - stringify!(__u6_addr16) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr32) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_addr__bindgen_ty_1), - "::", - stringify!(__u6_addr32) - ) - ); -} -#[test] -fn bindgen_test_layout_in6_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(in6_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in6_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(in6_addr), "::", stringify!(__u6_addr)) - ); -} -pub type in6_addr_t = in6_addr; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { - pub sin6_len: __uint8_t, - pub sin6_family: sa_family_t, - pub sin6_port: in_port_t, - pub sin6_flowinfo: __uint32_t, - pub sin6_addr: in6_addr, - pub sin6_scope_id: __uint32_t, -} -#[test] -fn bindgen_test_layout_sockaddr_in6() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 28usize, - concat!("Size of: ", stringify!(sockaddr_in6)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockaddr_in6)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_port) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_port) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_flowinfo) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_flowinfo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_addr) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_scope_id) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_scope_id) - ) - ); -} -unsafe extern "C" { - pub static in6addr_any: in6_addr; -} -unsafe extern "C" { - pub static in6addr_loopback: in6_addr; -} -unsafe extern "C" { - pub static in6addr_nodelocal_allnodes: in6_addr; -} -unsafe extern "C" { - pub static in6addr_linklocal_allnodes: in6_addr; -} -unsafe extern "C" { - pub static in6addr_linklocal_allrouters: in6_addr; -} -unsafe extern "C" { - pub static in6addr_linklocal_allv2routers: in6_addr; -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct route_in6_old { - pub ro_rt: *mut ::std::os::raw::c_void, - pub ro_flags: u32, - pub ro_dst: sockaddr_in6, -} -#[test] -fn bindgen_test_layout_route_in6_old() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(route_in6_old)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(route_in6_old)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_rt) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(route_in6_old), "::", stringify!(ro_rt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_flags) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(route_in6_old), - "::", - stringify!(ro_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_dst) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(route_in6_old), "::", stringify!(ro_dst)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { - pub ipv6mr_multiaddr: in6_addr, - pub ipv6mr_interface: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_ipv6_mreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(ipv6_mreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ipv6_mreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipv6mr_multiaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ipv6_mreq), - "::", - stringify!(ipv6mr_multiaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipv6mr_interface) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ipv6_mreq), - "::", - stringify!(ipv6mr_interface) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { - pub ipi6_addr: in6_addr, - pub ipi6_ifindex: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_in6_pktinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(in6_pktinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in6_pktinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipi6_addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_pktinfo), - "::", - stringify!(ipi6_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipi6_ifindex) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(in6_pktinfo), - "::", - stringify!(ipi6_ifindex) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { - pub ip6m_addr: sockaddr_in6, - pub ip6m_mtu: u32, -} -#[test] -fn bindgen_test_layout_ip6_mtuinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(ip6_mtuinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip6_mtuinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ip6m_addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ip6_mtuinfo), - "::", - stringify!(ip6m_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ip6m_mtu) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(ip6_mtuinfo), "::", stringify!(ip6m_mtu)) - ); -} -pub const in6_clat46_evhdlr_code_t_IN6_CLAT46_EVENT_V4_FLOW: in6_clat46_evhdlr_code_t = 0; -pub const in6_clat46_evhdlr_code_t_IN6_CLAT46_EVENT_V6_ADDR_CONFFAIL: in6_clat46_evhdlr_code_t = 1; -pub type in6_clat46_evhdlr_code_t = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kev_netevent_clat46_data { - pub clat46_event_code: in6_clat46_evhdlr_code_t, - pub epid: pid_t, - pub euuid: uuid_t, -} -#[test] -fn bindgen_test_layout_kev_netevent_clat46_data() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(kev_netevent_clat46_data)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(kev_netevent_clat46_data)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).clat46_event_code) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(kev_netevent_clat46_data), - "::", - stringify!(clat46_event_code) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).epid) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(kev_netevent_clat46_data), - "::", - stringify!(epid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).euuid) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(kev_netevent_clat46_data), - "::", - stringify!(euuid) - ) - ); -} -unsafe extern "C" { - pub fn inet6_option_space(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_option_init( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut *mut cmsghdr, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_option_append( - arg1: *mut cmsghdr, - arg2: *const __uint8_t, - arg3: ::std::os::raw::c_int, - arg4: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_option_alloc( - arg1: *mut cmsghdr, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: ::std::os::raw::c_int, - ) -> *mut __uint8_t; -} -unsafe extern "C" { - pub fn inet6_option_next(arg1: *const cmsghdr, arg2: *mut *mut __uint8_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_option_find( - arg1: *const cmsghdr, - arg2: *mut *mut __uint8_t, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rthdr_space(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> usize; -} -unsafe extern "C" { - pub fn inet6_rthdr_init(arg1: *mut ::std::os::raw::c_void, arg2: ::std::os::raw::c_int) -> *mut cmsghdr; -} -unsafe extern "C" { - pub fn inet6_rthdr_add( - arg1: *mut cmsghdr, - arg2: *const in6_addr, - arg3: ::std::os::raw::c_uint, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rthdr_lasthop(arg1: *mut cmsghdr, arg2: ::std::os::raw::c_uint) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rthdr_segments(arg1: *const cmsghdr) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rthdr_getaddr(arg1: *mut cmsghdr, arg2: ::std::os::raw::c_int) -> *mut in6_addr; -} -unsafe extern "C" { - pub fn inet6_rthdr_getflags(arg1: *const cmsghdr, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_init(arg1: *mut ::std::os::raw::c_void, arg2: socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_append( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: __uint8_t, - arg5: socklen_t, - arg6: __uint8_t, - arg7: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_finish( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_set_val( - arg1: *mut ::std::os::raw::c_void, - arg2: ::std::os::raw::c_int, - arg3: *mut ::std::os::raw::c_void, - arg4: socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_next( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: *mut __uint8_t, - arg5: *mut socklen_t, - arg6: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_find( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: __uint8_t, - arg5: *mut socklen_t, - arg6: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_get_val( - arg1: *mut ::std::os::raw::c_void, - arg2: ::std::os::raw::c_int, - arg3: *mut ::std::os::raw::c_void, - arg4: socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_space(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> socklen_t; -} -unsafe extern "C" { - pub fn inet6_rth_init( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: ::std::os::raw::c_int, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn inet6_rth_add(arg1: *mut ::std::os::raw::c_void, arg2: *const in6_addr) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_reverse( - arg1: *const ::std::os::raw::c_void, - arg2: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_segments(arg1: *const ::std::os::raw::c_void) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_getaddr(arg1: *const ::std::os::raw::c_void, arg2: ::std::os::raw::c_int) -> *mut in6_addr; -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sockaddr_in_4_6 { - pub sa: sockaddr, - pub sin: sockaddr_in, - pub sin6: sockaddr_in6, -} -#[test] -fn bindgen_test_layout_sockaddr_in_4_6() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 28usize, - concat!("Size of: ", stringify!(sockaddr_in_4_6)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockaddr_in_4_6)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_in_4_6), "::", stringify!(sa)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_in_4_6), "::", stringify!(sin)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_in_4_6), "::", stringify!(sin6)) - ); -} -unsafe extern "C" { - pub fn bindresvport(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr_in) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn bindresvport_sa(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timespec { - pub tv_sec: __darwin_time_t, - pub tv_nsec: ::std::os::raw::c_long, -} -#[test] -fn bindgen_test_layout_timespec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(timespec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timespec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(timespec), "::", stringify!(tv_sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_nsec) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(timespec), "::", stringify!(tv_nsec)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timeval { - pub tv_sec: __darwin_time_t, - pub tv_usec: __darwin_suseconds_t, -} -#[test] -fn bindgen_test_layout_timeval() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(timeval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timeval)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(timeval), "::", stringify!(tv_sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_usec) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(timeval), "::", stringify!(tv_usec)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timeval64 { - pub tv_sec: __int64_t, - pub tv_usec: __int64_t, -} -#[test] -fn bindgen_test_layout_timeval64() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(timeval64)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timeval64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(timeval64), "::", stringify!(tv_sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_usec) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(timeval64), "::", stringify!(tv_usec)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct itimerval { - pub it_interval: timeval, - pub it_value: timeval, -} -#[test] -fn bindgen_test_layout_itimerval() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(itimerval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(itimerval)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).it_interval) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerval), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).it_value) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(itimerval), "::", stringify!(it_value)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timezone { - pub tz_minuteswest: ::std::os::raw::c_int, - pub tz_dsttime: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_timezone() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tz_minuteswest) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tz_dsttime) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(timezone), "::", stringify!(tz_dsttime)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct clockinfo { - pub hz: ::std::os::raw::c_int, - pub tick: ::std::os::raw::c_int, - pub tickadj: ::std::os::raw::c_int, - pub stathz: ::std::os::raw::c_int, - pub profhz: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_clockinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(clockinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(clockinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hz) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(hz)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tick) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(tick)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tickadj) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(tickadj)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).stathz) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(stathz)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).profhz) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(profhz)) - ); -} -pub type __darwin_nl_item = ::std::os::raw::c_int; -pub type __darwin_wctrans_t = ::std::os::raw::c_int; -pub type __darwin_wctype_t = __uint32_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tm { - pub tm_sec: ::std::os::raw::c_int, - pub tm_min: ::std::os::raw::c_int, - pub tm_hour: ::std::os::raw::c_int, - pub tm_mday: ::std::os::raw::c_int, - pub tm_mon: ::std::os::raw::c_int, - pub tm_year: ::std::os::raw::c_int, - pub tm_wday: ::std::os::raw::c_int, - pub tm_yday: ::std::os::raw::c_int, - pub tm_isdst: ::std::os::raw::c_int, - pub tm_gmtoff: ::std::os::raw::c_long, - pub tm_zone: *mut ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_tm() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(tm)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(tm)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_min) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_min)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_hour) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_hour)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_mday) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_mday)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_mon) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_mon)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_year) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_year)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_wday) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_wday)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_yday) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_yday)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_isdst) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_isdst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_gmtoff) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_gmtoff)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_zone) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_zone)) - ); -} -unsafe extern "C" { - pub static mut tzname: [*mut ::std::os::raw::c_char; 0usize]; -} -unsafe extern "C" { - pub static mut getdate_err: ::std::os::raw::c_int; -} -unsafe extern "C" { - #[link_name = "\u{1}_timezone$UNIX2003"] - pub static mut timezone: ::std::os::raw::c_long; -} -unsafe extern "C" { - pub static mut daylight: ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn asctime(arg1: *const tm) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - #[link_name = "\u{1}_clock$UNIX2003"] - pub fn clock() -> clock_t; -} -unsafe extern "C" { - pub fn ctime(arg1: *const time_t) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn difftime(arg1: time_t, arg2: time_t) -> f64; -} -unsafe extern "C" { - pub fn getdate(arg1: *const ::std::os::raw::c_char) -> *mut tm; -} -unsafe extern "C" { - pub fn gmtime(arg1: *const time_t) -> *mut tm; -} -unsafe extern "C" { - pub fn localtime(arg1: *const time_t) -> *mut tm; -} -unsafe extern "C" { - #[link_name = "\u{1}_mktime$UNIX2003"] - pub fn mktime(arg1: *mut tm) -> time_t; -} -unsafe extern "C" { - #[link_name = "\u{1}_strftime$UNIX2003"] - pub fn strftime( - arg1: *mut ::std::os::raw::c_char, - arg2: usize, - arg3: *const ::std::os::raw::c_char, - arg4: *const tm, - ) -> usize; -} -unsafe extern "C" { - #[link_name = "\u{1}_strptime$UNIX2003"] - pub fn strptime( - arg1: *const ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - arg3: *mut tm, - ) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn time(arg1: *mut time_t) -> time_t; -} -unsafe extern "C" { - pub fn tzset(); -} -unsafe extern "C" { - pub fn asctime_r(arg1: *const tm, arg2: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn ctime_r(arg1: *const time_t, arg2: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn gmtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm; -} -unsafe extern "C" { - pub fn localtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm; -} -unsafe extern "C" { - pub fn posix2time(arg1: time_t) -> time_t; -} -unsafe extern "C" { - pub fn tzsetwall(); -} -unsafe extern "C" { - pub fn time2posix(arg1: time_t) -> time_t; -} -unsafe extern "C" { - pub fn timelocal(arg1: *mut tm) -> time_t; -} -unsafe extern "C" { - pub fn timegm(arg1: *mut tm) -> time_t; -} -unsafe extern "C" { - #[link_name = "\u{1}_nanosleep$UNIX2003"] - pub fn nanosleep(__rqtp: *const timespec, __rmtp: *mut timespec) -> ::std::os::raw::c_int; -} -pub const clockid_t__CLOCK_REALTIME: clockid_t = 0; -pub const clockid_t__CLOCK_MONOTONIC: clockid_t = 6; -pub const clockid_t__CLOCK_MONOTONIC_RAW: clockid_t = 4; -pub const clockid_t__CLOCK_MONOTONIC_RAW_APPROX: clockid_t = 5; -pub const clockid_t__CLOCK_UPTIME_RAW: clockid_t = 8; -pub const clockid_t__CLOCK_UPTIME_RAW_APPROX: clockid_t = 9; -pub const clockid_t__CLOCK_PROCESS_CPUTIME_ID: clockid_t = 12; -pub const clockid_t__CLOCK_THREAD_CPUTIME_ID: clockid_t = 16; -pub type clockid_t = ::std::os::raw::c_uint; -unsafe extern "C" { - pub fn clock_getres(__clock_id: clockid_t, __res: *mut timespec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn clock_gettime(__clock_id: clockid_t, __tp: *mut timespec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn clock_gettime_nsec_np(__clock_id: clockid_t) -> __uint64_t; -} -unsafe extern "C" { - pub fn clock_settime(__clock_id: clockid_t, __tp: *const timespec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn timespec_get(ts: *mut timespec, base: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn adjtime(arg1: *const timeval, arg2: *mut timeval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn futimes(arg1: ::std::os::raw::c_int, arg2: *const timeval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn lutimes(arg1: *const ::std::os::raw::c_char, arg2: *const timeval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn settimeofday(arg1: *const timeval, arg2: *const timezone) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getitimer(arg1: ::std::os::raw::c_int, arg2: *mut itimerval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn gettimeofday(arg1: *mut timeval, arg2: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - #[link_name = "\u{1}_select$1050"] - pub fn select( - arg1: ::std::os::raw::c_int, - arg2: *mut fd_set, - arg3: *mut fd_set, - arg4: *mut fd_set, - arg5: *mut timeval, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn setitimer( - arg1: ::std::os::raw::c_int, - arg2: *const itimerval, - arg3: *mut itimerval, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn utimes(arg1: *const ::std::os::raw::c_char, arg2: *const timeval) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rt_metrics { - pub rmx_locks: u_int32_t, - pub rmx_mtu: u_int32_t, - pub rmx_hopcount: u_int32_t, - pub rmx_expire: i32, - pub rmx_recvpipe: u_int32_t, - pub rmx_sendpipe: u_int32_t, - pub rmx_ssthresh: u_int32_t, - pub rmx_rtt: u_int32_t, - pub rmx_rttvar: u_int32_t, - pub rmx_pksent: u_int32_t, - pub rmx_state: u_int32_t, - pub rmx_filler: [u_int32_t; 3usize], -} -#[test] -fn bindgen_test_layout_rt_metrics() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(rt_metrics)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(rt_metrics)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_locks) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rt_metrics), "::", stringify!(rmx_locks)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_mtu) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(rt_metrics), "::", stringify!(rmx_mtu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_hopcount) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_hopcount) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_expire) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_expire) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_recvpipe) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_recvpipe) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_sendpipe) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_sendpipe) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_ssthresh) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_ssthresh) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_rtt) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(rt_metrics), "::", stringify!(rmx_rtt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_rttvar) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_rttvar) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_pksent) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_pksent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_state) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(rt_metrics), "::", stringify!(rmx_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_filler) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_filler) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct route_old { - pub ro_rt: *mut ::std::os::raw::c_void, - pub ro_flags: u32, - pub ro_dst: sockaddr, -} -#[test] -fn bindgen_test_layout_route_old() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(route_old)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(route_old)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_rt) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(route_old), "::", stringify!(ro_rt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_flags) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(route_old), "::", stringify!(ro_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_dst) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(route_old), "::", stringify!(ro_dst)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtstat { - pub rts_badredirect: ::std::os::raw::c_short, - pub rts_dynamic: ::std::os::raw::c_short, - pub rts_newgateway: ::std::os::raw::c_short, - pub rts_unreach: ::std::os::raw::c_short, - pub rts_wildcard: ::std::os::raw::c_short, - pub rts_badrtgwroute: ::std::os::raw::c_short, -} -#[test] -fn bindgen_test_layout_rtstat() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(rtstat)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(rtstat)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rts_badredirect) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rtstat), - "::", - stringify!(rts_badredirect) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rts_dynamic) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(rtstat), "::", stringify!(rts_dynamic)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rts_newgateway) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(rtstat), - "::", - stringify!(rts_newgateway) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rts_unreach) as usize - ptr as usize }, - 6usize, - concat!("Offset of field: ", stringify!(rtstat), "::", stringify!(rts_unreach)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rts_wildcard) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(rtstat), "::", stringify!(rts_wildcard)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rts_badrtgwroute) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(rtstat), - "::", - stringify!(rts_badrtgwroute) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rt_msghdr { - pub rtm_msglen: u_short, - pub rtm_version: u_char, - pub rtm_type: u_char, - pub rtm_index: u_short, - pub rtm_flags: ::std::os::raw::c_int, - pub rtm_addrs: ::std::os::raw::c_int, - pub rtm_pid: pid_t, - pub rtm_seq: ::std::os::raw::c_int, - pub rtm_errno: ::std::os::raw::c_int, - pub rtm_use: ::std::os::raw::c_int, - pub rtm_inits: u_int32_t, - pub rtm_rmx: rt_metrics, -} -#[test] -fn bindgen_test_layout_rt_msghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 92usize, - concat!("Size of: ", stringify!(rt_msghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(rt_msghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_msglen) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_msglen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr), - "::", - stringify!(rtm_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_type) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_index) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_index)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_flags) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_addrs) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_addrs)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_pid) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_pid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_seq) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_seq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_errno) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_errno)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_use) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_use)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_inits) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_inits)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_rmx) as usize - ptr as usize }, - 36usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_rmx)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rt_msghdr2 { - pub rtm_msglen: u_short, - pub rtm_version: u_char, - pub rtm_type: u_char, - pub rtm_index: u_short, - pub rtm_flags: ::std::os::raw::c_int, - pub rtm_addrs: ::std::os::raw::c_int, - pub rtm_refcnt: i32, - pub rtm_parentflags: ::std::os::raw::c_int, - pub rtm_reserved: ::std::os::raw::c_int, - pub rtm_use: ::std::os::raw::c_int, - pub rtm_inits: u_int32_t, - pub rtm_rmx: rt_metrics, -} -#[test] -fn bindgen_test_layout_rt_msghdr2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 92usize, - concat!("Size of: ", stringify!(rt_msghdr2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(rt_msghdr2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_msglen) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr2), - "::", - stringify!(rtm_msglen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr2), - "::", - stringify!(rtm_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_type) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(rt_msghdr2), "::", stringify!(rtm_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_index) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(rt_msghdr2), "::", stringify!(rtm_index)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_flags) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(rt_msghdr2), "::", stringify!(rtm_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_addrs) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(rt_msghdr2), "::", stringify!(rtm_addrs)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_refcnt) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr2), - "::", - stringify!(rtm_refcnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_parentflags) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr2), - "::", - stringify!(rtm_parentflags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_reserved) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr2), - "::", - stringify!(rtm_reserved) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_use) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(rt_msghdr2), "::", stringify!(rtm_use)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_inits) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(rt_msghdr2), "::", stringify!(rtm_inits)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_rmx) as usize - ptr as usize }, - 36usize, - concat!("Offset of field: ", stringify!(rt_msghdr2), "::", stringify!(rtm_rmx)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct kev_netevent_apnfallbk_data { - pub epid: pid_t, - pub euuid: uuid_t, -} -#[test] -fn bindgen_test_layout_kev_netevent_apnfallbk_data() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(kev_netevent_apnfallbk_data)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(kev_netevent_apnfallbk_data)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).epid) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(kev_netevent_apnfallbk_data), - "::", - stringify!(epid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).euuid) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(kev_netevent_apnfallbk_data), - "::", - stringify!(euuid) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rt_reach_info { - pub ri_refcnt: u_int32_t, - pub ri_probes: u_int32_t, - pub ri_snd_expire: u_int64_t, - pub ri_rcv_expire: u_int64_t, - pub ri_rssi: i32, - pub ri_lqm: i32, - pub ri_npm: i32, -} -#[test] -fn bindgen_test_layout_rt_reach_info() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(rt_reach_info)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rt_reach_info)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ri_refcnt) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rt_reach_info), - "::", - stringify!(ri_refcnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ri_probes) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(rt_reach_info), - "::", - stringify!(ri_probes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ri_snd_expire) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(rt_reach_info), - "::", - stringify!(ri_snd_expire) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ri_rcv_expire) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(rt_reach_info), - "::", - stringify!(ri_rcv_expire) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ri_rssi) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(rt_reach_info), - "::", - stringify!(ri_rssi) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ri_lqm) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(rt_reach_info), "::", stringify!(ri_lqm)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ri_npm) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(rt_reach_info), "::", stringify!(ri_npm)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rt_msghdr_ext { - pub rtm_msglen: u_short, - pub rtm_version: u_char, - pub rtm_type: u_char, - pub rtm_index: u_int32_t, - pub rtm_flags: u_int32_t, - pub rtm_reserved: u_int32_t, - pub rtm_addrs: u_int32_t, - pub rtm_pid: pid_t, - pub rtm_seq: ::std::os::raw::c_int, - pub rtm_errno: ::std::os::raw::c_int, - pub rtm_use: u_int32_t, - pub rtm_inits: u_int32_t, - pub rtm_rmx: rt_metrics, - pub rtm_ri: rt_reach_info, -} -#[test] -fn bindgen_test_layout_rt_msghdr_ext() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 136usize, - concat!("Size of: ", stringify!(rt_msghdr_ext)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rt_msghdr_ext)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_msglen) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_msglen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_type) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_index) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_flags) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_reserved) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_reserved) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_addrs) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_addrs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_pid) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_pid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_seq) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_seq) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_errno) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_errno) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_use) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_use) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_inits) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_inits) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_rmx) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr_ext), - "::", - stringify!(rtm_rmx) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_ri) as usize - ptr as usize }, - 96usize, - concat!("Offset of field: ", stringify!(rt_msghdr_ext), "::", stringify!(rtm_ri)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rt_addrinfo { - pub rti_addrs: ::std::os::raw::c_int, - pub rti_info: [*mut sockaddr; 8usize], -} -#[test] -fn bindgen_test_layout_rt_addrinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 72usize, - concat!("Size of: ", stringify!(rt_addrinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rt_addrinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rti_addrs) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rt_addrinfo), - "::", - stringify!(rti_addrs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rti_info) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(rt_addrinfo), "::", stringify!(rti_info)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct net_event_data { - pub if_family: u_int32_t, - pub if_unit: u_int32_t, - pub if_name: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_net_event_data() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(net_event_data)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(net_event_data)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_family) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(net_event_data), - "::", - stringify!(if_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_unit) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(net_event_data), - "::", - stringify!(if_unit) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_name) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(net_event_data), - "::", - stringify!(if_name) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timeval32 { - pub tv_sec: __int32_t, - pub tv_usec: __int32_t, -} -#[test] -fn bindgen_test_layout_timeval32() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(timeval32)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timeval32)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(timeval32), "::", stringify!(tv_sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_usec) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(timeval32), "::", stringify!(tv_usec)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_data { - pub ifi_type: u_char, - pub ifi_typelen: u_char, - pub ifi_physical: u_char, - pub ifi_addrlen: u_char, - pub ifi_hdrlen: u_char, - pub ifi_recvquota: u_char, - pub ifi_xmitquota: u_char, - pub ifi_unused1: u_char, - pub ifi_mtu: u_int32_t, - pub ifi_metric: u_int32_t, - pub ifi_baudrate: u_int32_t, - pub ifi_ipackets: u_int32_t, - pub ifi_ierrors: u_int32_t, - pub ifi_opackets: u_int32_t, - pub ifi_oerrors: u_int32_t, - pub ifi_collisions: u_int32_t, - pub ifi_ibytes: u_int32_t, - pub ifi_obytes: u_int32_t, - pub ifi_imcasts: u_int32_t, - pub ifi_omcasts: u_int32_t, - pub ifi_iqdrops: u_int32_t, - pub ifi_noproto: u_int32_t, - pub ifi_recvtiming: u_int32_t, - pub ifi_xmittiming: u_int32_t, - pub ifi_lastchange: timeval32, - pub ifi_unused2: u_int32_t, - pub ifi_hwassist: u_int32_t, - pub ifi_reserved1: u_int32_t, - pub ifi_reserved2: u_int32_t, -} -#[test] -fn bindgen_test_layout_if_data() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(if_data)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_data)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_type) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_typelen) as usize - ptr as usize }, - 1usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_typelen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_physical) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_physical)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_addrlen) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_addrlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_hdrlen) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_hdrlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_recvquota) as usize - ptr as usize }, - 5usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_recvquota) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_xmitquota) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_xmitquota) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_unused1) as usize - ptr as usize }, - 7usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_unused1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_mtu) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_mtu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_metric) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_metric)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_baudrate) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_baudrate)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ipackets) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_ipackets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ierrors) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_ierrors)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_opackets) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_opackets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_oerrors) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_oerrors)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_collisions) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_collisions) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ibytes) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_ibytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_obytes) as usize - ptr as usize }, - 44usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_obytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_imcasts) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_imcasts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_omcasts) as usize - ptr as usize }, - 52usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_omcasts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_iqdrops) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_iqdrops)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_noproto) as usize - ptr as usize }, - 60usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_noproto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_recvtiming) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_recvtiming) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_xmittiming) as usize - ptr as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_xmittiming) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_lastchange) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_lastchange) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_unused2) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_unused2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_hwassist) as usize - ptr as usize }, - 84usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_hwassist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_reserved1) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_reserved1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_reserved2) as usize - ptr as usize }, - 92usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_reserved2) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_data64 { - pub ifi_type: u_char, - pub ifi_typelen: u_char, - pub ifi_physical: u_char, - pub ifi_addrlen: u_char, - pub ifi_hdrlen: u_char, - pub ifi_recvquota: u_char, - pub ifi_xmitquota: u_char, - pub ifi_unused1: u_char, - pub ifi_mtu: u_int32_t, - pub ifi_metric: u_int32_t, - pub ifi_baudrate: u_int64_t, - pub ifi_ipackets: u_int64_t, - pub ifi_ierrors: u_int64_t, - pub ifi_opackets: u_int64_t, - pub ifi_oerrors: u_int64_t, - pub ifi_collisions: u_int64_t, - pub ifi_ibytes: u_int64_t, - pub ifi_obytes: u_int64_t, - pub ifi_imcasts: u_int64_t, - pub ifi_omcasts: u_int64_t, - pub ifi_iqdrops: u_int64_t, - pub ifi_noproto: u_int64_t, - pub ifi_recvtiming: u_int32_t, - pub ifi_xmittiming: u_int32_t, - pub ifi_lastchange: timeval32, -} -#[test] -fn bindgen_test_layout_if_data64() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(if_data64)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_data64)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_type) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(if_data64), "::", stringify!(ifi_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_typelen) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_typelen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_physical) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_physical) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_addrlen) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_addrlen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_hdrlen) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(if_data64), "::", stringify!(ifi_hdrlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_recvquota) as usize - ptr as usize }, - 5usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_recvquota) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_xmitquota) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_xmitquota) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_unused1) as usize - ptr as usize }, - 7usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_unused1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_mtu) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(if_data64), "::", stringify!(ifi_mtu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_metric) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(if_data64), "::", stringify!(ifi_metric)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_baudrate) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_baudrate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ipackets) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_ipackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ierrors) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_ierrors) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_opackets) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_opackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_oerrors) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_oerrors) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_collisions) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_collisions) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ibytes) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(if_data64), "::", stringify!(ifi_ibytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_obytes) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(if_data64), "::", stringify!(ifi_obytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_imcasts) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_imcasts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_omcasts) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_omcasts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_iqdrops) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_iqdrops) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_noproto) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_noproto) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_recvtiming) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_recvtiming) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_xmittiming) as usize - ptr as usize }, - 116usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_xmittiming) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_lastchange) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(if_data64), - "::", - stringify!(ifi_lastchange) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_traffic_class { - pub ifi_ibepackets: u_int64_t, - pub ifi_ibebytes: u_int64_t, - pub ifi_obepackets: u_int64_t, - pub ifi_obebytes: u_int64_t, - pub ifi_ibkpackets: u_int64_t, - pub ifi_ibkbytes: u_int64_t, - pub ifi_obkpackets: u_int64_t, - pub ifi_obkbytes: u_int64_t, - pub ifi_ivipackets: u_int64_t, - pub ifi_ivibytes: u_int64_t, - pub ifi_ovipackets: u_int64_t, - pub ifi_ovibytes: u_int64_t, - pub ifi_ivopackets: u_int64_t, - pub ifi_ivobytes: u_int64_t, - pub ifi_ovopackets: u_int64_t, - pub ifi_ovobytes: u_int64_t, - pub ifi_ipvpackets: u_int64_t, - pub ifi_ipvbytes: u_int64_t, - pub ifi_opvpackets: u_int64_t, - pub ifi_opvbytes: u_int64_t, -} -#[test] -fn bindgen_test_layout_if_traffic_class() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 160usize, - concat!("Size of: ", stringify!(if_traffic_class)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_traffic_class)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ibepackets) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ibepackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ibebytes) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ibebytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_obepackets) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_obepackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_obebytes) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_obebytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ibkpackets) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ibkpackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ibkbytes) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ibkbytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_obkpackets) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_obkpackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_obkbytes) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_obkbytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ivipackets) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ivipackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ivibytes) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ivibytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ovipackets) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ovipackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ovibytes) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ovibytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ivopackets) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ivopackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ivobytes) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ivobytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ovopackets) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ovopackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ovobytes) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ovobytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ipvpackets) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ipvpackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ipvbytes) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_ipvbytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_opvpackets) as usize - ptr as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_opvpackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_opvbytes) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(if_traffic_class), - "::", - stringify!(ifi_opvbytes) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_data_extended { - pub ifi_alignerrs: u_int64_t, - pub ifi_dt_bytes: u_int64_t, - pub ifi_fpackets: u_int64_t, - pub ifi_fbytes: u_int64_t, - pub reserved: [u_int64_t; 12usize], -} -#[test] -fn bindgen_test_layout_if_data_extended() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(if_data_extended)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_data_extended)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_alignerrs) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_data_extended), - "::", - stringify!(ifi_alignerrs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_dt_bytes) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_data_extended), - "::", - stringify!(ifi_dt_bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_fpackets) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_data_extended), - "::", - stringify!(ifi_fpackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_fbytes) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_data_extended), - "::", - stringify!(ifi_fbytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(if_data_extended), - "::", - stringify!(reserved) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_packet_stats { - pub ifi_tcp_badformat: u_int64_t, - pub ifi_tcp_unspecv6: u_int64_t, - pub ifi_tcp_synfin: u_int64_t, - pub ifi_tcp_badformatipsec: u_int64_t, - pub ifi_tcp_noconnnolist: u_int64_t, - pub ifi_tcp_noconnlist: u_int64_t, - pub ifi_tcp_listbadsyn: u_int64_t, - pub ifi_tcp_icmp6unreach: u_int64_t, - pub ifi_tcp_deprecate6: u_int64_t, - pub ifi_tcp_rstinsynrcv: u_int64_t, - pub ifi_tcp_ooopacket: u_int64_t, - pub ifi_tcp_dospacket: u_int64_t, - pub ifi_tcp_cleanup: u_int64_t, - pub ifi_tcp_synwindow: u_int64_t, - pub reserved: [u_int64_t; 6usize], - pub ifi_udp_port_unreach: u_int64_t, - pub ifi_udp_faithprefix: u_int64_t, - pub ifi_udp_port0: u_int64_t, - pub ifi_udp_badlength: u_int64_t, - pub ifi_udp_badchksum: u_int64_t, - pub ifi_udp_badmcast: u_int64_t, - pub ifi_udp_cleanup: u_int64_t, - pub ifi_udp_badipsec: u_int64_t, - pub _reserved: [u_int64_t; 4usize], -} -#[test] -fn bindgen_test_layout_if_packet_stats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 256usize, - concat!("Size of: ", stringify!(if_packet_stats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_packet_stats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_badformat) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_badformat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_unspecv6) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_unspecv6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_synfin) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_synfin) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_badformatipsec) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_badformatipsec) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_noconnnolist) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_noconnnolist) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_noconnlist) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_noconnlist) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_listbadsyn) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_listbadsyn) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_icmp6unreach) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_icmp6unreach) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_deprecate6) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_deprecate6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_rstinsynrcv) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_rstinsynrcv) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_ooopacket) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_ooopacket) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_dospacket) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_dospacket) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_cleanup) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_cleanup) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_tcp_synwindow) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_tcp_synwindow) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(reserved) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_udp_port_unreach) as usize - ptr as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_udp_port_unreach) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_udp_faithprefix) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_udp_faithprefix) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_udp_port0) as usize - ptr as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_udp_port0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_udp_badlength) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_udp_badlength) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_udp_badchksum) as usize - ptr as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_udp_badchksum) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_udp_badmcast) as usize - ptr as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_udp_badmcast) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_udp_cleanup) as usize - ptr as usize }, - 208usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_udp_cleanup) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_udp_badipsec) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(ifi_udp_badipsec) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._reserved) as usize - ptr as usize }, - 224usize, - concat!( - "Offset of field: ", - stringify!(if_packet_stats), - "::", - stringify!(_reserved) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_description { - pub ifd_maxlen: u_int32_t, - pub ifd_len: u_int32_t, - pub ifd_desc: *mut u_int8_t, -} -#[test] -fn bindgen_test_layout_if_description() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_description)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_description)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifd_maxlen) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_description), - "::", - stringify!(ifd_maxlen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifd_len) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_description), - "::", - stringify!(ifd_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifd_desc) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_description), - "::", - stringify!(ifd_desc) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_bandwidths { - pub eff_bw: u64, - pub max_bw: u64, -} -#[test] -fn bindgen_test_layout_if_bandwidths() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_bandwidths)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_bandwidths)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).eff_bw) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(if_bandwidths), "::", stringify!(eff_bw)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_bw) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(if_bandwidths), "::", stringify!(max_bw)) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_latencies { - pub eff_lt: u_int64_t, - pub max_lt: u_int64_t, -} -#[test] -fn bindgen_test_layout_if_latencies() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_latencies)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_latencies)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).eff_lt) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(if_latencies), "::", stringify!(eff_lt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_lt) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(if_latencies), "::", stringify!(max_lt)) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_netem_params { - pub ifnetem_bandwidth_bps: u64, - pub ifnetem_latency_ms: u32, - pub ifnetem_jitter_ms: u32, - pub ifnetem_corruption_p: u32, - pub ifnetem_duplication_p: u32, - pub ifnetem_loss_p_gr_gl: u32, - pub ifnetem_loss_p_gr_bl: u32, - pub ifnetem_loss_p_bl_br: u32, - pub ifnetem_loss_p_bl_gr: u32, - pub ifnetem_loss_p_br_bl: u32, - pub ifnetem_reordering_p: u32, -} -#[test] -fn bindgen_test_layout_if_netem_params() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(if_netem_params)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_netem_params)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnetem_bandwidth_bps) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_netem_params), - "::", - stringify!(ifnetem_bandwidth_bps) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnetem_latency_ms) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_netem_params), - "::", - stringify!(ifnetem_latency_ms) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnetem_jitter_ms) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(if_netem_params), - "::", - stringify!(ifnetem_jitter_ms) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnetem_corruption_p) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_netem_params), - "::", - stringify!(ifnetem_corruption_p) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnetem_duplication_p) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(if_netem_params), - "::", - stringify!(ifnetem_duplication_p) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnetem_loss_p_gr_gl) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_netem_params), - "::", - stringify!(ifnetem_loss_p_gr_gl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnetem_loss_p_gr_bl) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(if_netem_params), - "::", - stringify!(ifnetem_loss_p_gr_bl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnetem_loss_p_bl_br) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(if_netem_params), - "::", - stringify!(ifnetem_loss_p_bl_br) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnetem_loss_p_bl_gr) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(if_netem_params), - "::", - stringify!(ifnetem_loss_p_bl_gr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnetem_loss_p_br_bl) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(if_netem_params), - "::", - stringify!(ifnetem_loss_p_br_bl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnetem_reordering_p) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(if_netem_params), - "::", - stringify!(ifnetem_reordering_p) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_rxpoll_stats { - pub ifi_poll_off_req: u_int32_t, - pub ifi_poll_off_err: u_int32_t, - pub ifi_poll_on_req: u_int32_t, - pub ifi_poll_on_err: u_int32_t, - pub ifi_poll_wakeups_avg: u_int32_t, - pub ifi_poll_wakeups_lowat: u_int32_t, - pub ifi_poll_wakeups_hiwat: u_int32_t, - pub ifi_poll_packets: u_int64_t, - pub ifi_poll_packets_avg: u_int32_t, - pub ifi_poll_packets_min: u_int32_t, - pub ifi_poll_packets_max: u_int32_t, - pub ifi_poll_packets_lowat: u_int32_t, - pub ifi_poll_packets_hiwat: u_int32_t, - pub ifi_poll_bytes: u_int64_t, - pub ifi_poll_bytes_avg: u_int32_t, - pub ifi_poll_bytes_min: u_int32_t, - pub ifi_poll_bytes_max: u_int32_t, - pub ifi_poll_bytes_lowat: u_int32_t, - pub ifi_poll_bytes_hiwat: u_int32_t, - pub ifi_poll_packets_limit: u_int32_t, - pub ifi_poll_interval_time: u_int64_t, -} -#[test] -fn bindgen_test_layout_if_rxpoll_stats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(if_rxpoll_stats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_rxpoll_stats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_off_req) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_off_req) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_off_err) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_off_err) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_on_req) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_on_req) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_on_err) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_on_err) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_wakeups_avg) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_wakeups_avg) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_wakeups_lowat) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_wakeups_lowat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_wakeups_hiwat) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_wakeups_hiwat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_packets) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_packets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_packets_avg) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_packets_avg) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_packets_min) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_packets_min) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_packets_max) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_packets_max) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_packets_lowat) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_packets_lowat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_packets_hiwat) as usize - ptr as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_packets_hiwat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_bytes) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_bytes_avg) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_bytes_avg) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_bytes_min) as usize - ptr as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_bytes_min) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_bytes_max) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_bytes_max) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_bytes_lowat) as usize - ptr as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_bytes_lowat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_bytes_hiwat) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_bytes_hiwat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_packets_limit) as usize - ptr as usize }, - 84usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_packets_limit) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_poll_interval_time) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(if_rxpoll_stats), - "::", - stringify!(ifi_poll_interval_time) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_netif_stats { - pub ifn_rx_mit_interval: u_int64_t, - pub ifn_rx_mit_mode: u_int32_t, - pub ifn_rx_mit_packets_avg: u_int32_t, - pub ifn_rx_mit_packets_min: u_int32_t, - pub ifn_rx_mit_packets_max: u_int32_t, - pub ifn_rx_mit_bytes_avg: u_int32_t, - pub ifn_rx_mit_bytes_min: u_int32_t, - pub ifn_rx_mit_bytes_max: u_int32_t, - pub ifn_rx_mit_cfg_idx: u_int32_t, - pub ifn_rx_mit_cfg_packets_lowat: u_int32_t, - pub ifn_rx_mit_cfg_packets_hiwat: u_int32_t, - pub ifn_rx_mit_cfg_bytes_lowat: u_int32_t, - pub ifn_rx_mit_cfg_bytes_hiwat: u_int32_t, - pub ifn_rx_mit_cfg_interval: u_int32_t, -} -#[test] -fn bindgen_test_layout_if_netif_stats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 60usize, - concat!("Size of: ", stringify!(if_netif_stats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_netif_stats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_interval) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_interval) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_mode) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_mode) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_packets_avg) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_packets_avg) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_packets_min) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_packets_min) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_packets_max) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_packets_max) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_bytes_avg) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_bytes_avg) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_bytes_min) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_bytes_min) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_bytes_max) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_bytes_max) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_cfg_idx) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_cfg_idx) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_cfg_packets_lowat) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_cfg_packets_lowat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_cfg_packets_hiwat) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_cfg_packets_hiwat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_cfg_bytes_lowat) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_cfg_bytes_lowat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_cfg_bytes_hiwat) as usize - ptr as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_cfg_bytes_hiwat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifn_rx_mit_cfg_interval) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_netif_stats), - "::", - stringify!(ifn_rx_mit_cfg_interval) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_tcp_ecn_perf_stat { - pub total_txpkts: u_int64_t, - pub total_rxmitpkts: u_int64_t, - pub total_rxpkts: u_int64_t, - pub total_oopkts: u_int64_t, - pub total_reorderpkts: u_int64_t, - pub rtt_avg: u_int64_t, - pub rtt_var: u_int64_t, - pub sack_episodes: u_int64_t, - pub rxmit_drop: u_int64_t, - pub rst_drop: u_int64_t, - pub oo_percent: u_int64_t, - pub reorder_percent: u_int64_t, - pub rxmit_percent: u_int64_t, -} -#[test] -fn bindgen_test_layout_if_tcp_ecn_perf_stat() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 104usize, - concat!("Size of: ", stringify!(if_tcp_ecn_perf_stat)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_tcp_ecn_perf_stat)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).total_txpkts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(total_txpkts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).total_rxmitpkts) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(total_rxmitpkts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).total_rxpkts) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(total_rxpkts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).total_oopkts) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(total_oopkts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).total_reorderpkts) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(total_reorderpkts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtt_avg) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(rtt_avg) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtt_var) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(rtt_var) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sack_episodes) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(sack_episodes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rxmit_drop) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(rxmit_drop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rst_drop) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(rst_drop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).oo_percent) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(oo_percent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reorder_percent) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(reorder_percent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rxmit_percent) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_perf_stat), - "::", - stringify!(rxmit_percent) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_tcp_ecn_stat { - pub timestamp: u_int64_t, - pub ecn_client_setup: u_int64_t, - pub ecn_server_setup: u_int64_t, - pub ecn_client_success: u_int64_t, - pub ecn_server_success: u_int64_t, - pub ecn_peer_nosupport: u_int64_t, - pub ecn_syn_lost: u_int64_t, - pub ecn_synack_lost: u_int64_t, - pub ecn_recv_ce: u_int64_t, - pub ecn_recv_ece: u_int64_t, - pub ecn_conn_recv_ce: u_int64_t, - pub ecn_conn_recv_ece: u_int64_t, - pub ecn_conn_plnoce: u_int64_t, - pub ecn_conn_plce: u_int64_t, - pub ecn_conn_noplce: u_int64_t, - pub ecn_fallback_synloss: u_int64_t, - pub ecn_fallback_reorder: u_int64_t, - pub ecn_fallback_ce: u_int64_t, - pub ecn_off_conn: u_int64_t, - pub ecn_total_conn: u_int64_t, - pub ecn_fallback_droprst: u_int64_t, - pub ecn_fallback_droprxmt: u_int64_t, - pub ecn_fallback_synrst: u_int64_t, - pub ecn_on: if_tcp_ecn_perf_stat, - pub ecn_off: if_tcp_ecn_perf_stat, -} -#[test] -fn bindgen_test_layout_if_tcp_ecn_stat() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 392usize, - concat!("Size of: ", stringify!(if_tcp_ecn_stat)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_tcp_ecn_stat)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(timestamp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_client_setup) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_client_setup) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_server_setup) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_server_setup) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_client_success) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_client_success) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_server_success) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_server_success) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_peer_nosupport) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_peer_nosupport) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_syn_lost) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_syn_lost) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_synack_lost) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_synack_lost) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_recv_ce) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_recv_ce) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_recv_ece) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_recv_ece) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_conn_recv_ce) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_conn_recv_ce) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_conn_recv_ece) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_conn_recv_ece) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_conn_plnoce) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_conn_plnoce) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_conn_plce) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_conn_plce) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_conn_noplce) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_conn_noplce) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_fallback_synloss) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_fallback_synloss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_fallback_reorder) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_fallback_reorder) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_fallback_ce) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_fallback_ce) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_off_conn) as usize - ptr as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_off_conn) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_total_conn) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_total_conn) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_fallback_droprst) as usize - ptr as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_fallback_droprst) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_fallback_droprxmt) as usize - ptr as usize }, - 168usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_fallback_droprxmt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_fallback_synrst) as usize - ptr as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_fallback_synrst) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_on) as usize - ptr as usize }, - 184usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_on) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_off) as usize - ptr as usize }, - 288usize, - concat!( - "Offset of field: ", - stringify!(if_tcp_ecn_stat), - "::", - stringify!(ecn_off) - ) - ); -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct if_lim_perf_stat { - pub lim_dl_max_bandwidth: u_int64_t, - pub lim_ul_max_bandwidth: u_int64_t, - pub lim_total_txpkts: u_int64_t, - pub lim_total_rxpkts: u_int64_t, - pub lim_total_retxpkts: u_int64_t, - pub lim_packet_loss_percent: u_int64_t, - pub lim_total_oopkts: u_int64_t, - pub lim_packet_ooo_percent: u_int64_t, - pub lim_rtt_variance: u_int64_t, - pub lim_rtt_average: u_int64_t, - pub lim_rtt_min: u_int64_t, - pub lim_conn_timeouts: u_int64_t, - pub lim_conn_attempts: u_int64_t, - pub lim_conn_timeout_percent: u_int64_t, - pub lim_bk_txpkts: u_int64_t, - pub _bitfield_align_1: [u8; 0], - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>, - pub __bindgen_padding_0: [u8; 3usize], -} -#[test] -fn bindgen_test_layout_if_lim_perf_stat() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 124usize, - concat!("Size of: ", stringify!(if_lim_perf_stat)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_lim_perf_stat)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_dl_max_bandwidth) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_dl_max_bandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_ul_max_bandwidth) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_ul_max_bandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_total_txpkts) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_total_txpkts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_total_rxpkts) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_total_rxpkts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_total_retxpkts) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_total_retxpkts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_packet_loss_percent) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_packet_loss_percent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_total_oopkts) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_total_oopkts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_packet_ooo_percent) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_packet_ooo_percent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_rtt_variance) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_rtt_variance) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_rtt_average) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_rtt_average) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_rtt_min) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_rtt_min) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_conn_timeouts) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_conn_timeouts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_conn_attempts) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_conn_attempts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_conn_timeout_percent) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_conn_timeout_percent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lim_bk_txpkts) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(if_lim_perf_stat), - "::", - stringify!(lim_bk_txpkts) - ) - ); -} -impl if_lim_perf_stat { - #[inline] - pub fn lim_dl_detected(&self) -> u_int64_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u64) } - } - - #[inline] - pub fn set_lim_dl_detected(&mut self, val: u_int64_t) { - unsafe { - let val: u64 = ::std::mem::transmute(val); - self._bitfield_1.set(0usize, 1u8, val as u64) - } - } - - #[inline] - pub fn lim_ul_detected(&self) -> u_int64_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u64) } - } - - #[inline] - pub fn set_lim_ul_detected(&mut self, val: u_int64_t) { - unsafe { - let val: u64 = ::std::mem::transmute(val); - self._bitfield_1.set(1usize, 1u8, val as u64) - } - } - - #[inline] - pub fn new_bitfield_1( - lim_dl_detected: u_int64_t, - lim_ul_detected: u_int64_t, - ) -> __BindgenBitfieldUnit<[u8; 1usize]> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default(); - __bindgen_bitfield_unit.set(0usize, 1u8, { - let lim_dl_detected: u64 = unsafe { ::std::mem::transmute(lim_dl_detected) }; - lim_dl_detected as u64 - }); - __bindgen_bitfield_unit.set(1usize, 1u8, { - let lim_ul_detected: u64 = unsafe { ::std::mem::transmute(lim_ul_detected) }; - lim_ul_detected as u64 - }); - __bindgen_bitfield_unit - } -} -#[repr(C, packed(4))] -#[derive(Debug, Copy, Clone)] -pub struct ifnet_stats_per_flow { - pub bk_txpackets: u_int64_t, - pub txpackets: u_int64_t, - pub rxpackets: u_int64_t, - pub txretransmitbytes: u_int32_t, - pub rxoutoforderbytes: u_int32_t, - pub rxmitpkts: u_int32_t, - pub rcvoopack: u_int32_t, - pub pawsdrop: u_int32_t, - pub sack_recovery_episodes: u_int32_t, - pub reordered_pkts: u_int32_t, - pub dsack_sent: u_int32_t, - pub dsack_recvd: u_int32_t, - pub srtt: u_int32_t, - pub rttupdated: u_int32_t, - pub rttvar: u_int32_t, - pub rttmin: u_int32_t, - pub bw_sndbw_max: u_int32_t, - pub bw_rcvbw_max: u_int32_t, - pub ecn_recv_ece: u_int32_t, - pub ecn_recv_ce: u_int32_t, - pub ecn_flags: u_int16_t, - pub _bitfield_align_1: [u8; 0], - pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>, -} -#[test] -fn bindgen_test_layout_ifnet_stats_per_flow() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(ifnet_stats_per_flow)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifnet_stats_per_flow)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bk_txpackets) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(bk_txpackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).txpackets) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(txpackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rxpackets) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(rxpackets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).txretransmitbytes) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(txretransmitbytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rxoutoforderbytes) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(rxoutoforderbytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rxmitpkts) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(rxmitpkts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rcvoopack) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(rcvoopack) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pawsdrop) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(pawsdrop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sack_recovery_episodes) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(sack_recovery_episodes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reordered_pkts) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(reordered_pkts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dsack_sent) as usize - ptr as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(dsack_sent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dsack_recvd) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(dsack_recvd) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).srtt) as usize - ptr as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(srtt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rttupdated) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(rttupdated) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rttvar) as usize - ptr as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(rttvar) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rttmin) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(rttmin) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bw_sndbw_max) as usize - ptr as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(bw_sndbw_max) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bw_rcvbw_max) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(bw_rcvbw_max) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_recv_ece) as usize - ptr as usize }, - 84usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(ecn_recv_ece) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_recv_ce) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(ecn_recv_ce) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ecn_flags) as usize - ptr as usize }, - 92usize, - concat!( - "Offset of field: ", - stringify!(ifnet_stats_per_flow), - "::", - stringify!(ecn_flags) - ) - ); -} -impl ifnet_stats_per_flow { - #[inline] - pub fn ipv4(&self) -> u_int16_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u16) } - } - - #[inline] - pub fn set_ipv4(&mut self, val: u_int16_t) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(0usize, 1u8, val as u64) - } - } - - #[inline] - pub fn local(&self) -> u_int16_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u16) } - } - - #[inline] - pub fn set_local(&mut self, val: u_int16_t) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(1usize, 1u8, val as u64) - } - } - - #[inline] - pub fn connreset(&self) -> u_int16_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u16) } - } - - #[inline] - pub fn set_connreset(&mut self, val: u_int16_t) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(2usize, 1u8, val as u64) - } - } - - #[inline] - pub fn conntimeout(&self) -> u_int16_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u16) } - } - - #[inline] - pub fn set_conntimeout(&mut self, val: u_int16_t) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(3usize, 1u8, val as u64) - } - } - - #[inline] - pub fn rxmit_drop(&self) -> u_int16_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u16) } - } - - #[inline] - pub fn set_rxmit_drop(&mut self, val: u_int16_t) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(4usize, 1u8, val as u64) - } - } - - #[inline] - pub fn ecn_fallback_synloss(&self) -> u_int16_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u16) } - } - - #[inline] - pub fn set_ecn_fallback_synloss(&mut self, val: u_int16_t) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(5usize, 1u8, val as u64) - } - } - - #[inline] - pub fn ecn_fallback_droprst(&self) -> u_int16_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u16) } - } - - #[inline] - pub fn set_ecn_fallback_droprst(&mut self, val: u_int16_t) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(6usize, 1u8, val as u64) - } - } - - #[inline] - pub fn ecn_fallback_droprxmt(&self) -> u_int16_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u16) } - } - - #[inline] - pub fn set_ecn_fallback_droprxmt(&mut self, val: u_int16_t) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(7usize, 1u8, val as u64) - } - } - - #[inline] - pub fn ecn_fallback_ce(&self) -> u_int16_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) } - } - - #[inline] - pub fn set_ecn_fallback_ce(&mut self, val: u_int16_t) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(8usize, 1u8, val as u64) - } - } - - #[inline] - pub fn ecn_fallback_reorder(&self) -> u_int16_t { - unsafe { ::std::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) } - } - - #[inline] - pub fn set_ecn_fallback_reorder(&mut self, val: u_int16_t) { - unsafe { - let val: u16 = ::std::mem::transmute(val); - self._bitfield_1.set(9usize, 1u8, val as u64) - } - } - - #[inline] - pub fn new_bitfield_1( - ipv4: u_int16_t, - local: u_int16_t, - connreset: u_int16_t, - conntimeout: u_int16_t, - rxmit_drop: u_int16_t, - ecn_fallback_synloss: u_int16_t, - ecn_fallback_droprst: u_int16_t, - ecn_fallback_droprxmt: u_int16_t, - ecn_fallback_ce: u_int16_t, - ecn_fallback_reorder: u_int16_t, - ) -> __BindgenBitfieldUnit<[u8; 2usize]> { - let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default(); - __bindgen_bitfield_unit.set(0usize, 1u8, { - let ipv4: u16 = unsafe { ::std::mem::transmute(ipv4) }; - ipv4 as u64 - }); - __bindgen_bitfield_unit.set(1usize, 1u8, { - let local: u16 = unsafe { ::std::mem::transmute(local) }; - local as u64 - }); - __bindgen_bitfield_unit.set(2usize, 1u8, { - let connreset: u16 = unsafe { ::std::mem::transmute(connreset) }; - connreset as u64 - }); - __bindgen_bitfield_unit.set(3usize, 1u8, { - let conntimeout: u16 = unsafe { ::std::mem::transmute(conntimeout) }; - conntimeout as u64 - }); - __bindgen_bitfield_unit.set(4usize, 1u8, { - let rxmit_drop: u16 = unsafe { ::std::mem::transmute(rxmit_drop) }; - rxmit_drop as u64 - }); - __bindgen_bitfield_unit.set(5usize, 1u8, { - let ecn_fallback_synloss: u16 = unsafe { ::std::mem::transmute(ecn_fallback_synloss) }; - ecn_fallback_synloss as u64 - }); - __bindgen_bitfield_unit.set(6usize, 1u8, { - let ecn_fallback_droprst: u16 = unsafe { ::std::mem::transmute(ecn_fallback_droprst) }; - ecn_fallback_droprst as u64 - }); - __bindgen_bitfield_unit.set(7usize, 1u8, { - let ecn_fallback_droprxmt: u16 = unsafe { ::std::mem::transmute(ecn_fallback_droprxmt) }; - ecn_fallback_droprxmt as u64 - }); - __bindgen_bitfield_unit.set(8usize, 1u8, { - let ecn_fallback_ce: u16 = unsafe { ::std::mem::transmute(ecn_fallback_ce) }; - ecn_fallback_ce as u64 - }); - __bindgen_bitfield_unit.set(9usize, 1u8, { - let ecn_fallback_reorder: u16 = unsafe { ::std::mem::transmute(ecn_fallback_reorder) }; - ecn_fallback_reorder as u64 - }); - __bindgen_bitfield_unit - } -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct if_cellular_status_v1 { - pub valid_bitmask: u_int32_t, - pub link_quality_metric: u_int32_t, - pub ul_effective_bandwidth: u_int32_t, - pub ul_max_bandwidth: u_int32_t, - pub ul_min_latency: u_int32_t, - pub ul_effective_latency: u_int32_t, - pub ul_max_latency: u_int32_t, - pub ul_retxt_level: u_int32_t, - pub ul_bytes_lost: u_int32_t, - pub ul_min_queue_size: u_int32_t, - pub ul_avg_queue_size: u_int32_t, - pub ul_max_queue_size: u_int32_t, - pub dl_effective_bandwidth: u_int32_t, - pub dl_max_bandwidth: u_int32_t, - pub config_inactivity_time: u_int32_t, - pub config_backoff_time: u_int32_t, - pub mss_recommended: u_int16_t, - pub reserved_1: u_int16_t, - pub reserved_2: u_int32_t, - pub reserved_3: u_int64_t, - pub reserved_4: u_int64_t, - pub reserved_5: u_int64_t, - pub reserved_6: u_int64_t, -} -#[test] -fn bindgen_test_layout_if_cellular_status_v1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 104usize, - concat!("Size of: ", stringify!(if_cellular_status_v1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(if_cellular_status_v1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).valid_bitmask) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(valid_bitmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).link_quality_metric) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(link_quality_metric) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_effective_bandwidth) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(ul_effective_bandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_max_bandwidth) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(ul_max_bandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_min_latency) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(ul_min_latency) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_effective_latency) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(ul_effective_latency) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_max_latency) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(ul_max_latency) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_retxt_level) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(ul_retxt_level) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_bytes_lost) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(ul_bytes_lost) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_min_queue_size) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(ul_min_queue_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_avg_queue_size) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(ul_avg_queue_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_max_queue_size) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(ul_max_queue_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dl_effective_bandwidth) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(dl_effective_bandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dl_max_bandwidth) as usize - ptr as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(dl_max_bandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).config_inactivity_time) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(config_inactivity_time) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).config_backoff_time) as usize - ptr as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(config_backoff_time) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mss_recommended) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(mss_recommended) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved_1) as usize - ptr as usize }, - 66usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(reserved_1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved_2) as usize - ptr as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(reserved_2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved_3) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(reserved_3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved_4) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(reserved_4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved_5) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(reserved_5) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved_6) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status_v1), - "::", - stringify!(reserved_6) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct if_cellular_status { - pub if_cell_u: if_cellular_status__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union if_cellular_status__bindgen_ty_1 { - pub if_status_v1: if_cellular_status_v1, -} -#[test] -fn bindgen_test_layout_if_cellular_status__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 104usize, - concat!("Size of: ", stringify!(if_cellular_status__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(if_cellular_status__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_status_v1) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status__bindgen_ty_1), - "::", - stringify!(if_status_v1) - ) - ); -} -#[test] -fn bindgen_test_layout_if_cellular_status() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 104usize, - concat!("Size of: ", stringify!(if_cellular_status)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(if_cellular_status)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_cell_u) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_cellular_status), - "::", - stringify!(if_cell_u) - ) - ); -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct if_wifi_status_v1 { - pub valid_bitmask: u_int32_t, - pub link_quality_metric: u_int32_t, - pub ul_effective_bandwidth: u_int32_t, - pub ul_max_bandwidth: u_int32_t, - pub ul_min_latency: u_int32_t, - pub ul_effective_latency: u_int32_t, - pub ul_max_latency: u_int32_t, - pub ul_retxt_level: u_int32_t, - pub ul_bytes_lost: u_int32_t, - pub ul_error_rate: u_int32_t, - pub dl_effective_bandwidth: u_int32_t, - pub dl_max_bandwidth: u_int32_t, - pub dl_min_latency: u_int32_t, - pub dl_effective_latency: u_int32_t, - pub dl_max_latency: u_int32_t, - pub dl_error_rate: u_int32_t, - pub config_frequency: u_int32_t, - pub config_multicast_rate: u_int32_t, - pub scan_count: u_int32_t, - pub scan_duration: u_int32_t, - pub reserved_1: u_int64_t, - pub reserved_2: u_int64_t, - pub reserved_3: u_int64_t, - pub reserved_4: u_int64_t, -} -#[test] -fn bindgen_test_layout_if_wifi_status_v1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 112usize, - concat!("Size of: ", stringify!(if_wifi_status_v1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(if_wifi_status_v1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).valid_bitmask) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(valid_bitmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).link_quality_metric) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(link_quality_metric) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_effective_bandwidth) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(ul_effective_bandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_max_bandwidth) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(ul_max_bandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_min_latency) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(ul_min_latency) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_effective_latency) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(ul_effective_latency) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_max_latency) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(ul_max_latency) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_retxt_level) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(ul_retxt_level) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_bytes_lost) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(ul_bytes_lost) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ul_error_rate) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(ul_error_rate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dl_effective_bandwidth) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(dl_effective_bandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dl_max_bandwidth) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(dl_max_bandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dl_min_latency) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(dl_min_latency) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dl_effective_latency) as usize - ptr as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(dl_effective_latency) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dl_max_latency) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(dl_max_latency) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dl_error_rate) as usize - ptr as usize }, - 60usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(dl_error_rate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).config_frequency) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(config_frequency) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).config_multicast_rate) as usize - ptr as usize }, - 68usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(config_multicast_rate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scan_count) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(scan_count) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scan_duration) as usize - ptr as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(scan_duration) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved_1) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(reserved_1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved_2) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(reserved_2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved_3) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(reserved_3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved_4) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status_v1), - "::", - stringify!(reserved_4) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct if_wifi_status { - pub if_wifi_u: if_wifi_status__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union if_wifi_status__bindgen_ty_1 { - pub if_status_v1: if_wifi_status_v1, -} -#[test] -fn bindgen_test_layout_if_wifi_status__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 112usize, - concat!("Size of: ", stringify!(if_wifi_status__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(if_wifi_status__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_status_v1) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status__bindgen_ty_1), - "::", - stringify!(if_status_v1) - ) - ); -} -#[test] -fn bindgen_test_layout_if_wifi_status() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 112usize, - concat!("Size of: ", stringify!(if_wifi_status)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(if_wifi_status)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_wifi_u) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_wifi_status), - "::", - stringify!(if_wifi_u) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct if_link_status { - pub ifsr_version: u_int32_t, - pub ifsr_len: u_int32_t, - pub ifsr_u: if_link_status__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union if_link_status__bindgen_ty_1 { - pub ifsr_cell: if_cellular_status, - pub ifsr_wifi: if_wifi_status, -} -#[test] -fn bindgen_test_layout_if_link_status__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 112usize, - concat!("Size of: ", stringify!(if_link_status__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(if_link_status__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifsr_cell) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_link_status__bindgen_ty_1), - "::", - stringify!(ifsr_cell) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifsr_wifi) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_link_status__bindgen_ty_1), - "::", - stringify!(ifsr_wifi) - ) - ); -} -#[test] -fn bindgen_test_layout_if_link_status() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 120usize, - concat!("Size of: ", stringify!(if_link_status)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_link_status)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifsr_version) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_link_status), - "::", - stringify!(ifsr_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifsr_len) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_link_status), - "::", - stringify!(ifsr_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifsr_u) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_link_status), - "::", - stringify!(ifsr_u) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_interface_state { - pub valid_bitmask: u_int8_t, - pub rrc_state: u_int8_t, - pub lqm_state: i8, - pub interface_availability: u_int8_t, -} -#[test] -fn bindgen_test_layout_if_interface_state() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(if_interface_state)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(if_interface_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).valid_bitmask) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_interface_state), - "::", - stringify!(valid_bitmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rrc_state) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(if_interface_state), - "::", - stringify!(rrc_state) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lqm_state) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(if_interface_state), - "::", - stringify!(lqm_state) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).interface_availability) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(if_interface_state), - "::", - stringify!(interface_availability) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct chain_len_stats { - pub cls_one: u64, - pub cls_two: u64, - pub cls_three: u64, - pub cls_four: u64, - pub cls_five_or_more: u64, -} -#[test] -fn bindgen_test_layout_chain_len_stats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(chain_len_stats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(chain_len_stats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cls_one) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(chain_len_stats), - "::", - stringify!(cls_one) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cls_two) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(chain_len_stats), - "::", - stringify!(cls_two) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cls_three) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(chain_len_stats), - "::", - stringify!(cls_three) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cls_four) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(chain_len_stats), - "::", - stringify!(cls_four) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cls_five_or_more) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(chain_len_stats), - "::", - stringify!(cls_five_or_more) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifnet_interface_advisory { - pub version: u8, - pub direction: u8, - pub _reserved: u16, - pub rate_trend_suggestion: i32, - pub timestamp: u64, - pub max_bandwidth: u64, - pub total_byte_count: u64, - pub average_throughput: u64, - pub flushable_queue_size: u32, - pub non_flushable_queue_size: u32, - pub average_delay: u32, -} -#[test] -fn bindgen_test_layout_ifnet_interface_advisory() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(ifnet_interface_advisory)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifnet_interface_advisory)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).version) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifnet_interface_advisory), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(ifnet_interface_advisory), - "::", - stringify!(direction) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._reserved) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(ifnet_interface_advisory), - "::", - stringify!(_reserved) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rate_trend_suggestion) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ifnet_interface_advisory), - "::", - stringify!(rate_trend_suggestion) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ifnet_interface_advisory), - "::", - stringify!(timestamp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_bandwidth) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifnet_interface_advisory), - "::", - stringify!(max_bandwidth) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).total_byte_count) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ifnet_interface_advisory), - "::", - stringify!(total_byte_count) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).average_throughput) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ifnet_interface_advisory), - "::", - stringify!(average_throughput) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flushable_queue_size) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(ifnet_interface_advisory), - "::", - stringify!(flushable_queue_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).non_flushable_queue_size) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(ifnet_interface_advisory), - "::", - stringify!(non_flushable_queue_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).average_delay) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(ifnet_interface_advisory), - "::", - stringify!(average_delay) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifqueue { - pub ifq_head: *mut ::std::os::raw::c_void, - pub ifq_tail: *mut ::std::os::raw::c_void, - pub ifq_len: ::std::os::raw::c_int, - pub ifq_maxlen: ::std::os::raw::c_int, - pub ifq_drops: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_ifqueue() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(ifqueue)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifqueue)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifq_head) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifqueue), "::", stringify!(ifq_head)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifq_tail) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(ifqueue), "::", stringify!(ifq_tail)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifq_len) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(ifqueue), "::", stringify!(ifq_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifq_maxlen) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(ifqueue), "::", stringify!(ifq_maxlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifq_drops) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(ifqueue), "::", stringify!(ifq_drops)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union sockaddr_union { - pub sa: sockaddr, - pub sin: sockaddr_in, - pub sin6: sockaddr_in6, -} -#[test] -fn bindgen_test_layout_sockaddr_union() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 28usize, - concat!("Size of: ", stringify!(sockaddr_union)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockaddr_union)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_union), "::", stringify!(sa)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_union), "::", stringify!(sin)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_union), "::", stringify!(sin6)) - ); -} -pub const PF_INOUT: _bindgen_ty_1 = 0; -pub const PF_IN: _bindgen_ty_1 = 1; -pub const PF_OUT: _bindgen_ty_1 = 2; -pub type _bindgen_ty_1 = ::std::os::raw::c_uint; -pub const PF_PASS: _bindgen_ty_2 = 0; -pub const PF_DROP: _bindgen_ty_2 = 1; -pub const PF_SCRUB: _bindgen_ty_2 = 2; -pub const PF_NOSCRUB: _bindgen_ty_2 = 3; -pub const PF_NAT: _bindgen_ty_2 = 4; -pub const PF_NONAT: _bindgen_ty_2 = 5; -pub const PF_BINAT: _bindgen_ty_2 = 6; -pub const PF_NOBINAT: _bindgen_ty_2 = 7; -pub const PF_RDR: _bindgen_ty_2 = 8; -pub const PF_NORDR: _bindgen_ty_2 = 9; -pub const PF_SYNPROXY_DROP: _bindgen_ty_2 = 10; -pub const PF_DUMMYNET: _bindgen_ty_2 = 11; -pub const PF_NODUMMYNET: _bindgen_ty_2 = 12; -pub const PF_NAT64: _bindgen_ty_2 = 13; -pub const PF_NONAT64: _bindgen_ty_2 = 14; -pub type _bindgen_ty_2 = ::std::os::raw::c_uint; -pub const PF_RULESET_SCRUB: _bindgen_ty_3 = 0; -pub const PF_RULESET_FILTER: _bindgen_ty_3 = 1; -pub const PF_RULESET_NAT: _bindgen_ty_3 = 2; -pub const PF_RULESET_BINAT: _bindgen_ty_3 = 3; -pub const PF_RULESET_RDR: _bindgen_ty_3 = 4; -pub const PF_RULESET_DUMMYNET: _bindgen_ty_3 = 5; -pub const PF_RULESET_MAX: _bindgen_ty_3 = 6; -pub type _bindgen_ty_3 = ::std::os::raw::c_uint; -pub const PF_OP_NONE: _bindgen_ty_4 = 0; -pub const PF_OP_IRG: _bindgen_ty_4 = 1; -pub const PF_OP_EQ: _bindgen_ty_4 = 2; -pub const PF_OP_NE: _bindgen_ty_4 = 3; -pub const PF_OP_LT: _bindgen_ty_4 = 4; -pub const PF_OP_LE: _bindgen_ty_4 = 5; -pub const PF_OP_GT: _bindgen_ty_4 = 6; -pub const PF_OP_GE: _bindgen_ty_4 = 7; -pub const PF_OP_XRG: _bindgen_ty_4 = 8; -pub const PF_OP_RRG: _bindgen_ty_4 = 9; -pub type _bindgen_ty_4 = ::std::os::raw::c_uint; -pub const PF_DEBUG_NONE: _bindgen_ty_5 = 0; -pub const PF_DEBUG_URGENT: _bindgen_ty_5 = 1; -pub const PF_DEBUG_MISC: _bindgen_ty_5 = 2; -pub const PF_DEBUG_NOISY: _bindgen_ty_5 = 3; -pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -pub const PF_CHANGE_NONE: _bindgen_ty_6 = 0; -pub const PF_CHANGE_ADD_HEAD: _bindgen_ty_6 = 1; -pub const PF_CHANGE_ADD_TAIL: _bindgen_ty_6 = 2; -pub const PF_CHANGE_ADD_BEFORE: _bindgen_ty_6 = 3; -pub const PF_CHANGE_ADD_AFTER: _bindgen_ty_6 = 4; -pub const PF_CHANGE_REMOVE: _bindgen_ty_6 = 5; -pub const PF_CHANGE_GET_TICKET: _bindgen_ty_6 = 6; -pub type _bindgen_ty_6 = ::std::os::raw::c_uint; -pub const PF_GET_NONE: _bindgen_ty_7 = 0; -pub const PF_GET_CLR_CNTR: _bindgen_ty_7 = 1; -pub type _bindgen_ty_7 = ::std::os::raw::c_uint; -pub const PFTM_TCP_FIRST_PACKET: _bindgen_ty_8 = 0; -pub const PFTM_TCP_OPENING: _bindgen_ty_8 = 1; -pub const PFTM_TCP_ESTABLISHED: _bindgen_ty_8 = 2; -pub const PFTM_TCP_CLOSING: _bindgen_ty_8 = 3; -pub const PFTM_TCP_FIN_WAIT: _bindgen_ty_8 = 4; -pub const PFTM_TCP_CLOSED: _bindgen_ty_8 = 5; -pub const PFTM_UDP_FIRST_PACKET: _bindgen_ty_8 = 6; -pub const PFTM_UDP_SINGLE: _bindgen_ty_8 = 7; -pub const PFTM_UDP_MULTIPLE: _bindgen_ty_8 = 8; -pub const PFTM_ICMP_FIRST_PACKET: _bindgen_ty_8 = 9; -pub const PFTM_ICMP_ERROR_REPLY: _bindgen_ty_8 = 10; -pub const PFTM_GREv1_FIRST_PACKET: _bindgen_ty_8 = 11; -pub const PFTM_GREv1_INITIATING: _bindgen_ty_8 = 12; -pub const PFTM_GREv1_ESTABLISHED: _bindgen_ty_8 = 13; -pub const PFTM_ESP_FIRST_PACKET: _bindgen_ty_8 = 14; -pub const PFTM_ESP_INITIATING: _bindgen_ty_8 = 15; -pub const PFTM_ESP_ESTABLISHED: _bindgen_ty_8 = 16; -pub const PFTM_OTHER_FIRST_PACKET: _bindgen_ty_8 = 17; -pub const PFTM_OTHER_SINGLE: _bindgen_ty_8 = 18; -pub const PFTM_OTHER_MULTIPLE: _bindgen_ty_8 = 19; -pub const PFTM_FRAG: _bindgen_ty_8 = 20; -pub const PFTM_INTERVAL: _bindgen_ty_8 = 21; -pub const PFTM_ADAPTIVE_START: _bindgen_ty_8 = 22; -pub const PFTM_ADAPTIVE_END: _bindgen_ty_8 = 23; -pub const PFTM_SRC_NODE: _bindgen_ty_8 = 24; -pub const PFTM_TS_DIFF: _bindgen_ty_8 = 25; -pub const PFTM_MAX: _bindgen_ty_8 = 26; -pub const PFTM_PURGE: _bindgen_ty_8 = 27; -pub const PFTM_UNLINKED: _bindgen_ty_8 = 28; -pub type _bindgen_ty_8 = ::std::os::raw::c_uint; -pub const PF_NOPFROUTE: _bindgen_ty_9 = 0; -pub const PF_FASTROUTE: _bindgen_ty_9 = 1; -pub const PF_ROUTETO: _bindgen_ty_9 = 2; -pub const PF_DUPTO: _bindgen_ty_9 = 3; -pub const PF_REPLYTO: _bindgen_ty_9 = 4; -pub type _bindgen_ty_9 = ::std::os::raw::c_uint; -pub const PF_LIMIT_STATES: _bindgen_ty_10 = 0; -pub const PF_LIMIT_APP_STATES: _bindgen_ty_10 = 1; -pub const PF_LIMIT_SRC_NODES: _bindgen_ty_10 = 2; -pub const PF_LIMIT_FRAGS: _bindgen_ty_10 = 3; -pub const PF_LIMIT_TABLES: _bindgen_ty_10 = 4; -pub const PF_LIMIT_TABLE_ENTRIES: _bindgen_ty_10 = 5; -pub const PF_LIMIT_MAX: _bindgen_ty_10 = 6; -pub type _bindgen_ty_10 = ::std::os::raw::c_uint; -pub const PF_POOL_NONE: _bindgen_ty_11 = 0; -pub const PF_POOL_BITMASK: _bindgen_ty_11 = 1; -pub const PF_POOL_RANDOM: _bindgen_ty_11 = 2; -pub const PF_POOL_SRCHASH: _bindgen_ty_11 = 3; -pub const PF_POOL_ROUNDROBIN: _bindgen_ty_11 = 4; -pub type _bindgen_ty_11 = ::std::os::raw::c_uint; -pub const PF_ADDR_ADDRMASK: _bindgen_ty_12 = 0; -pub const PF_ADDR_NOROUTE: _bindgen_ty_12 = 1; -pub const PF_ADDR_DYNIFTL: _bindgen_ty_12 = 2; -pub const PF_ADDR_TABLE: _bindgen_ty_12 = 3; -pub const PF_ADDR_RTLABEL: _bindgen_ty_12 = 4; -pub const PF_ADDR_URPFFAILED: _bindgen_ty_12 = 5; -pub const PF_ADDR_RANGE: _bindgen_ty_12 = 6; -pub type _bindgen_ty_12 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_addr { - pub pfa: pf_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_addr__bindgen_ty_1 { - pub _v4addr: in_addr, - pub _v6addr: in6_addr, - pub _addr8: [u_int8_t; 16usize], - pub _addr16: [u_int16_t; 8usize], - pub _addr32: [u_int32_t; 4usize], -} -#[test] -fn bindgen_test_layout_pf_addr__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_addr__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._v4addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(_v4addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._v6addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(_v6addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._addr8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(_addr8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._addr16) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(_addr16) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._addr32) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(_addr32) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfa) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_addr), "::", stringify!(pfa)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_addr_wrap { - pub v: pf_addr_wrap__bindgen_ty_1, - pub p: pf_addr_wrap__bindgen_ty_2, - pub type_: u_int8_t, - pub iflags: u_int8_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_addr_wrap__bindgen_ty_1 { - pub a: pf_addr_wrap__bindgen_ty_1__bindgen_ty_1, - pub ifname: [::std::os::raw::c_char; 16usize], - pub tblname: [::std::os::raw::c_char; 32usize], - pub rtlabelname: [::std::os::raw::c_char; 32usize], - pub rtlabel: u_int32_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_addr_wrap__bindgen_ty_1__bindgen_ty_1 { - pub addr: pf_addr, - pub mask: pf_addr, -} -#[test] -fn bindgen_test_layout_pf_addr_wrap__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mask) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(mask) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_addr_wrap__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_addr_wrap__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr_wrap__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).a) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(a) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tblname) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(tblname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtlabelname) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(rtlabelname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtlabel) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(rtlabel) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_addr_wrap__bindgen_ty_2 { - pub dyn_: *mut ::std::os::raw::c_void, - pub tbl: *mut ::std::os::raw::c_void, - pub dyncnt: ::std::os::raw::c_int, - pub tblcnt: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_addr_wrap__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_addr_wrap__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_addr_wrap__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dyn_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(dyn_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tbl) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(tbl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dyncnt) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(dyncnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tblcnt) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(tblcnt) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_addr_wrap() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(pf_addr_wrap)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_addr_wrap)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).v) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(v)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).p) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(p)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(type_)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).iflags) as usize - ptr as usize }, - 41usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(iflags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_port_range { - pub port: [u_int16_t; 2usize], - pub op: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_port_range() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 6usize, - concat!("Size of: ", stringify!(pf_port_range)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(pf_port_range)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_port_range), "::", stringify!(port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).op) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pf_port_range), "::", stringify!(op)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_rule_xport { - pub range: pf_port_range, - pub call_id: u_int16_t, - pub spi: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_rule_xport() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_rule_xport)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule_xport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).range) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_xport), "::", stringify!(range)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).call_id) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule_xport), - "::", - stringify!(call_id) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).spi) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_xport), "::", stringify!(spi)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule_uid { - pub uid: [uid_t; 2usize], - pub op: u_int8_t, - pub _pad: [u_int8_t; 3usize], -} -#[test] -fn bindgen_test_layout_pf_rule_uid() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(pf_rule_uid)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule_uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_uid), "::", stringify!(uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).op) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_rule_uid), "::", stringify!(op)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pad) as usize - ptr as usize }, - 9usize, - concat!("Offset of field: ", stringify!(pf_rule_uid), "::", stringify!(_pad)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule_gid { - pub gid: [uid_t; 2usize], - pub op: u_int8_t, - pub _pad: [u_int8_t; 3usize], -} -#[test] -fn bindgen_test_layout_pf_rule_gid() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(pf_rule_gid)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule_gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_gid), "::", stringify!(gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).op) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_rule_gid), "::", stringify!(op)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pad) as usize - ptr as usize }, - 9usize, - concat!("Offset of field: ", stringify!(pf_rule_gid), "::", stringify!(_pad)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_rule_addr { - pub addr: pf_addr_wrap, - pub xport: pf_rule_xport, - pub neg: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_rule_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(pf_rule_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).xport) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(xport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).neg) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(neg)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_pooladdr { - pub addr: pf_addr_wrap, - pub entries: pf_pooladdr__bindgen_ty_1, - pub ifname: [::std::os::raw::c_char; 16usize], - pub kif: *mut ::std::os::raw::c_void, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_pooladdr__bindgen_ty_1 { - pub tqe_next: *mut pf_pooladdr, - pub tqe_prev: *mut *mut pf_pooladdr, -} -#[test] -fn bindgen_test_layout_pf_pooladdr__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_pooladdr__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_pooladdr__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_pooladdr__bindgen_ty_1), - "::", - stringify!(tqe_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_pooladdr__bindgen_ty_1), - "::", - stringify!(tqe_prev) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_pooladdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(pf_pooladdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_pooladdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_pooladdr), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_pooladdr), "::", stringify!(entries)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_pooladdr), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pf_pooladdr), "::", stringify!(kif)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_palist { - pub tqh_first: *mut pf_pooladdr, - pub tqh_last: *mut *mut pf_pooladdr, -} -#[test] -fn bindgen_test_layout_pf_palist() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_palist)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_palist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_first) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_palist), "::", stringify!(tqh_first)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_last) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_palist), "::", stringify!(tqh_last)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_poolhashkey { - pub pfk: pf_poolhashkey__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_poolhashkey__bindgen_ty_1 { - pub key8: [u_int8_t; 16usize], - pub key16: [u_int16_t; 8usize], - pub key32: [u_int32_t; 4usize], -} -#[test] -fn bindgen_test_layout_pf_poolhashkey__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_poolhashkey__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_poolhashkey__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_poolhashkey__bindgen_ty_1), - "::", - stringify!(key8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key16) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_poolhashkey__bindgen_ty_1), - "::", - stringify!(key16) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key32) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_poolhashkey__bindgen_ty_1), - "::", - stringify!(key32) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_poolhashkey() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_poolhashkey)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_poolhashkey)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfk) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_poolhashkey), "::", stringify!(pfk)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_pool { - pub list: pf_palist, - pub cur: *mut ::std::os::raw::c_void, - pub key: pf_poolhashkey, - pub counter: pf_addr, - pub tblidx: ::std::os::raw::c_int, - pub proxy_port: [u_int16_t; 2usize], - pub port_op: u_int8_t, - pub opts: u_int8_t, - pub af: sa_family_t, -} -#[test] -fn bindgen_test_layout_pf_pool() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 72usize, - concat!("Size of: ", stringify!(pf_pool)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_pool)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).list) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(list)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cur) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(cur)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(key)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).counter) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(counter)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tblidx) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(tblidx)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proxy_port) as usize - ptr as usize }, - 60usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(proxy_port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port_op) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(port_op)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).opts) as usize - ptr as usize }, - 65usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 66usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(af)) - ); -} -pub type pf_osfp_t = u_int32_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_osfp_entry { - pub fp_entry: pf_osfp_entry__bindgen_ty_1, - pub fp_os: pf_osfp_t, - pub fp_enflags: ::std::os::raw::c_int, - pub fp_class_nm: [::std::os::raw::c_char; 32usize], - pub fp_version_nm: [::std::os::raw::c_char; 32usize], - pub fp_subtype_nm: [::std::os::raw::c_char; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_osfp_entry__bindgen_ty_1 { - pub sle_next: *mut pf_osfp_entry, -} -#[test] -fn bindgen_test_layout_pf_osfp_entry__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_osfp_entry__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_osfp_entry__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry__bindgen_ty_1), - "::", - stringify!(sle_next) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_osfp_entry() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 112usize, - concat!("Size of: ", stringify!(pf_osfp_entry)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_osfp_entry)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_entry) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_entry) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_os) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_osfp_entry), "::", stringify!(fp_os)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_enflags) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_enflags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_class_nm) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_class_nm) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_version_nm) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_version_nm) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_subtype_nm) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_subtype_nm) - ) - ); -} -pub type pf_tcpopts_t = u_int64_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_os_fingerprint { - pub fp_oses: pf_os_fingerprint_pf_osfp_enlist, - pub fp_tcpopts: pf_tcpopts_t, - pub fp_wsize: u_int16_t, - pub fp_psize: u_int16_t, - pub fp_mss: u_int16_t, - pub fp_flags: u_int16_t, - pub fp_optcnt: u_int8_t, - pub fp_wscale: u_int8_t, - pub fp_ttl: u_int8_t, - pub fp_next: pf_os_fingerprint__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_os_fingerprint_pf_osfp_enlist { - pub slh_first: *mut pf_osfp_entry, -} -#[test] -fn bindgen_test_layout_pf_os_fingerprint_pf_osfp_enlist() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_os_fingerprint_pf_osfp_enlist)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_os_fingerprint_pf_osfp_enlist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).slh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint_pf_osfp_enlist), - "::", - stringify!(slh_first) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_os_fingerprint__bindgen_ty_1 { - pub sle_next: *mut pf_os_fingerprint, -} -#[test] -fn bindgen_test_layout_pf_os_fingerprint__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_os_fingerprint__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_os_fingerprint__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint__bindgen_ty_1), - "::", - stringify!(sle_next) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_os_fingerprint() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pf_os_fingerprint)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_os_fingerprint)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_oses) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_oses) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_tcpopts) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_tcpopts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wsize) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_wsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_psize) as usize - ptr as usize }, - 18usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_psize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_mss) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_mss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_flags) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_optcnt) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_optcnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wscale) as usize - ptr as usize }, - 25usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_wscale) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_ttl) as usize - ptr as usize }, - 26usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_next) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_next) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_osfp_ioctl { - pub fp_os: pf_osfp_entry, - pub fp_tcpopts: pf_tcpopts_t, - pub fp_wsize: u_int16_t, - pub fp_psize: u_int16_t, - pub fp_mss: u_int16_t, - pub fp_flags: u_int16_t, - pub fp_optcnt: u_int8_t, - pub fp_wscale: u_int8_t, - pub fp_ttl: u_int8_t, - pub fp_getnum: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_osfp_ioctl() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 136usize, - concat!("Size of: ", stringify!(pf_osfp_ioctl)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_osfp_ioctl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_os) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_osfp_ioctl), "::", stringify!(fp_os)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_tcpopts) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_tcpopts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wsize) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_wsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_psize) as usize - ptr as usize }, - 122usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_psize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_mss) as usize - ptr as usize }, - 124usize, - concat!("Offset of field: ", stringify!(pf_osfp_ioctl), "::", stringify!(fp_mss)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_flags) as usize - ptr as usize }, - 126usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_optcnt) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_optcnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wscale) as usize - ptr as usize }, - 129usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_wscale) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_ttl) as usize - ptr as usize }, - 130usize, - concat!("Offset of field: ", stringify!(pf_osfp_ioctl), "::", stringify!(fp_ttl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_getnum) as usize - ptr as usize }, - 132usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_getnum) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_rule_ptr { - pub ptr: *mut pf_rule, - pub nr: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_rule_ptr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_rule_ptr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule_ptr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ptr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_ptr), "::", stringify!(ptr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_ptr), "::", stringify!(nr)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_rule { - pub src: pf_rule_addr, - pub dst: pf_rule_addr, - pub skip: [pf_rule_ptr; 8usize], - pub label: [::std::os::raw::c_char; 64usize], - pub ifname: [::std::os::raw::c_char; 16usize], - pub qname: [::std::os::raw::c_char; 64usize], - pub pqname: [::std::os::raw::c_char; 64usize], - pub tagname: [::std::os::raw::c_char; 64usize], - pub match_tagname: [::std::os::raw::c_char; 64usize], - pub overload_tblname: [::std::os::raw::c_char; 32usize], - pub entries: pf_rule__bindgen_ty_1, - pub rpool: pf_pool, - pub evaluations: u_int64_t, - pub packets: [u_int64_t; 2usize], - pub bytes: [u_int64_t; 2usize], - pub ticket: u_int64_t, - pub owner: [::std::os::raw::c_char; 64usize], - pub priority: u_int32_t, - pub kif: *mut ::std::os::raw::c_void, - pub anchor: *mut pf_anchor, - pub overload_tbl: *mut ::std::os::raw::c_void, - pub os_fingerprint: pf_osfp_t, - pub rtableid: ::std::os::raw::c_uint, - pub timeout: [u_int32_t; 26usize], - pub states: u_int32_t, - pub max_states: u_int32_t, - pub src_nodes: u_int32_t, - pub max_src_nodes: u_int32_t, - pub max_src_states: u_int32_t, - pub max_src_conn: u_int32_t, - pub max_src_conn_rate: pf_rule__bindgen_ty_2, - pub qid: u_int32_t, - pub pqid: u_int32_t, - pub rt_listid: u_int32_t, - pub nr: u_int32_t, - pub prob: u_int32_t, - pub cuid: uid_t, - pub cpid: pid_t, - pub return_icmp: u_int16_t, - pub return_icmp6: u_int16_t, - pub max_mss: u_int16_t, - pub tag: u_int16_t, - pub match_tag: u_int16_t, - pub uid: pf_rule_uid, - pub gid: pf_rule_gid, - pub rule_flag: u_int32_t, - pub action: u_int8_t, - pub direction: u_int8_t, - pub log: u_int8_t, - pub logif: u_int8_t, - pub quick: u_int8_t, - pub ifnot: u_int8_t, - pub match_tag_not: u_int8_t, - pub natpass: u_int8_t, - pub keep_state: u_int8_t, - pub af: sa_family_t, - pub proto: u_int8_t, - pub type_: u_int8_t, - pub code: u_int8_t, - pub flags: u_int8_t, - pub flagset: u_int8_t, - pub min_ttl: u_int8_t, - pub allow_opts: u_int8_t, - pub rt: u_int8_t, - pub return_ttl: u_int8_t, - pub tos: u_int8_t, - pub anchor_relative: u_int8_t, - pub anchor_wildcard: u_int8_t, - pub flush: u_int8_t, - pub proto_variant: u_int8_t, - pub extfilter: u_int8_t, - pub extmap: u_int8_t, - pub dnpipe: u_int32_t, - pub dntype: u_int32_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule__bindgen_ty_1 { - pub tqe_next: *mut pf_rule, - pub tqe_prev: *mut *mut pf_rule, -} -#[test] -fn bindgen_test_layout_pf_rule__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_rule__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_1), - "::", - stringify!(tqe_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_1), - "::", - stringify!(tqe_prev) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule__bindgen_ty_2 { - pub limit: u_int32_t, - pub seconds: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_rule__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_rule__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).limit) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_2), - "::", - stringify!(limit) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seconds) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_2), - "::", - stringify!(seconds) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_rule() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1040usize, - concat!("Size of: ", stringify!(pf_rule)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(src)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dst) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(dst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).skip) as usize - ptr as usize }, - 128usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(skip)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).label) as usize - ptr as usize }, - 192usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(label)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 256usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qname) as usize - ptr as usize }, - 272usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(qname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pqname) as usize - ptr as usize }, - 336usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(pqname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tagname) as usize - ptr as usize }, - 400usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(tagname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_tagname) as usize - ptr as usize }, - 464usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(match_tagname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).overload_tblname) as usize - ptr as usize }, - 528usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(overload_tblname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, - 560usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(entries)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rpool) as usize - ptr as usize }, - 576usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rpool)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).evaluations) as usize - ptr as usize }, - 648usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(evaluations)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).packets) as usize - ptr as usize }, - 656usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(packets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bytes) as usize - ptr as usize }, - 672usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(bytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 688usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(ticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).owner) as usize - ptr as usize }, - 696usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(owner)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).priority) as usize - ptr as usize }, - 760usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(priority)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 768usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 776usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).overload_tbl) as usize - ptr as usize }, - 784usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(overload_tbl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).os_fingerprint) as usize - ptr as usize }, - 792usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(os_fingerprint) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtableid) as usize - ptr as usize }, - 796usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rtableid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 800usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(timeout)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states) as usize - ptr as usize }, - 904usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_states) as usize - ptr as usize }, - 908usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(max_states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src_nodes) as usize - ptr as usize }, - 912usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(src_nodes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_nodes) as usize - ptr as usize }, - 916usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(max_src_nodes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_states) as usize - ptr as usize }, - 920usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(max_src_states) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_conn) as usize - ptr as usize }, - 924usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(max_src_conn)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_conn_rate) as usize - ptr as usize }, - 928usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(max_src_conn_rate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qid) as usize - ptr as usize }, - 936usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(qid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pqid) as usize - ptr as usize }, - 940usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(pqid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt_listid) as usize - ptr as usize }, - 944usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rt_listid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 948usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).prob) as usize - ptr as usize }, - 952usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(prob)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cuid) as usize - ptr as usize }, - 956usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(cuid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cpid) as usize - ptr as usize }, - 960usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(cpid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).return_icmp) as usize - ptr as usize }, - 964usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(return_icmp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).return_icmp6) as usize - ptr as usize }, - 966usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(return_icmp6)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_mss) as usize - ptr as usize }, - 968usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(max_mss)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize }, - 970usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_tag) as usize - ptr as usize }, - 972usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(match_tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uid) as usize - ptr as usize }, - 976usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gid) as usize - ptr as usize }, - 988usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule_flag) as usize - ptr as usize }, - 1000usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rule_flag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, - 1004usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(action)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 1005usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(direction)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).log) as usize - ptr as usize }, - 1006usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(log)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).logif) as usize - ptr as usize }, - 1007usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(logif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).quick) as usize - ptr as usize }, - 1008usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(quick)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnot) as usize - ptr as usize }, - 1009usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(ifnot)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_tag_not) as usize - ptr as usize }, - 1010usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(match_tag_not) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).natpass) as usize - ptr as usize }, - 1011usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(natpass)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).keep_state) as usize - ptr as usize }, - 1012usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(keep_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 1013usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 1014usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 1015usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(type_)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).code) as usize - ptr as usize }, - 1016usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(code)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 1017usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flagset) as usize - ptr as usize }, - 1018usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(flagset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).min_ttl) as usize - ptr as usize }, - 1019usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(min_ttl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).allow_opts) as usize - ptr as usize }, - 1020usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(allow_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt) as usize - ptr as usize }, - 1021usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).return_ttl) as usize - ptr as usize }, - 1022usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(return_ttl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos) as usize - ptr as usize }, - 1023usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(tos)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor_relative) as usize - ptr as usize }, - 1024usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(anchor_relative) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor_wildcard) as usize - ptr as usize }, - 1025usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(anchor_wildcard) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flush) as usize - ptr as usize }, - 1026usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(flush)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto_variant) as usize - ptr as usize }, - 1027usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(proto_variant) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).extfilter) as usize - ptr as usize }, - 1028usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(extfilter)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).extmap) as usize - ptr as usize }, - 1029usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(extmap)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dnpipe) as usize - ptr as usize }, - 1032usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(dnpipe)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dntype) as usize - ptr as usize }, - 1036usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(dntype)) - ); -} -pub const pf_extmap_PF_EXTMAP_APD: pf_extmap = 1; -pub const pf_extmap_PF_EXTMAP_AD: pf_extmap = 2; -pub const pf_extmap_PF_EXTMAP_EI: pf_extmap = 3; -pub type pf_extmap = ::std::os::raw::c_uint; -pub const pf_extfilter_PF_EXTFILTER_APD: pf_extfilter = 1; -pub const pf_extfilter_PF_EXTFILTER_AD: pf_extfilter = 2; -pub const pf_extfilter_PF_EXTFILTER_EI: pf_extfilter = 3; -pub type pf_extfilter = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_threshold { - pub limit: u_int32_t, - pub seconds: u_int32_t, - pub count: u_int32_t, - pub last: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_threshold() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_threshold)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_threshold)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).limit) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(limit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seconds) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(seconds)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(count)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).last) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(last)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_src_node { - pub entry: pf_src_node__bindgen_ty_1, - pub addr: pf_addr, - pub raddr: pf_addr, - pub rule: pf_rule_ptr, - pub kif: *mut ::std::os::raw::c_void, - pub bytes: [u_int64_t; 2usize], - pub packets: [u_int64_t; 2usize], - pub states: u_int32_t, - pub conn: u_int32_t, - pub conn_rate: pf_threshold, - pub creation: u_int64_t, - pub expire: u_int64_t, - pub af: sa_family_t, - pub ruletype: u_int8_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_src_node__bindgen_ty_1 { - pub rbe_left: *mut pf_src_node, - pub rbe_right: *mut pf_src_node, - pub rbe_parent: *mut pf_src_node, -} -#[test] -fn bindgen_test_layout_pf_src_node__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pf_src_node__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_src_node__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_left) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node__bindgen_ty_1), - "::", - stringify!(rbe_left) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_right) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node__bindgen_ty_1), - "::", - stringify!(rbe_right) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_parent) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node__bindgen_ty_1), - "::", - stringify!(rbe_parent) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_src_node() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 152usize, - concat!("Size of: ", stringify!(pf_src_node)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_src_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(entry)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).raddr) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(raddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bytes) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(bytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).packets) as usize - ptr as usize }, - 88usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(packets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states) as usize - ptr as usize }, - 104usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).conn) as usize - ptr as usize }, - 108usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(conn)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).conn_rate) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node), - "::", - stringify!(conn_rate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creation) as usize - ptr as usize }, - 128usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(creation)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).expire) as usize - ptr as usize }, - 136usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(expire)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 144usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ruletype) as usize - ptr as usize }, - 145usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(ruletype)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_state_xport { - pub port: u_int16_t, - pub call_id: u_int16_t, - pub spi: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_state_xport() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(pf_state_xport)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_state_xport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_state_xport), "::", stringify!(port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).call_id) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_xport), - "::", - stringify!(call_id) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).spi) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_state_xport), "::", stringify!(spi)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_state_host { - pub addr: pf_addr, - pub xport: pf_state_xport, -} -#[test] -fn bindgen_test_layout_pf_state_host() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(pf_state_host)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_state_host)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_state_host), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).xport) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_state_host), "::", stringify!(xport)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct hook_desc { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct hook_desc_head { - pub tqh_first: *mut hook_desc, - pub tqh_last: *mut *mut hook_desc, -} -#[test] -fn bindgen_test_layout_hook_desc_head() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(hook_desc_head)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(hook_desc_head)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(hook_desc_head), - "::", - stringify!(tqh_first) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_last) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(hook_desc_head), - "::", - stringify!(tqh_last) - ) - ); -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct pfsync_state_scrub { - pub pfss_flags: u_int16_t, - pub pfss_ttl: u_int8_t, - pub scrub_flag: u_int8_t, - pub pfss_ts_mod: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfsync_state_scrub() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfsync_state_scrub)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state_scrub)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(pfss_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ttl) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(pfss_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub_flag) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(scrub_flag) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ts_mod) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(pfss_ts_mod) - ) - ); -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct pfsync_state_host { - pub addr: pf_addr, - pub xport: pf_state_xport, - pub pad: [u_int16_t; 2usize], -} -#[test] -fn bindgen_test_layout_pfsync_state_host() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pfsync_state_host)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state_host)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_host), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).xport) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_host), - "::", - stringify!(xport) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_host), - "::", - stringify!(pad) - ) - ); -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct pfsync_state_peer { - pub scrub: pfsync_state_scrub, - pub seqlo: u_int32_t, - pub seqhi: u_int32_t, - pub seqdiff: u_int32_t, - pub max_win: u_int16_t, - pub mss: u_int16_t, - pub state: u_int8_t, - pub wscale: u_int8_t, - pub pad: [u_int8_t; 6usize], -} -#[test] -fn bindgen_test_layout_pfsync_state_peer() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pfsync_state_peer)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state_peer)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(scrub) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqlo) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(seqlo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqhi) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(seqhi) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqdiff) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(seqdiff) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_win) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(max_win) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mss) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(mss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(state) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).wscale) as usize - ptr as usize }, - 25usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(wscale) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 26usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(pad) - ) - ); -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct pfsync_state { - pub id: [u_int32_t; 2usize], - pub ifname: [::std::os::raw::c_char; 16usize], - pub lan: pfsync_state_host, - pub gwy: pfsync_state_host, - pub ext_lan: pfsync_state_host, - pub ext_gwy: pfsync_state_host, - pub src: pfsync_state_peer, - pub dst: pfsync_state_peer, - pub rt_addr: pf_addr, - pub unlink_hooks: hook_desc_head, - pub rule: u_int32_t, - pub anchor: u_int32_t, - pub nat_rule: u_int32_t, - pub creation: u_int64_t, - pub expire: u_int64_t, - pub packets: [[u_int32_t; 2usize]; 2usize], - pub bytes: [[u_int32_t; 2usize]; 2usize], - pub creatorid: u_int32_t, - pub tag: u_int16_t, - pub af_lan: sa_family_t, - pub af_gwy: sa_family_t, - pub proto: u_int8_t, - pub direction: u_int8_t, - pub log: u_int8_t, - pub allow_opts: u_int8_t, - pub timeout: u_int8_t, - pub sync_flags: u_int8_t, - pub updates: u_int8_t, - pub proto_variant: u_int8_t, - pub __pad: u_int8_t, - pub flowhash: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfsync_state() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 297usize, - concat!("Size of: ", stringify!(pfsync_state)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(id)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lan) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(lan)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gwy) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(gwy)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ext_lan) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(ext_lan)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ext_gwy) as usize - ptr as usize }, - 96usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(ext_gwy)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src) as usize - ptr as usize }, - 120usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(src)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dst) as usize - ptr as usize }, - 152usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(dst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt_addr) as usize - ptr as usize }, - 184usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(rt_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).unlink_hooks) as usize - ptr as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(unlink_hooks) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule) as usize - ptr as usize }, - 216usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 220usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nat_rule) as usize - ptr as usize }, - 224usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(nat_rule) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creation) as usize - ptr as usize }, - 228usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(creation) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).expire) as usize - ptr as usize }, - 236usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(expire)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).packets) as usize - ptr as usize }, - 244usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(packets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bytes) as usize - ptr as usize }, - 260usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(bytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creatorid) as usize - ptr as usize }, - 276usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(creatorid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize }, - 280usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af_lan) as usize - ptr as usize }, - 282usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(af_lan)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af_gwy) as usize - ptr as usize }, - 283usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(af_gwy)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 284usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 285usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(direction) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).log) as usize - ptr as usize }, - 286usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(log)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).allow_opts) as usize - ptr as usize }, - 287usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(allow_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 288usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(timeout)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sync_flags) as usize - ptr as usize }, - 289usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(sync_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).updates) as usize - ptr as usize }, - 290usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(updates)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto_variant) as usize - ptr as usize }, - 291usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(proto_variant) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__pad) as usize - ptr as usize }, - 292usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(__pad)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flowhash) as usize - ptr as usize }, - 293usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(flowhash) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rulequeue { - pub tqh_first: *mut pf_rule, - pub tqh_last: *mut *mut pf_rule, -} -#[test] -fn bindgen_test_layout_pf_rulequeue() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_rulequeue)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rulequeue)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rulequeue), - "::", - stringify!(tqh_first) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_last) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_rulequeue), - "::", - stringify!(tqh_last) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ruleset { - pub rules: [pf_ruleset__bindgen_ty_1; 6usize], - pub anchor: *mut pf_anchor, - pub tticket: u_int32_t, - pub tables: ::std::os::raw::c_int, - pub topen: ::std::os::raw::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ruleset__bindgen_ty_1 { - pub queues: [pf_rulequeue; 2usize], - pub active: pf_ruleset__bindgen_ty_1__bindgen_ty_1, - pub inactive: pf_ruleset__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ruleset__bindgen_ty_1__bindgen_ty_1 { - pub ptr: *mut pf_rulequeue, - pub ptr_array: *mut *mut pf_rule, - pub rcount: u_int32_t, - pub ticket: u_int32_t, - pub open: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_ruleset__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ptr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(ptr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ptr_array) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(ptr_array) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rcount) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rcount) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(ticket) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).open) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(open) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_ruleset__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(pf_ruleset__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_ruleset__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).queues) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1), - "::", - stringify!(queues) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).active) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1), - "::", - stringify!(active) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).inactive) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1), - "::", - stringify!(inactive) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_ruleset() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 600usize, - concat!("Size of: ", stringify!(pf_ruleset)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_ruleset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rules) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(rules)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 576usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tticket) as usize - ptr as usize }, - 584usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(tticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tables) as usize - ptr as usize }, - 588usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(tables)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).topen) as usize - ptr as usize }, - 592usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(topen)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor_global { - pub rbh_root: *mut pf_anchor, -} -#[test] -fn bindgen_test_layout_pf_anchor_global() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_anchor_global)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor_global)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbh_root) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor_global), - "::", - stringify!(rbh_root) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor_node { - pub rbh_root: *mut pf_anchor, -} -#[test] -fn bindgen_test_layout_pf_anchor_node() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_anchor_node)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbh_root) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor_node), - "::", - stringify!(rbh_root) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor { - pub entry_global: pf_anchor__bindgen_ty_1, - pub entry_node: pf_anchor__bindgen_ty_2, - pub parent: *mut pf_anchor, - pub children: pf_anchor_node, - pub name: [::std::os::raw::c_char; 64usize], - pub path: [::std::os::raw::c_char; 1024usize], - pub ruleset: pf_ruleset, - pub refcnt: ::std::os::raw::c_int, - pub match_: ::std::os::raw::c_int, - pub owner: [::std::os::raw::c_char; 64usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor__bindgen_ty_1 { - pub rbe_left: *mut pf_anchor, - pub rbe_right: *mut pf_anchor, - pub rbe_parent: *mut pf_anchor, -} -#[test] -fn bindgen_test_layout_pf_anchor__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pf_anchor__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_left) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_1), - "::", - stringify!(rbe_left) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_right) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_1), - "::", - stringify!(rbe_right) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_parent) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_1), - "::", - stringify!(rbe_parent) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor__bindgen_ty_2 { - pub rbe_left: *mut pf_anchor, - pub rbe_right: *mut pf_anchor, - pub rbe_parent: *mut pf_anchor, -} -#[test] -fn bindgen_test_layout_pf_anchor__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pf_anchor__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_left) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_2), - "::", - stringify!(rbe_left) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_right) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_2), - "::", - stringify!(rbe_right) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_parent) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_2), - "::", - stringify!(rbe_parent) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_anchor() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1824usize, - concat!("Size of: ", stringify!(pf_anchor)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry_global) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor), - "::", - stringify!(entry_global) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry_node) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(entry_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).children) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(children)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).path) as usize - ptr as usize }, - 128usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(path)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ruleset) as usize - ptr as usize }, - 1152usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(ruleset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).refcnt) as usize - ptr as usize }, - 1752usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(refcnt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_) as usize - ptr as usize }, - 1756usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(match_)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).owner) as usize - ptr as usize }, - 1760usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(owner)) - ); -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_INSERT_COLOR(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor); -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_REMOVE_COLOR(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor, arg3: *mut pf_anchor); -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_REMOVE(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_INSERT(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_FIND(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_NFIND(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_NEXT(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_MINMAX(arg1: *mut pf_anchor_global, arg2: ::std::os::raw::c_int) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_GETPARENT(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_SETPARENT(arg1: *mut pf_anchor, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_GETCOLOR(arg1: *mut pf_anchor) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_SETCOLOR(arg1: *mut pf_anchor, arg2: ::std::os::raw::c_int); -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_INSERT_COLOR(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor); -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_REMOVE_COLOR(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor, arg3: *mut pf_anchor); -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_REMOVE(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_INSERT(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_FIND(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_NFIND(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_NEXT(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_MINMAX(arg1: *mut pf_anchor_node, arg2: ::std::os::raw::c_int) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_GETPARENT(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_SETPARENT(arg1: *mut pf_anchor, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_GETCOLOR(arg1: *mut pf_anchor) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_SETCOLOR(arg1: *mut pf_anchor, arg2: ::std::os::raw::c_int); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_table { - pub pfrt_anchor: [::std::os::raw::c_char; 1024usize], - pub pfrt_name: [::std::os::raw::c_char; 32usize], - pub pfrt_flags: u32, - pub pfrt_fback: u8, -} -#[test] -fn bindgen_test_layout_pfr_table() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1064usize, - concat!("Size of: ", stringify!(pfr_table)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfr_table)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_anchor) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_table), - "::", - stringify!(pfrt_anchor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_name) as usize - ptr as usize }, - 1024usize, - concat!("Offset of field: ", stringify!(pfr_table), "::", stringify!(pfrt_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_flags) as usize - ptr as usize }, - 1056usize, - concat!("Offset of field: ", stringify!(pfr_table), "::", stringify!(pfrt_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_fback) as usize - ptr as usize }, - 1060usize, - concat!("Offset of field: ", stringify!(pfr_table), "::", stringify!(pfrt_fback)) - ); -} -pub const PFR_FB_NONE: _bindgen_ty_13 = 0; -pub const PFR_FB_MATCH: _bindgen_ty_13 = 1; -pub const PFR_FB_ADDED: _bindgen_ty_13 = 2; -pub const PFR_FB_DELETED: _bindgen_ty_13 = 3; -pub const PFR_FB_CHANGED: _bindgen_ty_13 = 4; -pub const PFR_FB_CLEARED: _bindgen_ty_13 = 5; -pub const PFR_FB_DUPLICATE: _bindgen_ty_13 = 6; -pub const PFR_FB_NOTMATCH: _bindgen_ty_13 = 7; -pub const PFR_FB_CONFLICT: _bindgen_ty_13 = 8; -pub const PFR_FB_MAX: _bindgen_ty_13 = 9; -pub type _bindgen_ty_13 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfr_addr { - pub pfra_u: pfr_addr__bindgen_ty_1, - pub pfra_af: u8, - pub pfra_net: u8, - pub pfra_not: u8, - pub pfra_fback: u8, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfr_addr__bindgen_ty_1 { - pub _pfra_ip4addr: in_addr, - pub _pfra_ip6addr: in6_addr, -} -#[test] -fn bindgen_test_layout_pfr_addr__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfr_addr__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfr_addr__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfra_ip4addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_addr__bindgen_ty_1), - "::", - stringify!(_pfra_ip4addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfra_ip6addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_addr__bindgen_ty_1), - "::", - stringify!(_pfra_ip6addr) - ) - ); -} -#[test] -fn bindgen_test_layout_pfr_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(pfr_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfr_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_u) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_u)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_af) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_net) as usize - ptr as usize }, - 17usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_net)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_not) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_not)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_fback) as usize - ptr as usize }, - 19usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_fback)) - ); -} -pub const PFR_DIR_IN: _bindgen_ty_14 = 0; -pub const PFR_DIR_OUT: _bindgen_ty_14 = 1; -pub const PFR_DIR_MAX: _bindgen_ty_14 = 2; -pub type _bindgen_ty_14 = ::std::os::raw::c_uint; -pub const PFR_OP_BLOCK: _bindgen_ty_15 = 0; -pub const PFR_OP_PASS: _bindgen_ty_15 = 1; -pub const PFR_OP_ADDR_MAX: _bindgen_ty_15 = 2; -pub const PFR_OP_TABLE_MAX: _bindgen_ty_15 = 3; -pub type _bindgen_ty_15 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfr_astats { - pub pfras_a: pfr_addr, - pub pfras_packets: [[u64; 2usize]; 2usize], - pub pfras_bytes: [[u64; 2usize]; 2usize], - pub pfras_tzero: u64, -} -#[test] -fn bindgen_test_layout_pfr_astats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(pfr_astats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_astats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_a) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_astats), "::", stringify!(pfras_a)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_packets) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfr_astats), - "::", - stringify!(pfras_packets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_bytes) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(pfr_astats), - "::", - stringify!(pfras_bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_tzero) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(pfr_astats), - "::", - stringify!(pfras_tzero) - ) - ); -} -pub const PFR_REFCNT_RULE: _bindgen_ty_16 = 0; -pub const PFR_REFCNT_ANCHOR: _bindgen_ty_16 = 1; -pub const PFR_REFCNT_MAX: _bindgen_ty_16 = 2; -pub type _bindgen_ty_16 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_tstats { - pub pfrts_t: pfr_table, - pub pfrts_packets: [[u_int64_t; 3usize]; 2usize], - pub pfrts_bytes: [[u_int64_t; 3usize]; 2usize], - pub pfrts_match: u_int64_t, - pub pfrts_nomatch: u_int64_t, - pub pfrts_tzero: u_int64_t, - pub pfrts_cnt: ::std::os::raw::c_int, - pub pfrts_refcnt: [::std::os::raw::c_int; 2usize], -} -#[test] -fn bindgen_test_layout_pfr_tstats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1200usize, - concat!("Size of: ", stringify!(pfr_tstats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_tstats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_t) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_tstats), "::", stringify!(pfrts_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_packets) as usize - ptr as usize }, - 1064usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_packets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_bytes) as usize - ptr as usize }, - 1112usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_match) as usize - ptr as usize }, - 1160usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_match) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_nomatch) as usize - ptr as usize }, - 1168usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_nomatch) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_tzero) as usize - ptr as usize }, - 1176usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_tzero) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_cnt) as usize - ptr as usize }, - 1184usize, - concat!("Offset of field: ", stringify!(pfr_tstats), "::", stringify!(pfrts_cnt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_refcnt) as usize - ptr as usize }, - 1188usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_refcnt) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_kif { - pub pfik_name: [::std::os::raw::c_char; 16usize], - pub pfik_packets: [[[u_int64_t; 2usize]; 2usize]; 2usize], - pub pfik_bytes: [[[u_int64_t; 2usize]; 2usize]; 2usize], - pub pfik_tzero: u_int64_t, - pub pfik_flags: ::std::os::raw::c_int, - pub pfik_states: ::std::os::raw::c_int, - pub pfik_rules: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pfi_kif() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 168usize, - concat!("Size of: ", stringify!(pfi_kif)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfi_kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_packets) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_packets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_bytes) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_bytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_tzero) as usize - ptr as usize }, - 144usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_tzero)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_flags) as usize - ptr as usize }, - 152usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_states) as usize - ptr as usize }, - 156usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_rules) as usize - ptr as usize }, - 160usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_rules)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_status { - pub counters: [u_int64_t; 16usize], - pub lcounters: [u_int64_t; 7usize], - pub fcounters: [u_int64_t; 3usize], - pub scounters: [u_int64_t; 3usize], - pub pcounters: [[[u_int64_t; 3usize]; 2usize]; 2usize], - pub bcounters: [[u_int64_t; 2usize]; 2usize], - pub stateid: u_int64_t, - pub running: u_int32_t, - pub states: u_int32_t, - pub src_nodes: u_int32_t, - pub since: u_int64_t, - pub debug: u_int32_t, - pub hostid: u_int32_t, - pub ifname: [::std::os::raw::c_char; 16usize], - pub pf_chksum: [u_int8_t; 16usize], -} -#[test] -fn bindgen_test_layout_pf_status() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 432usize, - concat!("Size of: ", stringify!(pf_status)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_status)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).counters) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(counters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lcounters) as usize - ptr as usize }, - 128usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(lcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fcounters) as usize - ptr as usize }, - 184usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(fcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scounters) as usize - ptr as usize }, - 208usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(scounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pcounters) as usize - ptr as usize }, - 232usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(pcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bcounters) as usize - ptr as usize }, - 328usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(bcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).stateid) as usize - ptr as usize }, - 360usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(stateid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).running) as usize - ptr as usize }, - 368usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(running)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states) as usize - ptr as usize }, - 372usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src_nodes) as usize - ptr as usize }, - 376usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(src_nodes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).since) as usize - ptr as usize }, - 384usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(since)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).debug) as usize - ptr as usize }, - 392usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(debug)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hostid) as usize - ptr as usize }, - 396usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(hostid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 400usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pf_chksum) as usize - ptr as usize }, - 416usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(pf_chksum)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cbq_opts { - pub minburst: u_int32_t, - pub maxburst: u_int32_t, - pub pktsize: u_int32_t, - pub maxpktsize: u_int32_t, - pub ns_per_byte: u_int32_t, - pub maxidle: u_int32_t, - pub minidle: i32, - pub offtime: u_int32_t, - pub flags: u_int32_t, -} -#[test] -fn bindgen_test_layout_cbq_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 36usize, - concat!("Size of: ", stringify!(cbq_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(cbq_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).minburst) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(minburst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).maxburst) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(maxburst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pktsize) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(pktsize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).maxpktsize) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(maxpktsize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ns_per_byte) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(ns_per_byte)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).maxidle) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(maxidle)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).minidle) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(minidle)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).offtime) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(offtime)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(cbq_opts), "::", stringify!(flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct priq_opts { - pub flags: u_int32_t, -} -#[test] -fn bindgen_test_layout_priq_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(priq_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(priq_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(priq_opts), "::", stringify!(flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct hfsc_opts { - pub rtsc_m1: u_int64_t, - pub rtsc_d: u_int64_t, - pub rtsc_m2: u_int64_t, - pub rtsc_fl: u_int32_t, - pub lssc_m1: u_int64_t, - pub lssc_d: u_int64_t, - pub lssc_m2: u_int64_t, - pub lssc_fl: u_int32_t, - pub ulsc_m1: u_int64_t, - pub ulsc_d: u_int64_t, - pub ulsc_m2: u_int64_t, - pub ulsc_fl: u_int32_t, - pub flags: u_int32_t, -} -#[test] -fn bindgen_test_layout_hfsc_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(hfsc_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(hfsc_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_m1) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(rtsc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_d) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(rtsc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_m2) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(rtsc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_fl) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(rtsc_fl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m1) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(lssc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_d) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(lssc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m2) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(lssc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_fl) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(lssc_fl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_m1) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(ulsc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_d) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(ulsc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_m2) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(ulsc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_fl) as usize - ptr as usize }, - 88usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(ulsc_fl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 92usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fairq_opts { - pub nbuckets: u_int32_t, - pub flags: u_int32_t, - pub hogs_m1: u_int64_t, - pub lssc_m1: u_int64_t, - pub lssc_d: u_int64_t, - pub lssc_m2: u_int64_t, -} -#[test] -fn bindgen_test_layout_fairq_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(fairq_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(fairq_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nbuckets) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(nbuckets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hogs_m1) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(hogs_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m1) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(lssc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_d) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(lssc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m2) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(fairq_opts), "::", stringify!(lssc_m2)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_altq { - pub ifname: [::std::os::raw::c_char; 16usize], - pub altq_disc: *mut ::std::os::raw::c_void, - pub entries: pf_altq__bindgen_ty_1, - pub aflags: u_int32_t, - pub bwtype: u_int32_t, - pub scheduler: u_int32_t, - pub tbrsize: u_int32_t, - pub ifbandwidth: u_int64_t, - pub qname: [::std::os::raw::c_char; 64usize], - pub parent: [::std::os::raw::c_char; 64usize], - pub parent_qid: u_int32_t, - pub qrflags: u_int32_t, - pub __bindgen_anon_1: pf_altq__bindgen_ty_2, - pub qlimit: u_int32_t, - pub flags: u_int32_t, - pub bandwidth: u_int64_t, - pub pq_u: pf_altq__bindgen_ty_3, - pub qid: u_int32_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_altq__bindgen_ty_1 { - pub tqe_next: *mut pf_altq, - pub tqe_prev: *mut *mut pf_altq, -} -#[test] -fn bindgen_test_layout_pf_altq__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_altq__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_altq__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq__bindgen_ty_1), - "::", - stringify!(tqe_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_altq__bindgen_ty_1), - "::", - stringify!(tqe_prev) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_altq__bindgen_ty_2 { - pub priority: u_int32_t, - pub weight: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_altq__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(pf_altq__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_altq__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).priority) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq__bindgen_ty_2), - "::", - stringify!(priority) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).weight) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq__bindgen_ty_2), - "::", - stringify!(weight) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_altq__bindgen_ty_3 { - pub cbq_opts: cbq_opts, - pub priq_opts: priq_opts, - pub hfsc_opts: hfsc_opts, - pub fairq_opts: fairq_opts, -} -#[test] -fn bindgen_test_layout_pf_altq__bindgen_ty_3() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(pf_altq__bindgen_ty_3)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_altq__bindgen_ty_3)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cbq_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq__bindgen_ty_3), - "::", - stringify!(cbq_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).priq_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq__bindgen_ty_3), - "::", - stringify!(priq_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hfsc_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq__bindgen_ty_3), - "::", - stringify!(hfsc_opts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fairq_opts) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_altq__bindgen_ty_3), - "::", - stringify!(fairq_opts) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_altq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 328usize, - concat!("Size of: ", stringify!(pf_altq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_altq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).altq_disc) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(altq_disc)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(entries)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).aflags) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(aflags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bwtype) as usize - ptr as usize }, - 44usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(bwtype)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scheduler) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(scheduler)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tbrsize) as usize - ptr as usize }, - 52usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(tbrsize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifbandwidth) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(ifbandwidth)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qname) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(qname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent) as usize - ptr as usize }, - 128usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent_qid) as usize - ptr as usize }, - 192usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(parent_qid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qrflags) as usize - ptr as usize }, - 196usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(qrflags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qlimit) as usize - ptr as usize }, - 204usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(qlimit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 208usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bandwidth) as usize - ptr as usize }, - 216usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(bandwidth)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pq_u) as usize - ptr as usize }, - 224usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(pq_u)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qid) as usize - ptr as usize }, - 320usize, - concat!("Offset of field: ", stringify!(pf_altq), "::", stringify!(qid)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_tagname { - pub entries: pf_tagname__bindgen_ty_1, - pub name: [::std::os::raw::c_char; 64usize], - pub tag: u_int16_t, - pub ref_: ::std::os::raw::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_tagname__bindgen_ty_1 { - pub tqe_next: *mut pf_tagname, - pub tqe_prev: *mut *mut pf_tagname, -} -#[test] -fn bindgen_test_layout_pf_tagname__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_tagname__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_tagname__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_tagname__bindgen_ty_1), - "::", - stringify!(tqe_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_tagname__bindgen_ty_1), - "::", - stringify!(tqe_prev) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_tagname() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(pf_tagname)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_tagname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_tagname), "::", stringify!(entries)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_tagname), "::", stringify!(name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pf_tagname), "::", stringify!(tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ref_) as usize - ptr as usize }, - 84usize, - concat!("Offset of field: ", stringify!(pf_tagname), "::", stringify!(ref_)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_pooladdr { - pub action: u_int32_t, - pub ticket: u_int32_t, - pub nr: u_int32_t, - pub r_num: u_int32_t, - pub r_action: u_int8_t, - pub r_last: u_int8_t, - pub af: u_int8_t, - pub anchor: [::std::os::raw::c_char; 1024usize], - pub addr: pf_pooladdr, -} -#[test] -fn bindgen_test_layout_pfioc_pooladdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1136usize, - concat!("Size of: ", stringify!(pfioc_pooladdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_pooladdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_pooladdr), - "::", - stringify!(action) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pfioc_pooladdr), - "::", - stringify!(ticket) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_pooladdr), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).r_num) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(pfioc_pooladdr), "::", stringify!(r_num)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).r_action) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfioc_pooladdr), - "::", - stringify!(r_action) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).r_last) as usize - ptr as usize }, - 17usize, - concat!( - "Offset of field: ", - stringify!(pfioc_pooladdr), - "::", - stringify!(r_last) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(pfioc_pooladdr), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 19usize, - concat!( - "Offset of field: ", - stringify!(pfioc_pooladdr), - "::", - stringify!(anchor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 1048usize, - concat!("Offset of field: ", stringify!(pfioc_pooladdr), "::", stringify!(addr)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_rule { - pub action: u_int32_t, - pub ticket: u_int32_t, - pub pool_ticket: u_int32_t, - pub nr: u_int32_t, - pub anchor: [::std::os::raw::c_char; 1024usize], - pub anchor_call: [::std::os::raw::c_char; 1024usize], - pub rule: pf_rule, -} -#[test] -fn bindgen_test_layout_pfioc_rule() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 3104usize, - concat!("Size of: ", stringify!(pfioc_rule)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(action)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(ticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pool_ticket) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_rule), - "::", - stringify!(pool_ticket) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor_call) as usize - ptr as usize }, - 1040usize, - concat!( - "Offset of field: ", - stringify!(pfioc_rule), - "::", - stringify!(anchor_call) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule) as usize - ptr as usize }, - 2064usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(rule)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_natlook { - pub saddr: pf_addr, - pub daddr: pf_addr, - pub rsaddr: pf_addr, - pub rdaddr: pf_addr, - pub sxport: pf_state_xport, - pub dxport: pf_state_xport, - pub rsxport: pf_state_xport, - pub rdxport: pf_state_xport, - pub af: sa_family_t, - pub proto: u_int8_t, - pub proto_variant: u_int8_t, - pub direction: u_int8_t, -} -#[test] -fn bindgen_test_layout_pfioc_natlook() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 84usize, - concat!("Size of: ", stringify!(pfioc_natlook)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_natlook)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).saddr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(saddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).daddr) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(daddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rsaddr) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(rsaddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rdaddr) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(rdaddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sxport) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(sxport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dxport) as usize - ptr as usize }, - 68usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(dxport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rsxport) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(pfioc_natlook), - "::", - stringify!(rsxport) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rdxport) as usize - ptr as usize }, - 76usize, - concat!( - "Offset of field: ", - stringify!(pfioc_natlook), - "::", - stringify!(rdxport) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 81usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto_variant) as usize - ptr as usize }, - 82usize, - concat!( - "Offset of field: ", - stringify!(pfioc_natlook), - "::", - stringify!(proto_variant) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 83usize, - concat!( - "Offset of field: ", - stringify!(pfioc_natlook), - "::", - stringify!(direction) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_state { - pub state: pfsync_state, -} -#[test] -fn bindgen_test_layout_pfioc_state() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 297usize, - concat!("Size of: ", stringify!(pfioc_state)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfioc_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_state), "::", stringify!(state)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_src_node_kill { - pub psnk_af: sa_family_t, - pub psnk_src: pf_rule_addr, - pub psnk_dst: pf_rule_addr, -} -#[test] -fn bindgen_test_layout_pfioc_src_node_kill() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 136usize, - concat!("Size of: ", stringify!(pfioc_src_node_kill)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_src_node_kill)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psnk_af) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_node_kill), - "::", - stringify!(psnk_af) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psnk_src) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_node_kill), - "::", - stringify!(psnk_src) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psnk_dst) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_node_kill), - "::", - stringify!(psnk_dst) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_state_addr_kill { - pub addr: pf_addr_wrap, - pub reserved_: [u_int8_t; 3usize], - pub neg: u_int8_t, - pub xport: pf_rule_xport, -} -#[test] -fn bindgen_test_layout_pfioc_state_addr_kill() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(pfioc_state_addr_kill)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_state_addr_kill)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_addr_kill), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved_) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_addr_kill), - "::", - stringify!(reserved_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).neg) as usize - ptr as usize }, - 51usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_addr_kill), - "::", - stringify!(neg) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).xport) as usize - ptr as usize }, - 52usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_addr_kill), - "::", - stringify!(xport) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_state_kill { - pub psk_af: sa_family_t, - pub psk_proto: u_int8_t, - pub psk_proto_variant: u_int8_t, - pub _pad: u_int8_t, - pub psk_src: pfioc_state_addr_kill, - pub psk_dst: pfioc_state_addr_kill, - pub psk_ifname: [::std::os::raw::c_char; 16usize], - pub psk_ownername: [::std::os::raw::c_char; 64usize], -} -#[test] -fn bindgen_test_layout_pfioc_state_kill() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 216usize, - concat!("Size of: ", stringify!(pfioc_state_kill)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_state_kill)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_af) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_af) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_proto) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_proto) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_proto_variant) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_proto_variant) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pad) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(_pad) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_src) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_src) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_dst) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_dst) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_ifname) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_ownername) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_ownername) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_states { - pub ps_len: ::std::os::raw::c_int, - pub ps_u: pfioc_states__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfioc_states__bindgen_ty_1 { - pub psu_buf: caddr_t, - pub psu_states: *mut pfsync_state, -} -#[test] -fn bindgen_test_layout_pfioc_states__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_states__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_states__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psu_buf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_states__bindgen_ty_1), - "::", - stringify!(psu_buf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psu_states) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_states__bindgen_ty_1), - "::", - stringify!(psu_states) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_states() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_states)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ps_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_states), "::", stringify!(ps_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ps_u) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_states), "::", stringify!(ps_u)) - ); -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_token { - pub token_value: u_int64_t, - pub timestamp: u_int64_t, - pub pid: pid_t, - pub proc_name: [::std::os::raw::c_char; 64usize], -} -#[test] -fn bindgen_test_layout_pfioc_token() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 84usize, - concat!("Size of: ", stringify!(pfioc_token)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfioc_token)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).token_value) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_token), - "::", - stringify!(token_value) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timestamp) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_token), - "::", - stringify!(timestamp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pid) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfioc_token), "::", stringify!(pid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proc_name) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pfioc_token), - "::", - stringify!(proc_name) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_kernel_token { - pub next: pfioc_kernel_token__bindgen_ty_1, - pub token: pfioc_token, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_kernel_token__bindgen_ty_1 { - pub sle_next: *mut pfioc_kernel_token, -} -#[test] -fn bindgen_test_layout_pfioc_kernel_token__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_kernel_token__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_kernel_token__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_kernel_token__bindgen_ty_1), - "::", - stringify!(sle_next) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_kernel_token() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(pfioc_kernel_token)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_kernel_token)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_kernel_token), - "::", - stringify!(next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).token) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_kernel_token), - "::", - stringify!(token) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_remove_token { - pub token_value: u_int64_t, - pub refcount: u_int64_t, -} -#[test] -fn bindgen_test_layout_pfioc_remove_token() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_remove_token)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_remove_token)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).token_value) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_remove_token), - "::", - stringify!(token_value) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).refcount) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_remove_token), - "::", - stringify!(refcount) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_tokens { - pub size: ::std::os::raw::c_int, - pub pgt_u: pfioc_tokens__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfioc_tokens__bindgen_ty_1 { - pub pgtu_buf: caddr_t, - pub pgtu_tokens: *mut pfioc_token, -} -#[test] -fn bindgen_test_layout_pfioc_tokens__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_tokens__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_tokens__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pgtu_buf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_tokens__bindgen_ty_1), - "::", - stringify!(pgtu_buf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pgtu_tokens) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_tokens__bindgen_ty_1), - "::", - stringify!(pgtu_tokens) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_tokens() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_tokens)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_tokens)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_tokens), "::", stringify!(size)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pgt_u) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_tokens), "::", stringify!(pgt_u)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_src_nodes { - pub psn_len: ::std::os::raw::c_int, - pub psn_u: pfioc_src_nodes__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfioc_src_nodes__bindgen_ty_1 { - pub psu_buf: caddr_t, - pub psu_src_nodes: *mut pf_src_node, -} -#[test] -fn bindgen_test_layout_pfioc_src_nodes__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_src_nodes__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_src_nodes__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psu_buf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_nodes__bindgen_ty_1), - "::", - stringify!(psu_buf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psu_src_nodes) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_nodes__bindgen_ty_1), - "::", - stringify!(psu_src_nodes) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_src_nodes() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_src_nodes)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_src_nodes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psn_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_nodes), - "::", - stringify!(psn_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psn_u) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_nodes), - "::", - stringify!(psn_u) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_if { - pub ifname: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_pfioc_if() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_if)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfioc_if)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_if), "::", stringify!(ifname)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_tm { - pub timeout: ::std::os::raw::c_int, - pub seconds: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pfioc_tm() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_tm)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_tm)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_tm), "::", stringify!(timeout)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seconds) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_tm), "::", stringify!(seconds)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_limit { - pub index: ::std::os::raw::c_int, - pub limit: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_pfioc_limit() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_limit)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_limit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).index) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_limit), "::", stringify!(index)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).limit) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_limit), "::", stringify!(limit)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_altq { - pub action: u_int32_t, - pub ticket: u_int32_t, - pub nr: u_int32_t, - pub altq: pf_altq, -} -#[test] -fn bindgen_test_layout_pfioc_altq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 344usize, - concat!("Size of: ", stringify!(pfioc_altq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_altq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_altq), "::", stringify!(action)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_altq), "::", stringify!(ticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_altq), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).altq) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfioc_altq), "::", stringify!(altq)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_qstats { - pub ticket: u_int32_t, - pub nr: u_int32_t, - pub buf: *mut ::std::os::raw::c_void, - pub nbytes: ::std::os::raw::c_int, - pub scheduler: u_int8_t, -} -#[test] -fn bindgen_test_layout_pfioc_qstats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pfioc_qstats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_qstats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_qstats), "::", stringify!(ticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_qstats), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).buf) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_qstats), "::", stringify!(buf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nbytes) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfioc_qstats), "::", stringify!(nbytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scheduler) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pfioc_qstats), - "::", - stringify!(scheduler) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_ruleset { - pub nr: u_int32_t, - pub path: [::std::os::raw::c_char; 1024usize], - pub name: [::std::os::raw::c_char; 64usize], -} -#[test] -fn bindgen_test_layout_pfioc_ruleset() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1092usize, - concat!("Size of: ", stringify!(pfioc_ruleset)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_ruleset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_ruleset), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).path) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_ruleset), "::", stringify!(path)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, - 1028usize, - concat!("Offset of field: ", stringify!(pfioc_ruleset), "::", stringify!(name)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_trans { - pub size: ::std::os::raw::c_int, - pub esize: ::std::os::raw::c_int, - pub array: *mut pfioc_trans_pfioc_trans_e, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_trans_pfioc_trans_e { - pub rs_num: ::std::os::raw::c_int, - pub anchor: [::std::os::raw::c_char; 1024usize], - pub ticket: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfioc_trans_pfioc_trans_e() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1032usize, - concat!("Size of: ", stringify!(pfioc_trans_pfioc_trans_e)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_trans_pfioc_trans_e)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rs_num) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_trans_pfioc_trans_e), - "::", - stringify!(rs_num) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pfioc_trans_pfioc_trans_e), - "::", - stringify!(anchor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 1028usize, - concat!( - "Offset of field: ", - stringify!(pfioc_trans_pfioc_trans_e), - "::", - stringify!(ticket) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_trans() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_trans)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_trans)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_trans), "::", stringify!(size)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).esize) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_trans), "::", stringify!(esize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).array) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_trans), "::", stringify!(array)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_table { - pub pfrio_table: pfr_table, - pub pfrio_buffer: *mut ::std::os::raw::c_void, - pub pfrio_esize: ::std::os::raw::c_int, - pub pfrio_size: ::std::os::raw::c_int, - pub pfrio_size2: ::std::os::raw::c_int, - pub pfrio_nadd: ::std::os::raw::c_int, - pub pfrio_ndel: ::std::os::raw::c_int, - pub pfrio_nchange: ::std::os::raw::c_int, - pub pfrio_flags: ::std::os::raw::c_int, - pub pfrio_ticket: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfioc_table() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1104usize, - concat!("Size of: ", stringify!(pfioc_table)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_table)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_table) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_table) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_buffer) as usize - ptr as usize }, - 1064usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_buffer) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_esize) as usize - ptr as usize }, - 1072usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_esize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_size) as usize - ptr as usize }, - 1076usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_size2) as usize - ptr as usize }, - 1080usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_size2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_nadd) as usize - ptr as usize }, - 1084usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_nadd) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_ndel) as usize - ptr as usize }, - 1088usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_ndel) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_nchange) as usize - ptr as usize }, - 1092usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_nchange) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_flags) as usize - ptr as usize }, - 1096usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_ticket) as usize - ptr as usize }, - 1100usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_ticket) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_iface { - pub pfiio_name: [::std::os::raw::c_char; 16usize], - pub pfiio_buffer: *mut ::std::os::raw::c_void, - pub pfiio_esize: ::std::os::raw::c_int, - pub pfiio_size: ::std::os::raw::c_int, - pub pfiio_nzero: ::std::os::raw::c_int, - pub pfiio_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pfioc_iface() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pfioc_iface)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_iface)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_name) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_buffer) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_buffer) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_esize) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_esize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_size) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_nzero) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_nzero) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_flags) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_flags) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ifspeed { - pub ifname: [::std::os::raw::c_char; 16usize], - pub baudrate: u_int64_t, -} -#[test] -fn bindgen_test_layout_pf_ifspeed() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pf_ifspeed)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_ifspeed)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_ifspeed), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).baudrate) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_ifspeed), "::", stringify!(baudrate)) - ); -} -unsafe extern "C" { - pub static mut pf_anchors: pf_anchor_global; -} -unsafe extern "C" { - pub static mut pf_main_anchor: pf_anchor; -} -unsafe extern "C" { - pub fn pf_get_ruleset_number(arg1: u_int8_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_init_ruleset(arg1: *mut pf_ruleset); -} -unsafe extern "C" { - pub fn pf_anchor_setup( - arg1: *mut pf_rule, - arg2: *const pf_ruleset, - arg3: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_anchor_copyout( - arg1: *const pf_ruleset, - arg2: *const pf_rule, - arg3: *mut pfioc_rule, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_anchor_remove(arg1: *mut pf_rule); -} -unsafe extern "C" { - pub fn pf_remove_if_empty_ruleset(arg1: *mut pf_ruleset); -} -unsafe extern "C" { - pub fn pf_find_anchor(arg1: *const ::std::os::raw::c_char) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_find_ruleset(arg1: *const ::std::os::raw::c_char) -> *mut pf_ruleset; -} -unsafe extern "C" { - pub fn pf_find_ruleset_with_owner( - arg1: *const ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - arg3: ::std::os::raw::c_int, - arg4: *mut ::std::os::raw::c_int, - ) -> *mut pf_ruleset; -} -unsafe extern "C" { - pub fn pf_find_or_create_ruleset(arg1: *const ::std::os::raw::c_char) -> *mut pf_ruleset; -} -unsafe extern "C" { - pub fn pf_rs_initialize(); -} -pub type __builtin_va_list = [__va_list_tag; 1usize]; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __va_list_tag { - pub gp_offset: ::std::os::raw::c_uint, - pub fp_offset: ::std::os::raw::c_uint, - pub overflow_arg_area: *mut ::std::os::raw::c_void, - pub reg_save_area: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___va_list_tag() { - const UNINIT: ::std::mem::MaybeUninit<__va_list_tag> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__va_list_tag>(), - 24usize, - concat!("Size of: ", stringify!(__va_list_tag)) - ); - assert_eq!( - ::std::mem::align_of::<__va_list_tag>(), - 8usize, - concat!("Alignment of ", stringify!(__va_list_tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gp_offset) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(gp_offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_offset) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(fp_offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).overflow_arg_area) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(overflow_arg_area) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reg_save_area) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(reg_save_area) - ) - ); -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/pfvar_bindgen_openbsd.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/pfvar_bindgen_openbsd.rs deleted file mode 100644 index 087d5a4..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/sys/unix/pfvar_bindgen_openbsd.rs +++ /dev/null @@ -1,13966 +0,0 @@ -// automatically generated by rust-bindgen 0.69.4 - -pub const __ISO_C_VISIBLE: u32 = 2011; -pub const __XPG_VISIBLE: u32 = 700; -pub const __POSIX_VISIBLE: u32 = 200809; -pub const __BSD_VISIBLE: u32 = 1; -pub const _STACKALIGNBYTES: u32 = 15; -pub const _MAX_PAGE_SHIFT: u32 = 12; -pub const INT8_MIN: i32 = -128; -pub const INT16_MIN: i32 = -32768; -pub const INT32_MIN: i32 = -2147483648; -pub const INT64_MIN: i64 = -9223372036854775808; -pub const INT8_MAX: u32 = 127; -pub const INT16_MAX: u32 = 32767; -pub const INT32_MAX: u32 = 2147483647; -pub const INT64_MAX: u64 = 9223372036854775807; -pub const UINT8_MAX: u32 = 255; -pub const UINT16_MAX: u32 = 65535; -pub const UINT32_MAX: u32 = 4294967295; -pub const UINT64_MAX: i32 = -1; -pub const INT_LEAST8_MIN: i32 = -128; -pub const INT_LEAST16_MIN: i32 = -32768; -pub const INT_LEAST32_MIN: i32 = -2147483648; -pub const INT_LEAST64_MIN: i64 = -9223372036854775808; -pub const INT_LEAST8_MAX: u32 = 127; -pub const INT_LEAST16_MAX: u32 = 32767; -pub const INT_LEAST32_MAX: u32 = 2147483647; -pub const INT_LEAST64_MAX: u64 = 9223372036854775807; -pub const UINT_LEAST8_MAX: u32 = 255; -pub const UINT_LEAST16_MAX: u32 = 65535; -pub const UINT_LEAST32_MAX: u32 = 4294967295; -pub const UINT_LEAST64_MAX: i32 = -1; -pub const INTPTR_MIN: i64 = -9223372036854775808; -pub const INTPTR_MAX: u64 = 9223372036854775807; -pub const UINTPTR_MAX: i32 = -1; -pub const INTMAX_MIN: i64 = -9223372036854775808; -pub const INTMAX_MAX: u64 = 9223372036854775807; -pub const UINTMAX_MAX: i32 = -1; -pub const PTRDIFF_MIN: i64 = -9223372036854775808; -pub const PTRDIFF_MAX: u64 = 9223372036854775807; -pub const SIG_ATOMIC_MIN: i32 = -2147483648; -pub const SIG_ATOMIC_MAX: u32 = 2147483647; -pub const SIZE_MAX: i32 = -1; -pub const WCHAR_MIN: i32 = -2147483648; -pub const WCHAR_MAX: u32 = 2147483647; -pub const WINT_MIN: i32 = -2147483648; -pub const WINT_MAX: u32 = 2147483647; -pub const UIO_MAXIOV: u32 = 1024; -pub const _LITTLE_ENDIAN: u32 = 1234; -pub const _BIG_ENDIAN: u32 = 4321; -pub const _PDP_ENDIAN: u32 = 3412; -pub const _QUAD_HIGHWORD: u32 = 1; -pub const _QUAD_LOWWORD: u32 = 0; -pub const LITTLE_ENDIAN: u32 = 1234; -pub const BIG_ENDIAN: u32 = 4321; -pub const PDP_ENDIAN: u32 = 3412; -pub const SOCK_STREAM: u32 = 1; -pub const SOCK_DGRAM: u32 = 2; -pub const SOCK_RAW: u32 = 3; -pub const SOCK_RDM: u32 = 4; -pub const SOCK_SEQPACKET: u32 = 5; -pub const SOCK_CLOEXEC: u32 = 32768; -pub const SOCK_NONBLOCK: u32 = 16384; -pub const SOCK_DNS: u32 = 4096; -pub const SO_DEBUG: u32 = 1; -pub const SO_ACCEPTCONN: u32 = 2; -pub const SO_REUSEADDR: u32 = 4; -pub const SO_KEEPALIVE: u32 = 8; -pub const SO_DONTROUTE: u32 = 16; -pub const SO_BROADCAST: u32 = 32; -pub const SO_USELOOPBACK: u32 = 64; -pub const SO_LINGER: u32 = 128; -pub const SO_OOBINLINE: u32 = 256; -pub const SO_REUSEPORT: u32 = 512; -pub const SO_TIMESTAMP: u32 = 2048; -pub const SO_BINDANY: u32 = 4096; -pub const SO_ZEROIZE: u32 = 8192; -pub const SO_SNDBUF: u32 = 4097; -pub const SO_RCVBUF: u32 = 4098; -pub const SO_SNDLOWAT: u32 = 4099; -pub const SO_RCVLOWAT: u32 = 4100; -pub const SO_SNDTIMEO: u32 = 4101; -pub const SO_RCVTIMEO: u32 = 4102; -pub const SO_ERROR: u32 = 4103; -pub const SO_TYPE: u32 = 4104; -pub const SO_NETPROC: u32 = 4128; -pub const SO_RTABLE: u32 = 4129; -pub const SO_PEERCRED: u32 = 4130; -pub const SO_SPLICE: u32 = 4131; -pub const SO_DOMAIN: u32 = 4132; -pub const SO_PROTOCOL: u32 = 4133; -pub const RT_TABLEID_MAX: u32 = 255; -pub const RT_TABLEID_BITS: u32 = 8; -pub const RT_TABLEID_MASK: u32 = 255; -pub const SOL_SOCKET: u32 = 65535; -pub const AF_UNSPEC: u32 = 0; -pub const AF_UNIX: u32 = 1; -pub const AF_LOCAL: u32 = 1; -pub const AF_INET: u32 = 2; -pub const AF_IMPLINK: u32 = 3; -pub const AF_PUP: u32 = 4; -pub const AF_CHAOS: u32 = 5; -pub const AF_NS: u32 = 6; -pub const AF_ISO: u32 = 7; -pub const AF_OSI: u32 = 7; -pub const AF_ECMA: u32 = 8; -pub const AF_DATAKIT: u32 = 9; -pub const AF_CCITT: u32 = 10; -pub const AF_SNA: u32 = 11; -pub const AF_DECnet: u32 = 12; -pub const AF_DLI: u32 = 13; -pub const AF_LAT: u32 = 14; -pub const AF_HYLINK: u32 = 15; -pub const AF_APPLETALK: u32 = 16; -pub const AF_ROUTE: u32 = 17; -pub const AF_LINK: u32 = 18; -pub const pseudo_AF_XTP: u32 = 19; -pub const AF_COIP: u32 = 20; -pub const AF_CNT: u32 = 21; -pub const pseudo_AF_RTIP: u32 = 22; -pub const AF_IPX: u32 = 23; -pub const AF_INET6: u32 = 24; -pub const pseudo_AF_PIP: u32 = 25; -pub const AF_ISDN: u32 = 26; -pub const AF_E164: u32 = 26; -pub const AF_NATM: u32 = 27; -pub const AF_ENCAP: u32 = 28; -pub const AF_SIP: u32 = 29; -pub const AF_KEY: u32 = 30; -pub const pseudo_AF_HDRCMPLT: u32 = 31; -pub const AF_BLUETOOTH: u32 = 32; -pub const AF_MPLS: u32 = 33; -pub const pseudo_AF_PFLOW: u32 = 34; -pub const pseudo_AF_PIPEX: u32 = 35; -pub const AF_MAX: u32 = 36; -pub const PF_UNSPEC: u32 = 0; -pub const PF_LOCAL: u32 = 1; -pub const PF_UNIX: u32 = 1; -pub const PF_INET: u32 = 2; -pub const PF_IMPLINK: u32 = 3; -pub const PF_PUP: u32 = 4; -pub const PF_CHAOS: u32 = 5; -pub const PF_NS: u32 = 6; -pub const PF_ISO: u32 = 7; -pub const PF_OSI: u32 = 7; -pub const PF_ECMA: u32 = 8; -pub const PF_DATAKIT: u32 = 9; -pub const PF_CCITT: u32 = 10; -pub const PF_SNA: u32 = 11; -pub const PF_DECnet: u32 = 12; -pub const PF_DLI: u32 = 13; -pub const PF_LAT: u32 = 14; -pub const PF_HYLINK: u32 = 15; -pub const PF_APPLETALK: u32 = 16; -pub const PF_ROUTE: u32 = 17; -pub const PF_LINK: u32 = 18; -pub const PF_XTP: u32 = 19; -pub const PF_COIP: u32 = 20; -pub const PF_CNT: u32 = 21; -pub const PF_IPX: u32 = 23; -pub const PF_INET6: u32 = 24; -pub const PF_RTIP: u32 = 22; -pub const PF_PIP: u32 = 25; -pub const PF_ISDN: u32 = 26; -pub const PF_NATM: u32 = 27; -pub const PF_ENCAP: u32 = 28; -pub const PF_SIP: u32 = 29; -pub const PF_KEY: u32 = 30; -pub const PF_BPF: u32 = 31; -pub const PF_BLUETOOTH: u32 = 32; -pub const PF_MPLS: u32 = 33; -pub const PF_PFLOW: u32 = 34; -pub const PF_PIPEX: u32 = 35; -pub const PF_MAX: u32 = 36; -pub const SHUT_RD: u32 = 0; -pub const SHUT_WR: u32 = 1; -pub const SHUT_RDWR: u32 = 2; -pub const NET_MAXID: u32 = 36; -pub const NET_RT_DUMP: u32 = 1; -pub const NET_RT_FLAGS: u32 = 2; -pub const NET_RT_IFLIST: u32 = 3; -pub const NET_RT_STATS: u32 = 4; -pub const NET_RT_TABLE: u32 = 5; -pub const NET_RT_IFNAMES: u32 = 6; -pub const NET_RT_SOURCE: u32 = 7; -pub const NET_RT_MAXID: u32 = 8; -pub const NET_UNIX_INFLIGHT: u32 = 6; -pub const NET_UNIX_DEFERRED: u32 = 7; -pub const NET_UNIX_MAXID: u32 = 8; -pub const UNPCTL_RECVSPACE: u32 = 1; -pub const UNPCTL_SENDSPACE: u32 = 2; -pub const NET_UNIX_PROTO_MAXID: u32 = 3; -pub const NET_LINK_IFRXQ: u32 = 1; -pub const NET_LINK_MAXID: u32 = 2; -pub const NET_LINK_IFRXQ_PRESSURE_RETURN: u32 = 1; -pub const NET_LINK_IFRXQ_PRESSURE_DROP: u32 = 2; -pub const NET_LINK_IFRXQ_MAXID: u32 = 3; -pub const NET_KEY_SADB_DUMP: u32 = 1; -pub const NET_KEY_SPD_DUMP: u32 = 2; -pub const NET_KEY_MAXID: u32 = 3; -pub const NET_BPF_BUFSIZE: u32 = 1; -pub const NET_BPF_MAXBUFSIZE: u32 = 2; -pub const NET_BPF_MAXID: u32 = 3; -pub const NET_PFLOW_STATS: u32 = 1; -pub const NET_PFLOW_MAXID: u32 = 2; -pub const SOMAXCONN: u32 = 128; -pub const MSG_OOB: u32 = 1; -pub const MSG_PEEK: u32 = 2; -pub const MSG_DONTROUTE: u32 = 4; -pub const MSG_EOR: u32 = 8; -pub const MSG_TRUNC: u32 = 16; -pub const MSG_CTRUNC: u32 = 32; -pub const MSG_WAITALL: u32 = 64; -pub const MSG_DONTWAIT: u32 = 128; -pub const MSG_BCAST: u32 = 256; -pub const MSG_MCAST: u32 = 512; -pub const MSG_NOSIGNAL: u32 = 1024; -pub const MSG_CMSG_CLOEXEC: u32 = 2048; -pub const MSG_WAITFORONE: u32 = 4096; -pub const SCM_RIGHTS: u32 = 1; -pub const SCM_TIMESTAMP: u32 = 4; -pub const IF_NAMESIZE: u32 = 16; -pub const FD_SETSIZE: u32 = 1024; -pub const __NBBY: u32 = 8; -pub const NBBY: u32 = 8; -pub const DST_NONE: u32 = 0; -pub const DST_USA: u32 = 1; -pub const DST_AUST: u32 = 2; -pub const DST_WET: u32 = 3; -pub const DST_MET: u32 = 4; -pub const DST_EET: u32 = 5; -pub const DST_CAN: u32 = 6; -pub const ITIMER_REAL: u32 = 0; -pub const ITIMER_VIRTUAL: u32 = 1; -pub const ITIMER_PROF: u32 = 2; -pub const CLOCKS_PER_SEC: u32 = 100; -pub const CLOCK_REALTIME: u32 = 0; -pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2; -pub const CLOCK_MONOTONIC: u32 = 3; -pub const CLOCK_THREAD_CPUTIME_ID: u32 = 4; -pub const CLOCK_UPTIME: u32 = 5; -pub const CLOCK_BOOTTIME: u32 = 6; -pub const TIMER_RELTIME: u32 = 0; -pub const TIMER_ABSTIME: u32 = 1; -pub const CLK_TCK: u32 = 100; -pub const TIME_UTC: u32 = 1; -pub const MCLPOOLS: u32 = 8; -pub const IFQ_NQUEUES: u32 = 8; -pub const IFQ_MINPRIO: u32 = 0; -pub const IFQ_MAXPRIO: u32 = 7; -pub const IFQ_DEFPRIO: u32 = 3; -pub const LINK_STATE_UNKNOWN: u32 = 0; -pub const LINK_STATE_INVALID: u32 = 1; -pub const LINK_STATE_DOWN: u32 = 2; -pub const LINK_STATE_KALIVE_DOWN: u32 = 3; -pub const LINK_STATE_UP: u32 = 4; -pub const LINK_STATE_HALF_DUPLEX: u32 = 5; -pub const LINK_STATE_FULL_DUPLEX: u32 = 6; -pub const IFNAMSIZ: u32 = 16; -pub const IFDESCRSIZE: u32 = 64; -pub const IFF_UP: u32 = 1; -pub const IFF_BROADCAST: u32 = 2; -pub const IFF_DEBUG: u32 = 4; -pub const IFF_LOOPBACK: u32 = 8; -pub const IFF_POINTOPOINT: u32 = 16; -pub const IFF_STATICARP: u32 = 32; -pub const IFF_RUNNING: u32 = 64; -pub const IFF_NOARP: u32 = 128; -pub const IFF_PROMISC: u32 = 256; -pub const IFF_ALLMULTI: u32 = 512; -pub const IFF_OACTIVE: u32 = 1024; -pub const IFF_SIMPLEX: u32 = 2048; -pub const IFF_LINK0: u32 = 4096; -pub const IFF_LINK1: u32 = 8192; -pub const IFF_LINK2: u32 = 16384; -pub const IFF_MULTICAST: u32 = 32768; -pub const IFF_CANTCHANGE: u32 = 36434; -pub const IFXF_MPSAFE: u32 = 1; -pub const IFXF_CLONED: u32 = 2; -pub const IFXF_AUTOCONF6TEMP: u32 = 4; -pub const IFXF_MPLS: u32 = 8; -pub const IFXF_WOL: u32 = 16; -pub const IFXF_AUTOCONF6: u32 = 32; -pub const IFXF_INET6_NOSOII: u32 = 64; -pub const IFXF_AUTOCONF4: u32 = 128; -pub const IFXF_MONITOR: u32 = 256; -pub const IFXF_LRO: u32 = 512; -pub const IFXF_CANTCHANGE: u32 = 3; -pub const IFCAP_CSUM_IPv4: u32 = 1; -pub const IFCAP_CSUM_TCPv4: u32 = 2; -pub const IFCAP_CSUM_UDPv4: u32 = 4; -pub const IFCAP_VLAN_MTU: u32 = 16; -pub const IFCAP_VLAN_HWTAGGING: u32 = 32; -pub const IFCAP_CSUM_TCPv6: u32 = 128; -pub const IFCAP_CSUM_UDPv6: u32 = 256; -pub const IFCAP_TSOv4: u32 = 4096; -pub const IFCAP_TSOv6: u32 = 8192; -pub const IFCAP_LRO: u32 = 16384; -pub const IFCAP_WOL: u32 = 32768; -pub const IFCAP_CSUM_MASK: u32 = 391; -pub const IFQCTL_LEN: u32 = 1; -pub const IFQCTL_MAXLEN: u32 = 2; -pub const IFQCTL_DROPS: u32 = 3; -pub const IFQCTL_CONGESTION: u32 = 4; -pub const IFQCTL_MAXID: u32 = 5; -pub const IFAN_ARRIVAL: u32 = 0; -pub const IFAN_DEPARTURE: u32 = 1; -pub const IFG_ALL: &[u8; 4] = b"all\0"; -pub const IFG_EGRESS: &[u8; 7] = b"egress\0"; -pub const IF_HDRPRIO_MIN: u32 = 0; -pub const IF_HDRPRIO_MAX: u32 = 7; -pub const IF_HDRPRIO_PACKET: i32 = -1; -pub const IF_HDRPRIO_PAYLOAD: i32 = -2; -pub const IF_HDRPRIO_OUTER: i32 = -3; -pub const IF_PWE3_ETHERNET: u32 = 1; -pub const IF_PWE3_IP: u32 = 2; -pub const IFLR_PREFIX: u32 = 32768; -pub const IFSFF_ADDR_EEPROM: u32 = 160; -pub const IFSFF_ADDR_DDM: u32 = 162; -pub const IFSFF_DATA_LEN: u32 = 256; -pub const ARPHRD_ETHER: u32 = 1; -pub const ARPHRD_IEEE802: u32 = 6; -pub const ARPHRD_FRELAY: u32 = 15; -pub const ARPHRD_IEEE1394: u32 = 24; -pub const ARPOP_REQUEST: u32 = 1; -pub const ARPOP_REPLY: u32 = 2; -pub const ARPOP_REVREQUEST: u32 = 3; -pub const ARPOP_REVREPLY: u32 = 4; -pub const ARPOP_INVREQUEST: u32 = 8; -pub const ARPOP_INVREPLY: u32 = 9; -pub const ATF_INUSE: u32 = 1; -pub const ATF_COM: u32 = 2; -pub const ATF_PERM: u32 = 4; -pub const ATF_PUBL: u32 = 8; -pub const ATF_USETRAILERS: u32 = 16; -pub const SPLAY_NEGINF: i32 = -1; -pub const SPLAY_INF: u32 = 1; -pub const RB_BLACK: u32 = 0; -pub const RB_RED: u32 = 1; -pub const RB_NEGINF: i32 = -1; -pub const RB_INF: u32 = 1; -pub const LO_CLASSFLAGS: u32 = 65535; -pub const LO_INITIALIZED: u32 = 65536; -pub const LO_WITNESS: u32 = 131072; -pub const LO_QUIET: u32 = 262144; -pub const LO_RECURSABLE: u32 = 524288; -pub const LO_SLEEPABLE: u32 = 1048576; -pub const LO_UPGRADABLE: u32 = 2097152; -pub const LO_DUPOK: u32 = 4194304; -pub const LO_IS_VNODE: u32 = 8388608; -pub const LO_CLASSMASK: u32 = 251658240; -pub const LO_NOPROFILE: u32 = 268435456; -pub const LO_NEW: u32 = 536870912; -pub const LO_CLASSSHIFT: u32 = 24; -pub const RWL_DUPOK: u32 = 1; -pub const RWL_NOWITNESS: u32 = 2; -pub const RWL_IS_VNODE: u32 = 4; -pub const RWLOCK_WAIT: u32 = 1; -pub const RWLOCK_WRWANT: u32 = 2; -pub const RWLOCK_WRLOCK: u32 = 4; -pub const RWLOCK_MASK: u32 = 7; -pub const RWLOCK_READER_SHIFT: u32 = 3; -pub const RWLOCK_READ_INCR: u32 = 8; -pub const RW_WRITE: u32 = 1; -pub const RW_READ: u32 = 2; -pub const RW_DOWNGRADE: u32 = 4; -pub const RW_OPMASK: u32 = 7; -pub const RW_INTR: u32 = 16; -pub const RW_SLEEPFAIL: u32 = 32; -pub const RW_NOSLEEP: u32 = 64; -pub const RW_RECURSEFAIL: u32 = 128; -pub const RW_DUPOK: u32 = 256; -pub const RW_WRITE_OTHER: u32 = 256; -pub const ARG_MAX: u32 = 524288; -pub const CHILD_MAX: u32 = 80; -pub const LINK_MAX: u32 = 32767; -pub const MAX_CANON: u32 = 255; -pub const MAX_INPUT: u32 = 255; -pub const NAME_MAX: u32 = 255; -pub const NGROUPS_MAX: u32 = 16; -pub const OPEN_MAX: u32 = 64; -pub const PATH_MAX: u32 = 1024; -pub const PIPE_BUF: u32 = 512; -pub const SYMLINK_MAX: u32 = 1024; -pub const SYMLOOP_MAX: u32 = 32; -pub const BC_DIM_MAX: u32 = 65535; -pub const COLL_WEIGHTS_MAX: u32 = 2; -pub const EXPR_NEST_MAX: u32 = 32; -pub const LINE_MAX: u32 = 2048; -pub const RE_DUP_MAX: u32 = 255; -pub const IOV_MAX: u32 = 1024; -pub const NZERO: u32 = 20; -pub const TTY_NAME_MAX: u32 = 260; -pub const LOGIN_NAME_MAX: u32 = 32; -pub const HOST_NAME_MAX: u32 = 255; -pub const _MAXCOMLEN: u32 = 24; -pub const TIMEOUT_PROC: u32 = 1; -pub const TIMEOUT_ONQUEUE: u32 = 2; -pub const TIMEOUT_INITIALIZED: u32 = 4; -pub const TIMEOUT_TRIGGERED: u32 = 8; -pub const TIMEOUT_MPSAFE: u32 = 16; -pub const IPPROTO_IP: u32 = 0; -pub const IPPROTO_HOPOPTS: u32 = 0; -pub const IPPROTO_ICMP: u32 = 1; -pub const IPPROTO_IGMP: u32 = 2; -pub const IPPROTO_GGP: u32 = 3; -pub const IPPROTO_IPIP: u32 = 4; -pub const IPPROTO_IPV4: u32 = 4; -pub const IPPROTO_TCP: u32 = 6; -pub const IPPROTO_EGP: u32 = 8; -pub const IPPROTO_PUP: u32 = 12; -pub const IPPROTO_UDP: u32 = 17; -pub const IPPROTO_IDP: u32 = 22; -pub const IPPROTO_TP: u32 = 29; -pub const IPPROTO_IPV6: u32 = 41; -pub const IPPROTO_ROUTING: u32 = 43; -pub const IPPROTO_FRAGMENT: u32 = 44; -pub const IPPROTO_RSVP: u32 = 46; -pub const IPPROTO_GRE: u32 = 47; -pub const IPPROTO_ESP: u32 = 50; -pub const IPPROTO_AH: u32 = 51; -pub const IPPROTO_MOBILE: u32 = 55; -pub const IPPROTO_ICMPV6: u32 = 58; -pub const IPPROTO_NONE: u32 = 59; -pub const IPPROTO_DSTOPTS: u32 = 60; -pub const IPPROTO_EON: u32 = 80; -pub const IPPROTO_ETHERIP: u32 = 97; -pub const IPPROTO_ENCAP: u32 = 98; -pub const IPPROTO_PIM: u32 = 103; -pub const IPPROTO_IPCOMP: u32 = 108; -pub const IPPROTO_CARP: u32 = 112; -pub const IPPROTO_SCTP: u32 = 132; -pub const IPPROTO_UDPLITE: u32 = 136; -pub const IPPROTO_MPLS: u32 = 137; -pub const IPPROTO_PFSYNC: u32 = 240; -pub const IPPROTO_RAW: u32 = 255; -pub const IPPROTO_MAX: u32 = 256; -pub const IPPROTO_DIVERT: u32 = 258; -pub const IPPORT_RESERVED: u32 = 1024; -pub const IPPORT_USERRESERVED: u32 = 49151; -pub const IPPORT_HIFIRSTAUTO: u32 = 49152; -pub const IPPORT_HILASTAUTO: u32 = 65535; -pub const IPPROTO_DONE: u32 = 257; -pub const IN_CLASSA_NSHIFT: u32 = 24; -pub const IN_CLASSA_MAX: u32 = 128; -pub const IN_CLASSB_NSHIFT: u32 = 16; -pub const IN_CLASSB_MAX: u32 = 65536; -pub const IN_CLASSC_NSHIFT: u32 = 8; -pub const IN_CLASSD_NSHIFT: u32 = 28; -pub const IN_RFC3021_NSHIFT: u32 = 31; -pub const IN_LOOPBACKNET: u32 = 127; -pub const IP_OPTIONS: u32 = 1; -pub const IP_HDRINCL: u32 = 2; -pub const IP_TOS: u32 = 3; -pub const IP_TTL: u32 = 4; -pub const IP_RECVOPTS: u32 = 5; -pub const IP_RECVRETOPTS: u32 = 6; -pub const IP_RECVDSTADDR: u32 = 7; -pub const IP_RETOPTS: u32 = 8; -pub const IP_MULTICAST_IF: u32 = 9; -pub const IP_MULTICAST_TTL: u32 = 10; -pub const IP_MULTICAST_LOOP: u32 = 11; -pub const IP_ADD_MEMBERSHIP: u32 = 12; -pub const IP_DROP_MEMBERSHIP: u32 = 13; -pub const IP_PORTRANGE: u32 = 19; -pub const IP_AUTH_LEVEL: u32 = 20; -pub const IP_ESP_TRANS_LEVEL: u32 = 21; -pub const IP_ESP_NETWORK_LEVEL: u32 = 22; -pub const IP_IPSEC_LOCAL_ID: u32 = 23; -pub const IP_IPSEC_REMOTE_ID: u32 = 24; -pub const IP_IPSEC_LOCAL_CRED: u32 = 25; -pub const IP_IPSEC_REMOTE_CRED: u32 = 26; -pub const IP_IPSEC_LOCAL_AUTH: u32 = 27; -pub const IP_IPSEC_REMOTE_AUTH: u32 = 28; -pub const IP_IPCOMP_LEVEL: u32 = 29; -pub const IP_RECVIF: u32 = 30; -pub const IP_RECVTTL: u32 = 31; -pub const IP_MINTTL: u32 = 32; -pub const IP_RECVDSTPORT: u32 = 33; -pub const IP_PIPEX: u32 = 34; -pub const IP_RECVRTABLE: u32 = 35; -pub const IP_IPSECFLOWINFO: u32 = 36; -pub const IP_IPDEFTTL: u32 = 37; -pub const IP_SENDSRCADDR: u32 = 7; -pub const IP_RTABLE: u32 = 4129; -pub const IPSEC_LEVEL_BYPASS: u32 = 0; -pub const IPSEC_LEVEL_NONE: u32 = 0; -pub const IPSEC_LEVEL_AVAIL: u32 = 1; -pub const IPSEC_LEVEL_USE: u32 = 2; -pub const IPSEC_LEVEL_REQUIRE: u32 = 3; -pub const IPSEC_LEVEL_UNIQUE: u32 = 4; -pub const IPSEC_LEVEL_DEFAULT: u32 = 1; -pub const IPSEC_AUTH_LEVEL_DEFAULT: u32 = 1; -pub const IPSEC_ESP_TRANS_LEVEL_DEFAULT: u32 = 1; -pub const IPSEC_ESP_NETWORK_LEVEL_DEFAULT: u32 = 1; -pub const IPSEC_IPCOMP_LEVEL_DEFAULT: u32 = 1; -pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1; -pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const IP_MIN_MEMBERSHIPS: u32 = 15; -pub const IP_MAX_MEMBERSHIPS: u32 = 4095; -pub const IP_PORTRANGE_DEFAULT: u32 = 0; -pub const IP_PORTRANGE_HIGH: u32 = 1; -pub const IP_PORTRANGE_LOW: u32 = 2; -pub const INET_ADDRSTRLEN: u32 = 16; -pub const IPPROTO_MAXID: u32 = 259; -pub const IPCTL_FORWARDING: u32 = 1; -pub const IPCTL_SENDREDIRECTS: u32 = 2; -pub const IPCTL_DEFTTL: u32 = 3; -pub const IPCTL_SOURCEROUTE: u32 = 5; -pub const IPCTL_DIRECTEDBCAST: u32 = 6; -pub const IPCTL_IPPORT_FIRSTAUTO: u32 = 7; -pub const IPCTL_IPPORT_LASTAUTO: u32 = 8; -pub const IPCTL_IPPORT_HIFIRSTAUTO: u32 = 9; -pub const IPCTL_IPPORT_HILASTAUTO: u32 = 10; -pub const IPCTL_IPPORT_MAXQUEUE: u32 = 11; -pub const IPCTL_ENCDEBUG: u32 = 12; -pub const IPCTL_IPSEC_STATS: u32 = 13; -pub const IPCTL_IPSEC_EXPIRE_ACQUIRE: u32 = 14; -pub const IPCTL_IPSEC_EMBRYONIC_SA_TIMEOUT: u32 = 15; -pub const IPCTL_IPSEC_REQUIRE_PFS: u32 = 16; -pub const IPCTL_IPSEC_SOFT_ALLOCATIONS: u32 = 17; -pub const IPCTL_IPSEC_ALLOCATIONS: u32 = 18; -pub const IPCTL_IPSEC_SOFT_BYTES: u32 = 19; -pub const IPCTL_IPSEC_BYTES: u32 = 20; -pub const IPCTL_IPSEC_TIMEOUT: u32 = 21; -pub const IPCTL_IPSEC_SOFT_TIMEOUT: u32 = 22; -pub const IPCTL_IPSEC_SOFT_FIRSTUSE: u32 = 23; -pub const IPCTL_IPSEC_FIRSTUSE: u32 = 24; -pub const IPCTL_IPSEC_ENC_ALGORITHM: u32 = 25; -pub const IPCTL_IPSEC_AUTH_ALGORITHM: u32 = 26; -pub const IPCTL_MTUDISC: u32 = 27; -pub const IPCTL_MTUDISCTIMEOUT: u32 = 28; -pub const IPCTL_IPSEC_IPCOMP_ALGORITHM: u32 = 29; -pub const IPCTL_IFQUEUE: u32 = 30; -pub const IPCTL_MFORWARDING: u32 = 31; -pub const IPCTL_MULTIPATH: u32 = 32; -pub const IPCTL_STATS: u32 = 33; -pub const IPCTL_MRTPROTO: u32 = 34; -pub const IPCTL_MRTSTATS: u32 = 35; -pub const IPCTL_ARPQUEUED: u32 = 36; -pub const IPCTL_MRTMFC: u32 = 37; -pub const IPCTL_MRTVIF: u32 = 38; -pub const IPCTL_ARPTIMEOUT: u32 = 39; -pub const IPCTL_ARPDOWN: u32 = 40; -pub const IPCTL_ARPQUEUE: u32 = 41; -pub const IPCTL_MAXID: u32 = 42; -pub const INET6_ADDRSTRLEN: u32 = 46; -pub const __IPV6_ADDR_SCOPE_NODELOCAL: u32 = 1; -pub const __IPV6_ADDR_SCOPE_INTFACELOCAL: u32 = 1; -pub const __IPV6_ADDR_SCOPE_LINKLOCAL: u32 = 2; -pub const __IPV6_ADDR_SCOPE_SITELOCAL: u32 = 5; -pub const __IPV6_ADDR_SCOPE_ORGLOCAL: u32 = 8; -pub const __IPV6_ADDR_SCOPE_GLOBAL: u32 = 14; -pub const IPV6_UNICAST_HOPS: u32 = 4; -pub const IPV6_MULTICAST_IF: u32 = 9; -pub const IPV6_MULTICAST_HOPS: u32 = 10; -pub const IPV6_MULTICAST_LOOP: u32 = 11; -pub const IPV6_JOIN_GROUP: u32 = 12; -pub const IPV6_LEAVE_GROUP: u32 = 13; -pub const IPV6_PORTRANGE: u32 = 14; -pub const ICMP6_FILTER: u32 = 18; -pub const IPV6_CHECKSUM: u32 = 26; -pub const IPV6_V6ONLY: u32 = 27; -pub const IPV6_RTHDRDSTOPTS: u32 = 35; -pub const IPV6_RECVPKTINFO: u32 = 36; -pub const IPV6_RECVHOPLIMIT: u32 = 37; -pub const IPV6_RECVRTHDR: u32 = 38; -pub const IPV6_RECVHOPOPTS: u32 = 39; -pub const IPV6_RECVDSTOPTS: u32 = 40; -pub const IPV6_USE_MIN_MTU: u32 = 42; -pub const IPV6_RECVPATHMTU: u32 = 43; -pub const IPV6_PATHMTU: u32 = 44; -pub const IPV6_PKTINFO: u32 = 46; -pub const IPV6_HOPLIMIT: u32 = 47; -pub const IPV6_NEXTHOP: u32 = 48; -pub const IPV6_HOPOPTS: u32 = 49; -pub const IPV6_DSTOPTS: u32 = 50; -pub const IPV6_RTHDR: u32 = 51; -pub const IPV6_AUTH_LEVEL: u32 = 53; -pub const IPV6_ESP_TRANS_LEVEL: u32 = 54; -pub const IPV6_ESP_NETWORK_LEVEL: u32 = 55; -pub const IPSEC6_OUTSA: u32 = 56; -pub const IPV6_RECVTCLASS: u32 = 57; -pub const IPV6_AUTOFLOWLABEL: u32 = 59; -pub const IPV6_IPCOMP_LEVEL: u32 = 60; -pub const IPV6_TCLASS: u32 = 61; -pub const IPV6_DONTFRAG: u32 = 62; -pub const IPV6_PIPEX: u32 = 63; -pub const IPV6_RECVDSTPORT: u32 = 64; -pub const IPV6_MINHOPCOUNT: u32 = 65; -pub const IPV6_RTABLE: u32 = 4129; -pub const IPV6_RTHDR_LOOSE: u32 = 0; -pub const IPV6_RTHDR_TYPE_0: u32 = 0; -pub const IPV6_DEFAULT_MULTICAST_HOPS: u32 = 1; -pub const IPV6_DEFAULT_MULTICAST_LOOP: u32 = 1; -pub const IPV6_PORTRANGE_DEFAULT: u32 = 0; -pub const IPV6_PORTRANGE_HIGH: u32 = 1; -pub const IPV6_PORTRANGE_LOW: u32 = 2; -pub const IPV6PROTO_MAXID: u32 = 259; -pub const IPV6CTL_FORWARDING: u32 = 1; -pub const IPV6CTL_SENDREDIRECTS: u32 = 2; -pub const IPV6CTL_DEFHLIM: u32 = 3; -pub const IPV6CTL_FORWSRCRT: u32 = 5; -pub const IPV6CTL_STATS: u32 = 6; -pub const IPV6CTL_MRTSTATS: u32 = 7; -pub const IPV6CTL_MRTPROTO: u32 = 8; -pub const IPV6CTL_MAXFRAGPACKETS: u32 = 9; -pub const IPV6CTL_SOURCECHECK: u32 = 10; -pub const IPV6CTL_SOURCECHECK_LOGINT: u32 = 11; -pub const IPV6CTL_ACCEPT_RTADV: u32 = 12; -pub const IPV6CTL_LOG_INTERVAL: u32 = 14; -pub const IPV6CTL_HDRNESTLIMIT: u32 = 15; -pub const IPV6CTL_DAD_COUNT: u32 = 16; -pub const IPV6CTL_AUTO_FLOWLABEL: u32 = 17; -pub const IPV6CTL_DEFMCASTHLIM: u32 = 18; -pub const IPV6CTL_USE_DEPRECATED: u32 = 21; -pub const IPV6CTL_MAXFRAGS: u32 = 41; -pub const IPV6CTL_MFORWARDING: u32 = 42; -pub const IPV6CTL_MULTIPATH: u32 = 43; -pub const IPV6CTL_MCAST_PMTU: u32 = 44; -pub const IPV6CTL_NEIGHBORGCTHRESH: u32 = 45; -pub const IPV6CTL_MAXDYNROUTES: u32 = 48; -pub const IPV6CTL_DAD_PENDING: u32 = 49; -pub const IPV6CTL_MTUDISCTIMEOUT: u32 = 50; -pub const IPV6CTL_IFQUEUE: u32 = 51; -pub const IPV6CTL_MRTMIF: u32 = 52; -pub const IPV6CTL_MRTMFC: u32 = 53; -pub const IPV6CTL_SOIIKEY: u32 = 54; -pub const IPV6CTL_MAXID: u32 = 55; -pub const RNF_NORMAL: u32 = 1; -pub const RNF_ROOT: u32 = 2; -pub const RNF_ACTIVE: u32 = 4; -pub const RTF_UP: u32 = 1; -pub const RTF_GATEWAY: u32 = 2; -pub const RTF_HOST: u32 = 4; -pub const RTF_REJECT: u32 = 8; -pub const RTF_DYNAMIC: u32 = 16; -pub const RTF_MODIFIED: u32 = 32; -pub const RTF_DONE: u32 = 64; -pub const RTF_CLONING: u32 = 256; -pub const RTF_MULTICAST: u32 = 512; -pub const RTF_LLINFO: u32 = 1024; -pub const RTF_STATIC: u32 = 2048; -pub const RTF_BLACKHOLE: u32 = 4096; -pub const RTF_PROTO3: u32 = 8192; -pub const RTF_PROTO2: u32 = 16384; -pub const RTF_ANNOUNCE: u32 = 16384; -pub const RTF_PROTO1: u32 = 32768; -pub const RTF_CLONED: u32 = 65536; -pub const RTF_CACHED: u32 = 131072; -pub const RTF_MPATH: u32 = 262144; -pub const RTF_MPLS: u32 = 1048576; -pub const RTF_LOCAL: u32 = 2097152; -pub const RTF_BROADCAST: u32 = 4194304; -pub const RTF_CONNECTED: u32 = 8388608; -pub const RTF_BFD: u32 = 16777216; -pub const RTF_FMASK: u32 = 17890312; -pub const RTP_NONE: u32 = 0; -pub const RTP_LOCAL: u32 = 1; -pub const RTP_CONNECTED: u32 = 4; -pub const RTP_STATIC: u32 = 8; -pub const RTP_EIGRP: u32 = 28; -pub const RTP_OSPF: u32 = 32; -pub const RTP_ISIS: u32 = 36; -pub const RTP_RIP: u32 = 40; -pub const RTP_BGP: u32 = 48; -pub const RTP_DEFAULT: u32 = 56; -pub const RTP_PROPOSAL_STATIC: u32 = 57; -pub const RTP_PROPOSAL_DHCLIENT: u32 = 58; -pub const RTP_PROPOSAL_SLAAC: u32 = 59; -pub const RTP_PROPOSAL_UMB: u32 = 60; -pub const RTP_PROPOSAL_PPP: u32 = 61; -pub const RTP_PROPOSAL_SOLICIT: u32 = 62; -pub const RTP_MAX: u32 = 63; -pub const RTP_ANY: u32 = 64; -pub const RTP_MASK: u32 = 127; -pub const RTP_DOWN: u32 = 128; -pub const RTM_VERSION: u32 = 5; -pub const RTM_MAXSIZE: u32 = 2048; -pub const RTM_ADD: u32 = 1; -pub const RTM_DELETE: u32 = 2; -pub const RTM_CHANGE: u32 = 3; -pub const RTM_GET: u32 = 4; -pub const RTM_LOSING: u32 = 5; -pub const RTM_REDIRECT: u32 = 6; -pub const RTM_MISS: u32 = 7; -pub const RTM_RESOLVE: u32 = 11; -pub const RTM_NEWADDR: u32 = 12; -pub const RTM_DELADDR: u32 = 13; -pub const RTM_IFINFO: u32 = 14; -pub const RTM_IFANNOUNCE: u32 = 15; -pub const RTM_DESYNC: u32 = 16; -pub const RTM_INVALIDATE: u32 = 17; -pub const RTM_BFD: u32 = 18; -pub const RTM_PROPOSAL: u32 = 19; -pub const RTM_CHGADDRATTR: u32 = 20; -pub const RTM_80211INFO: u32 = 21; -pub const RTM_SOURCE: u32 = 22; -pub const RTV_MTU: u32 = 1; -pub const RTV_HOPCOUNT: u32 = 2; -pub const RTV_EXPIRE: u32 = 4; -pub const RTV_RPIPE: u32 = 8; -pub const RTV_SPIPE: u32 = 16; -pub const RTV_SSTHRESH: u32 = 32; -pub const RTV_RTT: u32 = 64; -pub const RTV_RTTVAR: u32 = 128; -pub const RTA_DST: u32 = 1; -pub const RTA_GATEWAY: u32 = 2; -pub const RTA_NETMASK: u32 = 4; -pub const RTA_GENMASK: u32 = 8; -pub const RTA_IFP: u32 = 16; -pub const RTA_IFA: u32 = 32; -pub const RTA_AUTHOR: u32 = 64; -pub const RTA_BRD: u32 = 128; -pub const RTA_SRC: u32 = 256; -pub const RTA_SRCMASK: u32 = 512; -pub const RTA_LABEL: u32 = 1024; -pub const RTA_BFD: u32 = 2048; -pub const RTA_DNS: u32 = 4096; -pub const RTA_STATIC: u32 = 8192; -pub const RTA_SEARCH: u32 = 16384; -pub const RTAX_DST: u32 = 0; -pub const RTAX_GATEWAY: u32 = 1; -pub const RTAX_NETMASK: u32 = 2; -pub const RTAX_GENMASK: u32 = 3; -pub const RTAX_IFP: u32 = 4; -pub const RTAX_IFA: u32 = 5; -pub const RTAX_AUTHOR: u32 = 6; -pub const RTAX_BRD: u32 = 7; -pub const RTAX_SRC: u32 = 8; -pub const RTAX_SRCMASK: u32 = 9; -pub const RTAX_LABEL: u32 = 10; -pub const RTAX_BFD: u32 = 11; -pub const RTAX_DNS: u32 = 12; -pub const RTAX_STATIC: u32 = 13; -pub const RTAX_SEARCH: u32 = 14; -pub const RTAX_MAX: u32 = 15; -pub const ROUTE_MSGFILTER: u32 = 1; -pub const ROUTE_TABLEFILTER: u32 = 2; -pub const ROUTE_PRIOFILTER: u32 = 3; -pub const ROUTE_FLAGFILTER: u32 = 4; -pub const RTABLE_ANY: u32 = 4294967295; -pub const RTLABEL_LEN: u32 = 32; -pub const RTDNS_LEN: u32 = 128; -pub const RTSTATIC_LEN: u32 = 128; -pub const RTSEARCH_LEN: u32 = 128; -pub const PF_MD5_DIGEST_LENGTH: u32 = 16; -pub const PFTM_TCP_FIRST_PACKET_VAL: u32 = 120; -pub const PFTM_TCP_OPENING_VAL: u32 = 30; -pub const PFTM_TCP_ESTABLISHED_VAL: u32 = 86400; -pub const PFTM_TCP_CLOSING_VAL: u32 = 900; -pub const PFTM_TCP_FIN_WAIT_VAL: u32 = 45; -pub const PFTM_TCP_CLOSED_VAL: u32 = 90; -pub const PFTM_UDP_FIRST_PACKET_VAL: u32 = 60; -pub const PFTM_UDP_SINGLE_VAL: u32 = 30; -pub const PFTM_UDP_MULTIPLE_VAL: u32 = 60; -pub const PFTM_ICMP_FIRST_PACKET_VAL: u32 = 20; -pub const PFTM_ICMP_ERROR_REPLY_VAL: u32 = 10; -pub const PFTM_OTHER_FIRST_PACKET_VAL: u32 = 60; -pub const PFTM_OTHER_SINGLE_VAL: u32 = 30; -pub const PFTM_OTHER_MULTIPLE_VAL: u32 = 60; -pub const PFTM_FRAG_VAL: u32 = 60; -pub const PFTM_INTERVAL_VAL: u32 = 10; -pub const PFTM_SRC_NODE_VAL: u32 = 0; -pub const PFTM_TS_DIFF_VAL: u32 = 30; -pub const PF_FRAG_STALE: u32 = 200; -pub const PF_FRAG_ENTRY_POINTS: u32 = 16; -pub const PF_FRAG_ENTRY_LIMIT: u32 = 64; -pub const PF_POOL_IDMASK: u32 = 15; -pub const PF_POOL_TYPEMASK: u32 = 15; -pub const PF_POOL_STICKYADDR: u32 = 32; -pub const PF_WSCALE_FLAG: u32 = 128; -pub const PF_WSCALE_MASK: u32 = 15; -pub const PF_LOG: u32 = 1; -pub const PF_LOG_ALL: u32 = 2; -pub const PF_LOG_USER: u32 = 4; -pub const PF_LOG_FORCE: u32 = 8; -pub const PF_LOG_MATCHES: u32 = 16; -pub const PF_TABLE_NAME_SIZE: u32 = 32; -pub const PFI_AFLAG_NETWORK: u32 = 1; -pub const PFI_AFLAG_BROADCAST: u32 = 2; -pub const PFI_AFLAG_PEER: u32 = 4; -pub const PFI_AFLAG_MODEMASK: u32 = 7; -pub const PFI_AFLAG_NOALIAS: u32 = 8; -pub const PF_DEBUGNAME: &[u8; 5] = b"pf: \0"; -pub const PF_THRESHOLD_MULT: u32 = 1000; -pub const PF_THRESHOLD_MAX: u32 = 4294967; -pub const PF_OSFP_EXPANDED: u32 = 1; -pub const PF_OSFP_GENERIC: u32 = 2; -pub const PF_OSFP_NODETAIL: u32 = 4; -pub const PF_OSFP_LEN: u32 = 32; -pub const _FP_RESERVED_BIT: u32 = 1; -pub const _FP_UNUSED_BITS: u32 = 1; -pub const _FP_CLASS_BITS: u32 = 10; -pub const _FP_VERSION_BITS: u32 = 10; -pub const _FP_SUBTYPE_BITS: u32 = 10; -pub const PF_OSFP_WSIZE_MOD: u32 = 1; -pub const PF_OSFP_WSIZE_DC: u32 = 2; -pub const PF_OSFP_WSIZE_MSS: u32 = 4; -pub const PF_OSFP_WSIZE_MTU: u32 = 8; -pub const PF_OSFP_PSIZE_MOD: u32 = 16; -pub const PF_OSFP_PSIZE_DC: u32 = 32; -pub const PF_OSFP_WSCALE: u32 = 64; -pub const PF_OSFP_WSCALE_MOD: u32 = 128; -pub const PF_OSFP_WSCALE_DC: u32 = 256; -pub const PF_OSFP_MSS: u32 = 512; -pub const PF_OSFP_MSS_MOD: u32 = 1024; -pub const PF_OSFP_MSS_DC: u32 = 2048; -pub const PF_OSFP_DF: u32 = 4096; -pub const PF_OSFP_TS0: u32 = 8192; -pub const PF_OSFP_INET6: u32 = 16384; -pub const PF_OSFP_MAXTTL_OFFSET: u32 = 40; -pub const PF_OSFP_TCPOPT_NOP: u32 = 0; -pub const PF_OSFP_TCPOPT_WSCALE: u32 = 1; -pub const PF_OSFP_TCPOPT_MSS: u32 = 2; -pub const PF_OSFP_TCPOPT_SACK: u32 = 3; -pub const PF_OSFP_TCPOPT_TS: u32 = 4; -pub const PF_OSFP_TCPOPT_BITS: u32 = 3; -pub const PF_ANCHOR_STACK_MAX: u32 = 64; -pub const PF_ANCHOR_NAME_SIZE: u32 = 64; -pub const PF_ANCHOR_MAXPATH: u32 = 959; -pub const PF_ANCHOR_HIWAT: u32 = 512; -pub const PF_OPTIMIZER_TABLE_PFX: &[u8; 13] = b"__automatic_\0"; -pub const PF_SKIP_IFP: u32 = 0; -pub const PF_SKIP_DIR: u32 = 1; -pub const PF_SKIP_RDOM: u32 = 2; -pub const PF_SKIP_AF: u32 = 3; -pub const PF_SKIP_PROTO: u32 = 4; -pub const PF_SKIP_SRC_ADDR: u32 = 5; -pub const PF_SKIP_DST_ADDR: u32 = 6; -pub const PF_SKIP_SRC_PORT: u32 = 7; -pub const PF_SKIP_DST_PORT: u32 = 8; -pub const PF_SKIP_COUNT: u32 = 9; -pub const PF_RULE_LABEL_SIZE: u32 = 64; -pub const PF_QNAME_SIZE: u32 = 64; -pub const PF_TAG_NAME_SIZE: u32 = 64; -pub const PF_STATE_NORMAL: u32 = 1; -pub const PF_STATE_MODULATE: u32 = 2; -pub const PF_STATE_SYNPROXY: u32 = 3; -pub const PF_FLUSH: u32 = 1; -pub const PF_FLUSH_GLOBAL: u32 = 2; -pub const PFRULE_DROP: u32 = 0; -pub const PFRULE_RETURNRST: u32 = 1; -pub const PFRULE_FRAGMENT: u32 = 2; -pub const PFRULE_RETURNICMP: u32 = 4; -pub const PFRULE_RETURN: u32 = 8; -pub const PFRULE_NOSYNC: u32 = 16; -pub const PFRULE_SRCTRACK: u32 = 32; -pub const PFRULE_RULESRCTRACK: u32 = 64; -pub const PFRULE_SETDELAY: u32 = 128; -pub const PFRULE_IFBOUND: u32 = 65536; -pub const PFRULE_STATESLOPPY: u32 = 131072; -pub const PFRULE_PFLOW: u32 = 262144; -pub const PFRULE_ONCE: u32 = 1048576; -pub const PFRULE_AFTO: u32 = 2097152; -pub const PFRULE_EXPIRED: u32 = 4194304; -pub const PFSTATE_HIWAT: u32 = 100000; -pub const PFSTATE_ADAPT_START: u32 = 60000; -pub const PFSTATE_ADAPT_END: u32 = 120000; -pub const PF_PKTDELAY_MAXPKTS: u32 = 10000; -pub const PFSNODE_HIWAT: u32 = 10000; -pub const PFSS_TIMESTAMP: u32 = 1; -pub const PFSS_PAWS: u32 = 16; -pub const PFSS_PAWS_IDLED: u32 = 32; -pub const PFSS_DATA_TS: u32 = 64; -pub const PFSS_DATA_NOTS: u32 = 128; -pub const PFSTATE_ALLOWOPTS: u32 = 1; -pub const PFSTATE_SLOPPY: u32 = 2; -pub const PFSTATE_PFLOW: u32 = 4; -pub const PFSTATE_NOSYNC: u32 = 8; -pub const PFSTATE_ACK: u32 = 16; -pub const PFSTATE_NODF: u32 = 32; -pub const PFSTATE_SETTOS: u32 = 64; -pub const PFSTATE_RANDOMID: u32 = 128; -pub const PFSTATE_SCRUB_TCP: u32 = 256; -pub const PFSTATE_SETPRIO: u32 = 512; -pub const PFSTATE_INP_UNLINKED: u32 = 1024; -pub const PFSTATE_SCRUBMASK: u32 = 416; -pub const PFSTATE_SETMASK: u32 = 576; -pub const PFSYNC_SCRUB_FLAG_VALID: u32 = 1; -pub const PFSYNC_FLAG_SRCNODE: u32 = 4; -pub const PFSYNC_FLAG_NATSRCNODE: u32 = 8; -pub const PF_RESERVED_ANCHOR: &[u8; 4] = b"_pf\0"; -pub const PFR_TFLAG_PERSIST: u32 = 1; -pub const PFR_TFLAG_CONST: u32 = 2; -pub const PFR_TFLAG_ACTIVE: u32 = 4; -pub const PFR_TFLAG_INACTIVE: u32 = 8; -pub const PFR_TFLAG_REFERENCED: u32 = 16; -pub const PFR_TFLAG_REFDANCHOR: u32 = 32; -pub const PFR_TFLAG_COUNTERS: u32 = 64; -pub const PFR_TFLAG_USRMASK: u32 = 67; -pub const PFR_TFLAG_SETMASK: u32 = 60; -pub const PFR_TFLAG_ALLMASK: u32 = 127; -pub const PFRKE_FLAG_NOT: u32 = 1; -pub const PFRKE_FLAG_MARK: u32 = 2; -pub const PFI_IFLAG_SKIP: u32 = 256; -pub const PFI_IFLAG_ANY: u32 = 512; -pub const PF_DPORT_RANGE: u32 = 1; -pub const PF_RPORT_RANGE: u32 = 2; -pub const PFRES_MATCH: u32 = 0; -pub const PFRES_BADOFF: u32 = 1; -pub const PFRES_FRAG: u32 = 2; -pub const PFRES_SHORT: u32 = 3; -pub const PFRES_NORM: u32 = 4; -pub const PFRES_MEMORY: u32 = 5; -pub const PFRES_TS: u32 = 6; -pub const PFRES_CONGEST: u32 = 7; -pub const PFRES_IPOPTIONS: u32 = 8; -pub const PFRES_PROTCKSUM: u32 = 9; -pub const PFRES_BADSTATE: u32 = 10; -pub const PFRES_STATEINS: u32 = 11; -pub const PFRES_MAXSTATES: u32 = 12; -pub const PFRES_SRCLIMIT: u32 = 13; -pub const PFRES_SYNPROXY: u32 = 14; -pub const PFRES_TRANSLATE: u32 = 15; -pub const PFRES_NOROUTE: u32 = 16; -pub const PFRES_MAX: u32 = 17; -pub const LCNT_STATES: u32 = 0; -pub const LCNT_SRCSTATES: u32 = 1; -pub const LCNT_SRCNODES: u32 = 2; -pub const LCNT_SRCCONN: u32 = 3; -pub const LCNT_SRCCONNRATE: u32 = 4; -pub const LCNT_OVERLOAD_TABLE: u32 = 5; -pub const LCNT_OVERLOAD_FLUSH: u32 = 6; -pub const LCNT_SYNFLOODS: u32 = 7; -pub const LCNT_SYNCOOKIES_SENT: u32 = 8; -pub const LCNT_SYNCOOKIES_VALID: u32 = 9; -pub const LCNT_MAX: u32 = 10; -pub const PFUDPS_NO_TRAFFIC: u32 = 0; -pub const PFUDPS_SINGLE: u32 = 1; -pub const PFUDPS_MULTIPLE: u32 = 2; -pub const PFUDPS_NSTATES: u32 = 3; -pub const PFOTHERS_NO_TRAFFIC: u32 = 0; -pub const PFOTHERS_SINGLE: u32 = 1; -pub const PFOTHERS_MULTIPLE: u32 = 2; -pub const PFOTHERS_NSTATES: u32 = 3; -pub const FCNT_STATE_SEARCH: u32 = 0; -pub const FCNT_STATE_INSERT: u32 = 1; -pub const FCNT_STATE_REMOVALS: u32 = 2; -pub const FCNT_MAX: u32 = 3; -pub const SCNT_SRC_NODE_SEARCH: u32 = 0; -pub const SCNT_SRC_NODE_INSERT: u32 = 1; -pub const SCNT_SRC_NODE_REMOVALS: u32 = 2; -pub const SCNT_MAX: u32 = 3; -pub const PF_REASS_ENABLED: u32 = 1; -pub const PF_REASS_NODF: u32 = 2; -pub const PF_SYNCOOKIES_NEVER: u32 = 0; -pub const PF_SYNCOOKIES_ALWAYS: u32 = 1; -pub const PF_SYNCOOKIES_ADAPTIVE: u32 = 2; -pub const PF_SYNCOOKIES_MODE_MAX: u32 = 2; -pub const PF_SYNCOOKIES_HIWATPCT: u32 = 25; -pub const PF_SYNCOOKIES_LOWATPCT: u32 = 12; -pub const PF_PRIO_ZERO: u32 = 255; -pub const PFQS_FLOWQUEUE: u32 = 1; -pub const PFQS_ROOTCLASS: u32 = 2; -pub const PFQS_DEFAULT: u32 = 4096; -pub const PFR_KTABLE_HIWAT: u32 = 1000; -pub const PFR_KENTRY_HIWAT: u32 = 200000; -pub const PFR_KENTRY_HIWAT_SMALL: u32 = 100000; -pub const PFR_FLAG_DUMMY: u32 = 2; -pub const PFR_FLAG_FEEDBACK: u32 = 4; -pub const PFR_FLAG_CLSTATS: u32 = 8; -pub const PFR_FLAG_ADDRSTOO: u32 = 16; -pub const PFR_FLAG_REPLACE: u32 = 32; -pub const PFR_FLAG_ALLRSETS: u32 = 64; -pub const PFR_FLAG_ALLMASK: u32 = 127; -pub type __int8_t = ::std::os::raw::c_schar; -pub type __uint8_t = ::std::os::raw::c_uchar; -pub type __int16_t = ::std::os::raw::c_short; -pub type __uint16_t = ::std::os::raw::c_ushort; -pub type __int32_t = ::std::os::raw::c_int; -pub type __uint32_t = ::std::os::raw::c_uint; -pub type __int64_t = ::std::os::raw::c_longlong; -pub type __uint64_t = ::std::os::raw::c_ulonglong; -pub type __int_least8_t = __int8_t; -pub type __uint_least8_t = __uint8_t; -pub type __int_least16_t = __int16_t; -pub type __uint_least16_t = __uint16_t; -pub type __int_least32_t = __int32_t; -pub type __uint_least32_t = __uint32_t; -pub type __int_least64_t = __int64_t; -pub type __uint_least64_t = __uint64_t; -pub type __int_fast8_t = __int32_t; -pub type __uint_fast8_t = __uint32_t; -pub type __int_fast16_t = __int32_t; -pub type __uint_fast16_t = __uint32_t; -pub type __int_fast32_t = __int32_t; -pub type __uint_fast32_t = __uint32_t; -pub type __int_fast64_t = __int64_t; -pub type __uint_fast64_t = __uint64_t; -pub type __intptr_t = ::std::os::raw::c_long; -pub type __uintptr_t = ::std::os::raw::c_ulong; -pub type __intmax_t = __int64_t; -pub type __uintmax_t = __uint64_t; -pub type __register_t = ::std::os::raw::c_long; -pub type __vaddr_t = ::std::os::raw::c_ulong; -pub type __paddr_t = ::std::os::raw::c_ulong; -pub type __vsize_t = ::std::os::raw::c_ulong; -pub type __psize_t = ::std::os::raw::c_ulong; -pub type __double_t = f64; -pub type __float_t = f32; -pub type __ptrdiff_t = ::std::os::raw::c_long; -pub type __size_t = ::std::os::raw::c_ulong; -pub type __ssize_t = ::std::os::raw::c_long; -pub type __va_list = __builtin_va_list; -pub type __wchar_t = ::std::os::raw::c_int; -pub type __wint_t = ::std::os::raw::c_int; -pub type __rune_t = ::std::os::raw::c_int; -pub type __wctrans_t = *mut ::std::os::raw::c_void; -pub type __wctype_t = *mut ::std::os::raw::c_void; -pub type int_least8_t = __int_least8_t; -pub type uint_least8_t = __uint_least8_t; -pub type int_least16_t = __int_least16_t; -pub type uint_least16_t = __uint_least16_t; -pub type int_least32_t = __int_least32_t; -pub type uint_least32_t = __uint_least32_t; -pub type int_least64_t = __int_least64_t; -pub type uint_least64_t = __uint_least64_t; -pub type int_fast8_t = __int_fast8_t; -pub type uint_fast8_t = __uint_fast8_t; -pub type int_fast16_t = __int_fast16_t; -pub type uint_fast16_t = __uint_fast16_t; -pub type int_fast32_t = __int_fast32_t; -pub type uint_fast32_t = __uint_fast32_t; -pub type int_fast64_t = __int_fast64_t; -pub type uint_fast64_t = __uint_fast64_t; -pub type intmax_t = __intmax_t; -pub type uintmax_t = __uintmax_t; -pub type __blkcnt_t = __int64_t; -pub type __blksize_t = __int32_t; -pub type __clock_t = __int64_t; -pub type __clockid_t = __int32_t; -pub type __cpuid_t = ::std::os::raw::c_ulong; -pub type __dev_t = __int32_t; -pub type __fixpt_t = __uint32_t; -pub type __fsblkcnt_t = __uint64_t; -pub type __fsfilcnt_t = __uint64_t; -pub type __gid_t = __uint32_t; -pub type __id_t = __uint32_t; -pub type __in_addr_t = __uint32_t; -pub type __in_port_t = __uint16_t; -pub type __ino_t = __uint64_t; -pub type __key_t = ::std::os::raw::c_long; -pub type __mode_t = __uint32_t; -pub type __nlink_t = __uint32_t; -pub type __off_t = __int64_t; -pub type __pid_t = __int32_t; -pub type __rlim_t = __uint64_t; -pub type __sa_family_t = __uint8_t; -pub type __segsz_t = __int32_t; -pub type __socklen_t = __uint32_t; -pub type __suseconds_t = ::std::os::raw::c_long; -pub type __time_t = __int64_t; -pub type __timer_t = __int32_t; -pub type __uid_t = __uint32_t; -pub type __useconds_t = __uint32_t; -#[repr(C)] -#[derive(Copy, Clone)] -pub union __mbstate_t { - pub __mbstate8: [::std::os::raw::c_char; 128usize], - pub __mbstateL: __int64_t, -} -#[test] -fn bindgen_test_layout___mbstate_t() { - const UNINIT: ::std::mem::MaybeUninit<__mbstate_t> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__mbstate_t>(), - 128usize, - concat!("Size of: ", stringify!(__mbstate_t)) - ); - assert_eq!( - ::std::mem::align_of::<__mbstate_t>(), - 8usize, - concat!("Alignment of ", stringify!(__mbstate_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__mbstate8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__mbstate_t), - "::", - stringify!(__mbstate8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__mbstateL) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__mbstate_t), - "::", - stringify!(__mbstateL) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct iovec { - pub iov_base: *mut ::std::os::raw::c_void, - pub iov_len: usize, -} -#[test] -fn bindgen_test_layout_iovec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(iovec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(iovec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).iov_base) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(iovec), "::", stringify!(iov_base)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).iov_len) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(iovec), "::", stringify!(iov_len)) - ); -} -pub const uio_rw_UIO_READ: uio_rw = 0; -pub const uio_rw_UIO_WRITE: uio_rw = 1; -pub type uio_rw = ::std::os::raw::c_uint; -pub const uio_seg_UIO_USERSPACE: uio_seg = 0; -pub const uio_seg_UIO_SYSSPACE: uio_seg = 1; -pub type uio_seg = ::std::os::raw::c_uint; -unsafe extern "C" { - pub fn preadv(arg1: ::std::os::raw::c_int, arg2: *const iovec, arg3: ::std::os::raw::c_int, arg4: __off_t) - -> isize; -} -unsafe extern "C" { - pub fn pwritev( - arg1: ::std::os::raw::c_int, - arg2: *const iovec, - arg3: ::std::os::raw::c_int, - arg4: __off_t, - ) -> isize; -} -unsafe extern "C" { - pub fn readv(arg1: ::std::os::raw::c_int, arg2: *const iovec, arg3: ::std::os::raw::c_int) -> isize; -} -unsafe extern "C" { - pub fn writev(arg1: ::std::os::raw::c_int, arg2: *const iovec, arg3: ::std::os::raw::c_int) -> isize; -} -pub type u_char = ::std::os::raw::c_uchar; -pub type u_short = ::std::os::raw::c_ushort; -pub type u_int = ::std::os::raw::c_uint; -pub type u_long = ::std::os::raw::c_ulong; -pub type unchar = ::std::os::raw::c_uchar; -pub type ushort = ::std::os::raw::c_ushort; -pub type uint = ::std::os::raw::c_uint; -pub type ulong = ::std::os::raw::c_ulong; -pub type cpuid_t = __cpuid_t; -pub type register_t = __register_t; -pub type u_int8_t = __uint8_t; -pub type u_int16_t = __uint16_t; -pub type u_int32_t = __uint32_t; -pub type u_int64_t = __uint64_t; -pub type quad_t = __int64_t; -pub type u_quad_t = __uint64_t; -pub type vaddr_t = __vaddr_t; -pub type paddr_t = __paddr_t; -pub type vsize_t = __vsize_t; -pub type psize_t = __psize_t; -pub type blkcnt_t = __blkcnt_t; -pub type blksize_t = __blksize_t; -pub type caddr_t = *mut ::std::os::raw::c_char; -pub type daddr32_t = __int32_t; -pub type daddr_t = __int64_t; -pub type dev_t = __dev_t; -pub type fixpt_t = __fixpt_t; -pub type gid_t = __gid_t; -pub type id_t = __id_t; -pub type ino_t = __ino_t; -pub type key_t = __key_t; -pub type mode_t = __mode_t; -pub type nlink_t = __nlink_t; -pub type rlim_t = __rlim_t; -pub type segsz_t = __segsz_t; -pub type uid_t = __uid_t; -pub type useconds_t = __useconds_t; -pub type suseconds_t = __suseconds_t; -pub type fsblkcnt_t = __fsblkcnt_t; -pub type fsfilcnt_t = __fsfilcnt_t; -pub type clock_t = __clock_t; -pub type clockid_t = __clockid_t; -pub type pid_t = __pid_t; -pub type time_t = __time_t; -pub type timer_t = __timer_t; -pub type off_t = __off_t; -unsafe extern "C" { - pub fn lseek(arg1: ::std::os::raw::c_int, arg2: off_t, arg3: ::std::os::raw::c_int) -> off_t; -} -unsafe extern "C" { - pub fn ftruncate(arg1: ::std::os::raw::c_int, arg2: off_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn truncate(arg1: *const ::std::os::raw::c_char, arg2: off_t) -> ::std::os::raw::c_int; -} -pub type socklen_t = __socklen_t; -pub type sa_family_t = __sa_family_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct linger { - pub l_onoff: ::std::os::raw::c_int, - pub l_linger: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_linger() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(linger)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(linger)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).l_onoff) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(linger), "::", stringify!(l_onoff)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).l_linger) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(linger), "::", stringify!(l_linger)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timeval { - pub tv_sec: time_t, - pub tv_usec: suseconds_t, -} -#[test] -fn bindgen_test_layout_timeval() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(timeval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timeval)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(timeval), "::", stringify!(tv_sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_usec) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(timeval), "::", stringify!(tv_usec)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct splice { - pub sp_fd: ::std::os::raw::c_int, - pub sp_max: off_t, - pub sp_idle: timeval, -} -#[test] -fn bindgen_test_layout_splice() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(splice)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(splice)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sp_fd) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(splice), "::", stringify!(sp_fd)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sp_max) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(splice), "::", stringify!(sp_max)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sp_idle) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(splice), "::", stringify!(sp_idle)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr { - pub sa_len: __uint8_t, - pub sa_family: sa_family_t, - pub sa_data: [::std::os::raw::c_char; 14usize], -} -#[test] -fn bindgen_test_layout_sockaddr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sockaddr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(sockaddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr), "::", stringify!(sa_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_family) as usize - ptr as usize }, - 1usize, - concat!("Offset of field: ", stringify!(sockaddr), "::", stringify!(sa_family)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_data) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(sockaddr), "::", stringify!(sa_data)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_storage { - pub ss_len: __uint8_t, - pub ss_family: sa_family_t, - pub __ss_pad1: [::std::os::raw::c_uchar; 6usize], - pub __ss_pad2: __uint64_t, - pub __ss_pad3: [::std::os::raw::c_uchar; 240usize], -} -#[test] -fn bindgen_test_layout_sockaddr_storage() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 256usize, - concat!("Size of: ", stringify!(sockaddr_storage)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sockaddr_storage)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(ss_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ss_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(ss_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss_pad1) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(__ss_pad1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss_pad2) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(__ss_pad2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__ss_pad3) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_storage), - "::", - stringify!(__ss_pad3) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockpeercred { - pub uid: uid_t, - pub gid: gid_t, - pub pid: pid_t, -} -#[test] -fn bindgen_test_layout_sockpeercred() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(sockpeercred)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockpeercred)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockpeercred), "::", stringify!(uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gid) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(sockpeercred), "::", stringify!(gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pid) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sockpeercred), "::", stringify!(pid)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct msghdr { - pub msg_name: *mut ::std::os::raw::c_void, - pub msg_namelen: socklen_t, - pub msg_iov: *mut iovec, - pub msg_iovlen: ::std::os::raw::c_uint, - pub msg_control: *mut ::std::os::raw::c_void, - pub msg_controllen: socklen_t, - pub msg_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_msghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(msghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(msghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_namelen) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_namelen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_iov) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_iov)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_iovlen) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_iovlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_control) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_control)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_controllen) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(msghdr), - "::", - stringify!(msg_controllen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_flags) as usize - ptr as usize }, - 44usize, - concat!("Offset of field: ", stringify!(msghdr), "::", stringify!(msg_flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mmsghdr { - pub msg_hdr: msghdr, - pub msg_len: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_mmsghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(mmsghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(mmsghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_hdr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(mmsghdr), "::", stringify!(msg_hdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_len) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(mmsghdr), "::", stringify!(msg_len)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct cmsghdr { - pub cmsg_len: socklen_t, - pub cmsg_level: ::std::os::raw::c_int, - pub cmsg_type: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_cmsghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(cmsghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(cmsghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmsg_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(cmsghdr), "::", stringify!(cmsg_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmsg_level) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(cmsghdr), "::", stringify!(cmsg_level)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cmsg_type) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(cmsghdr), "::", stringify!(cmsg_type)) - ); -} -unsafe extern "C" { - pub fn accept(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr, arg3: *mut socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn bind(arg1: ::std::os::raw::c_int, arg2: *const sockaddr, arg3: socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn connect(arg1: ::std::os::raw::c_int, arg2: *const sockaddr, arg3: socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getpeername(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr, arg3: *mut socklen_t) - -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getsockname(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr, arg3: *mut socklen_t) - -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getsockopt( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: *mut ::std::os::raw::c_void, - arg5: *mut socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn listen(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn recv( - arg1: ::std::os::raw::c_int, - arg2: *mut ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - ) -> isize; -} -unsafe extern "C" { - pub fn recvfrom( - arg1: ::std::os::raw::c_int, - arg2: *mut ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - arg5: *mut sockaddr, - arg6: *mut socklen_t, - ) -> isize; -} -unsafe extern "C" { - pub fn recvmsg(arg1: ::std::os::raw::c_int, arg2: *mut msghdr, arg3: ::std::os::raw::c_int) -> isize; -} -unsafe extern "C" { - pub fn recvmmsg( - arg1: ::std::os::raw::c_int, - arg2: *mut mmsghdr, - arg3: ::std::os::raw::c_uint, - arg4: ::std::os::raw::c_int, - arg5: *mut timespec, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn send( - arg1: ::std::os::raw::c_int, - arg2: *const ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - ) -> isize; -} -unsafe extern "C" { - pub fn sendto( - arg1: ::std::os::raw::c_int, - arg2: *const ::std::os::raw::c_void, - arg3: usize, - arg4: ::std::os::raw::c_int, - arg5: *const sockaddr, - arg6: socklen_t, - ) -> isize; -} -unsafe extern "C" { - pub fn sendmsg(arg1: ::std::os::raw::c_int, arg2: *const msghdr, arg3: ::std::os::raw::c_int) -> isize; -} -unsafe extern "C" { - pub fn sendmmsg( - arg1: ::std::os::raw::c_int, - arg2: *mut mmsghdr, - arg3: ::std::os::raw::c_uint, - arg4: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn setsockopt( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: *const ::std::os::raw::c_void, - arg5: socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn shutdown(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn sockatmark(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn socket( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn socketpair( - arg1: ::std::os::raw::c_int, - arg2: ::std::os::raw::c_int, - arg3: ::std::os::raw::c_int, - arg4: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn accept4( - arg1: ::std::os::raw::c_int, - arg2: *mut sockaddr, - arg3: *mut socklen_t, - arg4: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getpeereid(arg1: ::std::os::raw::c_int, arg2: *mut uid_t, arg3: *mut gid_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getrtable() -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn setrtable(arg1: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_nameindex { - pub if_index: ::std::os::raw::c_uint, - pub if_name: *mut ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_if_nameindex() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_nameindex)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_nameindex)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_index) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_nameindex), - "::", - stringify!(if_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_name) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(if_nameindex), "::", stringify!(if_name)) - ); -} -unsafe extern "C" { - pub fn if_nametoindex(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_uint; -} -unsafe extern "C" { - pub fn if_indextoname( - arg1: ::std::os::raw::c_uint, - arg2: *mut ::std::os::raw::c_char, - ) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn if_nameindex() -> *mut if_nameindex; -} -unsafe extern "C" { - pub fn if_freenameindex(arg1: *mut if_nameindex); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timespec { - pub tv_sec: time_t, - pub tv_nsec: ::std::os::raw::c_long, -} -#[test] -fn bindgen_test_layout_timespec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(timespec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timespec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(timespec), "::", stringify!(tv_sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tv_nsec) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(timespec), "::", stringify!(tv_nsec)) - ); -} -pub type __fd_mask = u32; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct fd_set { - pub fds_bits: [__fd_mask; 32usize], -} -#[test] -fn bindgen_test_layout_fd_set() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(fd_set)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(fd_set)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fds_bits) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(fd_set), "::", stringify!(fds_bits)) - ); -} -pub type sigset_t = ::std::os::raw::c_uint; -unsafe extern "C" { - pub fn select( - arg1: ::std::os::raw::c_int, - arg2: *mut fd_set, - arg3: *mut fd_set, - arg4: *mut fd_set, - arg5: *mut timeval, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pselect( - arg1: ::std::os::raw::c_int, - arg2: *mut fd_set, - arg3: *mut fd_set, - arg4: *mut fd_set, - arg5: *const timespec, - arg6: *const sigset_t, - ) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timezone { - pub tz_minuteswest: ::std::os::raw::c_int, - pub tz_dsttime: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_timezone() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(timezone)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(timezone)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tz_minuteswest) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timezone), - "::", - stringify!(tz_minuteswest) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tz_dsttime) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(timezone), "::", stringify!(tz_dsttime)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct itimerval { - pub it_interval: timeval, - pub it_value: timeval, -} -#[test] -fn bindgen_test_layout_itimerval() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(itimerval)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(itimerval)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).it_interval) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerval), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).it_value) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(itimerval), "::", stringify!(it_value)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct clockinfo { - pub hz: ::std::os::raw::c_int, - pub tick: ::std::os::raw::c_int, - pub stathz: ::std::os::raw::c_int, - pub profhz: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_clockinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(clockinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(clockinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hz) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(hz)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tick) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(tick)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).stathz) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(stathz)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).profhz) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(clockinfo), "::", stringify!(profhz)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct itimerspec { - pub it_interval: timespec, - pub it_value: timespec, -} -#[test] -fn bindgen_test_layout_itimerspec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(itimerspec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(itimerspec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).it_interval) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(itimerspec), - "::", - stringify!(it_interval) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).it_value) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(itimerspec), "::", stringify!(it_value)) - ); -} -pub type locale_t = *mut ::std::os::raw::c_void; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tm { - pub tm_sec: ::std::os::raw::c_int, - pub tm_min: ::std::os::raw::c_int, - pub tm_hour: ::std::os::raw::c_int, - pub tm_mday: ::std::os::raw::c_int, - pub tm_mon: ::std::os::raw::c_int, - pub tm_year: ::std::os::raw::c_int, - pub tm_wday: ::std::os::raw::c_int, - pub tm_yday: ::std::os::raw::c_int, - pub tm_isdst: ::std::os::raw::c_int, - pub tm_gmtoff: ::std::os::raw::c_long, - pub tm_zone: *mut ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_tm() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(tm)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(tm)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_sec) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_sec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_min) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_min)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_hour) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_hour)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_mday) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_mday)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_mon) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_mon)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_year) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_year)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_wday) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_wday)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_yday) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_yday)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_isdst) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_isdst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_gmtoff) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_gmtoff)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tm_zone) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(tm), "::", stringify!(tm_zone)) - ); -} -unsafe extern "C" { - pub fn asctime(arg1: *const tm) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn clock() -> clock_t; -} -unsafe extern "C" { - pub fn ctime(arg1: *const time_t) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn difftime(arg1: time_t, arg2: time_t) -> f64; -} -unsafe extern "C" { - pub fn gmtime(arg1: *const time_t) -> *mut tm; -} -unsafe extern "C" { - pub fn localtime(arg1: *const time_t) -> *mut tm; -} -unsafe extern "C" { - pub fn mktime(arg1: *mut tm) -> time_t; -} -unsafe extern "C" { - pub fn strftime( - arg1: *mut ::std::os::raw::c_char, - arg2: usize, - arg3: *const ::std::os::raw::c_char, - arg4: *const tm, - ) -> usize; -} -unsafe extern "C" { - pub fn time(arg1: *mut time_t) -> time_t; -} -unsafe extern "C" { - pub static mut daylight: ::std::os::raw::c_int; -} -unsafe extern "C" { - pub static mut timezone: ::std::os::raw::c_long; -} -unsafe extern "C" { - pub fn strptime( - arg1: *const ::std::os::raw::c_char, - arg2: *const ::std::os::raw::c_char, - arg3: *mut tm, - ) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn asctime_r(arg1: *const tm, arg2: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn ctime_r(arg1: *const time_t, arg2: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn gmtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm; -} -unsafe extern "C" { - pub fn localtime_r(arg1: *const time_t, arg2: *mut tm) -> *mut tm; -} -unsafe extern "C" { - pub static mut tzname: [*mut ::std::os::raw::c_char; 2usize]; -} -unsafe extern "C" { - pub fn tzset(); -} -unsafe extern "C" { - pub fn clock_getres(arg1: clockid_t, arg2: *mut timespec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn clock_gettime(arg1: clockid_t, arg2: *mut timespec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn clock_settime(arg1: clockid_t, arg2: *const timespec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn nanosleep(arg1: *const timespec, arg2: *mut timespec) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn clock_getcpuclockid(arg1: pid_t, arg2: *mut clockid_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn strftime_l( - arg1: *mut ::std::os::raw::c_char, - arg2: usize, - arg3: *const ::std::os::raw::c_char, - arg4: *const tm, - arg5: locale_t, - ) -> usize; -} -unsafe extern "C" { - pub fn timespec_get(_ts: *mut timespec, _base: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn tzsetwall(); -} -unsafe extern "C" { - pub fn timelocal(arg1: *mut tm) -> time_t; -} -unsafe extern "C" { - pub fn timegm(arg1: *mut tm) -> time_t; -} -unsafe extern "C" { - pub fn timeoff(arg1: *mut tm, arg2: ::std::os::raw::c_long) -> time_t; -} -unsafe extern "C" { - pub fn adjtime(arg1: *const timeval, arg2: *mut timeval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn adjfreq(arg1: *const i64, arg2: *mut i64) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn futimes(arg1: ::std::os::raw::c_int, arg2: *const timeval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn getitimer(arg1: ::std::os::raw::c_int, arg2: *mut itimerval) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn gettimeofday(arg1: *mut timeval, arg2: *mut timezone) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn setitimer( - arg1: ::std::os::raw::c_int, - arg2: *const itimerval, - arg3: *mut itimerval, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn settimeofday(arg1: *const timeval, arg2: *const timezone) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn utimes(arg1: *const ::std::os::raw::c_char, arg2: *const timeval) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_clonereq { - pub ifcr_total: ::std::os::raw::c_int, - pub ifcr_count: ::std::os::raw::c_int, - pub ifcr_buffer: *mut ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_if_clonereq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_clonereq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_clonereq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcr_total) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_clonereq), - "::", - stringify!(ifcr_total) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcr_count) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_clonereq), - "::", - stringify!(ifcr_count) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcr_buffer) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_clonereq), - "::", - stringify!(ifcr_buffer) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_rxring { - pub rxr_adjusted: ::std::os::raw::c_int, - pub rxr_alive: u_int, - pub rxr_cwm: u_int, - pub rxr_lwm: u_int, - pub rxr_hwm: u_int, -} -#[test] -fn bindgen_test_layout_if_rxring() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(if_rxring)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_rxring)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rxr_adjusted) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_rxring), - "::", - stringify!(rxr_adjusted) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rxr_alive) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(if_rxring), "::", stringify!(rxr_alive)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rxr_cwm) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(if_rxring), "::", stringify!(rxr_cwm)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rxr_lwm) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(if_rxring), "::", stringify!(rxr_lwm)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rxr_hwm) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(if_rxring), "::", stringify!(rxr_hwm)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_rxring_info { - pub ifr_name: [::std::os::raw::c_char; 16usize], - pub ifr_size: u_int, - pub ifr_info: if_rxring, -} -#[test] -fn bindgen_test_layout_if_rxring_info() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(if_rxring_info)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_rxring_info)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifr_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_rxring_info), - "::", - stringify!(ifr_name) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifr_size) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(if_rxring_info), - "::", - stringify!(ifr_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifr_info) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(if_rxring_info), - "::", - stringify!(ifr_info) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_rxrinfo { - pub ifri_total: u_int, - pub ifri_entries: *mut if_rxring_info, -} -#[test] -fn bindgen_test_layout_if_rxrinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_rxrinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_rxrinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifri_total) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_rxrinfo), - "::", - stringify!(ifri_total) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifri_entries) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_rxrinfo), - "::", - stringify!(ifri_entries) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_data { - pub ifi_type: u_char, - pub ifi_addrlen: u_char, - pub ifi_hdrlen: u_char, - pub ifi_link_state: u_char, - pub ifi_mtu: u_int32_t, - pub ifi_metric: u_int32_t, - pub ifi_rdomain: u_int32_t, - pub ifi_baudrate: u_int64_t, - pub ifi_ipackets: u_int64_t, - pub ifi_ierrors: u_int64_t, - pub ifi_opackets: u_int64_t, - pub ifi_oerrors: u_int64_t, - pub ifi_collisions: u_int64_t, - pub ifi_ibytes: u_int64_t, - pub ifi_obytes: u_int64_t, - pub ifi_imcasts: u_int64_t, - pub ifi_omcasts: u_int64_t, - pub ifi_iqdrops: u_int64_t, - pub ifi_oqdrops: u_int64_t, - pub ifi_noproto: u_int64_t, - pub ifi_capabilities: u_int32_t, - pub ifi_lastchange: timeval, -} -#[test] -fn bindgen_test_layout_if_data() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 144usize, - concat!("Size of: ", stringify!(if_data)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_data)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_type) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_addrlen) as usize - ptr as usize }, - 1usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_addrlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_hdrlen) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_hdrlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_link_state) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_link_state) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_mtu) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_mtu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_metric) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_metric)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_rdomain) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_rdomain)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_baudrate) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_baudrate)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ipackets) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_ipackets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ierrors) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_ierrors)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_opackets) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_opackets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_oerrors) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_oerrors)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_collisions) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_collisions) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_ibytes) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_ibytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_obytes) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_obytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_imcasts) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_imcasts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_omcasts) as usize - ptr as usize }, - 88usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_omcasts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_iqdrops) as usize - ptr as usize }, - 96usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_iqdrops)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_oqdrops) as usize - ptr as usize }, - 104usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_oqdrops)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_noproto) as usize - ptr as usize }, - 112usize, - concat!("Offset of field: ", stringify!(if_data), "::", stringify!(ifi_noproto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_capabilities) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_capabilities) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifi_lastchange) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(if_data), - "::", - stringify!(ifi_lastchange) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_status_description { - pub ifs_type: u_char, - pub ifs_state: u_char, - pub ifs_string: *const ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_if_status_description() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_status_description)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_status_description)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifs_type) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_status_description), - "::", - stringify!(ifs_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifs_state) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(if_status_description), - "::", - stringify!(ifs_state) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifs_string) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_status_description), - "::", - stringify!(ifs_string) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_msghdr { - pub ifm_msglen: u_short, - pub ifm_version: u_char, - pub ifm_type: u_char, - pub ifm_hdrlen: u_short, - pub ifm_index: u_short, - pub ifm_tableid: u_short, - pub ifm_pad1: u_char, - pub ifm_pad2: u_char, - pub ifm_addrs: ::std::os::raw::c_int, - pub ifm_flags: ::std::os::raw::c_int, - pub ifm_xflags: ::std::os::raw::c_int, - pub ifm_data: if_data, -} -#[test] -fn bindgen_test_layout_if_msghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 168usize, - concat!("Size of: ", stringify!(if_msghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_msghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_msglen) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_msglen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(if_msghdr), - "::", - stringify!(ifm_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_type) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_hdrlen) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_hdrlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_index) as usize - ptr as usize }, - 6usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_index)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_tableid) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_msghdr), - "::", - stringify!(ifm_tableid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_pad1) as usize - ptr as usize }, - 10usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_pad1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_pad2) as usize - ptr as usize }, - 11usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_pad2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_addrs) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_addrs)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_flags) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_xflags) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_xflags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_data) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(if_msghdr), "::", stringify!(ifm_data)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifa_msghdr { - pub ifam_msglen: u_short, - pub ifam_version: u_char, - pub ifam_type: u_char, - pub ifam_hdrlen: u_short, - pub ifam_index: u_short, - pub ifam_tableid: u_short, - pub ifam_pad1: u_char, - pub ifam_pad2: u_char, - pub ifam_addrs: ::std::os::raw::c_int, - pub ifam_flags: ::std::os::raw::c_int, - pub ifam_metric: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_ifa_msghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(ifa_msghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifa_msghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_msglen) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_msglen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_type) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(ifa_msghdr), "::", stringify!(ifam_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_hdrlen) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_hdrlen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_index) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_tableid) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_tableid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_pad1) as usize - ptr as usize }, - 10usize, - concat!("Offset of field: ", stringify!(ifa_msghdr), "::", stringify!(ifam_pad1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_pad2) as usize - ptr as usize }, - 11usize, - concat!("Offset of field: ", stringify!(ifa_msghdr), "::", stringify!(ifam_pad2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_addrs) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_addrs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_flags) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifam_metric) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ifa_msghdr), - "::", - stringify!(ifam_metric) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_announcemsghdr { - pub ifan_msglen: u_short, - pub ifan_version: u_char, - pub ifan_type: u_char, - pub ifan_hdrlen: u_short, - pub ifan_index: u_short, - pub ifan_what: u_short, - pub ifan_name: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_if_announcemsghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 26usize, - concat!("Size of: ", stringify!(if_announcemsghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(if_announcemsghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_msglen) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_msglen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_type) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_hdrlen) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_hdrlen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_index) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_what) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_what) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifan_name) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(if_announcemsghdr), - "::", - stringify!(ifan_name) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_ieee80211_data { - pub ifie_channel: u8, - pub ifie_nwid_len: u8, - pub ifie_flags: u32, - pub ifie_xflags: u32, - pub ifie_nwid: [u8; 32usize], - pub ifie_addr: [u8; 6usize], -} -#[test] -fn bindgen_test_layout_if_ieee80211_data() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 52usize, - concat!("Size of: ", stringify!(if_ieee80211_data)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_ieee80211_data)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifie_channel) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_data), - "::", - stringify!(ifie_channel) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifie_nwid_len) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_data), - "::", - stringify!(ifie_nwid_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifie_flags) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_data), - "::", - stringify!(ifie_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifie_xflags) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_data), - "::", - stringify!(ifie_xflags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifie_nwid) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_data), - "::", - stringify!(ifie_nwid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifie_addr) as usize - ptr as usize }, - 44usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_data), - "::", - stringify!(ifie_addr) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_ieee80211_msghdr { - pub ifim_msglen: u16, - pub ifim_version: u8, - pub ifim_type: u8, - pub ifim_hdrlen: u16, - pub ifim_index: u16, - pub ifim_tableid: u16, - pub ifim_ifie: if_ieee80211_data, -} -#[test] -fn bindgen_test_layout_if_ieee80211_msghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(if_ieee80211_msghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_ieee80211_msghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifim_msglen) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_msghdr), - "::", - stringify!(ifim_msglen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifim_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_msghdr), - "::", - stringify!(ifim_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifim_type) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_msghdr), - "::", - stringify!(ifim_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifim_hdrlen) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_msghdr), - "::", - stringify!(ifim_hdrlen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifim_index) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_msghdr), - "::", - stringify!(ifim_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifim_tableid) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_msghdr), - "::", - stringify!(ifim_tableid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifim_ifie) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(if_ieee80211_msghdr), - "::", - stringify!(ifim_ifie) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_nameindex_msg { - pub if_index: ::std::os::raw::c_uint, - pub if_name: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_if_nameindex_msg() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(if_nameindex_msg)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(if_nameindex_msg)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_index) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_nameindex_msg), - "::", - stringify!(if_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).if_name) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_nameindex_msg), - "::", - stringify!(if_name) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifg_req { - pub ifgrq_ifgrqu: ifg_req__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifg_req__bindgen_ty_1 { - pub ifgrqu_group: [::std::os::raw::c_char; 16usize], - pub ifgrqu_member: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_ifg_req__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifg_req__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(ifg_req__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgrqu_group) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifg_req__bindgen_ty_1), - "::", - stringify!(ifgrqu_group) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgrqu_member) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifg_req__bindgen_ty_1), - "::", - stringify!(ifgrqu_member) - ) - ); -} -#[test] -fn bindgen_test_layout_ifg_req() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifg_req)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(ifg_req)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgrq_ifgrqu) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifg_req), "::", stringify!(ifgrq_ifgrqu)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifg_attrib { - pub ifg_carp_demoted: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_ifg_attrib() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(ifg_attrib)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifg_attrib)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifg_carp_demoted) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifg_attrib), - "::", - stringify!(ifg_carp_demoted) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifgroupreq { - pub ifgr_name: [::std::os::raw::c_char; 16usize], - pub ifgr_len: u_int, - pub ifgr_ifgru: ifgroupreq__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifgroupreq__bindgen_ty_1 { - pub ifgru_group: [::std::os::raw::c_char; 16usize], - pub ifgru_groups: *mut ifg_req, - pub ifgru_attrib: ifg_attrib, -} -#[test] -fn bindgen_test_layout_ifgroupreq__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifgroupreq__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifgroupreq__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgru_group) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifgroupreq__bindgen_ty_1), - "::", - stringify!(ifgru_group) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgru_groups) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifgroupreq__bindgen_ty_1), - "::", - stringify!(ifgru_groups) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgru_attrib) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifgroupreq__bindgen_ty_1), - "::", - stringify!(ifgru_attrib) - ) - ); -} -#[test] -fn bindgen_test_layout_ifgroupreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(ifgroupreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifgroupreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgr_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifgroupreq), "::", stringify!(ifgr_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgr_len) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(ifgroupreq), "::", stringify!(ifgr_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifgr_ifgru) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(ifgroupreq), - "::", - stringify!(ifgr_ifgru) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifreq { - pub ifr_name: [::std::os::raw::c_char; 16usize], - pub ifr_ifru: ifreq__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifreq__bindgen_ty_1 { - pub ifru_addr: sockaddr, - pub ifru_dstaddr: sockaddr, - pub ifru_broadaddr: sockaddr, - pub ifru_flags: ::std::os::raw::c_short, - pub ifru_metric: ::std::os::raw::c_int, - pub ifru_vnetid: i64, - pub ifru_media: u64, - pub ifru_data: caddr_t, - pub ifru_index: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_ifreq__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifreq__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifreq__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_dstaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_dstaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_broadaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_broadaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_metric) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_metric) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_vnetid) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_vnetid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_media) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_media) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_data) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_index) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifru_index) - ) - ); -} -#[test] -fn bindgen_test_layout_ifreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(ifreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifr_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifreq), "::", stringify!(ifr_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifr_ifru) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(ifreq), "::", stringify!(ifr_ifru)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifaliasreq { - pub ifra_name: [::std::os::raw::c_char; 16usize], - pub ifra_ifrau: ifaliasreq__bindgen_ty_1, - pub ifra_dstaddr: sockaddr, - pub ifra_mask: sockaddr, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifaliasreq__bindgen_ty_1 { - pub ifrau_addr: sockaddr, - pub ifrau_align: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_ifaliasreq__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifaliasreq__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifaliasreq__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrau_addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifaliasreq__bindgen_ty_1), - "::", - stringify!(ifrau_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrau_align) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifaliasreq__bindgen_ty_1), - "::", - stringify!(ifrau_align) - ) - ); -} -#[test] -fn bindgen_test_layout_ifaliasreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(ifaliasreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifaliasreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifaliasreq), "::", stringify!(ifra_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_ifrau) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifaliasreq), - "::", - stringify!(ifra_ifrau) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_dstaddr) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ifaliasreq), - "::", - stringify!(ifra_dstaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifra_mask) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(ifaliasreq), "::", stringify!(ifra_mask)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifmediareq { - pub ifm_name: [::std::os::raw::c_char; 16usize], - pub ifm_current: u64, - pub ifm_mask: u64, - pub ifm_status: u64, - pub ifm_active: u64, - pub ifm_count: ::std::os::raw::c_int, - pub ifm_ulist: *mut u64, -} -#[test] -fn bindgen_test_layout_ifmediareq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(ifmediareq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifmediareq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifmediareq), "::", stringify!(ifm_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_current) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifmediareq), - "::", - stringify!(ifm_current) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_mask) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(ifmediareq), "::", stringify!(ifm_mask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_status) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(ifmediareq), - "::", - stringify!(ifm_status) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_active) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(ifmediareq), - "::", - stringify!(ifm_active) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_count) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(ifmediareq), "::", stringify!(ifm_count)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifm_ulist) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(ifmediareq), "::", stringify!(ifm_ulist)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifkalivereq { - pub ikar_name: [::std::os::raw::c_char; 16usize], - pub ikar_timeo: ::std::os::raw::c_int, - pub ikar_cnt: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_ifkalivereq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(ifkalivereq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ifkalivereq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ikar_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifkalivereq), - "::", - stringify!(ikar_name) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ikar_timeo) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifkalivereq), - "::", - stringify!(ikar_timeo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ikar_cnt) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(ifkalivereq), "::", stringify!(ikar_cnt)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifconf { - pub ifc_len: ::std::os::raw::c_int, - pub ifc_ifcu: ifconf__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifconf__bindgen_ty_1 { - pub ifcu_buf: caddr_t, - pub ifcu_req: *mut ifreq, -} -#[test] -fn bindgen_test_layout_ifconf__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ifconf__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifconf__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcu_buf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifconf__bindgen_ty_1), - "::", - stringify!(ifcu_buf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcu_req) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifconf__bindgen_ty_1), - "::", - stringify!(ifcu_req) - ) - ); -} -#[test] -fn bindgen_test_layout_ifconf() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifconf)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifconf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifc_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ifconf), "::", stringify!(ifc_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifc_ifcu) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(ifconf), "::", stringify!(ifc_ifcu)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_laddrreq { - pub iflr_name: [::std::os::raw::c_char; 16usize], - pub flags: ::std::os::raw::c_uint, - pub prefixlen: ::std::os::raw::c_uint, - pub addr: sockaddr_storage, - pub dstaddr: sockaddr_storage, -} -#[test] -fn bindgen_test_layout_if_laddrreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 536usize, - concat!("Size of: ", stringify!(if_laddrreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_laddrreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).iflr_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_laddrreq), - "::", - stringify!(iflr_name) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(if_laddrreq), "::", stringify!(flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).prefixlen) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(if_laddrreq), - "::", - stringify!(prefixlen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(if_laddrreq), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dstaddr) as usize - ptr as usize }, - 280usize, - concat!("Offset of field: ", stringify!(if_laddrreq), "::", stringify!(dstaddr)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_afreq { - pub ifar_name: [::std::os::raw::c_char; 16usize], - pub ifar_af: sa_family_t, -} -#[test] -fn bindgen_test_layout_if_afreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 17usize, - concat!("Size of: ", stringify!(if_afreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(if_afreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifar_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(if_afreq), "::", stringify!(ifar_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifar_af) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(if_afreq), "::", stringify!(ifar_af)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_parent { - pub ifp_name: [::std::os::raw::c_char; 16usize], - pub ifp_parent: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_if_parent() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(if_parent)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(if_parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifp_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(if_parent), "::", stringify!(ifp_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifp_parent) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(if_parent), "::", stringify!(ifp_parent)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct if_sffpage { - pub sff_ifname: [::std::os::raw::c_char; 16usize], - pub sff_addr: u8, - pub sff_page: u8, - pub sff_data: [u8; 256usize], -} -#[test] -fn bindgen_test_layout_if_sffpage() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 274usize, - concat!("Size of: ", stringify!(if_sffpage)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(if_sffpage)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sff_ifname) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_sffpage), - "::", - stringify!(sff_ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sff_addr) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(if_sffpage), "::", stringify!(sff_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sff_page) as usize - ptr as usize }, - 17usize, - concat!("Offset of field: ", stringify!(if_sffpage), "::", stringify!(sff_page)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sff_data) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(if_sffpage), "::", stringify!(sff_data)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct arphdr { - pub ar_hrd: u_int16_t, - pub ar_pro: u_int16_t, - pub ar_hln: u_int8_t, - pub ar_pln: u_int8_t, - pub ar_op: u_int16_t, -} -#[test] -fn bindgen_test_layout_arphdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(arphdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(arphdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ar_hrd) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(arphdr), "::", stringify!(ar_hrd)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ar_pro) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(arphdr), "::", stringify!(ar_pro)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ar_hln) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(arphdr), "::", stringify!(ar_hln)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ar_pln) as usize - ptr as usize }, - 5usize, - concat!("Offset of field: ", stringify!(arphdr), "::", stringify!(ar_pln)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ar_op) as usize - ptr as usize }, - 6usize, - concat!("Offset of field: ", stringify!(arphdr), "::", stringify!(ar_op)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct arpreq { - pub arp_pa: sockaddr, - pub arp_ha: sockaddr, - pub arp_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_arpreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 36usize, - concat!("Size of: ", stringify!(arpreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(arpreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).arp_pa) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(arpreq), "::", stringify!(arp_pa)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).arp_ha) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(arpreq), "::", stringify!(arp_ha)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).arp_flags) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(arpreq), "::", stringify!(arp_flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rb_type { - pub t_compare: ::std::option::Option< - unsafe extern "C" fn( - arg1: *const ::std::os::raw::c_void, - arg2: *const ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int, - >, - pub t_augment: ::std::option::Option, - pub t_offset: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_rb_type() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(rb_type)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rb_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).t_compare) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rb_type), "::", stringify!(t_compare)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).t_augment) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(rb_type), "::", stringify!(t_augment)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).t_offset) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(rb_type), "::", stringify!(t_offset)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rb_tree { - pub rbt_root: *mut rb_entry, -} -#[test] -fn bindgen_test_layout_rb_tree() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(rb_tree)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rb_tree)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbt_root) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rb_tree), "::", stringify!(rbt_root)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rb_entry { - pub rbt_parent: *mut rb_entry, - pub rbt_left: *mut rb_entry, - pub rbt_right: *mut rb_entry, - pub rbt_color: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_rb_entry() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(rb_entry)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rb_entry)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbt_parent) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rb_entry), "::", stringify!(rbt_parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbt_left) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(rb_entry), "::", stringify!(rbt_left)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbt_right) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(rb_entry), "::", stringify!(rbt_right)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbt_color) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(rb_entry), "::", stringify!(rbt_color)) - ); -} -unsafe extern "C" { - pub fn _rb_insert( - arg1: *const rb_type, - arg2: *mut rb_tree, - arg3: *mut ::std::os::raw::c_void, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_remove( - arg1: *const rb_type, - arg2: *mut rb_tree, - arg3: *mut ::std::os::raw::c_void, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_find( - arg1: *const rb_type, - arg2: *mut rb_tree, - arg3: *const ::std::os::raw::c_void, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_nfind( - arg1: *const rb_type, - arg2: *mut rb_tree, - arg3: *const ::std::os::raw::c_void, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_root(arg1: *const rb_type, arg2: *mut rb_tree) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_min(arg1: *const rb_type, arg2: *mut rb_tree) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_max(arg1: *const rb_type, arg2: *mut rb_tree) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_next(arg1: *const rb_type, arg2: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_prev(arg1: *const rb_type, arg2: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_left(arg1: *const rb_type, arg2: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_right(arg1: *const rb_type, arg2: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_parent(arg1: *const rb_type, arg2: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn _rb_set_left(arg1: *const rb_type, arg2: *mut ::std::os::raw::c_void, arg3: *mut ::std::os::raw::c_void); -} -unsafe extern "C" { - pub fn _rb_set_right(arg1: *const rb_type, arg2: *mut ::std::os::raw::c_void, arg3: *mut ::std::os::raw::c_void); -} -unsafe extern "C" { - pub fn _rb_set_parent(arg1: *const rb_type, arg2: *mut ::std::os::raw::c_void, arg3: *mut ::std::os::raw::c_void); -} -unsafe extern "C" { - pub fn _rb_poison(arg1: *const rb_type, arg2: *mut ::std::os::raw::c_void, arg3: ::std::os::raw::c_ulong); -} -unsafe extern "C" { - pub fn _rb_check( - arg1: *const rb_type, - arg2: *mut ::std::os::raw::c_void, - arg3: ::std::os::raw::c_ulong, - ) -> ::std::os::raw::c_int; -} -pub const lock_class_index_LO_CLASS_KERNEL_LOCK: lock_class_index = 0; -pub const lock_class_index_LO_CLASS_SCHED_LOCK: lock_class_index = 1; -pub const lock_class_index_LO_CLASS_MUTEX: lock_class_index = 2; -pub const lock_class_index_LO_CLASS_RWLOCK: lock_class_index = 3; -pub const lock_class_index_LO_CLASS_RRWLOCK: lock_class_index = 4; -pub type lock_class_index = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct lock_object { - pub lo_type: *const lock_type, - pub lo_name: *const ::std::os::raw::c_char, - pub lo_witness: *mut witness, - pub lo_flags: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_lock_object() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(lock_object)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(lock_object)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lo_type) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(lock_object), "::", stringify!(lo_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lo_name) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(lock_object), "::", stringify!(lo_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lo_witness) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(lock_object), - "::", - stringify!(lo_witness) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lo_flags) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(lock_object), "::", stringify!(lo_flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct lock_type { - pub lt_name: *const ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_lock_type() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(lock_type)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(lock_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lt_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(lock_type), "::", stringify!(lt_name)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct proc_ { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rwlock { - pub rwl_owner: ::std::os::raw::c_ulong, - pub rwl_name: *const ::std::os::raw::c_char, -} -#[test] -fn bindgen_test_layout_rwlock() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(rwlock)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rwlock)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rwl_owner) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rwlock), "::", stringify!(rwl_owner)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rwl_name) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(rwlock), "::", stringify!(rwl_name)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rrwlock { - pub rrwl_lock: rwlock, - pub rrwl_wcnt: u32, -} -#[test] -fn bindgen_test_layout_rrwlock() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(rrwlock)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rrwlock)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rrwl_lock) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rrwlock), "::", stringify!(rrwl_lock)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rrwl_wcnt) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(rrwlock), "::", stringify!(rrwl_wcnt)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct refcnt { - pub r_refs: ::std::os::raw::c_uint, - pub r_traceidx: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_refcnt() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(refcnt)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(refcnt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).r_refs) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(refcnt), "::", stringify!(r_refs)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).r_traceidx) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(refcnt), "::", stringify!(r_traceidx)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct circq { - pub next: *mut circq, - pub prev: *mut circq, -} -#[test] -fn bindgen_test_layout_circq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(circq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(circq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).next) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(circq), "::", stringify!(next)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).prev) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(circq), "::", stringify!(prev)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timeout { - pub to_list: circq, - pub to_abstime: timespec, - pub to_func: ::std::option::Option, - pub to_arg: *mut ::std::os::raw::c_void, - pub to_process: *mut process, - pub to_time: ::std::os::raw::c_int, - pub to_flags: ::std::os::raw::c_int, - pub to_kclock: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_timeout() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 72usize, - concat!("Size of: ", stringify!(timeout)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timeout)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).to_list) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(timeout), "::", stringify!(to_list)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).to_abstime) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(timeout), "::", stringify!(to_abstime)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).to_func) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(timeout), "::", stringify!(to_func)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).to_arg) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(timeout), "::", stringify!(to_arg)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).to_process) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(timeout), "::", stringify!(to_process)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).to_time) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(timeout), "::", stringify!(to_time)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).to_flags) as usize - ptr as usize }, - 60usize, - concat!("Offset of field: ", stringify!(timeout), "::", stringify!(to_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).to_kclock) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(timeout), "::", stringify!(to_kclock)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct timeoutstat { - pub tos_added: u64, - pub tos_cancelled: u64, - pub tos_deleted: u64, - pub tos_late: u64, - pub tos_pending: u64, - pub tos_readded: u64, - pub tos_rescheduled: u64, - pub tos_run_softclock: u64, - pub tos_run_thread: u64, - pub tos_scheduled: u64, - pub tos_softclocks: u64, - pub tos_thread_wakeups: u64, -} -#[test] -fn bindgen_test_layout_timeoutstat() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(timeoutstat)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(timeoutstat)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_added) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(timeoutstat), - "::", - stringify!(tos_added) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_cancelled) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(timeoutstat), - "::", - stringify!(tos_cancelled) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_deleted) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(timeoutstat), - "::", - stringify!(tos_deleted) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_late) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(timeoutstat), "::", stringify!(tos_late)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_pending) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(timeoutstat), - "::", - stringify!(tos_pending) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_readded) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(timeoutstat), - "::", - stringify!(tos_readded) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_rescheduled) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(timeoutstat), - "::", - stringify!(tos_rescheduled) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_run_softclock) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(timeoutstat), - "::", - stringify!(tos_run_softclock) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_run_thread) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(timeoutstat), - "::", - stringify!(tos_run_thread) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_scheduled) as usize - ptr as usize }, - 72usize, - concat!( - "Offset of field: ", - stringify!(timeoutstat), - "::", - stringify!(tos_scheduled) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_softclocks) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(timeoutstat), - "::", - stringify!(tos_softclocks) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos_thread_wakeups) as usize - ptr as usize }, - 88usize, - concat!( - "Offset of field: ", - stringify!(timeoutstat), - "::", - stringify!(tos_thread_wakeups) - ) - ); -} -pub type in_addr_t = __in_addr_t; -pub type in_port_t = __in_port_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct in_addr { - pub s_addr: in_addr_t, -} -#[test] -fn bindgen_test_layout_in_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(in_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).s_addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(in_addr), "::", stringify!(s_addr)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_in { - pub sin_len: u_int8_t, - pub sin_family: sa_family_t, - pub sin_port: in_port_t, - pub sin_addr: in_addr, - pub sin_zero: [i8; 8usize], -} -#[test] -fn bindgen_test_layout_sockaddr_in() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sockaddr_in)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockaddr_in)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in), - "::", - stringify!(sin_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_port) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_addr) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin_zero) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(sockaddr_in), "::", stringify!(sin_zero)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_opts { - pub ip_dst: in_addr, - pub ip_opts: [i8; 40usize], -} -#[test] -fn bindgen_test_layout_ip_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 44usize, - concat!("Size of: ", stringify!(ip_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ip_dst) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(ip_opts), "::", stringify!(ip_dst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ip_opts) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(ip_opts), "::", stringify!(ip_opts)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreq { - pub imr_multiaddr: in_addr, - pub imr_interface: in_addr, -} -#[test] -fn bindgen_test_layout_ip_mreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ip_mreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip_mreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_multiaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq), - "::", - stringify!(imr_multiaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_interface) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(ip_mreq), - "::", - stringify!(imr_interface) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip_mreqn { - pub imr_multiaddr: in_addr, - pub imr_address: in_addr, - pub imr_ifindex: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_ip_mreqn() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(ip_mreqn)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip_mreqn)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_multiaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ip_mreqn), - "::", - stringify!(imr_multiaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_address) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(ip_mreqn), "::", stringify!(imr_address)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).imr_ifindex) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(ip_mreqn), "::", stringify!(imr_ifindex)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_addr { - pub __u6_addr: in6_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union in6_addr__bindgen_ty_1 { - pub __u6_addr8: [u_int8_t; 16usize], - pub __u6_addr16: [u_int16_t; 8usize], - pub __u6_addr32: [u_int32_t; 4usize], -} -#[test] -fn bindgen_test_layout_in6_addr__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(in6_addr__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in6_addr__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_addr__bindgen_ty_1), - "::", - stringify!(__u6_addr8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr16) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_addr__bindgen_ty_1), - "::", - stringify!(__u6_addr16) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr32) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_addr__bindgen_ty_1), - "::", - stringify!(__u6_addr32) - ) - ); -} -#[test] -fn bindgen_test_layout_in6_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(in6_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in6_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__u6_addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(in6_addr), "::", stringify!(__u6_addr)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct sockaddr_in6 { - pub sin6_len: u_int8_t, - pub sin6_family: sa_family_t, - pub sin6_port: in_port_t, - pub sin6_flowinfo: u_int32_t, - pub sin6_addr: in6_addr, - pub sin6_scope_id: u_int32_t, -} -#[test] -fn bindgen_test_layout_sockaddr_in6() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 28usize, - concat!("Size of: ", stringify!(sockaddr_in6)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sockaddr_in6)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_port) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_port) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_flowinfo) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_flowinfo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_addr) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6_scope_id) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_in6), - "::", - stringify!(sin6_scope_id) - ) - ); -} -unsafe extern "C" { - pub static in6addr_any: in6_addr; -} -unsafe extern "C" { - pub static in6addr_loopback: in6_addr; -} -unsafe extern "C" { - pub static in6addr_intfacelocal_allnodes: in6_addr; -} -unsafe extern "C" { - pub static in6addr_linklocal_allnodes: in6_addr; -} -unsafe extern "C" { - pub static in6addr_linklocal_allrouters: in6_addr; -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ipv6_mreq { - pub ipv6mr_multiaddr: in6_addr, - pub ipv6mr_interface: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_ipv6_mreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(ipv6_mreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ipv6_mreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipv6mr_multiaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ipv6_mreq), - "::", - stringify!(ipv6mr_multiaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipv6mr_interface) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ipv6_mreq), - "::", - stringify!(ipv6mr_interface) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct in6_pktinfo { - pub ipi6_addr: in6_addr, - pub ipi6_ifindex: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_in6_pktinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(in6_pktinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(in6_pktinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipi6_addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(in6_pktinfo), - "::", - stringify!(ipi6_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ipi6_ifindex) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(in6_pktinfo), - "::", - stringify!(ipi6_ifindex) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ip6_mtuinfo { - pub ip6m_addr: sockaddr_in6, - pub ip6m_mtu: u_int32_t, -} -#[test] -fn bindgen_test_layout_ip6_mtuinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(ip6_mtuinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(ip6_mtuinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ip6m_addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ip6_mtuinfo), - "::", - stringify!(ip6m_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ip6m_mtu) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(ip6_mtuinfo), "::", stringify!(ip6m_mtu)) - ); -} -unsafe extern "C" { - pub fn inet6_opt_init(arg1: *mut ::std::os::raw::c_void, arg2: socklen_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_append( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: u_int8_t, - arg5: socklen_t, - arg6: u_int8_t, - arg7: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_finish( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_set_val( - arg1: *mut ::std::os::raw::c_void, - arg2: ::std::os::raw::c_int, - arg3: *mut ::std::os::raw::c_void, - arg4: socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_next( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: *mut u_int8_t, - arg5: *mut socklen_t, - arg6: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_find( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: u_int8_t, - arg5: *mut socklen_t, - arg6: *mut *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_opt_get_val( - arg1: *mut ::std::os::raw::c_void, - arg2: ::std::os::raw::c_int, - arg3: *mut ::std::os::raw::c_void, - arg4: socklen_t, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_space(arg1: ::std::os::raw::c_int, arg2: ::std::os::raw::c_int) -> socklen_t; -} -unsafe extern "C" { - pub fn inet6_rth_init( - arg1: *mut ::std::os::raw::c_void, - arg2: socklen_t, - arg3: ::std::os::raw::c_int, - arg4: ::std::os::raw::c_int, - ) -> *mut ::std::os::raw::c_void; -} -unsafe extern "C" { - pub fn inet6_rth_add(arg1: *mut ::std::os::raw::c_void, arg2: *const in6_addr) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_reverse( - arg1: *const ::std::os::raw::c_void, - arg2: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_segments(arg1: *const ::std::os::raw::c_void) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn inet6_rth_getaddr(arg1: *const ::std::os::raw::c_void, arg2: ::std::os::raw::c_int) -> *mut in6_addr; -} -unsafe extern "C" { - pub fn bindresvport(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr_in) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn bindresvport_sa(arg1: ::std::os::raw::c_int, arg2: *mut sockaddr) -> ::std::os::raw::c_int; -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct radix_node { - pub rn_mklist: *mut radix_mask, - pub rn_p: *mut radix_node, - pub rn_b: ::std::os::raw::c_short, - pub rn_bmask: ::std::os::raw::c_char, - pub rn_flags: u_char, - pub rn_u: radix_node__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union radix_node__bindgen_ty_1 { - pub rn_leaf: radix_node__bindgen_ty_1__bindgen_ty_1, - pub rn_node: radix_node__bindgen_ty_1__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct radix_node__bindgen_ty_1__bindgen_ty_1 { - pub rn_Key: caddr_t, - pub rn_Mask: caddr_t, - pub rn_Dupedkey: *mut radix_node, -} -#[test] -fn bindgen_test_layout_radix_node__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Key) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rn_Key) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Mask) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rn_Mask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Dupedkey) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rn_Dupedkey) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct radix_node__bindgen_ty_1__bindgen_ty_2 { - pub rn_Off: ::std::os::raw::c_int, - pub rn_L: *mut radix_node, - pub rn_R: *mut radix_node, -} -#[test] -fn bindgen_test_layout_radix_node__bindgen_ty_1__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node__bindgen_ty_1__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_Off) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(rn_Off) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_L) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(rn_L) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_R) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(rn_R) - ) - ); -} -#[test] -fn bindgen_test_layout_radix_node__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(radix_node__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_leaf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1), - "::", - stringify!(rn_leaf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_node) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node__bindgen_ty_1), - "::", - stringify!(rn_node) - ) - ); -} -#[test] -fn bindgen_test_layout_radix_node() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(radix_node)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_mklist) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_mklist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_p) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_p)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_b) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_b)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_bmask) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_bmask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_flags) as usize - ptr as usize }, - 19usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rn_u) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(radix_node), "::", stringify!(rn_u)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct radix_mask { - pub rm_b: ::std::os::raw::c_short, - pub rm_unused: ::std::os::raw::c_char, - pub rm_flags: u_char, - pub rm_mklist: *mut radix_mask, - pub rm_rmu: radix_mask__bindgen_ty_1, - pub rm_refs: ::std::os::raw::c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union radix_mask__bindgen_ty_1 { - pub rmu_mask: caddr_t, - pub rmu_leaf: *mut radix_node, -} -#[test] -fn bindgen_test_layout_radix_mask__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(radix_mask__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_mask__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmu_mask) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_mask__bindgen_ty_1), - "::", - stringify!(rmu_mask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmu_leaf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_mask__bindgen_ty_1), - "::", - stringify!(rmu_leaf) - ) - ); -} -#[test] -fn bindgen_test_layout_radix_mask() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(radix_mask)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_mask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_b) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_b)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_unused) as usize - ptr as usize }, - 2usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_unused)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_flags) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_mklist) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_mklist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_rmu) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_rmu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rm_refs) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(radix_mask), "::", stringify!(rm_refs)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct radix_node_head { - pub rnh_treetop: *mut radix_node, - pub rnh_addrsize: ::std::os::raw::c_int, - pub rnh_pktsize: ::std::os::raw::c_int, - pub rnh_nodes: [radix_node; 3usize], - pub rnh_rtableid: u_int, -} -#[test] -fn bindgen_test_layout_radix_node_head() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 168usize, - concat!("Size of: ", stringify!(radix_node_head)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(radix_node_head)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_treetop) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_treetop) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_addrsize) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_addrsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_pktsize) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_pktsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_nodes) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_nodes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rnh_rtableid) as usize - ptr as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(radix_node_head), - "::", - stringify!(rnh_rtableid) - ) - ); -} -unsafe extern "C" { - pub fn rn_init(arg1: ::std::os::raw::c_uint); -} -unsafe extern "C" { - pub fn rn_inithead(arg1: *mut *mut ::std::os::raw::c_void, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn rn_walktree( - arg1: *mut radix_node_head, - arg2: ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut radix_node, - arg2: *mut ::std::os::raw::c_void, - arg3: u_int, - ) -> ::std::os::raw::c_int, - >, - arg3: *mut ::std::os::raw::c_void, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn rn_addroute( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut ::std::os::raw::c_void, - arg3: *mut radix_node_head, - arg4: *mut radix_node, - arg5: u_int8_t, - ) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_delete( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut ::std::os::raw::c_void, - arg3: *mut radix_node_head, - arg4: *mut radix_node, - ) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_lookup( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut ::std::os::raw::c_void, - arg3: *mut radix_node_head, - ) -> *mut radix_node; -} -unsafe extern "C" { - pub fn rn_match(arg1: *mut ::std::os::raw::c_void, arg2: *mut radix_node_head) -> *mut radix_node; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rt_metrics { - pub rmx_pksent: u_int64_t, - pub rmx_expire: i64, - pub rmx_locks: u_int, - pub rmx_mtu: u_int, - pub rmx_refcnt: u_int, - pub rmx_hopcount: u_int, - pub rmx_recvpipe: u_int, - pub rmx_sendpipe: u_int, - pub rmx_ssthresh: u_int, - pub rmx_rtt: u_int, - pub rmx_rttvar: u_int, - pub rmx_pad: u_int, -} -#[test] -fn bindgen_test_layout_rt_metrics() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(rt_metrics)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rt_metrics)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_pksent) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_pksent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_expire) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_expire) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_locks) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(rt_metrics), "::", stringify!(rmx_locks)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_mtu) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(rt_metrics), "::", stringify!(rmx_mtu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_refcnt) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_refcnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_hopcount) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_hopcount) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_recvpipe) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_recvpipe) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_sendpipe) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_sendpipe) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_ssthresh) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_ssthresh) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_rtt) as usize - ptr as usize }, - 44usize, - concat!("Offset of field: ", stringify!(rt_metrics), "::", stringify!(rmx_rtt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_rttvar) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(rt_metrics), - "::", - stringify!(rmx_rttvar) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rmx_pad) as usize - ptr as usize }, - 52usize, - concat!("Offset of field: ", stringify!(rt_metrics), "::", stringify!(rmx_pad)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtstat { - pub rts_badredirect: u_int32_t, - pub rts_dynamic: u_int32_t, - pub rts_newgateway: u_int32_t, - pub rts_unreach: u_int32_t, - pub rts_wildcard: u_int32_t, -} -#[test] -fn bindgen_test_layout_rtstat() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(rtstat)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(rtstat)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rts_badredirect) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rtstat), - "::", - stringify!(rts_badredirect) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rts_dynamic) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(rtstat), "::", stringify!(rts_dynamic)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rts_newgateway) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(rtstat), - "::", - stringify!(rts_newgateway) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rts_unreach) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(rtstat), "::", stringify!(rts_unreach)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rts_wildcard) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(rtstat), "::", stringify!(rts_wildcard)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rt_tableinfo { - pub rti_tableid: u_short, - pub rti_domainid: u_short, -} -#[test] -fn bindgen_test_layout_rt_tableinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(rt_tableinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(rt_tableinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rti_tableid) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rt_tableinfo), - "::", - stringify!(rti_tableid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rti_domainid) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(rt_tableinfo), - "::", - stringify!(rti_domainid) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rt_msghdr { - pub rtm_msglen: u_short, - pub rtm_version: u_char, - pub rtm_type: u_char, - pub rtm_hdrlen: u_short, - pub rtm_index: u_short, - pub rtm_tableid: u_short, - pub rtm_priority: u_char, - pub rtm_mpls: u_char, - pub rtm_addrs: ::std::os::raw::c_int, - pub rtm_flags: ::std::os::raw::c_int, - pub rtm_fmask: ::std::os::raw::c_int, - pub rtm_pid: pid_t, - pub rtm_seq: ::std::os::raw::c_int, - pub rtm_errno: ::std::os::raw::c_int, - pub rtm_inits: u_int, - pub rtm_rmx: rt_metrics, -} -#[test] -fn bindgen_test_layout_rt_msghdr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 96usize, - concat!("Size of: ", stringify!(rt_msghdr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rt_msghdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_msglen) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_msglen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_version) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr), - "::", - stringify!(rtm_version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_type) as usize - ptr as usize }, - 3usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_hdrlen) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_hdrlen)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_index) as usize - ptr as usize }, - 6usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_index)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_tableid) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr), - "::", - stringify!(rtm_tableid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_priority) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(rt_msghdr), - "::", - stringify!(rtm_priority) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_mpls) as usize - ptr as usize }, - 11usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_mpls)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_addrs) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_addrs)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_flags) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_fmask) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_fmask)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_pid) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_pid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_seq) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_seq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_errno) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_errno)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_inits) as usize - ptr as usize }, - 36usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_inits)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtm_rmx) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(rt_msghdr), "::", stringify!(rtm_rmx)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_rtlabel { - pub sr_len: u_int8_t, - pub sr_family: sa_family_t, - pub sr_label: [::std::os::raw::c_char; 32usize], -} -#[test] -fn bindgen_test_layout_sockaddr_rtlabel() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 34usize, - concat!("Size of: ", stringify!(sockaddr_rtlabel)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(sockaddr_rtlabel)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtlabel), - "::", - stringify!(sr_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtlabel), - "::", - stringify!(sr_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_label) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtlabel), - "::", - stringify!(sr_label) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_rtdns { - pub sr_len: u_int8_t, - pub sr_family: sa_family_t, - pub sr_dns: [::std::os::raw::c_char; 128usize], -} -#[test] -fn bindgen_test_layout_sockaddr_rtdns() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 130usize, - concat!("Size of: ", stringify!(sockaddr_rtdns)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(sockaddr_rtdns)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtdns), - "::", - stringify!(sr_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtdns), - "::", - stringify!(sr_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_dns) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtdns), - "::", - stringify!(sr_dns) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_rtstatic { - pub sr_len: u_int8_t, - pub sr_family: sa_family_t, - pub sr_static: [::std::os::raw::c_char; 128usize], -} -#[test] -fn bindgen_test_layout_sockaddr_rtstatic() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 130usize, - concat!("Size of: ", stringify!(sockaddr_rtstatic)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(sockaddr_rtstatic)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtstatic), - "::", - stringify!(sr_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtstatic), - "::", - stringify!(sr_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_static) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtstatic), - "::", - stringify!(sr_static) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct sockaddr_rtsearch { - pub sr_len: u_int8_t, - pub sr_family: sa_family_t, - pub sr_search: [::std::os::raw::c_char; 128usize], -} -#[test] -fn bindgen_test_layout_sockaddr_rtsearch() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 130usize, - concat!("Size of: ", stringify!(sockaddr_rtsearch)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(sockaddr_rtsearch)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtsearch), - "::", - stringify!(sr_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_family) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtsearch), - "::", - stringify!(sr_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sr_search) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr_rtsearch), - "::", - stringify!(sr_search) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rt_addrinfo { - pub rti_addrs: ::std::os::raw::c_int, - pub rti_info: [*const sockaddr; 15usize], - pub rti_flags: ::std::os::raw::c_int, - pub rti_ifa: *mut ifaddr, - pub rti_rtm: *mut rt_msghdr, - pub rti_mpls: u_char, -} -#[test] -fn bindgen_test_layout_rt_addrinfo() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 160usize, - concat!("Size of: ", stringify!(rt_addrinfo)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(rt_addrinfo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rti_addrs) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(rt_addrinfo), - "::", - stringify!(rti_addrs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rti_info) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(rt_addrinfo), "::", stringify!(rti_info)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rti_flags) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(rt_addrinfo), - "::", - stringify!(rti_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rti_ifa) as usize - ptr as usize }, - 136usize, - concat!("Offset of field: ", stringify!(rt_addrinfo), "::", stringify!(rti_ifa)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rti_rtm) as usize - ptr as usize }, - 144usize, - concat!("Offset of field: ", stringify!(rt_addrinfo), "::", stringify!(rti_rtm)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rti_mpls) as usize - ptr as usize }, - 152usize, - concat!("Offset of field: ", stringify!(rt_addrinfo), "::", stringify!(rti_mpls)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct route { - pub ro_rt: *mut rtentry, - pub ro_generation: u_long, - pub ro_tableid: u_long, - pub __bindgen_anon_1: route__bindgen_ty_1, - pub __bindgen_anon_2: route__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union route__bindgen_ty_1 { - pub ro_dstsa: sockaddr, - pub ro_dstsin: sockaddr_in, - pub ro_dstsin6: sockaddr_in6, -} -#[test] -fn bindgen_test_layout_route__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 28usize, - concat!("Size of: ", stringify!(route__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(route__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_dstsa) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(route__bindgen_ty_1), - "::", - stringify!(ro_dstsa) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_dstsin) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(route__bindgen_ty_1), - "::", - stringify!(ro_dstsin) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_dstsin6) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(route__bindgen_ty_1), - "::", - stringify!(ro_dstsin6) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union route__bindgen_ty_2 { - pub ro_srcin: in_addr, - pub ro_srcin6: in6_addr, -} -#[test] -fn bindgen_test_layout_route__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(route__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(route__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_srcin) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(route__bindgen_ty_2), - "::", - stringify!(ro_srcin) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_srcin6) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(route__bindgen_ty_2), - "::", - stringify!(ro_srcin6) - ) - ); -} -#[test] -fn bindgen_test_layout_route() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 72usize, - concat!("Size of: ", stringify!(route)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(route)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_rt) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(route), "::", stringify!(ro_rt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_generation) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(route), "::", stringify!(ro_generation)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ro_tableid) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(route), "::", stringify!(ro_tableid)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ip6_hdr { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mbuf_list { - _unused: [u8; 0], -} -pub type pf_refcnt_t = refcnt; -pub const PF_INOUT: _bindgen_ty_1 = 0; -pub const PF_IN: _bindgen_ty_1 = 1; -pub const PF_OUT: _bindgen_ty_1 = 2; -pub const PF_FWD: _bindgen_ty_1 = 3; -pub type _bindgen_ty_1 = ::std::os::raw::c_uint; -pub const PF_PASS: _bindgen_ty_2 = 0; -pub const PF_DROP: _bindgen_ty_2 = 1; -pub const PF_SCRUB: _bindgen_ty_2 = 2; -pub const PF_NOSCRUB: _bindgen_ty_2 = 3; -pub const PF_NAT: _bindgen_ty_2 = 4; -pub const PF_NONAT: _bindgen_ty_2 = 5; -pub const PF_BINAT: _bindgen_ty_2 = 6; -pub const PF_NOBINAT: _bindgen_ty_2 = 7; -pub const PF_RDR: _bindgen_ty_2 = 8; -pub const PF_NORDR: _bindgen_ty_2 = 9; -pub const PF_SYNPROXY_DROP: _bindgen_ty_2 = 10; -pub const PF_DEFER: _bindgen_ty_2 = 11; -pub const PF_MATCH: _bindgen_ty_2 = 12; -pub const PF_DIVERT: _bindgen_ty_2 = 13; -pub const PF_RT: _bindgen_ty_2 = 14; -pub const PF_AFRT: _bindgen_ty_2 = 15; -pub type _bindgen_ty_2 = ::std::os::raw::c_uint; -pub const PF_TRANS_RULESET: _bindgen_ty_3 = 0; -pub const PF_TRANS_TABLE: _bindgen_ty_3 = 1; -pub type _bindgen_ty_3 = ::std::os::raw::c_uint; -pub const PF_OP_NONE: _bindgen_ty_4 = 0; -pub const PF_OP_IRG: _bindgen_ty_4 = 1; -pub const PF_OP_EQ: _bindgen_ty_4 = 2; -pub const PF_OP_NE: _bindgen_ty_4 = 3; -pub const PF_OP_LT: _bindgen_ty_4 = 4; -pub const PF_OP_LE: _bindgen_ty_4 = 5; -pub const PF_OP_GT: _bindgen_ty_4 = 6; -pub const PF_OP_GE: _bindgen_ty_4 = 7; -pub const PF_OP_XRG: _bindgen_ty_4 = 8; -pub const PF_OP_RRG: _bindgen_ty_4 = 9; -pub type _bindgen_ty_4 = ::std::os::raw::c_uint; -pub const PF_CHANGE_NONE: _bindgen_ty_5 = 0; -pub const PF_CHANGE_ADD_HEAD: _bindgen_ty_5 = 1; -pub const PF_CHANGE_ADD_TAIL: _bindgen_ty_5 = 2; -pub const PF_CHANGE_ADD_BEFORE: _bindgen_ty_5 = 3; -pub const PF_CHANGE_ADD_AFTER: _bindgen_ty_5 = 4; -pub const PF_CHANGE_REMOVE: _bindgen_ty_5 = 5; -pub const PF_CHANGE_GET_TICKET: _bindgen_ty_5 = 6; -pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -pub const PF_GET_NONE: _bindgen_ty_6 = 0; -pub const PF_GET_CLR_CNTR: _bindgen_ty_6 = 1; -pub type _bindgen_ty_6 = ::std::os::raw::c_uint; -pub const PF_SK_WIRE: _bindgen_ty_7 = 0; -pub const PF_SK_STACK: _bindgen_ty_7 = 1; -pub const PF_SK_BOTH: _bindgen_ty_7 = 2; -pub type _bindgen_ty_7 = ::std::os::raw::c_uint; -pub const PF_PEER_SRC: _bindgen_ty_8 = 0; -pub const PF_PEER_DST: _bindgen_ty_8 = 1; -pub const PF_PEER_BOTH: _bindgen_ty_8 = 2; -pub type _bindgen_ty_8 = ::std::os::raw::c_uint; -pub const PFTM_TCP_FIRST_PACKET: _bindgen_ty_9 = 0; -pub const PFTM_TCP_OPENING: _bindgen_ty_9 = 1; -pub const PFTM_TCP_ESTABLISHED: _bindgen_ty_9 = 2; -pub const PFTM_TCP_CLOSING: _bindgen_ty_9 = 3; -pub const PFTM_TCP_FIN_WAIT: _bindgen_ty_9 = 4; -pub const PFTM_TCP_CLOSED: _bindgen_ty_9 = 5; -pub const PFTM_UDP_FIRST_PACKET: _bindgen_ty_9 = 6; -pub const PFTM_UDP_SINGLE: _bindgen_ty_9 = 7; -pub const PFTM_UDP_MULTIPLE: _bindgen_ty_9 = 8; -pub const PFTM_ICMP_FIRST_PACKET: _bindgen_ty_9 = 9; -pub const PFTM_ICMP_ERROR_REPLY: _bindgen_ty_9 = 10; -pub const PFTM_OTHER_FIRST_PACKET: _bindgen_ty_9 = 11; -pub const PFTM_OTHER_SINGLE: _bindgen_ty_9 = 12; -pub const PFTM_OTHER_MULTIPLE: _bindgen_ty_9 = 13; -pub const PFTM_FRAG: _bindgen_ty_9 = 14; -pub const PFTM_INTERVAL: _bindgen_ty_9 = 15; -pub const PFTM_ADAPTIVE_START: _bindgen_ty_9 = 16; -pub const PFTM_ADAPTIVE_END: _bindgen_ty_9 = 17; -pub const PFTM_SRC_NODE: _bindgen_ty_9 = 18; -pub const PFTM_TS_DIFF: _bindgen_ty_9 = 19; -pub const PFTM_MAX: _bindgen_ty_9 = 20; -pub const PFTM_PURGE: _bindgen_ty_9 = 21; -pub const PFTM_UNLINKED: _bindgen_ty_9 = 22; -pub type _bindgen_ty_9 = ::std::os::raw::c_uint; -pub const PF_NOPFROUTE: _bindgen_ty_10 = 0; -pub const PF_ROUTETO: _bindgen_ty_10 = 1; -pub const PF_DUPTO: _bindgen_ty_10 = 2; -pub const PF_REPLYTO: _bindgen_ty_10 = 3; -pub type _bindgen_ty_10 = ::std::os::raw::c_uint; -pub const PF_LIMIT_STATES: _bindgen_ty_11 = 0; -pub const PF_LIMIT_SRC_NODES: _bindgen_ty_11 = 1; -pub const PF_LIMIT_FRAGS: _bindgen_ty_11 = 2; -pub const PF_LIMIT_TABLES: _bindgen_ty_11 = 3; -pub const PF_LIMIT_TABLE_ENTRIES: _bindgen_ty_11 = 4; -pub const PF_LIMIT_PKTDELAY_PKTS: _bindgen_ty_11 = 5; -pub const PF_LIMIT_ANCHORS: _bindgen_ty_11 = 6; -pub const PF_LIMIT_MAX: _bindgen_ty_11 = 7; -pub type _bindgen_ty_11 = ::std::os::raw::c_uint; -pub const PF_POOL_NONE: _bindgen_ty_12 = 0; -pub const PF_POOL_BITMASK: _bindgen_ty_12 = 1; -pub const PF_POOL_RANDOM: _bindgen_ty_12 = 2; -pub const PF_POOL_SRCHASH: _bindgen_ty_12 = 3; -pub const PF_POOL_ROUNDROBIN: _bindgen_ty_12 = 4; -pub const PF_POOL_LEASTSTATES: _bindgen_ty_12 = 5; -pub type _bindgen_ty_12 = ::std::os::raw::c_uint; -pub const PF_ADDR_ADDRMASK: _bindgen_ty_13 = 0; -pub const PF_ADDR_NOROUTE: _bindgen_ty_13 = 1; -pub const PF_ADDR_DYNIFTL: _bindgen_ty_13 = 2; -pub const PF_ADDR_TABLE: _bindgen_ty_13 = 3; -pub const PF_ADDR_RTLABEL: _bindgen_ty_13 = 4; -pub const PF_ADDR_URPFFAILED: _bindgen_ty_13 = 5; -pub const PF_ADDR_RANGE: _bindgen_ty_13 = 6; -pub const PF_ADDR_NONE: _bindgen_ty_13 = 7; -pub type _bindgen_ty_13 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_addr { - pub pfa: pf_addr__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_addr__bindgen_ty_1 { - pub v4: in_addr, - pub v6: in6_addr, - pub addr8: [u_int8_t; 16usize], - pub addr16: [u_int16_t; 8usize], - pub addr32: [u_int32_t; 4usize], -} -#[test] -fn bindgen_test_layout_pf_addr__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_addr__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).v4) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(v4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).v6) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(v6) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(addr8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr16) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(addr16) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr32) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr__bindgen_ty_1), - "::", - stringify!(addr32) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfa) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_addr), "::", stringify!(pfa)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_addr_wrap { - pub v: pf_addr_wrap__bindgen_ty_1, - pub p: pf_addr_wrap__bindgen_ty_2, - pub type_: u_int8_t, - pub iflags: u_int8_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_addr_wrap__bindgen_ty_1 { - pub a: pf_addr_wrap__bindgen_ty_1__bindgen_ty_1, - pub ifname: [::std::os::raw::c_char; 16usize], - pub tblname: [::std::os::raw::c_char; 32usize], - pub rtlabelname: [::std::os::raw::c_char; 32usize], - pub rtlabel: u_int32_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_addr_wrap__bindgen_ty_1__bindgen_ty_1 { - pub addr: pf_addr, - pub mask: pf_addr, -} -#[test] -fn bindgen_test_layout_pf_addr_wrap__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mask) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(mask) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_addr_wrap__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_addr_wrap__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_addr_wrap__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).a) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(a) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tblname) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(tblname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtlabelname) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(rtlabelname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtlabel) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_1), - "::", - stringify!(rtlabel) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_addr_wrap__bindgen_ty_2 { - pub dyn_: *mut pfi_dynaddr, - pub tbl: *mut pfr_ktable, - pub dyncnt: ::std::os::raw::c_int, - pub tblcnt: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_addr_wrap__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_addr_wrap__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_addr_wrap__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dyn_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(dyn_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tbl) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(tbl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dyncnt) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(dyncnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tblcnt) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_addr_wrap__bindgen_ty_2), - "::", - stringify!(tblcnt) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_addr_wrap() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 48usize, - concat!("Size of: ", stringify!(pf_addr_wrap)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_addr_wrap)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).v) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(v)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).p) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(p)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(type_)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).iflags) as usize - ptr as usize }, - 41usize, - concat!("Offset of field: ", stringify!(pf_addr_wrap), "::", stringify!(iflags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule_uid { - pub uid: [uid_t; 2usize], - pub op: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_rule_uid() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(pf_rule_uid)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule_uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_uid), "::", stringify!(uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).op) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_rule_uid), "::", stringify!(op)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule_gid { - pub gid: [uid_t; 2usize], - pub op: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_rule_gid() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(pf_rule_gid)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule_gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gid) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_gid), "::", stringify!(gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).op) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_rule_gid), "::", stringify!(op)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_rule_addr { - pub addr: pf_addr_wrap, - pub port: [u_int16_t; 2usize], - pub neg: u_int8_t, - pub port_op: u_int8_t, - pub weight: u_int16_t, -} -#[test] -fn bindgen_test_layout_pf_rule_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 56usize, - concat!("Size of: ", stringify!(pf_rule_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).neg) as usize - ptr as usize }, - 52usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(neg)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port_op) as usize - ptr as usize }, - 53usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(port_op)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).weight) as usize - ptr as usize }, - 54usize, - concat!("Offset of field: ", stringify!(pf_rule_addr), "::", stringify!(weight)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_threshold { - pub limit: u_int32_t, - pub seconds: u_int32_t, - pub count: u_int32_t, - pub last: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_threshold() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_threshold)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_threshold)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).limit) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(limit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seconds) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(seconds)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(count)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).last) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(pf_threshold), "::", stringify!(last)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_poolhashkey { - pub pfk: pf_poolhashkey__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_poolhashkey__bindgen_ty_1 { - pub key8: [u_int8_t; 16usize], - pub key16: [u_int16_t; 8usize], - pub key32: [u_int32_t; 4usize], -} -#[test] -fn bindgen_test_layout_pf_poolhashkey__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_poolhashkey__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_poolhashkey__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key8) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_poolhashkey__bindgen_ty_1), - "::", - stringify!(key8) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key16) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_poolhashkey__bindgen_ty_1), - "::", - stringify!(key16) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key32) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_poolhashkey__bindgen_ty_1), - "::", - stringify!(key32) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_poolhashkey() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_poolhashkey)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_poolhashkey)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfk) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_poolhashkey), "::", stringify!(pfk)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_pool { - pub addr: pf_addr_wrap, - pub key: pf_poolhashkey, - pub counter: pf_addr, - pub ifname: [::std::os::raw::c_char; 16usize], - pub kif: *mut pfi_kif, - pub tblidx: ::std::os::raw::c_int, - pub states: u_int64_t, - pub curweight: ::std::os::raw::c_int, - pub weight: u_int16_t, - pub proxy_port: [u_int16_t; 2usize], - pub port_op: u_int8_t, - pub opts: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_pool() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 136usize, - concat!("Size of: ", stringify!(pf_pool)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_pool)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(key)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).counter) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(counter)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 96usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tblidx) as usize - ptr as usize }, - 104usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(tblidx)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states) as usize - ptr as usize }, - 112usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).curweight) as usize - ptr as usize }, - 120usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(curweight)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).weight) as usize - ptr as usize }, - 124usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(weight)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proxy_port) as usize - ptr as usize }, - 126usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(proxy_port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port_op) as usize - ptr as usize }, - 130usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(port_op)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).opts) as usize - ptr as usize }, - 131usize, - concat!("Offset of field: ", stringify!(pf_pool), "::", stringify!(opts)) - ); -} -pub type pf_osfp_t = u_int32_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_osfp_entry { - pub fp_entry: pf_osfp_entry__bindgen_ty_1, - pub fp_os: pf_osfp_t, - pub fp_enflags: ::std::os::raw::c_int, - pub fp_class_nm: [u_char; 32usize], - pub fp_version_nm: [u_char; 32usize], - pub fp_subtype_nm: [u_char; 32usize], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_osfp_entry__bindgen_ty_1 { - pub sle_next: *mut pf_osfp_entry, -} -#[test] -fn bindgen_test_layout_pf_osfp_entry__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_osfp_entry__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_osfp_entry__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry__bindgen_ty_1), - "::", - stringify!(sle_next) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_osfp_entry() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 112usize, - concat!("Size of: ", stringify!(pf_osfp_entry)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_osfp_entry)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_entry) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_entry) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_os) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_osfp_entry), "::", stringify!(fp_os)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_enflags) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_enflags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_class_nm) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_class_nm) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_version_nm) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_version_nm) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_subtype_nm) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_entry), - "::", - stringify!(fp_subtype_nm) - ) - ); -} -pub type pf_tcpopts_t = u_int64_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_os_fingerprint { - pub fp_oses: pf_os_fingerprint_pf_osfp_enlist, - pub fp_tcpopts: pf_tcpopts_t, - pub fp_wsize: u_int16_t, - pub fp_psize: u_int16_t, - pub fp_mss: u_int16_t, - pub fp_flags: u_int16_t, - pub fp_optcnt: u_int8_t, - pub fp_wscale: u_int8_t, - pub fp_ttl: u_int8_t, - pub fp_next: pf_os_fingerprint__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_os_fingerprint_pf_osfp_enlist { - pub slh_first: *mut pf_osfp_entry, -} -#[test] -fn bindgen_test_layout_pf_os_fingerprint_pf_osfp_enlist() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_os_fingerprint_pf_osfp_enlist)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_os_fingerprint_pf_osfp_enlist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).slh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint_pf_osfp_enlist), - "::", - stringify!(slh_first) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_os_fingerprint__bindgen_ty_1 { - pub sle_next: *mut pf_os_fingerprint, -} -#[test] -fn bindgen_test_layout_pf_os_fingerprint__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_os_fingerprint__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_os_fingerprint__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint__bindgen_ty_1), - "::", - stringify!(sle_next) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_os_fingerprint() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pf_os_fingerprint)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_os_fingerprint)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_oses) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_oses) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_tcpopts) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_tcpopts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wsize) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_wsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_psize) as usize - ptr as usize }, - 18usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_psize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_mss) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_mss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_flags) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_optcnt) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_optcnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wscale) as usize - ptr as usize }, - 25usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_wscale) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_ttl) as usize - ptr as usize }, - 26usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_next) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_os_fingerprint), - "::", - stringify!(fp_next) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_osfp_ioctl { - pub fp_os: pf_osfp_entry, - pub fp_tcpopts: pf_tcpopts_t, - pub fp_wsize: u_int16_t, - pub fp_psize: u_int16_t, - pub fp_mss: u_int16_t, - pub fp_flags: u_int16_t, - pub fp_optcnt: u_int8_t, - pub fp_wscale: u_int8_t, - pub fp_ttl: u_int8_t, - pub fp_getnum: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_osfp_ioctl() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 136usize, - concat!("Size of: ", stringify!(pf_osfp_ioctl)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_osfp_ioctl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_os) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_osfp_ioctl), "::", stringify!(fp_os)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_tcpopts) as usize - ptr as usize }, - 112usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_tcpopts) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wsize) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_wsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_psize) as usize - ptr as usize }, - 122usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_psize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_mss) as usize - ptr as usize }, - 124usize, - concat!("Offset of field: ", stringify!(pf_osfp_ioctl), "::", stringify!(fp_mss)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_flags) as usize - ptr as usize }, - 126usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_optcnt) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_optcnt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_wscale) as usize - ptr as usize }, - 129usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_wscale) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_ttl) as usize - ptr as usize }, - 130usize, - concat!("Offset of field: ", stringify!(pf_osfp_ioctl), "::", stringify!(fp_ttl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_getnum) as usize - ptr as usize }, - 132usize, - concat!( - "Offset of field: ", - stringify!(pf_osfp_ioctl), - "::", - stringify!(fp_getnum) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule_actions { - pub rtableid: ::std::os::raw::c_int, - pub qid: u_int16_t, - pub pqid: u_int16_t, - pub max_mss: u_int16_t, - pub flags: u_int16_t, - pub delay: u_int16_t, - pub log: u_int8_t, - pub set_tos: u_int8_t, - pub min_ttl: u_int8_t, - pub set_prio: [u_int8_t; 2usize], - pub pad: [u_int8_t; 1usize], -} -#[test] -fn bindgen_test_layout_pf_rule_actions() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(pf_rule_actions)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule_actions)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtableid) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule_actions), - "::", - stringify!(rtableid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qid) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pf_rule_actions), "::", stringify!(qid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pqid) as usize - ptr as usize }, - 6usize, - concat!("Offset of field: ", stringify!(pf_rule_actions), "::", stringify!(pqid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_mss) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_rule_actions), - "::", - stringify!(max_mss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(pf_rule_actions), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).delay) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pf_rule_actions), - "::", - stringify!(delay) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).log) as usize - ptr as usize }, - 14usize, - concat!("Offset of field: ", stringify!(pf_rule_actions), "::", stringify!(log)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_tos) as usize - ptr as usize }, - 15usize, - concat!( - "Offset of field: ", - stringify!(pf_rule_actions), - "::", - stringify!(set_tos) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).min_ttl) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_rule_actions), - "::", - stringify!(min_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_prio) as usize - ptr as usize }, - 17usize, - concat!( - "Offset of field: ", - stringify!(pf_rule_actions), - "::", - stringify!(set_prio) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 19usize, - concat!("Offset of field: ", stringify!(pf_rule_actions), "::", stringify!(pad)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pf_rule_ptr { - pub ptr: *mut pf_rule, - pub nr: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_rule_ptr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_rule_ptr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule_ptr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ptr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_ptr), "::", stringify!(ptr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_ptr), "::", stringify!(nr)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_rule { - pub src: pf_rule_addr, - pub dst: pf_rule_addr, - pub skip: [pf_rule_ptr; 9usize], - pub label: [::std::os::raw::c_char; 64usize], - pub ifname: [::std::os::raw::c_char; 16usize], - pub rcv_ifname: [::std::os::raw::c_char; 16usize], - pub qname: [::std::os::raw::c_char; 64usize], - pub pqname: [::std::os::raw::c_char; 64usize], - pub tagname: [::std::os::raw::c_char; 64usize], - pub match_tagname: [::std::os::raw::c_char; 64usize], - pub overload_tblname: [::std::os::raw::c_char; 32usize], - pub entries: pf_rule__bindgen_ty_1, - pub nat: pf_pool, - pub rdr: pf_pool, - pub route: pf_pool, - pub pktrate: pf_threshold, - pub evaluations: u_int64_t, - pub packets: [u_int64_t; 2usize], - pub bytes: [u_int64_t; 2usize], - pub kif: *mut pfi_kif, - pub rcv_kif: *mut pfi_kif, - pub anchor: *mut pf_anchor, - pub overload_tbl: *mut pfr_ktable, - pub os_fingerprint: pf_osfp_t, - pub rtableid: ::std::os::raw::c_int, - pub onrdomain: ::std::os::raw::c_int, - pub timeout: [u_int32_t; 20usize], - pub states_cur: u_int32_t, - pub states_tot: u_int32_t, - pub max_states: u_int32_t, - pub src_nodes: u_int32_t, - pub max_src_nodes: u_int32_t, - pub max_src_states: u_int32_t, - pub max_src_conn: u_int32_t, - pub max_src_conn_rate: pf_rule__bindgen_ty_2, - pub qid: u_int32_t, - pub pqid: u_int32_t, - pub rt_listid: u_int32_t, - pub nr: u_int32_t, - pub prob: u_int32_t, - pub cuid: uid_t, - pub cpid: pid_t, - pub return_icmp: u_int16_t, - pub return_icmp6: u_int16_t, - pub max_mss: u_int16_t, - pub tag: u_int16_t, - pub match_tag: u_int16_t, - pub scrub_flags: u_int16_t, - pub delay: u_int16_t, - pub uid: pf_rule_uid, - pub gid: pf_rule_gid, - pub rule_flag: u_int32_t, - pub action: u_int8_t, - pub direction: u_int8_t, - pub log: u_int8_t, - pub logif: u_int8_t, - pub quick: u_int8_t, - pub ifnot: u_int8_t, - pub match_tag_not: u_int8_t, - pub keep_state: u_int8_t, - pub af: sa_family_t, - pub proto: u_int8_t, - pub type_: u_int16_t, - pub code: u_int16_t, - pub flags: u_int8_t, - pub flagset: u_int8_t, - pub min_ttl: u_int8_t, - pub allow_opts: u_int8_t, - pub rt: u_int8_t, - pub return_ttl: u_int8_t, - pub tos: u_int8_t, - pub set_tos: u_int8_t, - pub anchor_relative: u_int8_t, - pub anchor_wildcard: u_int8_t, - pub flush: u_int8_t, - pub prio: u_int8_t, - pub set_prio: [u_int8_t; 2usize], - pub naf: sa_family_t, - pub rcvifnot: u_int8_t, - pub divert: pf_rule__bindgen_ty_3, - pub exptime: time_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule__bindgen_ty_1 { - pub tqe_next: *mut pf_rule, - pub tqe_prev: *mut *mut pf_rule, -} -#[test] -fn bindgen_test_layout_pf_rule__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_rule__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_1), - "::", - stringify!(tqe_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_1), - "::", - stringify!(tqe_prev) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule__bindgen_ty_2 { - pub limit: u_int32_t, - pub seconds: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_rule__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_rule__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).limit) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_2), - "::", - stringify!(limit) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seconds) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_2), - "::", - stringify!(seconds) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_rule__bindgen_ty_3 { - pub addr: pf_addr, - pub port: u_int16_t, - pub type_: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_rule__bindgen_ty_3() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(pf_rule__bindgen_ty_3)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_rule__bindgen_ty_3)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_3), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_3), - "::", - stringify!(port) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 18usize, - concat!( - "Offset of field: ", - stringify!(pf_rule__bindgen_ty_3), - "::", - stringify!(type_) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_rule() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1344usize, - concat!("Size of: ", stringify!(pf_rule)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(src)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dst) as usize - ptr as usize }, - 56usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(dst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).skip) as usize - ptr as usize }, - 112usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(skip)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).label) as usize - ptr as usize }, - 184usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(label)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 248usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rcv_ifname) as usize - ptr as usize }, - 264usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rcv_ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qname) as usize - ptr as usize }, - 280usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(qname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pqname) as usize - ptr as usize }, - 344usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(pqname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tagname) as usize - ptr as usize }, - 408usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(tagname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_tagname) as usize - ptr as usize }, - 472usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(match_tagname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).overload_tblname) as usize - ptr as usize }, - 536usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(overload_tblname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, - 568usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(entries)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nat) as usize - ptr as usize }, - 584usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(nat)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rdr) as usize - ptr as usize }, - 720usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rdr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).route) as usize - ptr as usize }, - 856usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(route)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pktrate) as usize - ptr as usize }, - 992usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(pktrate)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).evaluations) as usize - ptr as usize }, - 1008usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(evaluations)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).packets) as usize - ptr as usize }, - 1016usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(packets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bytes) as usize - ptr as usize }, - 1032usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(bytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 1048usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rcv_kif) as usize - ptr as usize }, - 1056usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rcv_kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 1064usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).overload_tbl) as usize - ptr as usize }, - 1072usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(overload_tbl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).os_fingerprint) as usize - ptr as usize }, - 1080usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(os_fingerprint) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtableid) as usize - ptr as usize }, - 1084usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rtableid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).onrdomain) as usize - ptr as usize }, - 1088usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(onrdomain)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 1092usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(timeout)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states_cur) as usize - ptr as usize }, - 1172usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(states_cur)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states_tot) as usize - ptr as usize }, - 1176usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(states_tot)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_states) as usize - ptr as usize }, - 1180usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(max_states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src_nodes) as usize - ptr as usize }, - 1184usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(src_nodes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_nodes) as usize - ptr as usize }, - 1188usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(max_src_nodes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_states) as usize - ptr as usize }, - 1192usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(max_src_states) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_conn) as usize - ptr as usize }, - 1196usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(max_src_conn)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_src_conn_rate) as usize - ptr as usize }, - 1200usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(max_src_conn_rate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qid) as usize - ptr as usize }, - 1208usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(qid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pqid) as usize - ptr as usize }, - 1212usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(pqid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt_listid) as usize - ptr as usize }, - 1216usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rt_listid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 1220usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).prob) as usize - ptr as usize }, - 1224usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(prob)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cuid) as usize - ptr as usize }, - 1228usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(cuid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cpid) as usize - ptr as usize }, - 1232usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(cpid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).return_icmp) as usize - ptr as usize }, - 1236usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(return_icmp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).return_icmp6) as usize - ptr as usize }, - 1238usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(return_icmp6)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_mss) as usize - ptr as usize }, - 1240usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(max_mss)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize }, - 1242usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_tag) as usize - ptr as usize }, - 1244usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(match_tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub_flags) as usize - ptr as usize }, - 1246usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(scrub_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).delay) as usize - ptr as usize }, - 1248usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(delay)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).uid) as usize - ptr as usize }, - 1252usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(uid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gid) as usize - ptr as usize }, - 1264usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(gid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule_flag) as usize - ptr as usize }, - 1276usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rule_flag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, - 1280usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(action)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 1281usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(direction)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).log) as usize - ptr as usize }, - 1282usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(log)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).logif) as usize - ptr as usize }, - 1283usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(logif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).quick) as usize - ptr as usize }, - 1284usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(quick)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifnot) as usize - ptr as usize }, - 1285usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(ifnot)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_tag_not) as usize - ptr as usize }, - 1286usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(match_tag_not) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).keep_state) as usize - ptr as usize }, - 1287usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(keep_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 1288usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 1289usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 1290usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(type_)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).code) as usize - ptr as usize }, - 1292usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(code)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 1294usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flagset) as usize - ptr as usize }, - 1295usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(flagset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).min_ttl) as usize - ptr as usize }, - 1296usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(min_ttl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).allow_opts) as usize - ptr as usize }, - 1297usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(allow_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt) as usize - ptr as usize }, - 1298usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).return_ttl) as usize - ptr as usize }, - 1299usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(return_ttl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tos) as usize - ptr as usize }, - 1300usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(tos)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_tos) as usize - ptr as usize }, - 1301usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(set_tos)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor_relative) as usize - ptr as usize }, - 1302usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(anchor_relative) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor_wildcard) as usize - ptr as usize }, - 1303usize, - concat!( - "Offset of field: ", - stringify!(pf_rule), - "::", - stringify!(anchor_wildcard) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flush) as usize - ptr as usize }, - 1304usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(flush)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).prio) as usize - ptr as usize }, - 1305usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(prio)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_prio) as usize - ptr as usize }, - 1306usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(set_prio)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).naf) as usize - ptr as usize }, - 1308usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(naf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rcvifnot) as usize - ptr as usize }, - 1309usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(rcvifnot)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).divert) as usize - ptr as usize }, - 1312usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(divert)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).exptime) as usize - ptr as usize }, - 1336usize, - concat!("Offset of field: ", stringify!(pf_rule), "::", stringify!(exptime)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule_item { - pub entry: pf_rule_item__bindgen_ty_1, - pub r: *mut pf_rule, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule_item__bindgen_ty_1 { - pub sle_next: *mut pf_rule_item, -} -#[test] -fn bindgen_test_layout_pf_rule_item__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_rule_item__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule_item__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule_item__bindgen_ty_1), - "::", - stringify!(sle_next) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_rule_item() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_rule_item)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule_item)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_rule_item), "::", stringify!(entry)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).r) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_rule_item), "::", stringify!(r)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rule_slist { - pub slh_first: *mut pf_rule_item, -} -#[test] -fn bindgen_test_layout_pf_rule_slist() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_rule_slist)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rule_slist)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).slh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rule_slist), - "::", - stringify!(slh_first) - ) - ); -} -pub const pf_sn_types_PF_SN_NONE: pf_sn_types = 0; -pub const pf_sn_types_PF_SN_NAT: pf_sn_types = 1; -pub const pf_sn_types_PF_SN_RDR: pf_sn_types = 2; -pub const pf_sn_types_PF_SN_ROUTE: pf_sn_types = 3; -pub const pf_sn_types_PF_SN_MAX: pf_sn_types = 4; -pub type pf_sn_types = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_src_node { - pub entry: pf_src_node__bindgen_ty_1, - pub addr: pf_addr, - pub raddr: pf_addr, - pub rule: pf_rule_ptr, - pub kif: *mut pfi_kif, - pub bytes: [u_int64_t; 2usize], - pub packets: [u_int64_t; 2usize], - pub states: u_int32_t, - pub conn: u_int32_t, - pub conn_rate: pf_threshold, - pub creation: i32, - pub expire: i32, - pub af: sa_family_t, - pub naf: sa_family_t, - pub type_: u_int8_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_src_node__bindgen_ty_1 { - pub rbe_left: *mut pf_src_node, - pub rbe_right: *mut pf_src_node, - pub rbe_parent: *mut pf_src_node, - pub rbe_color: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_src_node__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_src_node__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_src_node__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_left) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node__bindgen_ty_1), - "::", - stringify!(rbe_left) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_right) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node__bindgen_ty_1), - "::", - stringify!(rbe_right) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_parent) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node__bindgen_ty_1), - "::", - stringify!(rbe_parent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_color) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node__bindgen_ty_1), - "::", - stringify!(rbe_color) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_src_node() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 152usize, - concat!("Size of: ", stringify!(pf_src_node)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_src_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(entry)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).raddr) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(raddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bytes) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(bytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).packets) as usize - ptr as usize }, - 96usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(packets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states) as usize - ptr as usize }, - 112usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).conn) as usize - ptr as usize }, - 116usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(conn)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).conn_rate) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(pf_src_node), - "::", - stringify!(conn_rate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creation) as usize - ptr as usize }, - 136usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(creation)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).expire) as usize - ptr as usize }, - 140usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(expire)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 144usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).naf) as usize - ptr as usize }, - 145usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(naf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 146usize, - concat!("Offset of field: ", stringify!(pf_src_node), "::", stringify!(type_)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_sn_item { - pub next: pf_sn_item__bindgen_ty_1, - pub sn: *mut pf_src_node, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_sn_item__bindgen_ty_1 { - pub sle_next: *mut pf_sn_item, -} -#[test] -fn bindgen_test_layout_pf_sn_item__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_sn_item__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_sn_item__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_sn_item__bindgen_ty_1), - "::", - stringify!(sle_next) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_sn_item() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_sn_item)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_sn_item)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).next) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_sn_item), "::", stringify!(next)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sn) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_sn_item), "::", stringify!(sn)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_sn_head { - pub slh_first: *mut pf_sn_item, -} -#[test] -fn bindgen_test_layout_pf_sn_head() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_sn_head)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_sn_head)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).slh_first) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_sn_head), "::", stringify!(slh_first)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_scrub { - pub pfss_last: timeval, - pub pfss_tsecr: u_int32_t, - pub pfss_tsval: u_int32_t, - pub pfss_tsval0: u_int32_t, - pub pfss_flags: u_int16_t, - pub pfss_ttl: u_int8_t, - pub pad: u_int8_t, - pub pfss_ts_mod: u_int32_t, -} -#[test] -fn bindgen_test_layout_pf_state_scrub() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pf_state_scrub)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_scrub)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_last) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_last) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_tsecr) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_tsecr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_tsval) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_tsval) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_tsval0) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_tsval0) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_flags) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ttl) as usize - ptr as usize }, - 30usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 31usize, - concat!("Offset of field: ", stringify!(pf_state_scrub), "::", stringify!(pad)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ts_mod) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_state_scrub), - "::", - stringify!(pfss_ts_mod) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_state_host { - pub addr: pf_addr, - pub port: u_int16_t, - pub pad: u_int16_t, -} -#[test] -fn bindgen_test_layout_pf_state_host() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(pf_state_host)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_state_host)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_state_host), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_state_host), "::", stringify!(port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(pf_state_host), "::", stringify!(pad)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_peer { - pub scrub: *mut pf_state_scrub, - pub seqlo: u_int32_t, - pub seqhi: u_int32_t, - pub seqdiff: u_int32_t, - pub max_win: u_int16_t, - pub mss: u_int16_t, - pub state: u_int8_t, - pub wscale: u_int8_t, - pub tcp_est: u_int8_t, - pub pad: [u_int8_t; 1usize], -} -#[test] -fn bindgen_test_layout_pf_state_peer() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_state_peer)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_peer)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(scrub)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqlo) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(seqlo)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqhi) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(seqhi)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqdiff) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer), - "::", - stringify!(seqdiff) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_win) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer), - "::", - stringify!(max_win) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mss) as usize - ptr as usize }, - 22usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(mss)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).wscale) as usize - ptr as usize }, - 25usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(wscale)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tcp_est) as usize - ptr as usize }, - 26usize, - concat!( - "Offset of field: ", - stringify!(pf_state_peer), - "::", - stringify!(tcp_est) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 27usize, - concat!("Offset of field: ", stringify!(pf_state_peer), "::", stringify!(pad)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_queue { - pub tqh_first: *mut pf_state, - pub tqh_last: *mut *mut pf_state, -} -#[test] -fn bindgen_test_layout_pf_state_queue() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_state_queue)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_queue)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_queue), - "::", - stringify!(tqh_first) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_last) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_state_queue), - "::", - stringify!(tqh_last) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_state_key_cmp { - pub addr: [pf_addr; 2usize], - pub port: [u_int16_t; 2usize], - pub rdomain: u_int16_t, - pub hash: u_int16_t, - pub af: sa_family_t, - pub proto: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_state_key_cmp() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 44usize, - concat!("Size of: ", stringify!(pf_state_key_cmp)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_state_key_cmp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key_cmp), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key_cmp), - "::", - stringify!(port) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rdomain) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key_cmp), - "::", - stringify!(rdomain) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hash) as usize - ptr as usize }, - 38usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key_cmp), - "::", - stringify!(hash) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pf_state_key_cmp), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 41usize, - concat!( - "Offset of field: ", - stringify!(pf_state_key_cmp), - "::", - stringify!(proto) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_cmp { - pub id: u_int64_t, - pub creatorid: u_int32_t, - pub direction: u_int8_t, - pub pad: [u_int8_t; 3usize], -} -#[test] -fn bindgen_test_layout_pf_state_cmp() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_state_cmp)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_cmp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_state_cmp), "::", stringify!(id)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creatorid) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_state_cmp), - "::", - stringify!(creatorid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pf_state_cmp), - "::", - stringify!(direction) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 13usize, - concat!("Offset of field: ", stringify!(pf_state_cmp), "::", stringify!(pad)) - ); -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct pfsync_state_scrub { - pub pfss_flags: u_int16_t, - pub pfss_ttl: u_int8_t, - pub scrub_flag: u_int8_t, - pub pfss_ts_mod: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfsync_state_scrub() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfsync_state_scrub)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state_scrub)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(pfss_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ttl) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(pfss_ttl) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub_flag) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(scrub_flag) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfss_ts_mod) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_scrub), - "::", - stringify!(pfss_ts_mod) - ) - ); -} -#[repr(C, packed)] -#[derive(Debug, Copy, Clone)] -pub struct pfsync_state_peer { - pub scrub: pfsync_state_scrub, - pub seqlo: u_int32_t, - pub seqhi: u_int32_t, - pub seqdiff: u_int32_t, - pub max_win: u_int16_t, - pub mss: u_int16_t, - pub state: u_int8_t, - pub wscale: u_int8_t, - pub pad: [u_int8_t; 6usize], -} -#[test] -fn bindgen_test_layout_pfsync_state_peer() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pfsync_state_peer)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state_peer)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scrub) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(scrub) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqlo) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(seqlo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqhi) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(seqhi) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seqdiff) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(seqdiff) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_win) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(max_win) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mss) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(mss) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(state) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).wscale) as usize - ptr as usize }, - 25usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(wscale) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 26usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_peer), - "::", - stringify!(pad) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfsync_state_key { - pub addr: [pf_addr; 2usize], - pub port: [u_int16_t; 2usize], - pub rdomain: u_int16_t, - pub af: sa_family_t, - pub pad: u_int8_t, -} -#[test] -fn bindgen_test_layout_pfsync_state_key() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pfsync_state_key)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfsync_state_key)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_key), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_key), - "::", - stringify!(port) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rdomain) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state_key), - "::", - stringify!(rdomain) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 38usize, - concat!("Offset of field: ", stringify!(pfsync_state_key), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 39usize, - concat!("Offset of field: ", stringify!(pfsync_state_key), "::", stringify!(pad)) - ); -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub struct pfsync_state { - pub id: u_int64_t, - pub ifname: [::std::os::raw::c_char; 16usize], - pub key: [pfsync_state_key; 2usize], - pub src: pfsync_state_peer, - pub dst: pfsync_state_peer, - pub rt_addr: pf_addr, - pub rule: u_int32_t, - pub anchor: u_int32_t, - pub nat_rule: u_int32_t, - pub creation: u_int32_t, - pub expire: u_int32_t, - pub packets: [[u_int32_t; 2usize]; 2usize], - pub bytes: [[u_int32_t; 2usize]; 2usize], - pub creatorid: u_int32_t, - pub rtableid: [i32; 2usize], - pub max_mss: u_int16_t, - pub af: sa_family_t, - pub proto: u_int8_t, - pub direction: u_int8_t, - pub log: u_int8_t, - pub rt: u_int8_t, - pub timeout: u_int8_t, - pub sync_flags: u_int8_t, - pub updates: u_int8_t, - pub min_ttl: u_int8_t, - pub set_tos: u_int8_t, - pub state_flags: u_int16_t, - pub set_prio: [u_int8_t; 2usize], -} -#[test] -fn bindgen_test_layout_pfsync_state() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 264usize, - concat!("Size of: ", stringify!(pfsync_state)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfsync_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).id) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(id)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).key) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(key)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src) as usize - ptr as usize }, - 104usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(src)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dst) as usize - ptr as usize }, - 136usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(dst)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt_addr) as usize - ptr as usize }, - 168usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(rt_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule) as usize - ptr as usize }, - 184usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 188usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nat_rule) as usize - ptr as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(nat_rule) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creation) as usize - ptr as usize }, - 196usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(creation) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).expire) as usize - ptr as usize }, - 200usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(expire)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).packets) as usize - ptr as usize }, - 204usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(packets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bytes) as usize - ptr as usize }, - 220usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(bytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).creatorid) as usize - ptr as usize }, - 236usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(creatorid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtableid) as usize - ptr as usize }, - 240usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(rtableid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).max_mss) as usize - ptr as usize }, - 248usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(max_mss)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 250usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 251usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 252usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(direction) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).log) as usize - ptr as usize }, - 253usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(log)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rt) as usize - ptr as usize }, - 254usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(rt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 255usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(timeout)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sync_flags) as usize - ptr as usize }, - 256usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(sync_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).updates) as usize - ptr as usize }, - 257usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(updates)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).min_ttl) as usize - ptr as usize }, - 258usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(min_ttl)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_tos) as usize - ptr as usize }, - 259usize, - concat!("Offset of field: ", stringify!(pfsync_state), "::", stringify!(set_tos)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state_flags) as usize - ptr as usize }, - 260usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(state_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).set_prio) as usize - ptr as usize }, - 262usize, - concat!( - "Offset of field: ", - stringify!(pfsync_state), - "::", - stringify!(set_prio) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_rulequeue { - pub tqh_first: *mut pf_rule, - pub tqh_last: *mut *mut pf_rule, -} -#[test] -fn bindgen_test_layout_pf_rulequeue() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_rulequeue)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_rulequeue)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_rulequeue), - "::", - stringify!(tqh_first) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_last) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_rulequeue), - "::", - stringify!(tqh_last) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ruleset { - pub rules: pf_ruleset__bindgen_ty_1, - pub anchor: *mut pf_anchor, - pub tticket: u_int32_t, - pub tables: ::std::os::raw::c_int, - pub topen: ::std::os::raw::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ruleset__bindgen_ty_1 { - pub queues: [pf_rulequeue; 2usize], - pub active: pf_ruleset__bindgen_ty_1__bindgen_ty_1, - pub inactive: pf_ruleset__bindgen_ty_1__bindgen_ty_1, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_ruleset__bindgen_ty_1__bindgen_ty_1 { - pub ptr: *mut pf_rulequeue, - pub rcount: u_int32_t, - pub version: u_int32_t, - pub open: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_ruleset__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ptr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(ptr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rcount) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(rcount) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).version) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(version) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).open) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(open) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_ruleset__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 80usize, - concat!("Size of: ", stringify!(pf_ruleset__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_ruleset__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).queues) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1), - "::", - stringify!(queues) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).active) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1), - "::", - stringify!(active) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).inactive) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(pf_ruleset__bindgen_ty_1), - "::", - stringify!(inactive) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_ruleset() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 104usize, - concat!("Size of: ", stringify!(pf_ruleset)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_ruleset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rules) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(rules)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tticket) as usize - ptr as usize }, - 88usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(tticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tables) as usize - ptr as usize }, - 92usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(tables)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).topen) as usize - ptr as usize }, - 96usize, - concat!("Offset of field: ", stringify!(pf_ruleset), "::", stringify!(topen)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor_global { - pub rbh_root: *mut pf_anchor, -} -#[test] -fn bindgen_test_layout_pf_anchor_global() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_anchor_global)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor_global)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbh_root) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor_global), - "::", - stringify!(rbh_root) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor_node { - pub rbh_root: *mut pf_anchor, -} -#[test] -fn bindgen_test_layout_pf_anchor_node() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_anchor_node)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbh_root) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor_node), - "::", - stringify!(rbh_root) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor { - pub entry_global: pf_anchor__bindgen_ty_1, - pub entry_node: pf_anchor__bindgen_ty_2, - pub parent: *mut pf_anchor, - pub children: pf_anchor_node, - pub name: [::std::os::raw::c_char; 64usize], - pub path: [::std::os::raw::c_char; 1024usize], - pub ruleset: pf_ruleset, - pub refcnt: ::std::os::raw::c_int, - pub match_: ::std::os::raw::c_int, - pub ref_: refcnt, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor__bindgen_ty_1 { - pub rbe_left: *mut pf_anchor, - pub rbe_right: *mut pf_anchor, - pub rbe_parent: *mut pf_anchor, - pub rbe_color: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_anchor__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_anchor__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_left) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_1), - "::", - stringify!(rbe_left) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_right) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_1), - "::", - stringify!(rbe_right) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_parent) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_1), - "::", - stringify!(rbe_parent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_color) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_1), - "::", - stringify!(rbe_color) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_anchor__bindgen_ty_2 { - pub rbe_left: *mut pf_anchor, - pub rbe_right: *mut pf_anchor, - pub rbe_parent: *mut pf_anchor, - pub rbe_color: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pf_anchor__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pf_anchor__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_left) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_2), - "::", - stringify!(rbe_left) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_right) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_2), - "::", - stringify!(rbe_right) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_parent) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_2), - "::", - stringify!(rbe_parent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_color) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor__bindgen_ty_2), - "::", - stringify!(rbe_color) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_anchor() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1288usize, - concat!("Size of: ", stringify!(pf_anchor)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry_global) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_anchor), - "::", - stringify!(entry_global) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entry_node) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(entry_node)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).children) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(children)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).path) as usize - ptr as usize }, - 144usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(path)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ruleset) as usize - ptr as usize }, - 1168usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(ruleset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).refcnt) as usize - ptr as usize }, - 1272usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(refcnt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).match_) as usize - ptr as usize }, - 1276usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(match_)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ref_) as usize - ptr as usize }, - 1280usize, - concat!("Offset of field: ", stringify!(pf_anchor), "::", stringify!(ref_)) - ); -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_INSERT_COLOR(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor); -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_REMOVE_COLOR(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor, arg3: *mut pf_anchor); -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_REMOVE(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_INSERT(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_FIND(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_NFIND(arg1: *mut pf_anchor_global, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_NEXT(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_PREV(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_global_RB_MINMAX(arg1: *mut pf_anchor_global, arg2: ::std::os::raw::c_int) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_INSERT_COLOR(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor); -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_REMOVE_COLOR(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor, arg3: *mut pf_anchor); -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_REMOVE(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_INSERT(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_FIND(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_NFIND(arg1: *mut pf_anchor_node, arg2: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_NEXT(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_PREV(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_anchor_node_RB_MINMAX(arg1: *mut pf_anchor_node, arg2: ::std::os::raw::c_int) -> *mut pf_anchor; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_table { - pub pfrt_anchor: [::std::os::raw::c_char; 1024usize], - pub pfrt_name: [::std::os::raw::c_char; 32usize], - pub pfrt_flags: u_int32_t, - pub pfrt_fback: u_int8_t, -} -#[test] -fn bindgen_test_layout_pfr_table() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1064usize, - concat!("Size of: ", stringify!(pfr_table)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfr_table)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_anchor) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_table), - "::", - stringify!(pfrt_anchor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_name) as usize - ptr as usize }, - 1024usize, - concat!("Offset of field: ", stringify!(pfr_table), "::", stringify!(pfrt_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_flags) as usize - ptr as usize }, - 1056usize, - concat!("Offset of field: ", stringify!(pfr_table), "::", stringify!(pfrt_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrt_fback) as usize - ptr as usize }, - 1060usize, - concat!("Offset of field: ", stringify!(pfr_table), "::", stringify!(pfrt_fback)) - ); -} -pub const PFR_FB_NONE: _bindgen_ty_14 = 0; -pub const PFR_FB_MATCH: _bindgen_ty_14 = 1; -pub const PFR_FB_ADDED: _bindgen_ty_14 = 2; -pub const PFR_FB_DELETED: _bindgen_ty_14 = 3; -pub const PFR_FB_CHANGED: _bindgen_ty_14 = 4; -pub const PFR_FB_CLEARED: _bindgen_ty_14 = 5; -pub const PFR_FB_DUPLICATE: _bindgen_ty_14 = 6; -pub const PFR_FB_NOTMATCH: _bindgen_ty_14 = 7; -pub const PFR_FB_CONFLICT: _bindgen_ty_14 = 8; -pub const PFR_FB_NOCOUNT: _bindgen_ty_14 = 9; -pub const PFR_FB_MAX: _bindgen_ty_14 = 10; -pub type _bindgen_ty_14 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfr_addr { - pub pfra_u: pfr_addr__bindgen_ty_1, - pub pfra_ifname: [::std::os::raw::c_char; 16usize], - pub pfra_states: u_int32_t, - pub pfra_weight: u_int16_t, - pub pfra_af: u_int8_t, - pub pfra_net: u_int8_t, - pub pfra_not: u_int8_t, - pub pfra_fback: u_int8_t, - pub pfra_type: u_int8_t, - pub pad: [u_int8_t; 7usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfr_addr__bindgen_ty_1 { - pub _pfra_ip4addr: in_addr, - pub _pfra_ip6addr: in6_addr, -} -#[test] -fn bindgen_test_layout_pfr_addr__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfr_addr__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfr_addr__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfra_ip4addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_addr__bindgen_ty_1), - "::", - stringify!(_pfra_ip4addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfra_ip6addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_addr__bindgen_ty_1), - "::", - stringify!(_pfra_ip6addr) - ) - ); -} -#[test] -fn bindgen_test_layout_pfr_addr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 52usize, - concat!("Size of: ", stringify!(pfr_addr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfr_addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_u) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_u)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_ifname) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_states) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_weight) as usize - ptr as usize }, - 36usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_weight)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_af) as usize - ptr as usize }, - 38usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_net) as usize - ptr as usize }, - 39usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_net)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_not) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_not)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_fback) as usize - ptr as usize }, - 41usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_fback)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfra_type) as usize - ptr as usize }, - 42usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pfra_type)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 43usize, - concat!("Offset of field: ", stringify!(pfr_addr), "::", stringify!(pad)) - ); -} -pub const PFR_DIR_IN: _bindgen_ty_15 = 0; -pub const PFR_DIR_OUT: _bindgen_ty_15 = 1; -pub const PFR_DIR_MAX: _bindgen_ty_15 = 2; -pub type _bindgen_ty_15 = ::std::os::raw::c_uint; -pub const PFR_OP_BLOCK: _bindgen_ty_16 = 0; -pub const PFR_OP_MATCH: _bindgen_ty_16 = 1; -pub const PFR_OP_PASS: _bindgen_ty_16 = 2; -pub const PFR_OP_ADDR_MAX: _bindgen_ty_16 = 3; -pub const PFR_OP_TABLE_MAX: _bindgen_ty_16 = 4; -pub type _bindgen_ty_16 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfr_astats { - pub pfras_a: pfr_addr, - pub pfras_packets: [[u_int64_t; 3usize]; 2usize], - pub pfras_bytes: [[u_int64_t; 3usize]; 2usize], - pub pfras_tzero: time_t, -} -#[test] -fn bindgen_test_layout_pfr_astats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 160usize, - concat!("Size of: ", stringify!(pfr_astats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_astats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_a) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_astats), "::", stringify!(pfras_a)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_packets) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(pfr_astats), - "::", - stringify!(pfras_packets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_bytes) as usize - ptr as usize }, - 104usize, - concat!( - "Offset of field: ", - stringify!(pfr_astats), - "::", - stringify!(pfras_bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfras_tzero) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(pfr_astats), - "::", - stringify!(pfras_tzero) - ) - ); -} -pub const PFR_REFCNT_RULE: _bindgen_ty_17 = 0; -pub const PFR_REFCNT_ANCHOR: _bindgen_ty_17 = 1; -pub const PFR_REFCNT_MAX: _bindgen_ty_17 = 2; -pub type _bindgen_ty_17 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_tstats { - pub pfrts_t: pfr_table, - pub pfrts_packets: [[u_int64_t; 4usize]; 2usize], - pub pfrts_bytes: [[u_int64_t; 4usize]; 2usize], - pub pfrts_match: u_int64_t, - pub pfrts_nomatch: u_int64_t, - pub pfrts_tzero: time_t, - pub pfrts_cnt: ::std::os::raw::c_int, - pub pfrts_refcnt: [::std::os::raw::c_int; 2usize], -} -#[test] -fn bindgen_test_layout_pfr_tstats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1232usize, - concat!("Size of: ", stringify!(pfr_tstats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_tstats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_t) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_tstats), "::", stringify!(pfrts_t)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_packets) as usize - ptr as usize }, - 1064usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_packets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_bytes) as usize - ptr as usize }, - 1128usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_match) as usize - ptr as usize }, - 1192usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_match) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_nomatch) as usize - ptr as usize }, - 1200usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_nomatch) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_tzero) as usize - ptr as usize }, - 1208usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_tzero) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_cnt) as usize - ptr as usize }, - 1216usize, - concat!("Offset of field: ", stringify!(pfr_tstats), "::", stringify!(pfrts_cnt)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrts_refcnt) as usize - ptr as usize }, - 1220usize, - concat!( - "Offset of field: ", - stringify!(pfr_tstats), - "::", - stringify!(pfrts_refcnt) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_kcounters { - pub pfrkc_packets: [[u_int64_t; 3usize]; 2usize], - pub pfrkc_bytes: [[u_int64_t; 3usize]; 2usize], - pub states: u_int64_t, -} -#[test] -fn bindgen_test_layout_pfr_kcounters() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 104usize, - concat!("Size of: ", stringify!(pfr_kcounters)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_kcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkc_packets) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_kcounters), - "::", - stringify!(pfrkc_packets) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkc_bytes) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(pfr_kcounters), - "::", - stringify!(pfrkc_bytes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states) as usize - ptr as usize }, - 96usize, - concat!("Offset of field: ", stringify!(pfr_kcounters), "::", stringify!(states)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfsockaddr_union { - pub sa: sockaddr, - pub sin: sockaddr_in, - pub sin6: sockaddr_in6, -} -#[test] -fn bindgen_test_layout_pfsockaddr_union() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 28usize, - concat!("Size of: ", stringify!(pfsockaddr_union)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfsockaddr_union)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfsockaddr_union), "::", stringify!(sa)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfsockaddr_union), "::", stringify!(sin)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sin6) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfsockaddr_union), - "::", - stringify!(sin6) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_kentryworkq { - pub slh_first: *mut pfr_kentry, -} -#[test] -fn bindgen_test_layout_pfr_kentryworkq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfr_kentryworkq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_kentryworkq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).slh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_kentryworkq), - "::", - stringify!(slh_first) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct _pfr_kentry { - pub _pfrke_node: [radix_node; 2usize], - pub _pfrke_sa: pfsockaddr_union, - pub _pfrke_workq: _pfr_kentry__bindgen_ty_1, - pub _pfrke_ioq: _pfr_kentry__bindgen_ty_2, - pub _pfrke_counters: *mut pfr_kcounters, - pub _pfrke_tzero: time_t, - pub _pfrke_af: u_int8_t, - pub _pfrke_net: u_int8_t, - pub _pfrke_flags: u_int8_t, - pub _pfrke_type: u_int8_t, - pub _pfrke_fb: u_int8_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _pfr_kentry__bindgen_ty_1 { - pub sle_next: *mut pfr_kentry, -} -#[test] -fn bindgen_test_layout__pfr_kentry__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit<_pfr_kentry__bindgen_ty_1> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_pfr_kentry__bindgen_ty_1>(), - 8usize, - concat!("Size of: ", stringify!(_pfr_kentry__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::<_pfr_kentry__bindgen_ty_1>(), - 8usize, - concat!("Alignment of ", stringify!(_pfr_kentry__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry__bindgen_ty_1), - "::", - stringify!(sle_next) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct _pfr_kentry__bindgen_ty_2 { - pub sle_next: *mut pfr_kentry, -} -#[test] -fn bindgen_test_layout__pfr_kentry__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit<_pfr_kentry__bindgen_ty_2> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_pfr_kentry__bindgen_ty_2>(), - 8usize, - concat!("Size of: ", stringify!(_pfr_kentry__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::<_pfr_kentry__bindgen_ty_2>(), - 8usize, - concat!("Alignment of ", stringify!(_pfr_kentry__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry__bindgen_ty_2), - "::", - stringify!(sle_next) - ) - ); -} -#[test] -fn bindgen_test_layout__pfr_kentry() { - const UNINIT: ::std::mem::MaybeUninit<_pfr_kentry> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<_pfr_kentry>(), - 168usize, - concat!("Size of: ", stringify!(_pfr_kentry)) - ); - assert_eq!( - ::std::mem::align_of::<_pfr_kentry>(), - 8usize, - concat!("Alignment of ", stringify!(_pfr_kentry)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfrke_node) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry), - "::", - stringify!(_pfrke_node) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfrke_sa) as usize - ptr as usize }, - 96usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry), - "::", - stringify!(_pfrke_sa) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfrke_workq) as usize - ptr as usize }, - 128usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry), - "::", - stringify!(_pfrke_workq) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfrke_ioq) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry), - "::", - stringify!(_pfrke_ioq) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfrke_counters) as usize - ptr as usize }, - 144usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry), - "::", - stringify!(_pfrke_counters) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfrke_tzero) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry), - "::", - stringify!(_pfrke_tzero) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfrke_af) as usize - ptr as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry), - "::", - stringify!(_pfrke_af) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfrke_net) as usize - ptr as usize }, - 161usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry), - "::", - stringify!(_pfrke_net) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfrke_flags) as usize - ptr as usize }, - 162usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry), - "::", - stringify!(_pfrke_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfrke_type) as usize - ptr as usize }, - 163usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry), - "::", - stringify!(_pfrke_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._pfrke_fb) as usize - ptr as usize }, - 164usize, - concat!( - "Offset of field: ", - stringify!(_pfr_kentry), - "::", - stringify!(_pfrke_fb) - ) - ); -} -pub const PFRKE_PLAIN: _bindgen_ty_18 = 0; -pub const PFRKE_ROUTE: _bindgen_ty_18 = 1; -pub const PFRKE_COST: _bindgen_ty_18 = 2; -pub const PFRKE_MAX: _bindgen_ty_18 = 3; -pub type _bindgen_ty_18 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfr_kentry { - pub u: pfr_kentry__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfr_kentry__bindgen_ty_1 { - pub _ke: _pfr_kentry, -} -#[test] -fn bindgen_test_layout_pfr_kentry__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 168usize, - concat!("Size of: ", stringify!(pfr_kentry__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_kentry__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ke) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_kentry__bindgen_ty_1), - "::", - stringify!(_ke) - ) - ); -} -#[test] -fn bindgen_test_layout_pfr_kentry() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 168usize, - concat!("Size of: ", stringify!(pfr_kentry)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_kentry)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_kentry), "::", stringify!(u)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfr_kentry_route { - pub u: pfr_kentry_route__bindgen_ty_1, - pub kif: *mut pfi_kif, - pub ifname: [::std::os::raw::c_char; 16usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfr_kentry_route__bindgen_ty_1 { - pub _ke: _pfr_kentry, -} -#[test] -fn bindgen_test_layout_pfr_kentry_route__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 168usize, - concat!("Size of: ", stringify!(pfr_kentry_route__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_kentry_route__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ke) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_kentry_route__bindgen_ty_1), - "::", - stringify!(_ke) - ) - ); -} -#[test] -fn bindgen_test_layout_pfr_kentry_route() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 192usize, - concat!("Size of: ", stringify!(pfr_kentry_route)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_kentry_route)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_kentry_route), "::", stringify!(u)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 168usize, - concat!("Offset of field: ", stringify!(pfr_kentry_route), "::", stringify!(kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(pfr_kentry_route), - "::", - stringify!(ifname) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfr_kentry_cost { - pub u: pfr_kentry_cost__bindgen_ty_1, - pub kif: *mut pfi_kif, - pub ifname: [::std::os::raw::c_char; 16usize], - pub weight: u_int16_t, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfr_kentry_cost__bindgen_ty_1 { - pub _ke: _pfr_kentry, -} -#[test] -fn bindgen_test_layout_pfr_kentry_cost__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 168usize, - concat!("Size of: ", stringify!(pfr_kentry_cost__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_kentry_cost__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ke) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_kentry_cost__bindgen_ty_1), - "::", - stringify!(_ke) - ) - ); -} -#[test] -fn bindgen_test_layout_pfr_kentry_cost() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 200usize, - concat!("Size of: ", stringify!(pfr_kentry_cost)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_kentry_cost)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_kentry_cost), "::", stringify!(u)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 168usize, - concat!("Offset of field: ", stringify!(pfr_kentry_cost), "::", stringify!(kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 176usize, - concat!( - "Offset of field: ", - stringify!(pfr_kentry_cost), - "::", - stringify!(ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).weight) as usize - ptr as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(pfr_kentry_cost), - "::", - stringify!(weight) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfr_kentry_all { - pub u: pfr_kentry_all__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfr_kentry_all__bindgen_ty_1 { - pub _ke: _pfr_kentry, - pub kr: pfr_kentry_route, - pub kc: pfr_kentry_cost, -} -#[test] -fn bindgen_test_layout_pfr_kentry_all__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 200usize, - concat!("Size of: ", stringify!(pfr_kentry_all__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_kentry_all__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr)._ke) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_kentry_all__bindgen_ty_1), - "::", - stringify!(_ke) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_kentry_all__bindgen_ty_1), - "::", - stringify!(kr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kc) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_kentry_all__bindgen_ty_1), - "::", - stringify!(kc) - ) - ); -} -#[test] -fn bindgen_test_layout_pfr_kentry_all() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 200usize, - concat!("Size of: ", stringify!(pfr_kentry_all)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_kentry_all)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).u) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_kentry_all), "::", stringify!(u)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_ktableworkq { - pub slh_first: *mut pfr_ktable, -} -#[test] -fn bindgen_test_layout_pfr_ktableworkq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfr_ktableworkq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_ktableworkq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).slh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktableworkq), - "::", - stringify!(slh_first) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_ktablehead { - pub rbh_root: *mut pfr_ktable, -} -#[test] -fn bindgen_test_layout_pfr_ktablehead() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfr_ktablehead)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_ktablehead)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbh_root) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktablehead), - "::", - stringify!(rbh_root) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_ktable { - pub pfrkt_ts: pfr_tstats, - pub pfrkt_tree: pfr_ktable__bindgen_ty_1, - pub pfrkt_workq: pfr_ktable__bindgen_ty_2, - pub pfrkt_ip4: *mut radix_node_head, - pub pfrkt_ip6: *mut radix_node_head, - pub pfrkt_shadow: *mut pfr_ktable, - pub pfrkt_root: *mut pfr_ktable, - pub pfrkt_rs: *mut pf_ruleset, - pub pfrkt_larg: ::std::os::raw::c_long, - pub pfrkt_nflags: ::std::os::raw::c_int, - pub pfrkt_refcntcost: u_int64_t, - pub pfrkt_gcdweight: u_int16_t, - pub pfrkt_maxweight: u_int16_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_ktable__bindgen_ty_1 { - pub rbe_left: *mut pfr_ktable, - pub rbe_right: *mut pfr_ktable, - pub rbe_parent: *mut pfr_ktable, - pub rbe_color: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pfr_ktable__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pfr_ktable__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_ktable__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_left) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable__bindgen_ty_1), - "::", - stringify!(rbe_left) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_right) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable__bindgen_ty_1), - "::", - stringify!(rbe_right) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_parent) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable__bindgen_ty_1), - "::", - stringify!(rbe_parent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_color) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable__bindgen_ty_1), - "::", - stringify!(rbe_color) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfr_ktable__bindgen_ty_2 { - pub sle_next: *mut pfr_ktable, -} -#[test] -fn bindgen_test_layout_pfr_ktable__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfr_ktable__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_ktable__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sle_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable__bindgen_ty_2), - "::", - stringify!(sle_next) - ) - ); -} -#[test] -fn bindgen_test_layout_pfr_ktable() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1344usize, - concat!("Size of: ", stringify!(pfr_ktable)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfr_ktable)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_ts) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfr_ktable), "::", stringify!(pfrkt_ts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_tree) as usize - ptr as usize }, - 1232usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable), - "::", - stringify!(pfrkt_tree) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_workq) as usize - ptr as usize }, - 1264usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable), - "::", - stringify!(pfrkt_workq) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_ip4) as usize - ptr as usize }, - 1272usize, - concat!("Offset of field: ", stringify!(pfr_ktable), "::", stringify!(pfrkt_ip4)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_ip6) as usize - ptr as usize }, - 1280usize, - concat!("Offset of field: ", stringify!(pfr_ktable), "::", stringify!(pfrkt_ip6)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_shadow) as usize - ptr as usize }, - 1288usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable), - "::", - stringify!(pfrkt_shadow) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_root) as usize - ptr as usize }, - 1296usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable), - "::", - stringify!(pfrkt_root) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_rs) as usize - ptr as usize }, - 1304usize, - concat!("Offset of field: ", stringify!(pfr_ktable), "::", stringify!(pfrkt_rs)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_larg) as usize - ptr as usize }, - 1312usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable), - "::", - stringify!(pfrkt_larg) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_nflags) as usize - ptr as usize }, - 1320usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable), - "::", - stringify!(pfrkt_nflags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_refcntcost) as usize - ptr as usize }, - 1328usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable), - "::", - stringify!(pfrkt_refcntcost) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_gcdweight) as usize - ptr as usize }, - 1336usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable), - "::", - stringify!(pfrkt_gcdweight) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrkt_maxweight) as usize - ptr as usize }, - 1338usize, - concat!( - "Offset of field: ", - stringify!(pfr_ktable), - "::", - stringify!(pfrkt_maxweight) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_tree_ext_gwy { - pub rbh_root: *mut pf_state_key, -} -#[test] -fn bindgen_test_layout_pf_state_tree_ext_gwy() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_state_tree_ext_gwy)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_state_tree_ext_gwy)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbh_root) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_state_tree_ext_gwy), - "::", - stringify!(rbh_root) - ) - ); -} -unsafe extern "C" { - pub fn pf_state_tree_ext_gwy_RB_INSERT_COLOR(arg1: *mut pf_state_tree_ext_gwy, arg2: *mut pf_state_key); -} -unsafe extern "C" { - pub fn pf_state_tree_ext_gwy_RB_REMOVE_COLOR( - arg1: *mut pf_state_tree_ext_gwy, - arg2: *mut pf_state_key, - arg3: *mut pf_state_key, - ); -} -unsafe extern "C" { - pub fn pf_state_tree_ext_gwy_RB_REMOVE( - arg1: *mut pf_state_tree_ext_gwy, - arg2: *mut pf_state_key, - ) -> *mut pf_state_key; -} -unsafe extern "C" { - pub fn pf_state_tree_ext_gwy_RB_INSERT( - arg1: *mut pf_state_tree_ext_gwy, - arg2: *mut pf_state_key, - ) -> *mut pf_state_key; -} -unsafe extern "C" { - pub fn pf_state_tree_ext_gwy_RB_FIND( - arg1: *mut pf_state_tree_ext_gwy, - arg2: *mut pf_state_key, - ) -> *mut pf_state_key; -} -unsafe extern "C" { - pub fn pf_state_tree_ext_gwy_RB_NFIND( - arg1: *mut pf_state_tree_ext_gwy, - arg2: *mut pf_state_key, - ) -> *mut pf_state_key; -} -unsafe extern "C" { - pub fn pf_state_tree_ext_gwy_RB_NEXT(arg1: *mut pf_state_key) -> *mut pf_state_key; -} -unsafe extern "C" { - pub fn pf_state_tree_ext_gwy_RB_PREV(arg1: *mut pf_state_key) -> *mut pf_state_key; -} -unsafe extern "C" { - pub fn pf_state_tree_ext_gwy_RB_MINMAX( - arg1: *mut pf_state_tree_ext_gwy, - arg2: ::std::os::raw::c_int, - ) -> *mut pf_state_key; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_ifhead { - pub rbh_root: *mut pfi_kif, -} -#[test] -fn bindgen_test_layout_pfi_ifhead() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfi_ifhead)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfi_ifhead)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbh_root) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfi_ifhead), "::", stringify!(rbh_root)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_tree { - _unused: [u8; 0], -} -unsafe extern "C" { - pub static mut pf_statetbl: pf_state_tree; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_kif_cmp { - pub pfik_name: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_pfi_kif_cmp() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfi_kif_cmp)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfi_kif_cmp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif_cmp), - "::", - stringify!(pfik_name) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifnet { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifg_group { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_kif { - pub pfik_name: [::std::os::raw::c_char; 16usize], - pub pfik_tree: pfi_kif__bindgen_ty_1, - pub pfik_packets: [[[u_int64_t; 2usize]; 2usize]; 2usize], - pub pfik_bytes: [[[u_int64_t; 2usize]; 2usize]; 2usize], - pub pfik_tzero: time_t, - pub pfik_flags: ::std::os::raw::c_int, - pub pfik_flags_new: ::std::os::raw::c_int, - pub pfik_ah_cookie: *mut ::std::os::raw::c_void, - pub pfik_ifp: *mut ifnet, - pub pfik_group: *mut ifg_group, - pub pfik_states: ::std::os::raw::c_int, - pub pfik_rules: ::std::os::raw::c_int, - pub pfik_routes: ::std::os::raw::c_int, - pub pfik_srcnodes: ::std::os::raw::c_int, - pub pfik_flagrefs: ::std::os::raw::c_int, - pub pfik_dynaddrs: pfi_kif__bindgen_ty_2, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_kif__bindgen_ty_1 { - pub rbe_left: *mut pfi_kif, - pub rbe_right: *mut pfi_kif, - pub rbe_parent: *mut pfi_kif, - pub rbe_color: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pfi_kif__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(pfi_kif__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfi_kif__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_left) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_1), - "::", - stringify!(rbe_left) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_right) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_1), - "::", - stringify!(rbe_right) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_parent) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_1), - "::", - stringify!(rbe_parent) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rbe_color) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_1), - "::", - stringify!(rbe_color) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_kif__bindgen_ty_2 { - pub tqh_first: *mut pfi_dynaddr, - pub tqh_last: *mut *mut pfi_dynaddr, -} -#[test] -fn bindgen_test_layout_pfi_kif__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfi_kif__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfi_kif__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_first) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_2), - "::", - stringify!(tqh_first) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqh_last) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif__bindgen_ty_2), - "::", - stringify!(tqh_last) - ) - ); -} -#[test] -fn bindgen_test_layout_pfi_kif() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 256usize, - concat!("Size of: ", stringify!(pfi_kif)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfi_kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_name) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_tree) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_tree)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_packets) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_packets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_bytes) as usize - ptr as usize }, - 112usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_bytes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_tzero) as usize - ptr as usize }, - 176usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_tzero)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_flags) as usize - ptr as usize }, - 184usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_flags_new) as usize - ptr as usize }, - 188usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif), - "::", - stringify!(pfik_flags_new) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_ah_cookie) as usize - ptr as usize }, - 192usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif), - "::", - stringify!(pfik_ah_cookie) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_ifp) as usize - ptr as usize }, - 200usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_ifp)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_group) as usize - ptr as usize }, - 208usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_group)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_states) as usize - ptr as usize }, - 216usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_rules) as usize - ptr as usize }, - 220usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_rules)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_routes) as usize - ptr as usize }, - 224usize, - concat!("Offset of field: ", stringify!(pfi_kif), "::", stringify!(pfik_routes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_srcnodes) as usize - ptr as usize }, - 228usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif), - "::", - stringify!(pfik_srcnodes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_flagrefs) as usize - ptr as usize }, - 232usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif), - "::", - stringify!(pfik_flagrefs) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfik_dynaddrs) as usize - ptr as usize }, - 240usize, - concat!( - "Offset of field: ", - stringify!(pfi_kif), - "::", - stringify!(pfik_dynaddrs) - ) - ); -} -pub const pfi_kif_refs_PFI_KIF_REF_NONE: pfi_kif_refs = 0; -pub const pfi_kif_refs_PFI_KIF_REF_STATE: pfi_kif_refs = 1; -pub const pfi_kif_refs_PFI_KIF_REF_RULE: pfi_kif_refs = 2; -pub const pfi_kif_refs_PFI_KIF_REF_ROUTE: pfi_kif_refs = 3; -pub const pfi_kif_refs_PFI_KIF_REF_SRCNODE: pfi_kif_refs = 4; -pub const pfi_kif_refs_PFI_KIF_REF_FLAG: pfi_kif_refs = 5; -pub type pfi_kif_refs = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_status { - pub counters: [u_int64_t; 17usize], - pub lcounters: [u_int64_t; 10usize], - pub fcounters: [u_int64_t; 3usize], - pub scounters: [u_int64_t; 3usize], - pub pcounters: [[[u_int64_t; 3usize]; 2usize]; 2usize], - pub bcounters: [[u_int64_t; 2usize]; 2usize], - pub stateid: u_int64_t, - pub syncookies_inflight: [u_int64_t; 2usize], - pub since: time_t, - pub running: u_int32_t, - pub states: u_int32_t, - pub states_halfopen: u_int32_t, - pub src_nodes: u_int32_t, - pub debug: u_int32_t, - pub hostid: u_int32_t, - pub reass: u_int32_t, - pub syncookies_active: u_int8_t, - pub syncookies_mode: u_int8_t, - pub pad: [u_int8_t; 2usize], - pub ifname: [::std::os::raw::c_char; 16usize], - pub pf_chksum: [u_int8_t; 16usize], -} -#[test] -fn bindgen_test_layout_pf_status() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 488usize, - concat!("Size of: ", stringify!(pf_status)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_status)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).counters) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(counters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lcounters) as usize - ptr as usize }, - 136usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(lcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fcounters) as usize - ptr as usize }, - 216usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(fcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).scounters) as usize - ptr as usize }, - 240usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(scounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pcounters) as usize - ptr as usize }, - 264usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(pcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bcounters) as usize - ptr as usize }, - 360usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(bcounters)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).stateid) as usize - ptr as usize }, - 392usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(stateid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).syncookies_inflight) as usize - ptr as usize }, - 400usize, - concat!( - "Offset of field: ", - stringify!(pf_status), - "::", - stringify!(syncookies_inflight) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).since) as usize - ptr as usize }, - 416usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(since)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).running) as usize - ptr as usize }, - 424usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(running)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states) as usize - ptr as usize }, - 428usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).states_halfopen) as usize - ptr as usize }, - 432usize, - concat!( - "Offset of field: ", - stringify!(pf_status), - "::", - stringify!(states_halfopen) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).src_nodes) as usize - ptr as usize }, - 436usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(src_nodes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).debug) as usize - ptr as usize }, - 440usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(debug)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hostid) as usize - ptr as usize }, - 444usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(hostid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reass) as usize - ptr as usize }, - 448usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(reass)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).syncookies_active) as usize - ptr as usize }, - 452usize, - concat!( - "Offset of field: ", - stringify!(pf_status), - "::", - stringify!(syncookies_active) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).syncookies_mode) as usize - ptr as usize }, - 453usize, - concat!( - "Offset of field: ", - stringify!(pf_status), - "::", - stringify!(syncookies_mode) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 454usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(pad)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 456usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pf_chksum) as usize - ptr as usize }, - 472usize, - concat!("Offset of field: ", stringify!(pf_status), "::", stringify!(pf_chksum)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_queue_bwspec { - pub absolute: u_int, - pub percent: u_int, -} -#[test] -fn bindgen_test_layout_pf_queue_bwspec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pf_queue_bwspec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_queue_bwspec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).absolute) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_queue_bwspec), - "::", - stringify!(absolute) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).percent) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pf_queue_bwspec), - "::", - stringify!(percent) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_queue_scspec { - pub m1: pf_queue_bwspec, - pub m2: pf_queue_bwspec, - pub d: u_int, -} -#[test] -fn bindgen_test_layout_pf_queue_scspec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(pf_queue_scspec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_queue_scspec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m1) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_queue_scspec), "::", stringify!(m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m2) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pf_queue_scspec), "::", stringify!(m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).d) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_queue_scspec), "::", stringify!(d)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_queue_fqspec { - pub flows: u_int, - pub quantum: u_int, - pub target: u_int, - pub interval: u_int, -} -#[test] -fn bindgen_test_layout_pf_queue_fqspec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_queue_fqspec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_queue_fqspec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flows) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_queue_fqspec), - "::", - stringify!(flows) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).quantum) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pf_queue_fqspec), - "::", - stringify!(quantum) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).target) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_queue_fqspec), - "::", - stringify!(target) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).interval) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(pf_queue_fqspec), - "::", - stringify!(interval) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_queuespec { - pub entries: pf_queuespec__bindgen_ty_1, - pub qname: [::std::os::raw::c_char; 64usize], - pub parent: [::std::os::raw::c_char; 64usize], - pub ifname: [::std::os::raw::c_char; 16usize], - pub realtime: pf_queue_scspec, - pub linkshare: pf_queue_scspec, - pub upperlimit: pf_queue_scspec, - pub flowqueue: pf_queue_fqspec, - pub kif: *mut pfi_kif, - pub flags: u_int, - pub qlimit: u_int, - pub qid: u_int32_t, - pub parent_qid: u_int32_t, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_queuespec__bindgen_ty_1 { - pub tqe_next: *mut pf_queuespec, - pub tqe_prev: *mut *mut pf_queuespec, -} -#[test] -fn bindgen_test_layout_pf_queuespec__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_queuespec__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_queuespec__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_queuespec__bindgen_ty_1), - "::", - stringify!(tqe_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_queuespec__bindgen_ty_1), - "::", - stringify!(tqe_prev) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_queuespec() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 264usize, - concat!("Size of: ", stringify!(pf_queuespec)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_queuespec)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_queuespec), "::", stringify!(entries)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qname) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_queuespec), "::", stringify!(qname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pf_queuespec), "::", stringify!(parent)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifname) as usize - ptr as usize }, - 144usize, - concat!("Offset of field: ", stringify!(pf_queuespec), "::", stringify!(ifname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).realtime) as usize - ptr as usize }, - 160usize, - concat!( - "Offset of field: ", - stringify!(pf_queuespec), - "::", - stringify!(realtime) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).linkshare) as usize - ptr as usize }, - 180usize, - concat!( - "Offset of field: ", - stringify!(pf_queuespec), - "::", - stringify!(linkshare) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).upperlimit) as usize - ptr as usize }, - 200usize, - concat!( - "Offset of field: ", - stringify!(pf_queuespec), - "::", - stringify!(upperlimit) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flowqueue) as usize - ptr as usize }, - 220usize, - concat!( - "Offset of field: ", - stringify!(pf_queuespec), - "::", - stringify!(flowqueue) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).kif) as usize - ptr as usize }, - 240usize, - concat!("Offset of field: ", stringify!(pf_queuespec), "::", stringify!(kif)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 248usize, - concat!("Offset of field: ", stringify!(pf_queuespec), "::", stringify!(flags)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qlimit) as usize - ptr as usize }, - 252usize, - concat!("Offset of field: ", stringify!(pf_queuespec), "::", stringify!(qlimit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).qid) as usize - ptr as usize }, - 256usize, - concat!("Offset of field: ", stringify!(pf_queuespec), "::", stringify!(qid)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parent_qid) as usize - ptr as usize }, - 260usize, - concat!( - "Offset of field: ", - stringify!(pf_queuespec), - "::", - stringify!(parent_qid) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct priq_opts { - pub flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_priq_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(priq_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(priq_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(priq_opts), "::", stringify!(flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct hfsc_opts { - pub rtsc_m1: u_int, - pub rtsc_d: u_int, - pub rtsc_m2: u_int, - pub lssc_m1: u_int, - pub lssc_d: u_int, - pub lssc_m2: u_int, - pub ulsc_m1: u_int, - pub ulsc_d: u_int, - pub ulsc_m2: u_int, - pub flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_hfsc_opts() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(hfsc_opts)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(hfsc_opts)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_m1) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(rtsc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_d) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(rtsc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rtsc_m2) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(rtsc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m1) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(lssc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_d) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(lssc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lssc_m2) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(lssc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_m1) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(ulsc_m1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_d) as usize - ptr as usize }, - 28usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(ulsc_d)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ulsc_m2) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(ulsc_m2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 36usize, - concat!("Offset of field: ", stringify!(hfsc_opts), "::", stringify!(flags)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfq_ops { - pub pfq_alloc: ::std::option::Option *mut ::std::os::raw::c_void>, - pub pfq_addqueue: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *mut pf_queuespec) -> ::std::os::raw::c_int, - >, - pub pfq_free: ::std::option::Option, - pub pfq_qstats: ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut pf_queuespec, - arg2: *mut ::std::os::raw::c_void, - arg3: *mut ::std::os::raw::c_int, - ) -> ::std::os::raw::c_int, - >, - pub pfq_qlength: - ::std::option::Option ::std::os::raw::c_uint>, - pub pfq_enqueue: - ::std::option::Option *mut mbuf>, - pub pfq_deq_begin: ::std::option::Option< - unsafe extern "C" fn( - arg1: *mut ::std::os::raw::c_void, - arg2: *mut *mut ::std::os::raw::c_void, - arg3: *mut mbuf_list, - ) -> *mut mbuf, - >, - pub pfq_deq_commit: ::std::option::Option< - unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: *mut mbuf, arg3: *mut ::std::os::raw::c_void), - >, - pub pfq_purge: ::std::option::Option, -} -#[test] -fn bindgen_test_layout_pfq_ops() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 72usize, - concat!("Size of: ", stringify!(pfq_ops)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfq_ops)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfq_alloc) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfq_ops), "::", stringify!(pfq_alloc)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfq_addqueue) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfq_ops), "::", stringify!(pfq_addqueue)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfq_free) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfq_ops), "::", stringify!(pfq_free)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfq_qstats) as usize - ptr as usize }, - 24usize, - concat!("Offset of field: ", stringify!(pfq_ops), "::", stringify!(pfq_qstats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfq_qlength) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pfq_ops), "::", stringify!(pfq_qlength)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfq_enqueue) as usize - ptr as usize }, - 40usize, - concat!("Offset of field: ", stringify!(pfq_ops), "::", stringify!(pfq_enqueue)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfq_deq_begin) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(pfq_ops), - "::", - stringify!(pfq_deq_begin) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfq_deq_commit) as usize - ptr as usize }, - 56usize, - concat!( - "Offset of field: ", - stringify!(pfq_ops), - "::", - stringify!(pfq_deq_commit) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfq_purge) as usize - ptr as usize }, - 64usize, - concat!("Offset of field: ", stringify!(pfq_ops), "::", stringify!(pfq_purge)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_tagname { - pub entries: pf_tagname__bindgen_ty_1, - pub name: [::std::os::raw::c_char; 64usize], - pub tag: u_int16_t, - pub ref_: ::std::os::raw::c_int, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_tagname__bindgen_ty_1 { - pub tqe_next: *mut pf_tagname, - pub tqe_prev: *mut *mut pf_tagname, -} -#[test] -fn bindgen_test_layout_pf_tagname__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pf_tagname__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_tagname__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_next) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pf_tagname__bindgen_ty_1), - "::", - stringify!(tqe_next) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tqe_prev) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pf_tagname__bindgen_ty_1), - "::", - stringify!(tqe_prev) - ) - ); -} -#[test] -fn bindgen_test_layout_pf_tagname() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(pf_tagname)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_tagname)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).entries) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_tagname), "::", stringify!(entries)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_tagname), "::", stringify!(name)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pf_tagname), "::", stringify!(tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ref_) as usize - ptr as usize }, - 84usize, - concat!("Offset of field: ", stringify!(pf_tagname), "::", stringify!(ref_)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pf_divert { - pub addr: pf_addr, - pub port: u_int16_t, - pub rdomain: u_int16_t, - pub type_: u_int8_t, -} -#[test] -fn bindgen_test_layout_pf_divert() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(pf_divert)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pf_divert)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_divert), "::", stringify!(addr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pf_divert), "::", stringify!(port)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rdomain) as usize - ptr as usize }, - 18usize, - concat!("Offset of field: ", stringify!(pf_divert), "::", stringify!(rdomain)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 20usize, - concat!("Offset of field: ", stringify!(pf_divert), "::", stringify!(type_)) - ); -} -pub const pf_divert_types_PF_DIVERT_NONE: pf_divert_types = 0; -pub const pf_divert_types_PF_DIVERT_TO: pf_divert_types = 1; -pub const pf_divert_types_PF_DIVERT_REPLY: pf_divert_types = 2; -pub const pf_divert_types_PF_DIVERT_PACKET: pf_divert_types = 3; -pub type pf_divert_types = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_pktdelay { - pub to: timeout, - pub m: *mut mbuf, - pub ifidx: u_int, -} -#[test] -fn bindgen_test_layout_pf_pktdelay() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 88usize, - concat!("Size of: ", stringify!(pf_pktdelay)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pf_pktdelay)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).to) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pf_pktdelay), "::", stringify!(to)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).m) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(pf_pktdelay), "::", stringify!(m)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifidx) as usize - ptr as usize }, - 80usize, - concat!("Offset of field: ", stringify!(pf_pktdelay), "::", stringify!(ifidx)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_rule { - pub action: u_int32_t, - pub ticket: u_int32_t, - pub nr: u_int32_t, - pub anchor: [::std::os::raw::c_char; 1024usize], - pub anchor_call: [::std::os::raw::c_char; 1024usize], - pub rule: pf_rule, -} -#[test] -fn bindgen_test_layout_pfioc_rule() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 3408usize, - concat!("Size of: ", stringify!(pfioc_rule)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_rule)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).action) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(action)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(ticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 12usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(anchor)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor_call) as usize - ptr as usize }, - 1036usize, - concat!( - "Offset of field: ", - stringify!(pfioc_rule), - "::", - stringify!(anchor_call) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rule) as usize - ptr as usize }, - 2064usize, - concat!("Offset of field: ", stringify!(pfioc_rule), "::", stringify!(rule)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_natlook { - pub saddr: pf_addr, - pub daddr: pf_addr, - pub rsaddr: pf_addr, - pub rdaddr: pf_addr, - pub rdomain: u_int16_t, - pub rrdomain: u_int16_t, - pub sport: u_int16_t, - pub dport: u_int16_t, - pub rsport: u_int16_t, - pub rdport: u_int16_t, - pub af: sa_family_t, - pub proto: u_int8_t, - pub direction: u_int8_t, -} -#[test] -fn bindgen_test_layout_pfioc_natlook() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 80usize, - concat!("Size of: ", stringify!(pfioc_natlook)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_natlook)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).saddr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(saddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).daddr) as usize - ptr as usize }, - 16usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(daddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rsaddr) as usize - ptr as usize }, - 32usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(rsaddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rdaddr) as usize - ptr as usize }, - 48usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(rdaddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rdomain) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(pfioc_natlook), - "::", - stringify!(rdomain) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rrdomain) as usize - ptr as usize }, - 66usize, - concat!( - "Offset of field: ", - stringify!(pfioc_natlook), - "::", - stringify!(rrdomain) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sport) as usize - ptr as usize }, - 68usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(sport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dport) as usize - ptr as usize }, - 70usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(dport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rsport) as usize - ptr as usize }, - 72usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(rsport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rdport) as usize - ptr as usize }, - 74usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(rdport)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).af) as usize - ptr as usize }, - 76usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(af)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).proto) as usize - ptr as usize }, - 77usize, - concat!("Offset of field: ", stringify!(pfioc_natlook), "::", stringify!(proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).direction) as usize - ptr as usize }, - 78usize, - concat!( - "Offset of field: ", - stringify!(pfioc_natlook), - "::", - stringify!(direction) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_state { - pub state: pfsync_state, -} -#[test] -fn bindgen_test_layout_pfioc_state() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 264usize, - concat!("Size of: ", stringify!(pfioc_state)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(pfioc_state)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_state), "::", stringify!(state)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_src_node_kill { - pub psnk_af: sa_family_t, - pub psnk_src: pf_rule_addr, - pub psnk_dst: pf_rule_addr, - pub psnk_killed: u_int, -} -#[test] -fn bindgen_test_layout_pfioc_src_node_kill() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 128usize, - concat!("Size of: ", stringify!(pfioc_src_node_kill)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_src_node_kill)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psnk_af) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_node_kill), - "::", - stringify!(psnk_af) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psnk_src) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_node_kill), - "::", - stringify!(psnk_src) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psnk_dst) as usize - ptr as usize }, - 64usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_node_kill), - "::", - stringify!(psnk_dst) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psnk_killed) as usize - ptr as usize }, - 120usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_node_kill), - "::", - stringify!(psnk_killed) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_state_kill { - pub psk_pfcmp: pf_state_cmp, - pub psk_af: sa_family_t, - pub psk_proto: ::std::os::raw::c_int, - pub psk_src: pf_rule_addr, - pub psk_dst: pf_rule_addr, - pub psk_ifname: [::std::os::raw::c_char; 16usize], - pub psk_label: [::std::os::raw::c_char; 64usize], - pub psk_killed: u_int, - pub psk_rdomain: u_int16_t, -} -#[test] -fn bindgen_test_layout_pfioc_state_kill() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 224usize, - concat!("Size of: ", stringify!(pfioc_state_kill)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_state_kill)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_pfcmp) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_pfcmp) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_af) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_af) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_proto) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_proto) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_src) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_src) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_dst) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_dst) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_ifname) as usize - ptr as usize }, - 136usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_ifname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_label) as usize - ptr as usize }, - 152usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_label) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_killed) as usize - ptr as usize }, - 216usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_killed) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psk_rdomain) as usize - ptr as usize }, - 220usize, - concat!( - "Offset of field: ", - stringify!(pfioc_state_kill), - "::", - stringify!(psk_rdomain) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_states { - pub ps_len: usize, - pub ps_u: pfioc_states__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfioc_states__bindgen_ty_1 { - pub psu_buf: caddr_t, - pub psu_states: *mut pfsync_state, -} -#[test] -fn bindgen_test_layout_pfioc_states__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_states__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_states__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psu_buf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_states__bindgen_ty_1), - "::", - stringify!(psu_buf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psu_states) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_states__bindgen_ty_1), - "::", - stringify!(psu_states) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_states() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_states)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_states)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ps_len) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_states), "::", stringify!(ps_len)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ps_u) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_states), "::", stringify!(ps_u)) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct pfioc_src_nodes { - pub psn_len: usize, - pub psn_u: pfioc_src_nodes__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union pfioc_src_nodes__bindgen_ty_1 { - pub psu_buf: caddr_t, - pub psu_src_nodes: *mut pf_src_node, -} -#[test] -fn bindgen_test_layout_pfioc_src_nodes__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_src_nodes__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_src_nodes__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psu_buf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_nodes__bindgen_ty_1), - "::", - stringify!(psu_buf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psu_src_nodes) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_nodes__bindgen_ty_1), - "::", - stringify!(psu_src_nodes) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_src_nodes() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_src_nodes)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_src_nodes)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psn_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_nodes), - "::", - stringify!(psn_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).psn_u) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(pfioc_src_nodes), - "::", - stringify!(psn_u) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_tm { - pub timeout: ::std::os::raw::c_int, - pub seconds: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pfioc_tm() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_tm)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_tm)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_tm), "::", stringify!(timeout)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).seconds) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_tm), "::", stringify!(seconds)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_limit { - pub index: ::std::os::raw::c_int, - pub limit: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_pfioc_limit() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_limit)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_limit)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).index) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_limit), "::", stringify!(index)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).limit) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_limit), "::", stringify!(limit)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_ruleset { - pub nr: u_int32_t, - pub path: [::std::os::raw::c_char; 1024usize], - pub name: [::std::os::raw::c_char; 64usize], -} -#[test] -fn bindgen_test_layout_pfioc_ruleset() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1092usize, - concat!("Size of: ", stringify!(pfioc_ruleset)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_ruleset)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_ruleset), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).path) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_ruleset), "::", stringify!(path)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize }, - 1028usize, - concat!("Offset of field: ", stringify!(pfioc_ruleset), "::", stringify!(name)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_trans { - pub size: ::std::os::raw::c_int, - pub esize: ::std::os::raw::c_int, - pub array: *mut pfioc_trans_pfioc_trans_e, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_trans_pfioc_trans_e { - pub type_: ::std::os::raw::c_int, - pub anchor: [::std::os::raw::c_char; 1024usize], - pub ticket: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfioc_trans_pfioc_trans_e() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1032usize, - concat!("Size of: ", stringify!(pfioc_trans_pfioc_trans_e)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_trans_pfioc_trans_e)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_trans_pfioc_trans_e), - "::", - stringify!(type_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).anchor) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pfioc_trans_pfioc_trans_e), - "::", - stringify!(anchor) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 1028usize, - concat!( - "Offset of field: ", - stringify!(pfioc_trans_pfioc_trans_e), - "::", - stringify!(ticket) - ) - ); -} -#[test] -fn bindgen_test_layout_pfioc_trans() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(pfioc_trans)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_trans)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_trans), "::", stringify!(size)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).esize) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_trans), "::", stringify!(esize)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).array) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_trans), "::", stringify!(array)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_queue { - pub ticket: u_int32_t, - pub nr: u_int, - pub queue: pf_queuespec, -} -#[test] -fn bindgen_test_layout_pfioc_queue() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 272usize, - concat!("Size of: ", stringify!(pfioc_queue)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_queue)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_queue), "::", stringify!(ticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_queue), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).queue) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_queue), "::", stringify!(queue)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_qstats { - pub ticket: u_int32_t, - pub nr: u_int32_t, - pub queue: pf_queuespec, - pub buf: *mut ::std::os::raw::c_void, - pub nbytes: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pfioc_qstats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 288usize, - concat!("Size of: ", stringify!(pfioc_qstats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_qstats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ticket) as usize - ptr as usize }, - 0usize, - concat!("Offset of field: ", stringify!(pfioc_qstats), "::", stringify!(ticket)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 4usize, - concat!("Offset of field: ", stringify!(pfioc_qstats), "::", stringify!(nr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).queue) as usize - ptr as usize }, - 8usize, - concat!("Offset of field: ", stringify!(pfioc_qstats), "::", stringify!(queue)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).buf) as usize - ptr as usize }, - 272usize, - concat!("Offset of field: ", stringify!(pfioc_qstats), "::", stringify!(buf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nbytes) as usize - ptr as usize }, - 280usize, - concat!("Offset of field: ", stringify!(pfioc_qstats), "::", stringify!(nbytes)) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_table { - pub pfrio_table: pfr_table, - pub pfrio_buffer: *mut ::std::os::raw::c_void, - pub pfrio_esize: ::std::os::raw::c_int, - pub pfrio_size: ::std::os::raw::c_int, - pub pfrio_size2: ::std::os::raw::c_int, - pub pfrio_nadd: ::std::os::raw::c_int, - pub pfrio_ndel: ::std::os::raw::c_int, - pub pfrio_nchange: ::std::os::raw::c_int, - pub pfrio_flags: ::std::os::raw::c_int, - pub pfrio_ticket: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfioc_table() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1104usize, - concat!("Size of: ", stringify!(pfioc_table)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_table)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_table) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_table) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_buffer) as usize - ptr as usize }, - 1064usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_buffer) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_esize) as usize - ptr as usize }, - 1072usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_esize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_size) as usize - ptr as usize }, - 1076usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_size2) as usize - ptr as usize }, - 1080usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_size2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_nadd) as usize - ptr as usize }, - 1084usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_nadd) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_ndel) as usize - ptr as usize }, - 1088usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_ndel) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_nchange) as usize - ptr as usize }, - 1092usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_nchange) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_flags) as usize - ptr as usize }, - 1096usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfrio_ticket) as usize - ptr as usize }, - 1100usize, - concat!( - "Offset of field: ", - stringify!(pfioc_table), - "::", - stringify!(pfrio_ticket) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_iface { - pub pfiio_name: [::std::os::raw::c_char; 16usize], - pub pfiio_buffer: *mut ::std::os::raw::c_void, - pub pfiio_esize: ::std::os::raw::c_int, - pub pfiio_size: ::std::os::raw::c_int, - pub pfiio_nzero: ::std::os::raw::c_int, - pub pfiio_flags: ::std::os::raw::c_int, -} -#[test] -fn bindgen_test_layout_pfioc_iface() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(pfioc_iface)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(pfioc_iface)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_name) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_buffer) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_buffer) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_esize) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_esize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_size) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_nzero) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_nzero) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pfiio_flags) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(pfioc_iface), - "::", - stringify!(pfiio_flags) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfioc_synflwats { - pub hiwat: u_int32_t, - pub lowat: u_int32_t, -} -#[test] -fn bindgen_test_layout_pfioc_synflwats() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(pfioc_synflwats)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(pfioc_synflwats)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hiwat) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(pfioc_synflwats), - "::", - stringify!(hiwat) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lowat) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(pfioc_synflwats), - "::", - stringify!(lowat) - ) - ); -} -unsafe extern "C" { - pub static mut pf_anchors: pf_anchor_global; -} -unsafe extern "C" { - pub static mut pf_main_anchor: pf_anchor; -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct tcphdr { - _unused: [u8; 0], -} -unsafe extern "C" { - pub fn pf_init_ruleset(arg1: *mut pf_ruleset); -} -unsafe extern "C" { - pub fn pf_anchor_setup( - arg1: *mut pf_rule, - arg2: *const pf_ruleset, - arg3: *const ::std::os::raw::c_char, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_anchor_copyout( - arg1: *const pf_ruleset, - arg2: *const pf_rule, - arg3: *mut pfioc_rule, - ) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_remove_anchor(arg1: *mut pf_rule); -} -unsafe extern "C" { - pub fn pf_remove_if_empty_ruleset(arg1: *mut pf_ruleset); -} -unsafe extern "C" { - pub fn pf_find_anchor(arg1: *const ::std::os::raw::c_char) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_find_ruleset(arg1: *const ::std::os::raw::c_char) -> *mut pf_ruleset; -} -unsafe extern "C" { - pub fn pf_get_leaf_ruleset( - arg1: *mut ::std::os::raw::c_char, - arg2: *mut *mut ::std::os::raw::c_char, - ) -> *mut pf_ruleset; -} -unsafe extern "C" { - pub fn pf_create_anchor(arg1: *mut pf_anchor, arg2: *const ::std::os::raw::c_char) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_find_or_create_ruleset(arg1: *const ::std::os::raw::c_char) -> *mut pf_ruleset; -} -unsafe extern "C" { - pub fn pf_rs_initialize(); -} -unsafe extern "C" { - pub fn pf_anchor_rele(arg1: *mut pf_anchor); -} -unsafe extern "C" { - pub fn pf_anchor_take(arg1: *mut pf_anchor) -> *mut pf_anchor; -} -unsafe extern "C" { - pub fn pf_osfp_add(arg1: *mut pf_osfp_ioctl) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_osfp_fingerprint_hdr( - arg1: *const ip, - arg2: *const ip6_hdr, - arg3: *const tcphdr, - ) -> *mut pf_os_fingerprint_pf_osfp_enlist; -} -unsafe extern "C" { - pub fn pf_osfp_flush(); -} -unsafe extern "C" { - pub fn pf_osfp_get(arg1: *mut pf_osfp_ioctl) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_osfp_initialize(); -} -unsafe extern "C" { - pub fn pf_osfp_match(arg1: *mut pf_os_fingerprint_pf_osfp_enlist, arg2: pf_osfp_t) -> ::std::os::raw::c_int; -} -unsafe extern "C" { - pub fn pf_osfp_validate() -> *mut pf_os_fingerprint; -} -pub type __builtin_va_list = [__va_list_tag; 1usize]; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct __va_list_tag { - pub gp_offset: ::std::os::raw::c_uint, - pub fp_offset: ::std::os::raw::c_uint, - pub overflow_arg_area: *mut ::std::os::raw::c_void, - pub reg_save_area: *mut ::std::os::raw::c_void, -} -#[test] -fn bindgen_test_layout___va_list_tag() { - const UNINIT: ::std::mem::MaybeUninit<__va_list_tag> = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::<__va_list_tag>(), - 24usize, - concat!("Size of: ", stringify!(__va_list_tag)) - ); - assert_eq!( - ::std::mem::align_of::<__va_list_tag>(), - 8usize, - concat!("Alignment of ", stringify!(__va_list_tag)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gp_offset) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(gp_offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fp_offset) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(fp_offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).overflow_arg_area) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(overflow_arg_area) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reg_save_area) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(__va_list_tag), - "::", - stringify!(reg_save_area) - ) - ); -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct witness { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct process { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ifaddr { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct rtentry { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pfi_dynaddr { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct pf_state_key { - pub _address: u8, -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct mbuf { - _unused: [u8; 0], -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/mod.rs index b42c919..7c1f2ae 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/mod.rs @@ -8,7 +8,7 @@ use std::{ }; use log::{debug, error, info, trace}; -use shadowsocks::{ServerAddr, lookup_then, net::TcpListener as ShadowTcpListener, relay::socks5::Address}; +use shadowsocks::{lookup_then, net::TcpListener as ShadowTcpListener, relay::socks5::Address, ServerAddr}; use tokio::{ net::{TcpListener, TcpStream}, time, @@ -26,13 +26,12 @@ use crate::{ net::utils::to_ipv4_mapped, }; -#[allow(unused_imports)] mod sys; /// Established Client Transparent Proxy /// /// This method must be called after handshaking with client (for example, socks5 handshaking) -async fn establish_client_tcp_redir( +async fn establish_client_tcp_redir<'a>( context: Arc, balancer: PingBalancer, mut stream: TcpStream, @@ -47,8 +46,7 @@ async fn establish_client_tcp_redir( let server = balancer.best_tcp_server(); let svr_cfg = server.server_config(); - let mut remote = - AutoProxyClientStream::connect_with_opts(context, &server, addr, server.connect_opts_ref()).await?; + let mut remote = AutoProxyClientStream::connect(context, &server, addr).await?; establish_tcp_tunnel(svr_cfg, &mut stream, &mut remote, peer_addr, addr).await } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/bsd.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/bsd.rs index 3eb731c..3793328 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/bsd.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/bsd.rs @@ -3,8 +3,9 @@ use std::{ net::SocketAddr, }; +use async_trait::async_trait; use log::warn; -use shadowsocks::net::{AcceptOpts, is_dual_stack_addr, set_tcp_fastopen}; +use shadowsocks::net::{is_dual_stack_addr, set_tcp_fastopen, AcceptOpts}; use socket2::Protocol; use tokio::net::{TcpListener, TcpSocket, TcpStream}; @@ -16,13 +17,26 @@ use crate::{ }, }; +#[async_trait] impl TcpListenerRedirExt for TcpListener { async fn bind_redir(ty: RedirType, addr: SocketAddr, accept_opts: AcceptOpts) -> io::Result { match ty { - #[cfg(any(target_os = "freebsd", target_os = "openbsd", target_os = "macos", target_os = "ios"))] + #[cfg(any( + target_os = "openbsd", + target_os = "freebsd", + target_os = "netbsd", + target_os = "solaris", + target_os = "macos", + target_os = "ios", + ))] RedirType::PacketFilter => {} - #[cfg(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))] + #[cfg(any( + target_os = "freebsd", + target_os = "macos", + target_os = "ios", + target_os = "dragonfly" + ))] RedirType::IpFirewall => {} _ => { @@ -97,7 +111,14 @@ impl TcpListenerRedirExt for TcpListener { impl TcpStreamRedirExt for TcpStream { fn destination_addr(&self, ty: RedirType) -> io::Result { match ty { - #[cfg(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))] + #[cfg(any( + target_os = "openbsd", + target_os = "freebsd", + target_os = "netbsd", + target_os = "solaris", + target_os = "macos", + target_os = "ios", + ))] RedirType::PacketFilter => { use crate::local::redir::sys::bsd_pf::PF; @@ -106,9 +127,12 @@ impl TcpStreamRedirExt for TcpStream { PF.natlook(&bind_addr, &peer_addr, Protocol::TCP) } - #[cfg(target_os = "openbsd")] // in OpenBSD, we can get TCP destination address with getsockname() - RedirType::PacketFilter => self.local_addr(), - #[cfg(any(target_os = "freebsd", target_os = "macos", target_os = "ios"))] + #[cfg(any( + target_os = "freebsd", + target_os = "macos", + target_os = "ios", + target_os = "dragonfly" + ))] RedirType::IpFirewall => { // ## IPFW // diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/linux.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/linux.rs index 3fa008d..629f6b8 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/linux.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/linux.rs @@ -5,8 +5,9 @@ use std::{ os::unix::io::AsRawFd, }; +use async_trait::async_trait; use log::warn; -use shadowsocks::net::{AcceptOpts, is_dual_stack_addr, set_tcp_fastopen}; +use shadowsocks::net::{is_dual_stack_addr, set_tcp_fastopen, AcceptOpts}; use socket2::SockAddr; use tokio::net::{TcpListener, TcpSocket, TcpStream}; @@ -18,6 +19,7 @@ use crate::{ }, }; +#[async_trait] impl TcpListenerRedirExt for TcpListener { async fn bind_redir(ty: RedirType, addr: SocketAddr, accept_opts: AcceptOpts) -> io::Result { match ty { @@ -113,7 +115,7 @@ fn get_original_destination_addr(s: &TcpStream) -> io::Result { unsafe { let (_, target_addr) = SockAddr::try_init(|target_addr, target_addr_len| { - // No sufficient method to know whether the destination IPv4 or IPv6. + // No suffcient method to know whether the destination IPv4 or IPv6. // Follow the method in shadowsocks-libev. let ret = libc::getsockopt( diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/mod.rs index e915c87..311a903 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/mod.rs @@ -7,11 +7,9 @@ cfg_if! { } else if #[cfg(any(target_os = "macos", target_os = "ios", target_os = "freebsd", + target_os = "netbsd", target_os = "openbsd"))] { mod bsd; pub use self::bsd::*; - } else { - mod not_supported; - pub use self::not_supported::*; } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/not_supported.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/not_supported.rs deleted file mode 100644 index 7afa878..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/unix/not_supported.rs +++ /dev/null @@ -1,21 +0,0 @@ -use std::{io, net::SocketAddr}; - -use shadowsocks::net::AcceptOpts; -use tokio::net::{TcpListener, TcpStream}; - -use crate::{ - config::RedirType, - local::redir::redir_ext::{TcpListenerRedirExt, TcpStreamRedirExt}, -}; - -impl TcpListenerRedirExt for TcpListener { - async fn bind_redir(_ty: RedirType, _addr: SocketAddr, _accept_opts: AcceptOpts) -> io::Result { - unimplemented!("TCP transparent proxy is not supported on this platform") - } -} - -impl TcpStreamRedirExt for TcpStream { - fn destination_addr(&self, _ty: RedirType) -> io::Result { - unimplemented!("TCP transparent proxy is not supported on this platform") - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/windows/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/windows/mod.rs index 2571687..a15e239 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/windows/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/tcprelay/sys/windows/mod.rs @@ -3,6 +3,7 @@ use std::{ net::SocketAddr, }; +use async_trait::async_trait; use shadowsocks::net::AcceptOpts; use tokio::net::{TcpListener, TcpStream}; @@ -11,6 +12,7 @@ use crate::{ local::redir::redir_ext::{TcpListenerRedirExt, TcpStreamRedirExt}, }; +#[async_trait] impl TcpListenerRedirExt for TcpListener { async fn bind_redir(_ty: RedirType, _addr: SocketAddr, _accept_opts: AcceptOpts) -> io::Result { let err = Error::new( diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/mod.rs index 7a62658..0cb9319 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/mod.rs @@ -3,16 +3,21 @@ use std::{ io::{self, ErrorKind}, net::{IpAddr, SocketAddr}, - sync::Arc, + sync::{ + atomic::{AtomicBool, Ordering}, + Arc, + }, time::Duration, }; +use async_trait::async_trait; use log::{debug, error, info, trace, warn}; use lru_time_cache::LruCache; use shadowsocks::{ - ServerAddr, lookup_then, - net::{ConnectOpts, get_ip_stack_capabilities}, + lookup_then, + net::ConnectOpts, relay::{socks5::Address, udprelay::MAXIMUM_UDP_PAYLOAD_SIZE}, + ServerAddr, }; use tokio::{sync::Mutex, task::JoinHandle, time}; @@ -89,35 +94,31 @@ impl UdpRedirInboundWriter { } } +#[async_trait] impl UdpInboundWrite for UdpRedirInboundWriter { async fn send_to(&self, mut peer_addr: SocketAddr, remote_addr: &Address, data: &[u8]) -> io::Result<()> { // If IPv6 Transparent Proxy is supported on the current platform, // then we should always use IPv6 sockets for sending IPv4 packets. - let ip_stack_caps = get_ip_stack_capabilities(); + static SUPPORT_IPV6_TRANSPARENT: AtomicBool = AtomicBool::new(true); - let addr = match *remote_addr { + #[allow(unused_mut)] + let mut addr = match *remote_addr { Address::SocketAddress(sa) => { - match sa { - SocketAddr::V4(ref v4) => { - // If IPv4-mapped-IPv6 is supported. + if SUPPORT_IPV6_TRANSPARENT.load(Ordering::Relaxed) { + match sa { // Converts IPv4 address to IPv4-mapped-IPv6 // All sockets will be created in IPv6 (nearly all modern OS supports IPv6 sockets) - if ip_stack_caps.support_ipv4_mapped_ipv6 { - SocketAddr::new(v4.ip().to_ipv6_mapped().into(), v4.port()) - } else { - sa - } + SocketAddr::V4(ref v4) => SocketAddr::new(v4.ip().to_ipv6_mapped().into(), v4.port()), + SocketAddr::V6(..) => sa, } - SocketAddr::V6(ref v6) => { - // If IPv6 is not supported. Try to map it back to IPv4. - if !ip_stack_caps.support_ipv6 || !ip_stack_caps.support_ipv4_mapped_ipv6 { - match v6.ip().to_ipv4_mapped() { - Some(v4) => SocketAddr::new(v4.into(), v6.port()), - None => sa, - } - } else { - sa - } + } else { + match sa { + // Converts IPv4-mapped-IPv6 to IPv4 + SocketAddr::V4(..) => sa, + SocketAddr::V6(ref v6) => match v6.ip().to_ipv4_mapped() { + Some(v4) => SocketAddr::new(v4.into(), v6.port()), + None => sa, + }, } } } @@ -132,26 +133,54 @@ impl UdpInboundWrite for UdpRedirInboundWriter { let inbound = { let mut cache = self.inbound_cache.cache.lock().await; - match cache.get(&addr) { - Some(socket) => socket.clone(), - _ => { - // Create a socket binds to destination addr - // This only works for systems that supports binding to non-local addresses - // - // This socket has to set SO_REUSEADDR and SO_REUSEPORT. - // Outbound addresses could be connected from different source addresses. - let inbound = UdpRedirSocket::bind_nonlocal(self.redir_ty, addr, &self.socket_opts)?; - - // UDP socket could be shared between threads and is safe to be manipulated by multiple threads - let inbound = Arc::new(inbound); - cache.insert(addr, inbound.clone()); - - inbound - } + if let Some(socket) = cache.get(&addr) { + socket.clone() + } else { + // Create a socket binds to destination addr + // This only works for systems that supports binding to non-local addresses + // + // This socket has to set SO_REUSEADDR and SO_REUSEPORT. + // Outbound addresses could be connected from different source addresses. + let inbound = match UdpRedirSocket::bind_nonlocal(self.redir_ty, addr, &self.socket_opts) { + Ok(s) => s, + #[cfg(unix)] + Err(err) => match err.raw_os_error() { + None => return Err(err), + // https://github.com/shadowsocks/shadowsocks-rust/issues/988 + // IPV6_TRANSPARENT was supported since 2.6.37. + Some(libc::ENOPROTOOPT) if addr.is_ipv6() => { + SUPPORT_IPV6_TRANSPARENT.store(false, Ordering::Relaxed); + + addr = match *remote_addr { + Address::SocketAddress(sa) => { + match sa { + // Converts IPv4-mapped-IPv6 to IPv4 + SocketAddr::V4(..) => sa, + SocketAddr::V6(ref v6) => match v6.ip().to_ipv4_mapped() { + Some(v4) => SocketAddr::new(v4.into(), v6.port()), + None => return Err(err), + }, + } + } + Address::DomainNameAddress(..) => unreachable!(), + }; + + UdpRedirSocket::bind_nonlocal(self.redir_ty, addr, &self.socket_opts)? + } + Some(_) => return Err(err), + }, + #[cfg(not(unix))] + Err(err) => return Err(err), + }; + + // UDP socket could be shared between threads and is safe to be manipulated by multiple threads + let inbound = Arc::new(inbound); + cache.insert(addr, inbound.clone()); + + inbound } }; - // Convert peer_addr (client)'s address family to match remote_addr (target) match (addr, peer_addr) { (SocketAddr::V4(..), SocketAddr::V4(..)) | (SocketAddr::V6(..), SocketAddr::V6(..)) => {} (SocketAddr::V4(..), SocketAddr::V6(v6_peer_addr)) => { @@ -171,27 +200,25 @@ impl UdpInboundWrite for UdpRedirInboundWriter { } } - match inbound.send_to(data, peer_addr).await { - Ok(n) => { - if n < data.len() { - warn!( - "udp redir send back data (actual: {} bytes, sent: {} bytes), remote: {}, peer: {}", - n, - data.len(), - remote_addr, - peer_addr - ); - } - - trace!( - "udp redir send back data {} bytes, remote: {}, peer: {}, socket_opts: {:?}", - n, remote_addr, peer_addr, self.socket_opts + inbound.send_to(data, peer_addr).await.map(|n| { + if n < data.len() { + warn!( + "udp redir send back data (actual: {} bytes, sent: {} bytes), remote: {}, peer: {}", + n, + data.len(), + remote_addr, + peer_addr ); - - Ok(()) } - Err(err) => Err(err), - } + + trace!( + "udp redir send back data {} bytes, remote: {}, peer: {}, socket_opts: {:?}", + n, + remote_addr, + peer_addr, + self.socket_opts + ); + }) } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/freebsd.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/bsd.rs similarity index 79% rename from obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/freebsd.rs rename to obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/bsd.rs index cde8912..73d9e1f 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/freebsd.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/bsd.rs @@ -7,6 +7,7 @@ use std::{ task::{Context, Poll}, }; +use async_trait::async_trait; use futures::{future::poll_fn, ready}; use log::{error, trace, warn}; use shadowsocks::net::is_dual_stack_addr; @@ -16,11 +17,15 @@ use tokio::io::unix::AsyncFd; use crate::{ config::RedirType, local::redir::{ - redir_ext::{RedirSocketOpts, UdpSocketRedir}, + redir_ext::{RedirSocketOpts, UdpSocketRedirExt}, sys::set_ipv6_only, }, }; +pub fn check_support_tproxy() -> io::Result<()> { + Ok(()) +} + pub struct UdpRedirSocket { io: AsyncFd, } @@ -55,8 +60,16 @@ impl UdpRedirSocket { socket.set_reuse_address(true)?; if reuse_port { if let Err(err) = socket.set_reuse_port(true) { - if let Some(libc::ENOPROTOOPT) = err.raw_os_error() { - trace!("failed to set SO_REUSEPORT, error: {}", err); + if let Some(errno) = err.raw_os_error() { + match errno { + libc::ENOPROTOOPT => { + trace!("failed to set SO_REUSEPORT, error: {}", err); + } + _ => { + error!("failed to set SO_REUSEPORT, error: {}", err); + return Err(err); + } + } } else { error!("failed to set SO_REUSEPORT, error: {}", err); return Err(err); @@ -69,10 +82,8 @@ impl UdpRedirSocket { if is_dual_stack_addr(&addr) { // set IP_ORIGDSTADDR before bind() - // NOTE: FreeBSD doesn't allow setting IPPROTO_IP level on an IPv6 socket - // - // set_ip_origdstaddr(libc::IPPROTO_IP, &socket)?; - // set_disable_ip_fragmentation(libc::IPPROTO_IP, &socket)?; + set_ip_origdstaddr(libc::IPPROTO_IP, &socket)?; + set_disable_ip_fragmentation(libc::IPPROTO_IP, &socket)?; match set_ipv6_only(&socket, false) { Ok(..) => { @@ -151,6 +162,7 @@ impl UdpSocketRedir for UdpRedirSocket { } } +#[cfg(target_os = "freebsd")] fn set_bindany(level: libc::c_int, socket: &Socket) -> io::Result<()> { let fd = socket.as_raw_fd(); @@ -179,6 +191,29 @@ fn set_bindany(level: libc::c_int, socket: &Socket) -> io::Result<()> { Ok(()) } +#[cfg(target_os = "openbsd")] +fn set_bindany(_level: libc::c_int, socket: &Socket) -> io::Result<()> { + let fd = socket.as_raw_fd(); + + let enable: libc::c_int = 1; + + // https://man.openbsd.org/getsockopt.2 + unsafe { + let ret = libc::setsockopt( + fd, + libc::SOL_SOCKET, + libc::SO_BINDANY, + &enable as *const _ as *const _, + mem::size_of_val(&enable) as libc::socklen_t, + ); + if ret != 0 { + return Err(Error::last_os_error()); + } + } + + Ok(()) +} + fn set_ip_origdstaddr(level: libc::c_int, socket: &Socket) -> io::Result<()> { // https://www.freebsd.org/cgi/man.cgi?query=ip&sektion=4&manpath=FreeBSD+9.0-RELEASE @@ -187,8 +222,8 @@ fn set_ip_origdstaddr(level: libc::c_int, socket: &Socket) -> io::Result<()> { let enable: libc::c_int = 1; let opt = match level { - libc::IPPROTO_IP => libc::IP_RECVORIGDSTADDR, - libc::IPPROTO_IPV6 => libc::IPV6_RECVORIGDSTADDR, + libc::IPPROTO_IP => libc::IP_ORIGDSTADDR, + libc::IPPROTO_IPV6 => libc::IPV6_ORIGDSTADDR, _ => unreachable!("level can only be IPPROTO_IP or IPPROTO_IPV6"), }; @@ -212,16 +247,14 @@ fn set_disable_ip_fragmentation(level: libc::c_int, socket: &Socket) -> io::Resu // https://www.freebsd.org/cgi/man.cgi?query=ip&sektion=4&manpath=FreeBSD+9.0-RELEASE // sys/netinet/in.h - // const IP_DONTFRAG: libc::c_int = 67; // don't fragment packet - // - // sys/netinet6/in6.h - // const IPV6_DONTFRAG: libc::c_int = 62; // bool; disable IPv6 fragmentation + const IP_DONTFRAG: libc::c_int = 67; // don't fragment packet - let enable: libc::c_int = 1; + // sys/netinet6/in6.h + const IPV6_DONTFRAG: libc::c_int = 62; // bool; disable IPv6 fragmentation let opt = match level { - libc::IPPROTO_IP => libc::IP_DONTFRAG, - libc::IPPROTO_IPV6 => libc::IPV6_DONTFRAG, + libc::IPPROTO_IP => IP_DONTFRAG, + libc::IPPROTO_IPV6 => IPV6_DONTFRAG, _ => unreachable!("level can only be IPPROTO_IP or IPPROTO_IPV6"), }; @@ -243,20 +276,26 @@ fn set_disable_ip_fragmentation(level: libc::c_int, socket: &Socket) -> io::Resu } fn set_socket_before_bind(addr: &SocketAddr, socket: &Socket) -> io::Result<()> { - // https://www.freebsd.org/cgi/man.cgi?query=ip&sektion=4&manpath=FreeBSD+9.0-RELEASE - let level = match *addr { - SocketAddr::V4(..) => libc::IPPROTO_IP, - SocketAddr::V6(..) => libc::IPPROTO_IPV6, - }; + let fd = socket.as_raw_fd(); - // 1. BINDANY - set_bindany(level, socket)?; + let enable: libc::c_int = 1; + + unsafe { + // https://www.freebsd.org/cgi/man.cgi?query=ip&sektion=4&manpath=FreeBSD+9.0-RELEASE + let level = match *addr { + SocketAddr::V4(..) => libc::IPPROTO_IP, + SocketAddr::V6(..) => libc::IPPROTO_IPV6, + }; + + // 1. BINDANY + set_bindany(level, socket)?; - // 2. set ORIGDSTADDR for retrieving original destination address - set_ip_origdstaddr(level, socket)?; + // 2. set ORIGDSTADDR for retrieving original destination address + set_ip_origdstaddr(level, socket)?; - // 3. disable IP fragmentation - set_disable_ip_fragmentation(level, socket)?; + // 3. disable IP fragmentation + set_disable_ip_fragmentation(level, socket)?; + } Ok(()) } @@ -273,11 +312,7 @@ fn get_destination_addr(msg: &libc::msghdr) -> io::Result { let rcmsg = &*cmsg; match (rcmsg.cmsg_level, rcmsg.cmsg_type) { (libc::IPPROTO_IP, libc::IP_ORIGDSTADDR) => { - ptr::copy_nonoverlapping( - libc::CMSG_DATA(cmsg), - dst_addr as *mut _, - mem::size_of::(), - ); + ptr::copy_nonoverlapping(libc::CMSG_DATA(cmsg), dst_addr, mem::size_of::()); *dst_addr_len = mem::size_of::() as libc::socklen_t; return Ok(()); @@ -331,7 +366,7 @@ fn recv_dest_from(socket: &UdpSocket, buf: &mut [u8]) -> io::Result<(usize, Sock } let (_, src_saddr) = SockAddr::try_init(|a, l| { - ptr::copy_nonoverlapping(msg.msg_name, a as *mut _, msg.msg_namelen as usize); + ptr::copy_nonoverlapping(msg.msg_name, a, msg.msg_namelen as usize); *l = msg.msg_namelen; Ok(()) })?; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs index ef84f3f..1a4906a 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/linux.rs @@ -73,9 +73,17 @@ impl UdpRedirSocket { socket.set_reuse_address(true)?; if reuse_port { if let Err(err) = socket.set_reuse_port(true) { - if let Some(libc::ENOPROTOOPT) = err.raw_os_error() { - // SO_REUSEPORT is supported after 3.9 - trace!("failed to set SO_REUSEPORT, error: {}", err); + if let Some(errno) = err.raw_os_error() { + match errno { + libc::ENOPROTOOPT => { + // SO_REUSEPORT is supported after 3.9 + trace!("failed to set SO_REUSEPORT, error: {}", err); + } + _ => { + error!("failed to set SO_REUSEPORT, error: {}", err); + return Err(err); + } + } } else { error!("failed to set SO_REUSEPORT, error: {}", err); return Err(err); diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs index 5bafa09..c11782b 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/macos.rs @@ -1,200 +1,52 @@ use std::{ - io::{self, Error, ErrorKind}, - mem, - net::{SocketAddr, UdpSocket}, - os::unix::io::AsRawFd, + io, + net::SocketAddr, task::{Context, Poll}, }; -use futures::{future::poll_fn, ready}; -use log::{error, trace, warn}; -use shadowsocks::net::is_dual_stack_addr; -use socket2::{Domain, Protocol, SockAddr, Socket, Type}; -use tokio::io::unix::AsyncFd; - use crate::{ config::RedirType, - local::redir::{ - redir_ext::{RedirSocketOpts, UdpSocketRedir}, - sys::{bsd_pf::PF, set_ipv6_only}, - }, + local::redir::redir_ext::{RedirSocketOpts, UdpSocketRedir}, }; -pub struct UdpRedirSocket { - io: AsyncFd, -} +pub struct UdpRedirSocket; impl UdpRedirSocket { /// Create a new UDP socket binded to `addr` /// /// This will allow listening to `addr` that is not in local host - pub fn listen(ty: RedirType, addr: SocketAddr) -> io::Result { - UdpRedirSocket::bind(ty, addr, false) + pub fn listen(_ty: RedirType, _addr: SocketAddr) -> io::Result { + unimplemented!("UDP transparent proxy is not supported on macOS, iOS, ...") } /// Create a new UDP socket binded to `addr` /// /// This will allow binding to `addr` that is not in local host - pub fn bind_nonlocal(ty: RedirType, addr: SocketAddr, _: &RedirSocketOpts) -> io::Result { - UdpRedirSocket::bind(ty, addr, true) - } - - fn bind(ty: RedirType, addr: SocketAddr, reuse_port: bool) -> io::Result { - if ty == RedirType::NotSupported { - return Err(Error::new( - ErrorKind::InvalidInput, - "not supported udp transparent proxy type", - )); - } - - let socket = Socket::new(Domain::for_address(addr), Type::DGRAM, Some(Protocol::UDP))?; - set_socket_before_bind(&addr, &socket)?; - - socket.set_nonblocking(true)?; - socket.set_reuse_address(true)?; - if reuse_port { - if let Err(err) = socket.set_reuse_port(true) { - if let Some(libc::ENOPROTOOPT) = err.raw_os_error() { - trace!("failed to set SO_REUSEPORT, error: {}", err); - } else { - error!("failed to set SO_REUSEPORT, error: {}", err); - return Err(err); - } - } - } - - let sock_addr = SockAddr::from(addr); - - if is_dual_stack_addr(&addr) { - // set IP_ORIGDSTADDR before bind() - - match set_ipv6_only(&socket, false) { - Ok(..) => { - if let Err(err) = socket.bind(&sock_addr) { - warn!( - "bind() dual-stack address {} failed, error: {}, fallback to IPV6_V6ONLY=true", - addr, err - ); - - if let Err(err) = set_ipv6_only(&socket, true) { - warn!( - "set IPV6_V6ONLY=true failed, error: {}, bind() to {} directly", - err, addr - ); - } - - socket.bind(&sock_addr)?; - } - } - Err(err) => { - warn!( - "set IPV6_V6ONLY=false failed, error: {}, bind() to {} directly", - err, addr - ); - socket.bind(&sock_addr)?; - } - } - } else { - socket.bind(&sock_addr)?; - } - - let io = AsyncFd::new(socket.into())?; - Ok(UdpRedirSocket { io }) + pub fn bind_nonlocal( + _ty: RedirType, + _addr: SocketAddr, + _redir_opts: &RedirSocketOpts, + ) -> io::Result { + unimplemented!("UDP transparent proxy is not supported on macOS, iOS, ...") } /// Send data to the socket to the given target address - pub async fn send_to(&self, buf: &[u8], target: SocketAddr) -> io::Result { - poll_fn(|cx| self.poll_send_to(cx, buf, target)).await - } - - fn poll_send_to(&self, cx: &mut Context<'_>, buf: &[u8], target: SocketAddr) -> Poll> { - loop { - let mut write_guard = ready!(self.io.poll_write_ready(cx))?; - - match self.io.get_ref().send_to(buf, target) { - Err(ref e) if e.kind() == ErrorKind::WouldBlock => { - write_guard.clear_ready(); - } - x => return Poll::Ready(x), - } - } + pub async fn send_to(&self, _buf: &[u8], _target: SocketAddr) -> io::Result { + unimplemented!("UDP transparent proxy is not supported on macOS, iOS, ...") } /// Returns the local address that this socket is bound to. pub fn local_addr(&self) -> io::Result { - self.io.get_ref().local_addr() + unimplemented!("UDP transparent proxy is not supported on macOS, iOS, ...") } } impl UdpSocketRedir for UdpRedirSocket { fn poll_recv_dest_from( &self, - cx: &mut Context<'_>, - buf: &mut [u8], + _cx: &mut Context<'_>, + _buf: &mut [u8], ) -> Poll> { - loop { - let mut read_guard = ready!(self.io.poll_read_ready(cx))?; - - let (n, peer_addr) = match self.io.get_ref().recv_from(buf) { - Err(ref e) if e.kind() == ErrorKind::WouldBlock => { - read_guard.clear_ready(); - continue; - } - Err(e) => return Err(e).into(), - Ok(x) => x, - }; - - let bind_addr = self.local_addr()?; - let actual_addr = PF.natlook(&bind_addr, &peer_addr, Protocol::UDP)?; - - return Ok((n, peer_addr, actual_addr)).into(); - } + unimplemented!("UDP transparent proxy is not supported on macOS, iOS, ...") } } - -fn set_disable_ip_fragmentation(level: libc::c_int, socket: &Socket) -> io::Result<()> { - // https://www.freebsd.org/cgi/man.cgi?query=ip&sektion=4&manpath=FreeBSD+9.0-RELEASE - - // sys/netinet/in.h - // const IP_DONTFRAG: libc::c_int = 67; // don't fragment packet - // - // sys/netinet6/in6.h - // const IPV6_DONTFRAG: libc::c_int = 62; // bool; disable IPv6 fragmentation - - let enable: libc::c_int = 1; - - let opt = match level { - libc::IPPROTO_IP => libc::IP_DONTFRAG, - libc::IPPROTO_IPV6 => libc::IPV6_DONTFRAG, - _ => unreachable!("level can only be IPPROTO_IP or IPPROTO_IPV6"), - }; - - unsafe { - let ret = libc::setsockopt( - socket.as_raw_fd(), - level, - opt, - &enable as *const _ as *const _, - mem::size_of_val(&enable) as libc::socklen_t, - ); - - if ret < 0 { - return Err(io::Error::last_os_error()); - } - } - - Ok(()) -} - -fn set_socket_before_bind(addr: &SocketAddr, socket: &Socket) -> io::Result<()> { - // https://www.freebsd.org/cgi/man.cgi?query=ip&sektion=4&manpath=FreeBSD+9.0-RELEASE - let level = match *addr { - SocketAddr::V4(..) => libc::IPPROTO_IP, - SocketAddr::V6(..) => libc::IPPROTO_IPV6, - }; - - // 1. disable IP fragmentation - set_disable_ip_fragmentation(level, socket)?; - - Ok(()) -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/mod.rs index cc0f074..c3b07f5 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/mod.rs @@ -7,12 +7,9 @@ cfg_if! { } else if #[cfg(target_os = "macos")] { mod macos; pub use self::macos::*; - } else if #[cfg(any(target_os = "freebsd"))] { - mod freebsd; - pub use self::freebsd::*; - } else if #[cfg(target_os = "openbsd")] { - mod openbsd; - pub use self::openbsd::*; + } else if #[cfg(any(target_os = "freebsd", target_os = "openbsd"))] { + mod bsd; + pub use self::bsd::*; } else { mod not_supported; pub use self::not_supported::*; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/not_supported.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/not_supported.rs index 49b0a4e..e5b92b9 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/not_supported.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/not_supported.rs @@ -1,8 +1,4 @@ -use std::{ - io, - net::SocketAddr, - task::{Context, Poll}, -}; +use std::{io, net::SocketAddr}; use crate::{ config::RedirType, diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/openbsd.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/openbsd.rs deleted file mode 100644 index a11285c..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/redir/udprelay/sys/unix/openbsd.rs +++ /dev/null @@ -1,352 +0,0 @@ -use std::{ - io::{self, Error, ErrorKind}, - mem, - net::{SocketAddr, UdpSocket}, - os::unix::io::AsRawFd, - ptr, - task::{Context, Poll}, -}; - -use futures::{future::poll_fn, ready}; -use log::{error, trace, warn}; -use shadowsocks::net::is_dual_stack_addr; -use socket2::{Domain, Protocol, SockAddr, Socket, Type}; -use tokio::io::unix::AsyncFd; - -use crate::{ - config::RedirType, - local::redir::{ - redir_ext::{RedirSocketOpts, UdpSocketRedir}, - sys::set_ipv6_only, - }, -}; -const IP_RECVDSTPORT: i32 = 33; // Temporary workaround until libc supports this -const IPV6_RECVDSTPORT: i32 = 64; // Temporary workaround until libc supports this - -pub struct UdpRedirSocket { - io: AsyncFd, -} - -impl UdpRedirSocket { - /// Create a new UDP socket binded to `addr` - /// - /// This will allow listening to `addr` that is not in local host - pub fn listen(ty: RedirType, addr: SocketAddr) -> io::Result { - UdpRedirSocket::bind(ty, addr, false) - } - - /// Create a new UDP socket binded to `addr` - /// - /// This will allow binding to `addr` that is not in local host - pub fn bind_nonlocal(ty: RedirType, addr: SocketAddr, _: &RedirSocketOpts) -> io::Result { - UdpRedirSocket::bind(ty, addr, true) - } - - fn bind(ty: RedirType, addr: SocketAddr, reuse_port: bool) -> io::Result { - if ty == RedirType::NotSupported { - return Err(Error::new( - ErrorKind::InvalidInput, - "not supported udp transparent proxy type", - )); - } - - let socket = Socket::new(Domain::for_address(addr), Type::DGRAM, Some(Protocol::UDP))?; - set_socket_before_bind(&addr, &socket)?; - - socket.set_nonblocking(true)?; - socket.set_reuse_address(true)?; - if reuse_port { - if let Err(err) = socket.set_reuse_port(true) { - if let Some(libc::ENOPROTOOPT) = err.raw_os_error() { - trace!("failed to set SO_REUSEPORT, error: {}", err); - } else { - error!("failed to set SO_REUSEPORT, error: {}", err); - return Err(err); - } - } - } - - let sock_addr = SockAddr::from(addr); - - if is_dual_stack_addr(&addr) { - // set IP_ORIGDSTADDR before bind() - - // NOTE: FreeBSD doesn't allow setting IPPROTO_IP level on an IPv6 socket - // - // set_ip_origdstaddr(libc::IPPROTO_IP, &socket)?; - // set_disable_ip_fragmentation(libc::IPPROTO_IP, &socket)?; - - match set_ipv6_only(&socket, false) { - Ok(..) => { - if let Err(err) = socket.bind(&sock_addr) { - warn!( - "bind() dual-stack address {} failed, error: {}, fallback to IPV6_V6ONLY=true", - addr, err - ); - - if let Err(err) = set_ipv6_only(&socket, true) { - warn!( - "set IPV6_V6ONLY=true failed, error: {}, bind() to {} directly", - err, addr - ); - } - - socket.bind(&sock_addr)?; - } - } - Err(err) => { - warn!( - "set IPV6_V6ONLY=false failed, error: {}, bind() to {} directly", - err, addr - ); - socket.bind(&sock_addr)?; - } - } - } else { - socket.bind(&sock_addr)?; - } - - let io = AsyncFd::new(socket.into())?; - Ok(UdpRedirSocket { io }) - } - - /// Send data to the socket to the given target address - pub async fn send_to(&self, buf: &[u8], target: SocketAddr) -> io::Result { - poll_fn(|cx| self.poll_send_to(cx, buf, target)).await - } - - fn poll_send_to(&self, cx: &mut Context<'_>, buf: &[u8], target: SocketAddr) -> Poll> { - loop { - let mut write_guard = ready!(self.io.poll_write_ready(cx))?; - - match self.io.get_ref().send_to(buf, target) { - Err(ref e) if e.kind() == ErrorKind::WouldBlock => { - write_guard.clear_ready(); - } - x => return Poll::Ready(x), - } - } - } - - /// Returns the local address that this socket is bound to. - pub fn local_addr(&self) -> io::Result { - self.io.get_ref().local_addr() - } -} - -impl UdpSocketRedir for UdpRedirSocket { - fn poll_recv_dest_from( - &self, - cx: &mut Context<'_>, - buf: &mut [u8], - ) -> Poll> { - loop { - let mut read_guard = ready!(self.io.poll_read_ready(cx))?; - - match recv_dest_from(self.io.get_ref(), buf) { - Err(ref e) if e.kind() == ErrorKind::WouldBlock => { - read_guard.clear_ready(); - } - x => return Poll::Ready(x), - } - } - } -} - -fn set_bindany(_level: libc::c_int, socket: &Socket) -> io::Result<()> { - let fd = socket.as_raw_fd(); - - let enable: libc::c_int = 1; - - // https://man.openbsd.org/getsockopt.2 - unsafe { - let ret = libc::setsockopt( - fd, - libc::SOL_SOCKET, - libc::SO_BINDANY, - &enable as *const _ as *const _, - mem::size_of_val(&enable) as libc::socklen_t, - ); - if ret != 0 { - return Err(Error::last_os_error()); - } - } - - Ok(()) -} - -fn set_ip_origdstaddr(level: libc::c_int, socket: &Socket) -> io::Result<()> { - // https://man.openbsd.org/pf.conf - let fd = socket.as_raw_fd(); - - let enable: libc::c_int = 1; - - let opt = match level { - libc::IPPROTO_IP => libc::IP_RECVDSTADDR, - libc::IPPROTO_IPV6 => libc::IPV6_RECVPKTINFO, - _ => unreachable!("level can only be IPPROTO_IP or IPPROTO_IPV6"), - }; - - unsafe { - let ret = libc::setsockopt( - fd, - level, - opt, - &enable as *const _ as *const _, - mem::size_of_val(&enable) as libc::socklen_t, - ); - if ret != 0 { - return Err(Error::last_os_error()); - } - } - - let opt2 = match level { - libc::IPPROTO_IP => IP_RECVDSTPORT, - libc::IPPROTO_IPV6 => IPV6_RECVDSTPORT, - _ => unreachable!("level can only be IPPROTO_IP or IPPROTO_IPV6"), - }; - unsafe { - let ret = libc::setsockopt( - fd, - level, - opt2, - &enable as *const _ as *const _, - mem::size_of_val(&enable) as libc::socklen_t, - ); - if ret != 0 { - return Err(Error::last_os_error()); - } - } - Ok(()) -} - -fn set_socket_before_bind(addr: &SocketAddr, socket: &Socket) -> io::Result<()> { - // https://www.freebsd.org/cgi/man.cgi?query=ip&sektion=4&manpath=FreeBSD+9.0-RELEASE - let level = match *addr { - SocketAddr::V4(..) => libc::IPPROTO_IP, - SocketAddr::V6(..) => libc::IPPROTO_IPV6, - }; - - // 1. BINDANY - set_bindany(level, socket)?; - - // 2. set ORIGDSTADDR for retrieving original destination address - set_ip_origdstaddr(level, socket)?; - - Ok(()) -} - -fn get_destination_addr(msg: &libc::msghdr) -> io::Result { - unsafe { - let (_, addr) = SockAddr::try_init(|dst_addr, dst_addr_len| { - let mut cmsg: *mut libc::cmsghdr = libc::CMSG_FIRSTHDR(msg); - let mut addr_or_port_received = false; // The address should come first and then the port, but we use a flag just in case. https://github.com/openbsd/src/blob/3d310523b415eeee9db46a5b67eecf8f9fdd5c8f/sys/netinet/udp_usrreq.c#L662-L687 - while !cmsg.is_null() { - let rcmsg = &*cmsg; - match (rcmsg.cmsg_level, rcmsg.cmsg_type) { - (libc::IPPROTO_IP, libc::IP_RECVDSTADDR) => { - let toaddr_in = &mut *(dst_addr as *mut libc::sockaddr_in); - ptr::copy_nonoverlapping( - libc::CMSG_DATA(cmsg), - &(*toaddr_in).sin_addr as *const _ as *mut _, - mem::size_of::(), - ); - toaddr_in.sin_family = libc::AF_INET as u8; - *dst_addr_len = mem::size_of::() as libc::socklen_t; - if addr_or_port_received { - return Ok(()); - } else { - addr_or_port_received = true - } - } - (libc::IPPROTO_IP, IP_RECVDSTPORT) => { - let toaddr_in = &mut *(dst_addr as *mut libc::sockaddr_in); - ptr::copy_nonoverlapping( - libc::CMSG_DATA(cmsg), - &(*toaddr_in).sin_port as *const _ as *mut _, - mem::size_of::(), - ); - if addr_or_port_received { - return Ok(()); - } else { - addr_or_port_received = true - } - } - (libc::IPPROTO_IPV6, libc::IPV6_PKTINFO) => { - let toaddr_in = &mut *(dst_addr as *mut libc::sockaddr_in6); - ptr::copy_nonoverlapping( - libc::CMSG_DATA(cmsg), - &(*toaddr_in).sin6_addr as *const _ as *mut _, - mem::size_of::(), - ); - toaddr_in.sin6_family = libc::AF_INET6 as u8; - *dst_addr_len = mem::size_of::() as libc::socklen_t; - if addr_or_port_received { - return Ok(()); - } else { - addr_or_port_received = true - } - } - (libc::IPPROTO_IPV6, IPV6_RECVDSTPORT) => { - let toaddr_in = &mut *(dst_addr as *mut libc::sockaddr_in6); - ptr::copy_nonoverlapping( - libc::CMSG_DATA(cmsg), - &(*toaddr_in).sin6_port as *const _ as *mut _, - mem::size_of::(), - ); - if addr_or_port_received { - return Ok(()); - } else { - addr_or_port_received = true - } - } - _ => {} - } - cmsg = libc::CMSG_NXTHDR(msg, cmsg); - } - let err = Error::new(ErrorKind::InvalidData, "missing destination address in msghdr"); - Err(err) - })?; - - Ok(addr.as_socket().expect("SocketAddr")) - } -} - -fn recv_dest_from(socket: &UdpSocket, buf: &mut [u8]) -> io::Result<(usize, SocketAddr, SocketAddr)> { - unsafe { - let mut control_buf = [0u8; 64]; - let mut src_addr: libc::sockaddr_storage = mem::zeroed(); - - let mut msg: libc::msghdr = mem::zeroed(); - msg.msg_name = &mut src_addr as *mut _ as *mut _; - msg.msg_namelen = mem::size_of_val(&src_addr) as libc::socklen_t; - - let mut iov = libc::iovec { - iov_base: buf.as_mut_ptr() as *mut _, - iov_len: buf.len() as libc::size_t, - }; - msg.msg_iov = &mut iov; - msg.msg_iovlen = 1; - - msg.msg_control = control_buf.as_mut_ptr() as *mut _; - msg.msg_controllen = control_buf.len() as libc::socklen_t; - - let fd = socket.as_raw_fd(); - let ret = libc::recvmsg(fd, &mut msg, 0); - if ret < 0 { - return Err(Error::last_os_error()); - } - - let (_, src_saddr) = SockAddr::try_init(|a, l| { - ptr::copy_nonoverlapping(msg.msg_name, a as *mut _, msg.msg_namelen as usize); - *l = msg.msg_namelen; - Ok(()) - })?; - - Ok(( - ret as usize, - src_saddr.as_socket().expect("SocketAddr"), - get_destination_addr(&msg)?, - )) - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/client/socks5/tcp_client.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/client/socks5/tcp_client.rs index 4d7a868..fb1ae60 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/client/socks5/tcp_client.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/client/socks5/tcp_client.rs @@ -9,7 +9,15 @@ use std::{ use log::trace; use pin_project::pin_project; use shadowsocks::relay::socks5::{ - self, Address, Command, Error, HandshakeRequest, HandshakeResponse, Reply, TcpRequestHeader, TcpResponseHeader, + self, + Address, + Command, + Error, + HandshakeRequest, + HandshakeResponse, + Reply, + TcpRequestHeader, + TcpResponseHeader, }; use tokio::{ io::{AsyncRead, AsyncWrite, ReadBuf}, diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/client/socks5/udp_client.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/client/socks5/udp_client.rs index 4eed1b1..4804707 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/client/socks5/udp_client.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/client/socks5/udp_client.rs @@ -70,7 +70,7 @@ impl Socks5UdpClient { send_buf.put_slice(buf); let n = self.socket.send(&send_buf).await?; - Ok(n.saturating_sub(header_len)) + Ok(if n <= header_len { 0 } else { n - header_len }) } /// Returns a future that receives a single datagram on the socket. On success, the future resolves to the number of bytes read and the origin. diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/mod.rs index 0e060a3..edbb5cf 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/mod.rs @@ -2,8 +2,8 @@ use std::{io, sync::Arc, time::Duration}; -use futures::{FutureExt, future}; -use shadowsocks::{ServerAddr, config::Mode}; +use futures::{future, FutureExt}; +use shadowsocks::{config::Mode, ServerAddr}; use crate::local::{context::ServiceContext, loadbalancing::PingBalancer}; @@ -25,7 +25,6 @@ pub struct SocksBuilder { udp_expiry_duration: Option, udp_capacity: Option, udp_bind_addr: Option, - udp_associate_addr: Option, socks5_auth: Socks5AuthConfig, client_config: ServerAddr, balancer: PingBalancer, @@ -54,7 +53,6 @@ impl SocksBuilder { udp_expiry_duration: None, udp_capacity: None, udp_bind_addr: None, - udp_associate_addr: None, socks5_auth: Socks5AuthConfig::default(), client_config, balancer, @@ -88,10 +86,6 @@ impl SocksBuilder { self.udp_bind_addr = Some(a); } - pub fn set_udp_associate_addr(&mut self, a: ServerAddr) { - self.udp_associate_addr = Some(a); - } - /// Set SOCKS5 Username/Password Authentication configuration pub fn set_socks5_auth(&mut self, p: Socks5AuthConfig) { self.socks5_auth = p; @@ -110,20 +104,14 @@ impl SocksBuilder { } pub async fn build(self) -> io::Result { - let udp_bind_addr = self.udp_bind_addr.clone().unwrap_or_else(|| self.client_config.clone()); - let udp_associate_addr: ServerAddr = self - .udp_associate_addr - .as_ref() - .or(self.udp_bind_addr.as_ref()) - .unwrap_or(&self.client_config) - .clone(); + let udp_bind_addr = self.udp_bind_addr.unwrap_or_else(|| self.client_config.clone()); let mut udp_server = None; if self.mode.enable_udp() { #[allow(unused_mut)] let mut builder = Socks5UdpServerBuilder::new( self.context.clone(), - udp_bind_addr, + udp_bind_addr.clone(), self.udp_expiry_duration, self.udp_capacity, self.balancer.clone(), @@ -144,7 +132,7 @@ impl SocksBuilder { let mut builder = SocksTcpServerBuilder::new( self.context.clone(), self.client_config, - udp_associate_addr, + udp_bind_addr, self.balancer.clone(), self.mode, self.socks5_auth, diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/server.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/server.rs index 7ee47db..2afd6e3 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/server.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/server.rs @@ -1,7 +1,7 @@ use std::{io, net::SocketAddr, sync::Arc, time::Duration}; use log::{error, info}; -use shadowsocks::{ServerAddr, config::Mode, net::TcpListener as ShadowTcpListener}; +use shadowsocks::{config::Mode, net::TcpListener as ShadowTcpListener, ServerAddr}; use tokio::{net::TcpStream, time}; #[cfg(feature = "local-http")] @@ -18,7 +18,7 @@ use super::socks5::{Socks5TcpHandler, Socks5UdpServer}; pub struct SocksTcpServerBuilder { context: Arc, client_config: ServerAddr, - udp_associate_addr: ServerAddr, + udp_bind_addr: ServerAddr, balancer: PingBalancer, mode: Mode, socks5_auth: Arc, @@ -30,7 +30,7 @@ impl SocksTcpServerBuilder { pub(crate) fn new( context: Arc, client_config: ServerAddr, - udp_associate_addr: ServerAddr, + udp_bind_addr: ServerAddr, balancer: PingBalancer, mode: Mode, socks5_auth: Socks5AuthConfig, @@ -38,7 +38,7 @@ impl SocksTcpServerBuilder { SocksTcpServerBuilder { context, client_config, - udp_associate_addr, + udp_bind_addr, balancer, mode, socks5_auth: Arc::new(socks5_auth), @@ -56,17 +56,15 @@ impl SocksTcpServerBuilder { pub async fn build(self) -> io::Result { cfg_if::cfg_if! { if #[cfg(target_os = "macos")] { - let listener = match self.launchd_socket_name { - Some(launchd_socket_name) => { - use tokio::net::TcpListener as TokioTcpListener; - use crate::net::launch_activate_socket::get_launch_activate_tcp_listener; - - let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name, true)?; - let tokio_listener = TokioTcpListener::from_std(std_listener)?; - ShadowTcpListener::from_listener(tokio_listener, self.context.accept_opts())? - } _ => { - create_standard_tcp_listener(&self.context, &self.client_config).await? - } + let listener = if let Some(launchd_socket_name) = self.launchd_socket_name { + use tokio::net::TcpListener as TokioTcpListener; + use crate::net::launch_activate_socket::get_launch_activate_tcp_listener; + + let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name)?; + let tokio_listener = TokioTcpListener::from_std(std_listener)?; + ShadowTcpListener::from_listener(tokio_listener, self.context.accept_opts())? + } else { + create_standard_tcp_listener(&self.context, &self.client_config).await? }; } else { let listener = create_standard_tcp_listener(&self.context, &self.client_config).await?; @@ -76,7 +74,7 @@ impl SocksTcpServerBuilder { Ok(SocksTcpServer { context: self.context, listener, - udp_associate_addr: self.udp_associate_addr, + udp_bind_addr: self.udp_bind_addr, balancer: self.balancer, mode: self.mode, socks5_auth: self.socks5_auth, @@ -88,7 +86,7 @@ impl SocksTcpServerBuilder { pub struct SocksTcpServer { context: Arc, listener: ShadowTcpListener, - udp_associate_addr: ServerAddr, + udp_bind_addr: ServerAddr, balancer: PingBalancer, mode: Mode, socks5_auth: Arc, @@ -105,7 +103,7 @@ impl SocksTcpServer { info!("shadowsocks socks TCP listening on {}", self.listener.local_addr()?); // If UDP is enabled, SOCK5 UDP_ASSOCIATE command will let client to send requests to this address - let udp_associate_addr = Arc::new(self.udp_associate_addr); + let udp_bind_addr = Arc::new(self.udp_bind_addr); #[cfg(feature = "local-http")] let http_handler = HttpConnectionHandler::new(self.context.clone(), self.balancer.clone()); @@ -121,7 +119,7 @@ impl SocksTcpServer { let handler = SocksTcpHandler { context: self.context.clone(), - udp_associate_addr: udp_associate_addr.clone(), + udp_bind_addr: udp_bind_addr.clone(), stream, balancer: self.balancer.clone(), peer_addr, @@ -142,7 +140,7 @@ impl SocksTcpServer { struct SocksTcpHandler { context: Arc, - udp_associate_addr: Arc, + udp_bind_addr: Arc, stream: TcpStream, balancer: PingBalancer, peer_addr: SocketAddr, @@ -157,7 +155,7 @@ impl SocksTcpHandler { async fn handle_tcp_client(self) -> io::Result<()> { let handler = Socks5TcpHandler::new( self.context, - self.udp_associate_addr, + self.udp_bind_addr, self.balancer, self.mode, self.socks5_auth, @@ -178,19 +176,14 @@ impl SocksTcpHandler { match version_buffer[0] { #[cfg(feature = "local-socks4")] 0x04 => { - if self.socks5_auth.auth_required() { - error!("SOCKS4 disabled when authentication is configured"); - Err(io::Error::new(ErrorKind::Other, "SOCKS4 unsupported")) - } else { - let handler = Socks4TcpHandler::new(self.context, self.balancer, self.mode); - handler.handle_socks4_client(self.stream, self.peer_addr).await - } + let handler = Socks4TcpHandler::new(self.context, self.balancer, self.mode); + handler.handle_socks4_client(self.stream, self.peer_addr).await } 0x05 => { let handler = Socks5TcpHandler::new( self.context, - self.udp_associate_addr, + self.udp_bind_addr, self.balancer, self.mode, self.socks5_auth, @@ -200,17 +193,12 @@ impl SocksTcpHandler { #[cfg(feature = "local-http")] b'G' | b'g' | b'H' | b'h' | b'P' | b'p' | b'D' | b'd' | b'C' | b'c' | b'O' | b'o' | b'T' | b't' => { - if self.socks5_auth.auth_required() { - error!("HTTP disabled when authentication is configured"); - Err(io::Error::new(ErrorKind::Other, "HTTP unsupported")) - } else { - // GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH - match self.http_handler.serve_connection(self.stream, self.peer_addr).await { - Ok(..) => Ok(()), - Err(err) => { - error!("HTTP connection {} handler failed with error: {}", self.peer_addr, err); - Err(io::Error::new(ErrorKind::Other, err)) - } + // GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH + match self.http_handler.serve_connection(self.stream, self.peer_addr).await { + Ok(..) => Ok(()), + Err(err) => { + error!("HTTP connection {} handler failed with error: {}", self.peer_addr, err); + Err(io::Error::new(ErrorKind::Other, err)) } } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks4/tcprelay.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks4/tcprelay.rs index 34dc290..7a8c973 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks4/tcprelay.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks4/tcprelay.rs @@ -21,7 +21,12 @@ use crate::local::{ }; use crate::local::socks::socks4::{ - Address, Command, Error as Socks4Error, HandshakeRequest, HandshakeResponse, ResultCode, + Address, + Command, + Error as Socks4Error, + HandshakeRequest, + HandshakeResponse, + ResultCode, }; pub struct Socks4TcpHandler { @@ -97,13 +102,7 @@ impl Socks4TcpHandler { } else { let server = self.balancer.best_tcp_server(); - let r = AutoProxyClientStream::connect_with_opts( - self.context, - &server, - &target_addr, - server.connect_opts_ref(), - ) - .await; + let r = AutoProxyClientStream::connect(self.context, &server, &target_addr).await; server_opt = Some(server); r diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks5/tcprelay.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks5/tcprelay.rs index f4c61c8..cd24b1b 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks5/tcprelay.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks5/tcprelay.rs @@ -9,12 +9,21 @@ use std::{ use log::{debug, error, trace, warn}; use shadowsocks::{ - ServerAddr, config::Mode, relay::socks5::{ - self, Address, Command, Error as Socks5Error, HandshakeRequest, HandshakeResponse, PasswdAuthRequest, - PasswdAuthResponse, Reply, TcpRequestHeader, TcpResponseHeader, + self, + Address, + Command, + Error as Socks5Error, + HandshakeRequest, + HandshakeResponse, + PasswdAuthRequest, + PasswdAuthResponse, + Reply, + TcpRequestHeader, + TcpResponseHeader, }, + ServerAddr, }; use tokio::net::TcpStream; @@ -31,7 +40,7 @@ use crate::{ pub struct Socks5TcpHandler { context: Arc, - udp_associate_addr: Arc, + udp_bind_addr: Arc, balancer: PingBalancer, mode: Mode, auth: Arc, @@ -40,14 +49,14 @@ pub struct Socks5TcpHandler { impl Socks5TcpHandler { pub fn new( context: Arc, - udp_associate_addr: Arc, + udp_bind_addr: Arc, balancer: PingBalancer, mode: Mode, auth: Arc, ) -> Socks5TcpHandler { Socks5TcpHandler { context, - udp_associate_addr, + udp_bind_addr, balancer, mode, auth, @@ -124,7 +133,7 @@ impl Socks5TcpHandler { return Err(Error::new( ErrorKind::Other, - "Username/Password Authentication Initial request uname contains invalid characters", + "Username/Password Authentication Initial request uname contains invaid characters", )); } }; @@ -137,7 +146,7 @@ impl Socks5TcpHandler { return Err(Error::new( ErrorKind::Other, - "Username/Password Authentication Initial request passwd contains invalid characters", + "Username/Password Authentication Initial request passwd contains invaid characters", )); } }; @@ -145,7 +154,8 @@ impl Socks5TcpHandler { if self.auth.passwd.check_user(user_name, password) { trace!( "socks5 authenticated with Username/Password method, user: {}, password: {}", - user_name, password + user_name, + password ); let rsp = PasswdAuthResponse::new(0); @@ -244,13 +254,7 @@ impl Socks5TcpHandler { } else { let server = self.balancer.best_tcp_server(); - let r = AutoProxyClientStream::connect_with_opts( - self.context, - &server, - &target_addr, - server.connect_opts_ref(), - ) - .await; + let r = AutoProxyClientStream::connect(self.context.clone(), &server, &target_addr).await; server_opt = Some(server); r @@ -303,7 +307,7 @@ impl Socks5TcpHandler { // shadowsocks accepts both TCP and UDP from the same address - let rh = TcpResponseHeader::new(socks5::Reply::Succeeded, self.udp_associate_addr.as_ref().into()); + let rh = TcpResponseHeader::new(socks5::Reply::Succeeded, self.udp_bind_addr.as_ref().into()); rh.write_to(&mut stream).await?; // Hold connection until EOF. diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks5/udprelay.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks5/udprelay.rs index 54e5234..4c313d0 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks5/udprelay.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/server/socks5/udprelay.rs @@ -7,15 +7,16 @@ use std::{ time::Duration, }; +use async_trait::async_trait; use byte_string::ByteStr; use bytes::{BufMut, BytesMut}; use log::{debug, error, info, trace}; use shadowsocks::{ - ServerAddr, relay::{ socks5::{Address, UdpAssociateHeader}, udprelay::MAXIMUM_UDP_PAYLOAD_SIZE, }, + ServerAddr, }; use tokio::{net::UdpSocket, time}; @@ -23,7 +24,7 @@ use crate::{ local::{ context::ServiceContext, loadbalancing::PingBalancer, - net::{UdpAssociationManager, UdpInboundWrite, udp::listener::create_standard_udp_listener}, + net::{udp::listener::create_standard_udp_listener, UdpAssociationManager, UdpInboundWrite}, }, net::utils::to_ipv4_mapped, }; @@ -66,16 +67,14 @@ impl Socks5UdpServerBuilder { pub async fn build(self) -> io::Result { cfg_if::cfg_if! { if #[cfg(target_os = "macos")] { - let socket = match self.launchd_socket_name { - Some(launchd_socket_name) => { - use tokio::net::UdpSocket as TokioUdpSocket; - use crate::net::launch_activate_socket::get_launch_activate_udp_socket; - - let std_socket = get_launch_activate_udp_socket(&launchd_socket_name, true)?; - TokioUdpSocket::from_std(std_socket)? - } _ => { - create_standard_udp_listener(&self.context, &self.client_config).await?.into() - } + let socket = if let Some(launchd_socket_name) = self.launchd_socket_name { + use tokio::net::UdpSocket as TokioUdpSocket; + use crate::net::launch_activate_socket::get_launch_activate_udp_socket; + + let std_socket = get_launch_activate_udp_socket(&launchd_socket_name)?; + TokioUdpSocket::from_std(std_socket)? + } else { + create_standard_udp_listener(&self.context, &self.client_config).await?.into() }; } else { let socket = create_standard_udp_listener(&self.context, &self.client_config).await?.into(); @@ -97,6 +96,7 @@ struct Socks5UdpInboundWriter { inbound: Arc, } +#[async_trait] impl UdpInboundWrite for Socks5UdpInboundWriter { async fn send_to(&self, peer_addr: SocketAddr, remote_addr: &Address, data: &[u8]) -> io::Result<()> { let remote_addr = match remote_addr { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/socks4.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/socks4.rs index 0959a70..bffec97 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/socks4.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/socks/socks4.rs @@ -19,14 +19,14 @@ use shadowsocks::relay::socks5; #[rustfmt::skip] mod consts { - pub const SOCKS4_VERSION: u8 = 4; + pub const SOCKS4_VERSION: u8 = 4; - pub const SOCKS4_COMMAND_CONNECT: u8 = 1; - pub const SOCKS4_COMMAND_BIND: u8 = 2; + pub const SOCKS4_COMMAND_CONNECT: u8 = 1; + pub const SOCKS4_COMMAND_BIND: u8 = 2; - pub const SOCKS4_RESULT_REQUEST_GRANTED: u8 = 90; - pub const SOCKS4_RESULT_REQUEST_REJECTED_OR_FAILED: u8 = 91; - pub const SOCKS4_RESULT_REQUEST_REJECTED_CANNOT_CONNECT: u8 = 92; + pub const SOCKS4_RESULT_REQUEST_GRANTED: u8 = 90; + pub const SOCKS4_RESULT_REQUEST_REJECTED_OR_FAILED: u8 = 91; + pub const SOCKS4_RESULT_REQUEST_REJECTED_CANNOT_CONNECT: u8 = 92; pub const SOCKS4_RESULT_REQUEST_REJECTED_DIFFERENT_USER_ID: u8 = 93; } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/fake_tun.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/fake_tun.rs deleted file mode 100644 index 5392020..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/fake_tun.rs +++ /dev/null @@ -1,300 +0,0 @@ -//! Fake `tun` for those platforms that doesn't support `tun` - -#![allow(dead_code)] - -use std::{ - io::{self, Read, Write}, - net::IpAddr, - ops::{Deref, DerefMut}, - pin::Pin, - task::{Context, Poll}, -}; - -use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; - -/// TUN interface OSI layer of operation. -#[derive(Clone, Copy, Default, Debug, Eq, PartialEq)] -pub enum Layer { - L2, - #[default] - L3, -} - -/// Configuration builder for a TUN interface. -#[derive(Clone, Default, Debug)] -pub struct Configuration; - -impl Configuration { - /// Set the tun name. - /// - /// [Note: on macOS, the tun name must be the form `utunx` where `x` is a number, such as `utun3`. -- end note] - pub fn tun_name>(&mut self, _tun_name: S) -> &mut Self { - self - } - - /// Set the address. - pub fn address(&mut self, _value: IpAddr) -> &mut Self { - self - } - - /// Set the destination address. - pub fn destination(&mut self, _value: IpAddr) -> &mut Self { - self - } - - /// Set the broadcast address. - pub fn broadcast(&mut self, _value: IpAddr) -> &mut Self { - self - } - - /// Set the netmask. - pub fn netmask(&mut self, _value: IpAddr) -> &mut Self { - self - } - - /// Set the MTU. - pub fn mtu(&mut self, _value: u16) -> &mut Self { - self - } - - /// Set the interface to be enabled once created. - pub fn up(&mut self) -> &mut Self { - self - } - - /// Set the interface to be disabled once created. - pub fn down(&mut self) -> &mut Self { - self - } - - /// Set the OSI layer of operation. - pub fn layer(&mut self, _value: Layer) -> &mut Self { - self - } - - /// Set the raw fd. - #[cfg(unix)] - pub fn raw_fd(&mut self, _fd: ::std::os::fd::RawFd) -> &mut Self { - self - } -} - -/// tun Error type -#[derive(thiserror::Error, Debug)] -pub enum Error { - #[error("not implementated")] - NotImplemented, - - #[error(transparent)] - Io(#[from] std::io::Error), -} - -pub type Result = ::std::result::Result; - -/// A TUN abstract device interface. -pub trait AbstractDevice: Read + Write { - /// Reconfigure the device. - fn configure(&mut self, _config: &Configuration) -> Result<()> { - Ok(()) - } - - /// Get the device index. - fn tun_index(&self) -> Result; - - /// Get the device tun name. - fn tun_name(&self) -> Result; - - /// Set the device tun name. - fn set_tun_name(&mut self, tun_name: &str) -> Result<()>; - - /// Turn on or off the interface. - fn enabled(&mut self, value: bool) -> Result<()>; - - /// Get the address. - fn address(&self) -> Result; - - /// Set the address. - fn set_address(&mut self, value: IpAddr) -> Result<()>; - - /// Get the destination address. - fn destination(&self) -> Result; - - /// Set the destination address. - fn set_destination(&mut self, value: IpAddr) -> Result<()>; - - /// Get the broadcast address. - fn broadcast(&self) -> Result; - - /// Set the broadcast address. - fn set_broadcast(&mut self, value: IpAddr) -> Result<()>; - - /// Get the netmask. - fn netmask(&self) -> Result; - - /// Set the netmask. - fn set_netmask(&mut self, value: IpAddr) -> Result<()>; - - /// Get the MTU. - fn mtu(&self) -> Result; - - /// Set the MTU. - /// - /// [Note: This setting has no effect on the Windows platform due to the mtu of wintun is always 65535. --end note] - fn set_mtu(&mut self, value: u16) -> Result<()>; - - /// Return whether the underlying tun device on the platform has packet information - /// - /// [Note: This value is not used to specify whether the packets delivered from/to tun have packet information. -- end note] - fn packet_information(&self) -> bool; -} - -pub struct FakeQueue; - -impl Read for FakeQueue { - fn read(&mut self, _: &mut [u8]) -> io::Result { - Err(io::Error::new(io::ErrorKind::Other, "not implemented")) - } -} - -impl Write for FakeQueue { - fn write(&mut self, _: &[u8]) -> io::Result { - Err(io::Error::new(io::ErrorKind::Other, "not implemented")) - } - - fn flush(&mut self) -> io::Result<()> { - Err(io::Error::new(io::ErrorKind::Other, "not implemented")) - } -} - -pub struct FakeDevice; - -impl AbstractDevice for FakeDevice { - fn tun_name(&self) -> Result { - Err(Error::NotImplemented) - } - - fn tun_index(&self) -> Result { - Err(Error::NotImplemented) - } - - fn set_tun_name(&mut self, _: &str) -> Result<()> { - Err(Error::NotImplemented) - } - - fn enabled(&mut self, _: bool) -> Result<()> { - Err(Error::NotImplemented) - } - - fn address(&self) -> Result { - Err(Error::NotImplemented) - } - - fn set_address(&mut self, _: IpAddr) -> Result<()> { - Err(Error::NotImplemented) - } - - fn destination(&self) -> Result { - Err(Error::NotImplemented) - } - - fn set_destination(&mut self, _: IpAddr) -> Result<()> { - Err(Error::NotImplemented) - } - - fn broadcast(&self) -> Result { - Err(Error::NotImplemented) - } - - fn set_broadcast(&mut self, _: IpAddr) -> Result<()> { - Err(Error::NotImplemented) - } - - fn netmask(&self) -> Result { - Err(Error::NotImplemented) - } - - fn set_netmask(&mut self, _: IpAddr) -> Result<()> { - Err(Error::NotImplemented) - } - - fn mtu(&self) -> Result { - Err(Error::NotImplemented) - } - - fn set_mtu(&mut self, _: u16) -> Result<()> { - Err(Error::NotImplemented) - } - - fn packet_information(&self) -> bool { - false - } -} - -impl Read for FakeDevice { - fn read(&mut self, _: &mut [u8]) -> io::Result { - Err(io::Error::new(io::ErrorKind::Other, "not implemented")) - } -} - -impl Write for FakeDevice { - fn write(&mut self, _: &[u8]) -> io::Result { - Err(io::Error::new(io::ErrorKind::Other, "not implemented")) - } - - fn flush(&mut self) -> io::Result<()> { - Err(io::Error::new(io::ErrorKind::Other, "not implemented")) - } -} - -pub struct AsyncDevice(FakeDevice); - -impl AsRef for AsyncDevice { - fn as_ref(&self) -> &FakeDevice { - &self.0 - } -} - -impl AsMut for AsyncDevice { - fn as_mut(&mut self) -> &mut FakeDevice { - &mut self.0 - } -} - -impl Deref for AsyncDevice { - type Target = FakeDevice; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl DerefMut for AsyncDevice { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } -} - -impl AsyncRead for AsyncDevice { - fn poll_read(self: Pin<&mut Self>, _cx: &mut Context<'_>, _buf: &mut ReadBuf<'_>) -> Poll> { - Err(io::Error::new(io::ErrorKind::Other, "not implemented")).into() - } -} - -impl AsyncWrite for AsyncDevice { - fn poll_write(self: Pin<&mut Self>, _cx: &mut Context<'_>, _buf: &[u8]) -> Poll> { - Err(io::Error::new(io::ErrorKind::Other, "not implemented")).into() - } - - fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { - Err(io::Error::new(io::ErrorKind::Other, "not implemented")).into() - } - - fn poll_shutdown(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll> { - Err(io::Error::new(io::ErrorKind::Other, "not implemented")).into() - } -} - -/// Create a TUN device with the given name. -pub fn create_as_async(_: &Configuration) -> Result { - Err(Error::NotImplemented) -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/ip_packet.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/ip_packet.rs index 1ec076f..3f9fabf 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/ip_packet.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/ip_packet.rs @@ -1,6 +1,6 @@ //! IP packet encapsulation -use std::net::IpAddr; +use std::net::{IpAddr, Ipv4Addr, Ipv6Addr}; use smoltcp::wire::{IpProtocol, IpVersion, Ipv4Packet, Ipv6Packet}; @@ -21,15 +21,15 @@ impl + Copy> IpPacket { pub fn src_addr(&self) -> IpAddr { match *self { - IpPacket::Ipv4(ref packet) => IpAddr::from(packet.src_addr()), - IpPacket::Ipv6(ref packet) => IpAddr::from(packet.src_addr()), + IpPacket::Ipv4(ref packet) => IpAddr::from(Ipv4Addr::from(packet.src_addr())), + IpPacket::Ipv6(ref packet) => IpAddr::from(Ipv6Addr::from(packet.src_addr())), } } pub fn dst_addr(&self) -> IpAddr { match *self { - IpPacket::Ipv4(ref packet) => IpAddr::from(packet.dst_addr()), - IpPacket::Ipv6(ref packet) => IpAddr::from(packet.dst_addr()), + IpPacket::Ipv4(ref packet) => IpAddr::from(Ipv4Addr::from(packet.dst_addr())), + IpPacket::Ipv6(ref packet) => IpAddr::from(Ipv6Addr::from(packet.dst_addr())), } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/mod.rs index 2f9f82f..e5cbf65 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/mod.rs @@ -4,47 +4,30 @@ use std::os::unix::io::RawFd; use std::{ io::{self, ErrorKind}, - mem, - net::{IpAddr, SocketAddr}, + net::{IpAddr, Ipv4Addr, SocketAddr}, sync::Arc, time::Duration, }; use byte_string::ByteStr; -use cfg_if::cfg_if; -use ipnet::IpNet; +use ipnet::{IpNet, Ipv4Net}; use log::{debug, error, info, trace, warn}; use shadowsocks::config::Mode; use smoltcp::wire::{IpProtocol, TcpPacket, UdpPacket}; -use tokio::{ - io::{AsyncReadExt, AsyncWriteExt}, - sync::mpsc, - time, -}; - -cfg_if! { - if #[cfg(any(target_os = "ios", - target_os = "macos", - target_os = "linux", - target_os = "android", - target_os = "windows", - target_os = "freebsd"))] { - use tun::{ - create_as_async, AsyncDevice, Configuration as TunConfiguration, AbstractDevice, Error as TunError, Layer, - }; - } else { - mod fake_tun; - use self::fake_tun::{ - AbstractDevice, AsyncDevice, Configuration as TunConfiguration, Error as TunError, Layer, create_as_async, - }; - } -} +use tokio::{io::AsyncReadExt, sync::mpsc, time}; +use tun::{AsyncDevice, Configuration as TunConfiguration, Device as TunDevice, Error as TunError, Layer}; use crate::local::{context::ServiceContext, loadbalancing::PingBalancer}; -use self::{ip_packet::IpPacket, tcp::TcpTun, udp::UdpTun, virt_device::TokenBuffer}; +use self::{ + ip_packet::IpPacket, + sys::{write_packet_with_pi, IFF_PI_PREFIX_LEN}, + tcp::TcpTun, + udp::UdpTun, +}; mod ip_packet; +mod sys; mod tcp; mod udp; mod virt_device; @@ -59,9 +42,6 @@ pub struct TunBuilder { mode: Mode, } -/// TunConfiguration contains a HANDLE, which is a *mut c_void on Windows. -unsafe impl Send for TunBuilder {} - impl TunBuilder { /// Create a Tun service builder pub fn new(context: Arc, balancer: PingBalancer) -> TunBuilder { @@ -84,7 +64,7 @@ impl TunBuilder { } pub fn name(&mut self, name: &str) { - self.tun_config.tun_name(name); + self.tun_config.name(name); } #[cfg(unix)] @@ -108,15 +88,13 @@ impl TunBuilder { pub async fn build(mut self) -> io::Result { self.tun_config.layer(Layer::L3).up(); - // XXX: tun2 set IFF_NO_PI by default. - // - // #[cfg(target_os = "linux")] - // self.tun_config.platform_config(|tun_config| { - // // IFF_NO_PI preventing excessive buffer reallocating - // tun_config.packet_information(false); - // }); + #[cfg(any(target_os = "linux"))] + self.tun_config.platform(|tun_config| { + // IFF_NO_PI preventing excessive buffer reallocating + tun_config.packet_information(false); + }); - let device = match create_as_async(&self.tun_config) { + let device = match tun::create_as_async(&self.tun_config) { Ok(d) => d, Err(TunError::Io(err)) => return Err(err), Err(err) => return Err(io::Error::new(ErrorKind::Other, err)), @@ -129,7 +107,11 @@ impl TunBuilder { self.udp_capacity, ); - let tcp = TcpTun::new(self.context, self.balancer, device.mtu().unwrap_or(1500) as u32); + let tcp = TcpTun::new( + self.context, + self.balancer, + device.get_ref().mtu().unwrap_or(1500) as u32, + ); Ok(Tun { device, @@ -155,13 +137,21 @@ pub struct Tun { impl Tun { /// Start serving pub async fn run(mut self) -> io::Result<()> { + if let Ok(mtu) = self.device.get_ref().mtu() { + assert!(mtu > 0 && mtu as usize > IFF_PI_PREFIX_LEN); + } + info!( "shadowsocks tun device {}, mode {}", - self.device.tun_name().or_else(|r| Ok::<_, ()>(r.to_string())).unwrap(), + self.device + .get_ref() + .name() + .or_else(|r| Ok::<_, ()>(r.to_string())) + .unwrap(), self.mode, ); - let address = match self.device.address() { + let address = match self.device.get_ref().address() { Ok(a) => a, Err(err) => { error!("[TUN] failed to get device address, error: {}", err); @@ -169,7 +159,7 @@ impl Tun { } }; - let netmask = match self.device.netmask() { + let netmask = match self.device.get_ref().netmask() { Ok(n) => n, Err(err) => { error!("[TUN] failed to get device netmask, error: {}", err); @@ -177,7 +167,7 @@ impl Tun { } }; - let address_net = match IpNet::with_netmask(address, netmask) { + let address_net = match Ipv4Net::with_netmask(address, netmask) { Ok(n) => n, Err(err) => { error!("[TUN] invalid address {}, netmask {}, error: {}", address, netmask, err); @@ -187,21 +177,14 @@ impl Tun { trace!( "[TUN] tun device network: {} (address: {}, netmask: {})", - address_net, address, netmask + address_net, + address, + netmask ); let address_broadcast = address_net.broadcast(); - let create_packet_buffer = || { - const PACKET_BUFFER_SIZE: usize = 65536; - let mut packet_buffer = TokenBuffer::with_capacity(PACKET_BUFFER_SIZE); - unsafe { - packet_buffer.set_len(PACKET_BUFFER_SIZE); - } - packet_buffer - }; - - let mut packet_buffer = create_packet_buffer(); + let mut packet_buffer = vec![0u8; 65536 + IFF_PI_PREFIX_LEN].into_boxed_slice(); let mut udp_cleanup_timer = time::interval(self.udp_cleanup_interval); loop { @@ -210,31 +193,28 @@ impl Tun { n = self.device.read(&mut packet_buffer) => { let n = n?; - let mut packet_buffer = mem::replace(&mut packet_buffer, create_packet_buffer()); - unsafe { - packet_buffer.set_len(n); + if n <= IFF_PI_PREFIX_LEN { + error!( + "[TUN] packet too short, packet: {:?}", + ByteStr::new(&packet_buffer[..n]) + ); + continue; } - trace!("[TUN] received IP packet {:?}", ByteStr::new(&packet_buffer)); + let packet = &mut packet_buffer[IFF_PI_PREFIX_LEN..n]; + trace!("[TUN] received IP packet {:?}", ByteStr::new(packet)); - if let Err(err) = self.handle_tun_frame(&address_broadcast, packet_buffer).await { + if let Err(err) = self.handle_tun_frame(&address_broadcast, packet).await { error!("[TUN] handle IP frame failed, error: {}", err); } } // UDP channel sent back packet = self.udp.recv_packet() => { - match self.device.write(&packet).await { - Ok(n) => { - if n < packet.len() { - warn!("[TUN] sent IP packet (UDP), but truncated. sent {} < {}, {:?}", n, packet.len(), ByteStr::new(&packet)); - } else { - trace!("[TUN] sent IP packet (UDP) {:?}", ByteStr::new(&packet)); - } - } - Err(err) => { - error!("[TUN] failed to set packet information, error: {}, {:?}", err, ByteStr::new(&packet)); - } + if let Err(err) = write_packet_with_pi(&mut self.device, &packet).await { + error!("[TUN] failed to set packet information, error: {}, {:?}", err, ByteStr::new(&packet)); + } else { + trace!("[TUN] sent IP packet (UDP) {:?}", ByteStr::new(&packet)); } } @@ -251,55 +231,47 @@ impl Tun { // TCP channel sent back packet = self.tcp.recv_packet() => { - match self.device.write(&packet).await { - Ok(n) => { - if n < packet.len() { - warn!("[TUN] sent IP packet (TCP), but truncated. sent {} < {}, {:?}", n, packet.len(), ByteStr::new(&packet)); - } else { - trace!("[TUN] sent IP packet (TCP) {:?}", ByteStr::new(&packet)); - } - } - Err(err) => { - error!("[TUN] failed to set packet information, error: {}, {:?}", err, ByteStr::new(&packet)); - } + if let Err(err) = write_packet_with_pi(&mut self.device, &packet).await { + error!("[TUN] failed to set packet information, error: {}, {:?}", err, ByteStr::new(&packet)); + } else { + trace!("[TUN] sent IP packet (TCP) {:?}", ByteStr::new(&packet)); } } } } } - async fn handle_tun_frame( - &mut self, - device_broadcast_addr: &IpAddr, - frame: TokenBuffer, - ) -> smoltcp::wire::Result<()> { - let packet = match IpPacket::new_checked(frame.as_ref())? { + async fn handle_tun_frame(&mut self, device_broadcast_addr: &Ipv4Addr, frame: &[u8]) -> smoltcp::wire::Result<()> { + let packet = match IpPacket::new_checked(frame)? { Some(packet) => packet, None => { - warn!("unrecognized IP packet {:?}", ByteStr::new(&frame)); + warn!("unrecognized IP packet {:?}", ByteStr::new(frame)); return Ok(()); } }; - trace!("[TUN] {:?}", packet); - let src_ip_addr = packet.src_addr(); let dst_ip_addr = packet.dst_addr(); - let src_non_unicast = src_ip_addr == *device_broadcast_addr - || match src_ip_addr { - IpAddr::V4(v4) => v4.is_broadcast() || v4.is_multicast() || v4.is_unspecified(), - IpAddr::V6(v6) => v6.is_multicast() || v6.is_unspecified(), - }; - let dst_non_unicast = dst_ip_addr == *device_broadcast_addr - || match dst_ip_addr { - IpAddr::V4(v4) => v4.is_broadcast() || v4.is_multicast() || v4.is_unspecified(), - IpAddr::V6(v6) => v6.is_multicast() || v6.is_unspecified(), - }; + let src_non_unicast = match src_ip_addr { + IpAddr::V4(v4) => { + v4.is_broadcast() || v4.is_multicast() || v4.is_unspecified() || v4 == *device_broadcast_addr + } + IpAddr::V6(v6) => v6.is_multicast() || v6.is_unspecified(), + }; + let dst_non_unicast = match dst_ip_addr { + IpAddr::V4(v4) => { + v4.is_broadcast() || v4.is_multicast() || v4.is_unspecified() || v4 == *device_broadcast_addr + } + IpAddr::V6(v6) => v6.is_multicast() || v6.is_unspecified(), + }; if src_non_unicast || dst_non_unicast { trace!( "[TUN] IP packet {} (unicast? {}) -> {} (unicast? {}) throwing away", - src_ip_addr, !src_non_unicast, dst_ip_addr, !dst_non_unicast + src_ip_addr, + !src_non_unicast, + dst_ip_addr, + !dst_non_unicast ); return Ok(()); } @@ -333,7 +305,11 @@ impl Tun { trace!( "[TUN] TCP packet {} (unicast? {}) -> {} (unicast? {}) {}", - src_addr, !src_non_unicast, dst_addr, !dst_non_unicast, tcp_packet + src_addr, + !src_non_unicast, + dst_addr, + !dst_non_unicast, + tcp_packet ); // TCP first handshake packet. @@ -375,7 +351,11 @@ impl Tun { let payload = udp_packet.payload(); trace!( "[TUN] UDP packet {} (unicast? {}) -> {} (unicast? {}) {}", - src_addr, !src_non_unicast, dst_addr, !dst_non_unicast, udp_packet + src_addr, + !src_non_unicast, + dst_addr, + !dst_non_unicast, + udp_packet ); if let Err(err) = self.udp.handle_packet(src_addr, dst_addr, payload).await { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/mod.rs new file mode 100644 index 0000000..2750726 --- /dev/null +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/mod.rs @@ -0,0 +1,13 @@ +#![allow(unused)] + +use cfg_if::cfg_if; + +cfg_if! { + if #[cfg(unix)] { + mod unix; + pub use self::unix::*; + } else if #[cfg(windows)] { + mod windows; + pub use self::windows::*; + } +} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/android.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/android.rs new file mode 100644 index 0000000..23f8714 --- /dev/null +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/android.rs @@ -0,0 +1,21 @@ +use std::{io, marker::Unpin}; + +use tokio::io::{AsyncWrite, AsyncWriteExt}; +use tun::platform::Device as TunDevice; + +/// Packet Information length in bytes +/// +/// Tun device on Android doesn't have Packet Information header, so ther is no prefix headers +pub const IFF_PI_PREFIX_LEN: usize = 0; + +/// Writing packet with packet information +/// +/// Tun device on Android doesn't have Packet Information header, so there is nothing to prepend on Linux +pub async fn write_packet_with_pi(writer: &mut W, packet: &[u8]) -> io::Result<()> { + writer.write_all(packet).await +} + +/// Set platform specific route configuration +pub async fn set_route_configuration(_device: &TunDevice) -> io::Result<()> { + Ok(()) +} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/apple/macos.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/apple/macos.rs new file mode 100644 index 0000000..5c19ec0 --- /dev/null +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/apple/macos.rs @@ -0,0 +1,177 @@ +use std::{ + ffi::CStr, + io::{self, ErrorKind}, + mem, + ptr, +}; + +use log::{error, trace}; +use tun::{platform::Device as TunDevice, Device, Error as TunError}; + +/// These numbers are used by reliable protocols for determining +/// retransmission behavior and are included in the routing structure. +#[repr(C)] +#[allow(non_camel_case_types)] +#[derive(Debug, Clone, Copy)] +struct rt_metrics { + rmx_locks: u32, //< Kernel must leave these values alone + rmx_mtu: u32, //< MTU for this path + rmx_hopcount: u32, //< max hops expected + rmx_expire: i32, //< lifetime for route, e.g. redirect + rmx_recvpipe: u32, //< inbound delay-bandwidth product + rmx_sendpipe: u32, //< outbound delay-bandwidth product + rmx_ssthresh: u32, //< outbound gateway buffer limit + rmx_rtt: u32, //< estimated round trip time + rmx_rttvar: u32, //< estimated rtt variance + rmx_pksent: u32, //< packets sent using this route + rmx_state: u32, //< route state + rmx_filler: [u32; 3], //< will be used for T/TCP later +} + +/// Structures for routing messages. +#[repr(C)] +#[allow(non_camel_case_types)] +#[derive(Debug, Clone, Copy)] +struct rt_msghdr { + rtm_msglen: libc::c_ushort, //< to skip over non-understood messages + rtm_version: libc::c_uchar, //< future binary compatibility + rtm_type: libc::c_uchar, //< message type + rtm_index: libc::c_ushort, //< index for associated ifp + rtm_flags: libc::c_int, //< flags, incl. kern & message, e.g. DONE + rtm_addrs: libc::c_int, //< bitmask identifying sockaddrs in msg + rtm_pid: libc::pid_t, //< identify sender + rtm_seq: libc::c_int, //< for sender to identify action + rtm_errno: libc::c_int, //< why failed + rtm_use: libc::c_int, //< from rtentry + rtm_inits: u32, //< which metrics we are initializing + rtm_rmx: rt_metrics, //< metrics themselves +} + +#[repr(C)] +#[allow(non_camel_case_types)] +#[derive(Debug, Clone, Copy)] +struct rt_msg { + rtm: rt_msghdr, + dst: libc::sockaddr_in, + gateway: libc::sockaddr_dl, + netmask: libc::sockaddr_in, +} + +/// Set platform specific route configuration +pub async fn set_route_configuration(device: &TunDevice) -> io::Result<()> { + let tun_address = match device.address() { + Ok(t) => t, + Err(err) => { + error!("tun device doesn't have address, error: {}", err); + return Err(io::Error::new(ErrorKind::Other, err)); + } + }; + + let tun_netmask = match device.netmask() { + Ok(m) => m, + Err(err) => { + error!("tun device doesn't have netmask, error: {}", err); + return Err(io::Error::new(ErrorKind::Other, err)); + } + }; + + let tun_name = match device.name() { + Ok(n) => n, + Err(err) => match err { + TunError::Io(err) => return Err(err), + e => return Err(io::Error::new(ErrorKind::Other, e)), + }, + }; + + // routing packets that saddr & daddr are in the subnet of the Tun interface + // + // This is only required for the TCP tunnel, and it is the default behavior on Linux + // + // https://opensource.apple.com/source/network_cmds/network_cmds-307.0.1/route.tproj/route.c.auto.html + + unsafe { + let mut rtmsg: rt_msg = mem::zeroed(); + rtmsg.rtm.rtm_type = libc::RTM_ADD as libc::c_uchar; + rtmsg.rtm.rtm_flags = libc::RTF_UP | libc::RTF_STATIC; + rtmsg.rtm.rtm_version = libc::RTM_VERSION as libc::c_uchar; + rtmsg.rtm.rtm_seq = rand::random(); + rtmsg.rtm.rtm_addrs = libc::RTA_DST | libc::RTA_GATEWAY | libc::RTA_NETMASK; + rtmsg.rtm.rtm_msglen = mem::size_of_val(&rtmsg) as libc::c_ushort; + rtmsg.rtm.rtm_pid = libc::getpid(); + + // Set address as destination addr + { + rtmsg.dst.sin_family = libc::AF_INET as libc::sa_family_t; + rtmsg.dst.sin_addr = libc::in_addr { + s_addr: u32::from_ne_bytes(tun_address.octets()), + }; + rtmsg.dst.sin_len = mem::size_of_val(&rtmsg.dst) as u8; + } + + // Get the interface's link address (sockaddr_dl) + let found_gateway = { + let mut found_ifaddr = false; + + let mut ifap: *mut libc::ifaddrs = ptr::null_mut(); + if libc::getifaddrs(&mut ifap) != 0 { + return Err(io::Error::last_os_error()); + } + + let mut ifa = ifap; + while !ifa.is_null() { + if !(*ifa).ifa_addr.is_null() && (*(*ifa).ifa_addr).sa_family as i32 == libc::AF_LINK { + let ifa_name = CStr::from_ptr((*ifa).ifa_name); + if ifa_name.to_bytes() == tun_name.as_bytes() { + // Found the link_addr of tun interface. + + let sdl: *mut libc::sockaddr_dl = (*ifa).ifa_addr as *mut _; + rtmsg.gateway = *sdl; + + found_ifaddr = true; + break; + } + } + + ifa = (*ifa).ifa_next; + } + libc::freeifaddrs(ifap); + + found_ifaddr + }; + + if !found_gateway { + error!("couldn't get interface \"{}\" AF_LINK address", tun_name); + return Err(io::Error::new( + ErrorKind::Other, + "couldn't get interface AF_LINK address", + )); + } + + // netmask + { + rtmsg.netmask.sin_family = libc::AF_INET as libc::sa_family_t; + rtmsg.netmask.sin_addr = libc::in_addr { + s_addr: u32::from_ne_bytes(tun_netmask.octets()), + }; + rtmsg.netmask.sin_len = mem::size_of_val(&rtmsg.netmask) as u8; + } + + trace!("add route {:?}", rtmsg); + + let fd = libc::socket(libc::PF_ROUTE, libc::SOCK_RAW, 0); + if fd < 0 { + return Err(io::Error::last_os_error()); + } + + let n = libc::write(fd, &mut rtmsg as *mut _ as *mut _, mem::size_of_val(&rtmsg)); + if n < 0 { + let err = io::Error::last_os_error(); + libc::close(fd); + return Err(err); + } + + libc::close(fd); + } + + Ok(()) +} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/apple/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/apple/mod.rs new file mode 100644 index 0000000..3aab8bf --- /dev/null +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/apple/mod.rs @@ -0,0 +1,64 @@ +use std::{ + io::{self, ErrorKind, IoSlice}, + marker::Unpin, +}; + +use cfg_if::cfg_if; +use tokio::io::{AsyncWrite, AsyncWriteExt}; + +cfg_if! { + if #[cfg(target_os = "macos")] { + mod macos; + pub use self::macos::*; + } else { + mod others; + pub use self::others::*; + } +} + +/// Packet Information length in bytes +pub const IFF_PI_PREFIX_LEN: usize = 4; + +/// Prepending Packet Information +/// +/// ``` +/// +--------+--------+--------+--------+ +/// | Flags (0) | Protocol | +/// +--------+--------+--------+--------+ +/// ``` +pub async fn write_packet_with_pi(writer: &mut W, packet: &[u8]) -> io::Result<()> { + if packet.is_empty() { + return Err(io::Error::new(ErrorKind::InvalidInput, "empty packet")); + } + + let mut header = [0u8; 4]; + + // Protocol, infer from the original packet + let protocol = match packet[0] >> 4 { + 4 => libc::PF_INET, + 6 => libc::PF_INET6, + _ => return Err(io::Error::new(ErrorKind::InvalidData, "neither an IPv4 or IPv6 packet")), + }; + + let protocol_buf = &mut header[2..]; + let protocol_bytes = (protocol as u16).to_be_bytes(); + protocol_buf.copy_from_slice(&protocol_bytes); + + let bufs = [IoSlice::new(&header), IoSlice::new(packet)]; + let n = writer.write_vectored(&bufs).await?; + + // Packets must be written together with the header + if n != header.len() + packet.len() { + return Err(io::Error::new( + ErrorKind::Other, + format!( + "write_vectored header {} bytes, packet {} bytes, but sent {} bytes", + header.len(), + packet.len(), + n + ), + )); + } + + Ok(()) +} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/apple/others.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/apple/others.rs new file mode 100644 index 0000000..7c28f6b --- /dev/null +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/apple/others.rs @@ -0,0 +1,8 @@ +use std::io; + +use tun::platform::Device as TunDevice; + +/// Set platform specific route configuration +pub async fn set_route_configuration(_device: &TunDevice) -> io::Result<()> { + Ok(()) +} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/bsd.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/bsd.rs new file mode 100644 index 0000000..6778972 --- /dev/null +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/bsd.rs @@ -0,0 +1,59 @@ +use std::{ + io::{self, ErrorKind, IoSlice}, + marker::Unpin, +}; + +use tokio::io::{AsyncWrite, AsyncWriteExt}; +use tun::platform::Device as TunDevice; + +/// Packet Information length in bytes +pub const IFF_PI_PREFIX_LEN: usize = 4; + +/// Prepending Packet Information +/// +/// ``` +/// +--------+--------+--------+--------+ +/// | Flags (0) | Protocol | +/// +--------+--------+--------+--------+ +/// ``` +pub async fn write_packet_with_pi(writer: &mut W, packet: &[u8]) -> io::Result<()> { + if packet.is_empty() { + return Err(io::Error::new(ErrorKind::InvalidInput, "empty packet")); + } + + let mut header = [0u8; 4]; + + // Protocol, infer from the original packet + let protocol = match packet[0] >> 4 { + 4 => libc::PF_INET, + 6 => libc::PF_INET6, + _ => return Err(io::Error::new(ErrorKind::InvalidData, "neither an IPv4 or IPv6 packet")), + }; + + let protocol_buf = &mut header[2..]; + let protocol_bytes = (protocol as u16).to_be_bytes(); + protocol_buf.copy_from_slice(&protocol_bytes); + + let bufs = [IoSlice::new(&header), IoSlice::new(packet)]; + let n = writer.write_vectored(&bufs).await?; + + // Packets must be written together with the header + if n != header.len() + packet.len() { + return Err(io::Error::new( + ErrorKind::Other, + format!( + "write_vectored header {} bytes, packet {} bytes, but sent {} bytes", + header.len(), + packet.len(), + n + ), + )); + } + + Ok(()) +} + +/// Set platform specific route configuration +pub async fn set_route_configuration(_device: &TunDevice) -> io::Result<()> { + Ok(()) +} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/linux.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/linux.rs new file mode 100644 index 0000000..15447d3 --- /dev/null +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/linux.rs @@ -0,0 +1,21 @@ +use std::{io, marker::Unpin}; + +use tokio::io::{AsyncWrite, AsyncWriteExt}; +use tun::platform::Device as TunDevice; + +/// Packet Information length in bytes +/// +/// Tun device have set `IFF_NO_PI`, so ther is no prefix headers +pub const IFF_PI_PREFIX_LEN: usize = 0; + +/// Writing packet with packet information +/// +/// Tun device have set `IFF_NO_PI`, so there is nothing to prepend on Linux +pub async fn write_packet_with_pi(writer: &mut W, packet: &[u8]) -> io::Result<()> { + writer.write_all(packet).await +} + +/// Set platform specific route configuration +pub async fn set_route_configuration(_device: &TunDevice) -> io::Result<()> { + Ok(()) +} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/mod.rs new file mode 100644 index 0000000..e618d66 --- /dev/null +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/mod.rs @@ -0,0 +1,17 @@ +use cfg_if::cfg_if; + +cfg_if! { + if #[cfg(any(target_os = "linux"))] { + mod linux; + pub use self::linux::*; + } else if #[cfg(target_vendor = "apple")] { + mod apple; + pub use self::apple::*; + } else if #[cfg(any(target_os = "freebsd", target_os = "openbsd"))] { + mod bsd; + pub use self::bsd::*; + } else if #[cfg(target_os = "android")] { + mod android; + pub use self::android::*; + } +} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/windows/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/windows/mod.rs new file mode 100644 index 0000000..9b50862 --- /dev/null +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/windows/mod.rs @@ -0,0 +1,21 @@ +use std::{io, marker::Unpin}; + +use tokio::io::{AsyncWrite, AsyncWriteExt}; +use tun::platform::Device as TunDevice; + +/// Packet Information length in bytes +/// +/// Tun device on Windows (https://wintun.net) doesn't have Packet Information header, so there is no prefix headers +pub const IFF_PI_PREFIX_LEN: usize = 0; + +/// Writing packet with packet information +/// +/// Tun device on Windows (https://wintun.net) doesn't have Packet Information header, so there is nothing to prepend on Windows +pub async fn write_packet_with_pi(writer: &mut W, packet: &[u8]) -> io::Result<()> { + writer.write_all(packet).await +} + +/// Set platform specific route configuration +pub async fn set_route_configuration(_device: &TunDevice) -> io::Result<()> { + Ok(()) +} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/tcp.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/tcp.rs index 11eda65..f0b121d 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/tcp.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/tcp.rs @@ -1,13 +1,12 @@ use std::{ collections::HashMap, - future::Future, io::{self, ErrorKind}, mem, net::{IpAddr, SocketAddr}, pin::Pin, sync::{ - Arc, atomic::{AtomicBool, Ordering}, + Arc, }, task::{Context, Poll, Waker}, thread::{self, JoinHandle, Thread}, @@ -17,9 +16,9 @@ use std::{ use log::{debug, error, trace}; use shadowsocks::{net::TcpSocketOpts, relay::socks5::Address}; use smoltcp::{ - iface::{Config as InterfaceConfig, Interface, PollResult, SocketHandle, SocketSet}, - phy::{Checksum, DeviceCapabilities, Medium}, - socket::tcp::{CongestionControl, Socket as TcpSocket, SocketBuffer as TcpSocketBuffer, State as TcpState}, + iface::{Config as InterfaceConfig, Interface, SocketHandle, SocketSet}, + phy::{DeviceCapabilities, Medium}, + socket::tcp::{Socket as TcpSocket, SocketBuffer as TcpSocketBuffer, State as TcpState}, storage::RingBuffer, time::{Duration as SmolDuration, Instant as SmolInstant}, wire::{HardwareAddress, IpAddress, IpCidr, Ipv4Address, Ipv6Address, TcpPacket}, @@ -27,7 +26,7 @@ use smoltcp::{ use spin::Mutex as SpinMutex; use tokio::{ io::{AsyncRead, AsyncWrite, ReadBuf}, - sync::{mpsc, oneshot}, + sync::mpsc, }; use crate::{ @@ -40,11 +39,11 @@ use crate::{ net::utils::to_ipv4_mapped, }; -use super::virt_device::{TokenBuffer, VirtTunDevice}; +use super::virt_device::VirtTunDevice; -// NOTE: Default buffer could contain 5 AEAD packets -const DEFAULT_TCP_SEND_BUFFER_SIZE: u32 = (0x3FFFu32 * 5).next_power_of_two(); -const DEFAULT_TCP_RECV_BUFFER_SIZE: u32 = (0x3FFFu32 * 5).next_power_of_two(); +// NOTE: Default buffer could contain 20 AEAD packets +const DEFAULT_TCP_SEND_BUFFER_SIZE: u32 = 0x3FFF * 20; +const DEFAULT_TCP_RECV_BUFFER_SIZE: u32 = 0x3FFF * 20; #[derive(Debug, Clone, Copy, Eq, PartialEq)] enum TcpSocketState { @@ -89,7 +88,6 @@ type SharedTcpConnectionControl = Arc>; struct TcpSocketCreation { control: SharedTcpConnectionControl, socket: TcpSocket<'static>, - socket_created_tx: oneshot::Sender<()>, } struct TcpConnection { @@ -119,7 +117,7 @@ impl TcpConnection { socket_creation_tx: &mpsc::UnboundedSender, manager_notify: Arc, tcp_opts: &TcpSocketOpts, - ) -> impl Future + use<> { + ) -> TcpConnection { let send_buffer_size = tcp_opts.send_buffer_size.unwrap_or(DEFAULT_TCP_SEND_BUFFER_SIZE); let recv_buffer_size = tcp_opts.recv_buffer_size.unwrap_or(DEFAULT_TCP_RECV_BUFFER_SIZE); @@ -131,19 +129,15 @@ impl TcpConnection { recv_state: TcpSocketState::Normal, send_state: TcpSocketState::Normal, })); - let (tx, rx) = oneshot::channel(); + let _ = socket_creation_tx.send(TcpSocketCreation { control: control.clone(), socket, - socket_created_tx: tx, }); - async move { - // waiting socket add to SocketSet - let _ = rx.await; - TcpConnection { - control, - manager_notify, - } + + TcpConnection { + control, + manager_notify, } } } @@ -169,7 +163,7 @@ impl AsyncRead for TcpConnection { return Poll::Pending; } - let recv_buf = unsafe { mem::transmute::<&mut [mem::MaybeUninit], &mut [u8]>(buf.unfilled_mut()) }; + let recv_buf = unsafe { mem::transmute::<_, &mut [u8]>(buf.unfilled_mut()) }; let n = control.recv_buffer.dequeue_slice(recv_buf); buf.advance(n); @@ -243,8 +237,8 @@ pub struct TcpTun { manager_socket_creation_tx: mpsc::UnboundedSender, manager_running: Arc, balancer: PingBalancer, - iface_rx: mpsc::UnboundedReceiver, - iface_tx: mpsc::UnboundedSender, + iface_rx: mpsc::UnboundedReceiver>, + iface_tx: mpsc::UnboundedSender>, iface_tx_avail: Arc, } @@ -261,11 +255,6 @@ impl TcpTun { let mut capabilities = DeviceCapabilities::default(); capabilities.medium = Medium::Ip; capabilities.max_transmission_unit = mtu as usize; - capabilities.checksum.ipv4 = Checksum::Tx; - capabilities.checksum.tcp = Checksum::Tx; - capabilities.checksum.udp = Checksum::Tx; - capabilities.checksum.icmpv4 = Checksum::Tx; - capabilities.checksum.icmpv6 = Checksum::Tx; let (mut device, iface_rx, iface_tx, iface_tx_avail) = VirtTunDevice::new(capabilities); @@ -303,185 +292,175 @@ impl TcpTun { let manager_handle = { let manager_running = manager_running.clone(); - thread::Builder::new() - .name("smoltcp-poll".to_owned()) - .spawn(move || { - let TcpSocketManager { - ref mut device, - ref mut iface, - ref mut sockets, - ref mut socket_creation_rx, - .. - } = manager; - - let mut socket_set = SocketSet::new(vec![]); - - while manager_running.load(Ordering::Relaxed) { - while let Ok(TcpSocketCreation { - control, - socket, - socket_created_tx: socket_create_tx, - }) = socket_creation_rx.try_recv() - { - let handle = socket_set.add(socket); - let _ = socket_create_tx.send(()); - sockets.insert(handle, control); - } + thread::spawn(move || { + let TcpSocketManager { + ref mut device, + ref mut iface, + ref mut sockets, + ref mut socket_creation_rx, + .. + } = manager; + + let mut socket_set = SocketSet::new(vec![]); + + while manager_running.load(Ordering::Relaxed) { + while let Ok(TcpSocketCreation { control, socket }) = socket_creation_rx.try_recv() { + let handle = socket_set.add(socket); + sockets.insert(handle, control); + } - let before_poll = SmolInstant::now(); - if let PollResult::SocketStateChanged = iface.poll(before_poll, device, &mut socket_set) { - trace!("VirtDevice::poll costed {}", SmolInstant::now() - before_poll); - } + let before_poll = SmolInstant::now(); + let updated_sockets = iface.poll(before_poll, device, &mut socket_set); - // Check all the sockets' status - let mut sockets_to_remove = Vec::new(); + if updated_sockets { + trace!("VirtDevice::poll costed {}", SmolInstant::now() - before_poll); + } - for (socket_handle, control) in sockets.iter() { - let socket_handle = *socket_handle; - let socket = socket_set.get_mut::(socket_handle); - let mut control = control.lock(); + // Check all the sockets' status + let mut sockets_to_remove = Vec::new(); - // Remove the socket only when it is in the closed state. - if socket.state() == TcpState::Closed { - sockets_to_remove.push(socket_handle); + for (socket_handle, control) in sockets.iter() { + let socket_handle = *socket_handle; + let socket = socket_set.get_mut::(socket_handle); + let mut control = control.lock(); - control.send_state = TcpSocketState::Closed; - control.recv_state = TcpSocketState::Closed; + // Remove the socket only when it is in the closed state. + if socket.state() == TcpState::Closed { + sockets_to_remove.push(socket_handle); - if let Some(waker) = control.send_waker.take() { - waker.wake(); - } - if let Some(waker) = control.recv_waker.take() { - waker.wake(); - } + control.send_state = TcpSocketState::Closed; + control.recv_state = TcpSocketState::Closed; - trace!("closed TCP connection"); - continue; + if let Some(waker) = control.send_waker.take() { + waker.wake(); + } + if let Some(waker) = control.recv_waker.take() { + waker.wake(); } - // SHUT_WR - if matches!(control.send_state, TcpSocketState::Close) - && socket.send_queue() == 0 - && control.send_buffer.is_empty() - { - trace!("closing TCP Write Half, {:?}", socket.state()); + trace!("closed TCP connection"); + continue; + } - // Close the socket. Set to FIN state - socket.close(); - control.send_state = TcpSocketState::Closing; + // SHUT_WR + if matches!(control.send_state, TcpSocketState::Close) { + trace!("closing TCP Write Half, {:?}", socket.state()); - // We can still process the pending buffer. - } + // Close the socket. Set to FIN state + socket.close(); + control.send_state = TcpSocketState::Closing; - // Check if readable - let mut wake_receiver = false; - while socket.can_recv() && !control.recv_buffer.is_full() { - let result = socket.recv(|buffer| { - let n = control.recv_buffer.enqueue_slice(buffer); - (n, ()) - }); - - match result { - Ok(..) => { - wake_receiver = true; - } - Err(err) => { - error!("socket recv error: {:?}, {:?}", err, socket.state()); + // We can still process the pending buffer. + } - // Don't know why. Abort the connection. - socket.abort(); + // Check if readable + let mut wake_receiver = false; + while socket.can_recv() && !control.recv_buffer.is_full() { + let result = socket.recv(|buffer| { + let n = control.recv_buffer.enqueue_slice(buffer); + (n, ()) + }); + + match result { + Ok(..) => { + wake_receiver = true; + } + Err(err) => { + error!("socket recv error: {:?}, {:?}", err, socket.state()); - if matches!(control.recv_state, TcpSocketState::Normal) { - control.recv_state = TcpSocketState::Closed; - } - wake_receiver = true; + // Don't know why. Abort the connection. + socket.abort(); - // The socket will be recycled in the next poll. - break; + if matches!(control.recv_state, TcpSocketState::Normal) { + control.recv_state = TcpSocketState::Closed; } + wake_receiver = true; + + // The socket will be recycled in the next poll. + break; } } + } - // If socket is not in ESTABLISH, FIN-WAIT-1, FIN-WAIT-2, - // the local client have closed our receiver. - if matches!(control.recv_state, TcpSocketState::Normal) - && !socket.may_recv() - && !matches!( - socket.state(), - TcpState::Listen - | TcpState::SynReceived - | TcpState::Established - | TcpState::FinWait1 - | TcpState::FinWait2 - ) - { - trace!("closed TCP Read Half, {:?}", socket.state()); - - // Let TcpConnection::poll_read returns EOF. - control.recv_state = TcpSocketState::Closed; - wake_receiver = true; - } + // If socket is not in ESTABLISH, FIN-WAIT-1, FIN-WAIT-2, + // the local client have closed our receiver. + if matches!(control.recv_state, TcpSocketState::Normal) + && !socket.may_recv() + && !matches!( + socket.state(), + TcpState::Listen + | TcpState::SynReceived + | TcpState::Established + | TcpState::FinWait1 + | TcpState::FinWait2 + ) + { + trace!("closed TCP Read Half, {:?}", socket.state()); - if wake_receiver && control.recv_waker.is_some() { - if let Some(waker) = control.recv_waker.take() { - waker.wake(); - } - } + // Let TcpConnection::poll_read returns EOF. + control.recv_state = TcpSocketState::Closed; + wake_receiver = true; + } - // Check if writable - let mut wake_sender = false; - while socket.can_send() && !control.send_buffer.is_empty() { - let result = socket.send(|buffer| { - let n = control.send_buffer.dequeue_slice(buffer); - (n, ()) - }); - - match result { - Ok(..) => { - wake_sender = true; - } - Err(err) => { - error!("socket send error: {:?}, {:?}", err, socket.state()); + if wake_receiver && control.recv_waker.is_some() { + if let Some(waker) = control.recv_waker.take() { + waker.wake(); + } + } - // Don't know why. Abort the connection. - socket.abort(); + // Check if writable + let mut wake_sender = false; + while socket.can_send() && !control.send_buffer.is_empty() { + let result = socket.send(|buffer| { + let n = control.send_buffer.dequeue_slice(buffer); + (n, ()) + }); + + match result { + Ok(..) => { + wake_sender = true; + } + Err(err) => { + error!("socket send error: {:?}, {:?}", err, socket.state()); - if matches!(control.send_state, TcpSocketState::Normal) { - control.send_state = TcpSocketState::Closed; - } - wake_sender = true; + // Don't know why. Abort the connection. + socket.abort(); - // The socket will be recycled in the next poll. - break; + if matches!(control.send_state, TcpSocketState::Normal) { + control.send_state = TcpSocketState::Closed; } - } - } + wake_sender = true; - if wake_sender && control.send_waker.is_some() { - if let Some(waker) = control.send_waker.take() { - waker.wake(); + // The socket will be recycled in the next poll. + break; } } } - for socket_handle in sockets_to_remove { - sockets.remove(&socket_handle); - socket_set.remove(socket_handle); + if wake_sender && control.send_waker.is_some() { + if let Some(waker) = control.send_waker.take() { + waker.wake(); + } } + } - if !device.recv_available() { - let next_duration = iface - .poll_delay(before_poll, &socket_set) - .unwrap_or(SmolDuration::from_millis(5)); - if next_duration != SmolDuration::ZERO { - thread::park_timeout(Duration::from(next_duration)); - } + for socket_handle in sockets_to_remove { + sockets.remove(&socket_handle); + socket_set.remove(socket_handle); + } + + if !device.recv_available() { + let next_duration = iface + .poll_delay(before_poll, &socket_set) + .unwrap_or(SmolDuration::from_millis(5)); + if next_duration != SmolDuration::ZERO { + thread::park_timeout(Duration::from(next_duration)); } } + } - trace!("VirtDevice::poll thread exited"); - }) - .unwrap() + trace!("VirtDevice::poll thread exited"); + }) }; let manager_notify = Arc::new(ManagerNotify::new(manager_handle.thread().clone())); @@ -521,8 +500,6 @@ impl TcpTun { socket.set_timeout(Some(SmolDuration::from_secs(7200))); // NO ACK delay // socket.set_ack_delay(None); - // Enable Cubic congestion control - socket.set_congestion_control(CongestionControl::Cubic); if let Err(err) = socket.listen(dst_addr) { return Err(io::Error::new(ErrorKind::Other, format!("listen error: {:?}", err))); @@ -541,7 +518,6 @@ impl TcpTun { let context = self.context.clone(); let balancer = self.balancer.clone(); tokio::spawn(async move { - let connection = connection.await; if let Err(err) = handle_redir_client(context, balancer, connection, src_addr, dst_addr).await { error!("TCP tunnel failure, {} <-> {}, error: {}", src_addr, dst_addr, err); } @@ -551,9 +527,9 @@ impl TcpTun { Ok(()) } - pub async fn drive_interface_state(&mut self, frame: TokenBuffer) { - if self.iface_tx.send(frame).is_err() { - panic!("interface send channel closed unexpectedly"); + pub async fn drive_interface_state(&mut self, frame: &[u8]) { + if let Err(..) = self.iface_tx.send(frame.to_vec()) { + panic!("interface send channel closed unexpectly"); } // Wake up and poll the interface. @@ -561,7 +537,7 @@ impl TcpTun { self.manager_notify.notify(); } - pub async fn recv_packet(&mut self) -> TokenBuffer { + pub async fn recv_packet(&mut self) -> Vec { match self.iface_rx.recv().await { Some(v) => v, None => unreachable!("channel closed unexpectedly"), @@ -572,7 +548,7 @@ impl TcpTun { /// Established Client Transparent Proxy /// /// This method must be called after handshaking with client (for example, socks5 handshaking) -async fn establish_client_tcp_redir( +async fn establish_client_tcp_redir<'a>( context: Arc, balancer: PingBalancer, mut stream: TcpConnection, @@ -587,8 +563,7 @@ async fn establish_client_tcp_redir( let server = balancer.best_tcp_server(); let svr_cfg = server.server_config(); - let mut remote = - AutoProxyClientStream::connect_with_opts(context, &server, addr, server.connect_opts_ref()).await?; + let mut remote = AutoProxyClientStream::connect(context, &server, addr).await?; establish_tcp_tunnel(svr_cfg, &mut stream, &mut remote, peer_addr, addr).await } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/udp.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/udp.rs index 2a25ba9..924f22a 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/udp.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/udp.rs @@ -5,6 +5,7 @@ use std::{ time::Duration, }; +use async_trait::async_trait; use bytes::{BufMut, BytesMut}; use etherparse::PacketBuilder; use log::debug; @@ -92,6 +93,7 @@ impl UdpTunInboundWriter { } } +#[async_trait] impl UdpInboundWrite for UdpTunInboundWriter { async fn send_to(&self, peer_addr: SocketAddr, remote_addr: &Address, data: &[u8]) -> io::Result<()> { let addr = match *remote_addr { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/virt_device.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/virt_device.rs index 9115e2f..1dafb66 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/virt_device.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tun/virt_device.rs @@ -2,16 +2,12 @@ use std::{ marker::PhantomData, - mem, - ops::{Deref, DerefMut}, sync::{ - Arc, Mutex, atomic::{AtomicBool, Ordering}, + Arc, }, }; -use bytes::BytesMut; -use once_cell::sync::Lazy; use smoltcp::{ phy::{self, Device, DeviceCapabilities}, time::Instant, @@ -20,8 +16,8 @@ use tokio::sync::mpsc; pub struct VirtTunDevice { capabilities: DeviceCapabilities, - in_buf: mpsc::UnboundedReceiver, - out_buf: mpsc::UnboundedSender, + in_buf: mpsc::UnboundedReceiver>, + out_buf: mpsc::UnboundedSender>, in_buf_avail: Arc, } @@ -31,8 +27,8 @@ impl VirtTunDevice { capabilities: DeviceCapabilities, ) -> ( Self, - mpsc::UnboundedReceiver, - mpsc::UnboundedSender, + mpsc::UnboundedReceiver>, + mpsc::UnboundedSender>, Arc, ) { let (iface_tx, iface_output) = mpsc::unbounded_channel(); @@ -66,7 +62,7 @@ impl Device for VirtTunDevice { if let Ok(buffer) = self.in_buf.try_recv() { let rx = Self::RxToken { buffer, - phantom_device: PhantomData, + phantom_device: PhantomData::default(), }; let tx = VirtTxToken(self); return Some((rx, tx)); @@ -76,7 +72,7 @@ impl Device for VirtTunDevice { } fn transmit(&mut self, _timestamp: Instant) -> Option> { - Some(VirtTxToken(self)) + return Some(VirtTxToken(self)); } fn capabilities(&self) -> DeviceCapabilities { @@ -85,85 +81,29 @@ impl Device for VirtTunDevice { } pub struct VirtRxToken<'a> { - buffer: TokenBuffer, + buffer: Vec, phantom_device: PhantomData<&'a VirtTunDevice>, } impl phy::RxToken for VirtRxToken<'_> { - fn consume(self, f: F) -> R + fn consume(mut self, f: F) -> R where - F: FnOnce(&[u8]) -> R, + F: FnOnce(&mut [u8]) -> R, { - f(&self.buffer) + f(&mut self.buffer[..]) } } pub struct VirtTxToken<'a>(&'a mut VirtTunDevice); -impl phy::TxToken for VirtTxToken<'_> { +impl<'a> phy::TxToken for VirtTxToken<'a> { fn consume(self, len: usize, f: F) -> R where F: FnOnce(&mut [u8]) -> R, { - let mut buffer = TokenBuffer::with_capacity(len); - unsafe { - buffer.set_len(len); - } - + let mut buffer = vec![0u8; len]; let result = f(&mut buffer); self.0.out_buf.send(buffer).expect("channel closed unexpectly"); result } } - -// Maximun number of TokenBuffer cached globally. -// -// Each of them has capacity 65536 (defined in tun/mod.rs), so 64 * 65536 = 4MB. -const TOKEN_BUFFER_LIST_MAX_SIZE: usize = 64; -static TOKEN_BUFFER_LIST: Lazy>> = Lazy::new(|| Mutex::new(Vec::new())); - -pub struct TokenBuffer { - buffer: BytesMut, -} - -impl Drop for TokenBuffer { - fn drop(&mut self) { - let mut list = TOKEN_BUFFER_LIST.lock().unwrap(); - if list.len() >= TOKEN_BUFFER_LIST_MAX_SIZE { - return; - } - - let empty_buffer = BytesMut::new(); - let mut buffer = mem::replace(&mut self.buffer, empty_buffer); - buffer.clear(); - - list.push(buffer); - } -} - -impl TokenBuffer { - pub fn with_capacity(cap: usize) -> TokenBuffer { - let mut list = TOKEN_BUFFER_LIST.lock().unwrap(); - if let Some(mut buffer) = list.pop() { - buffer.reserve(cap); - return TokenBuffer { buffer }; - } - TokenBuffer { - buffer: BytesMut::with_capacity(cap), - } - } -} - -impl Deref for TokenBuffer { - type Target = BytesMut; - - fn deref(&self) -> &Self::Target { - &self.buffer - } -} - -impl DerefMut for TokenBuffer { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.buffer - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/server.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/server.rs index 4b853ef..a20487b 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/server.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/server.rs @@ -2,8 +2,8 @@ use std::{io, sync::Arc, time::Duration}; -use futures::{FutureExt, future}; -use shadowsocks::{ServerAddr, config::Mode, relay::socks5::Address}; +use futures::{future, FutureExt}; +use shadowsocks::{config::Mode, relay::socks5::Address, ServerAddr}; use crate::local::{context::ServiceContext, loadbalancing::PingBalancer}; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/tcprelay.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/tcprelay.rs index 59f5d43..43bc864 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/tcprelay.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/tcprelay.rs @@ -3,13 +3,13 @@ use std::{io, net::SocketAddr, sync::Arc, time::Duration}; use log::{error, info, trace}; -use shadowsocks::{ServerAddr, net::TcpListener as ShadowTcpListener, relay::socks5::Address}; +use shadowsocks::{net::TcpListener as ShadowTcpListener, relay::socks5::Address, ServerAddr}; use tokio::{net::TcpStream, time}; use crate::local::{ context::ServiceContext, loadbalancing::PingBalancer, - net::{AutoProxyClientStream, tcp::listener::create_standard_tcp_listener}, + net::{tcp::listener::create_standard_tcp_listener, AutoProxyClientStream}, utils::{establish_tcp_tunnel, establish_tcp_tunnel_bypassed}, }; @@ -48,17 +48,15 @@ impl TunnelTcpServerBuilder { pub async fn build(self) -> io::Result { cfg_if::cfg_if! { if #[cfg(target_os = "macos")] { - let listener = match self.launchd_socket_name { - Some(launchd_socket_name) => { - use tokio::net::TcpListener as TokioTcpListener; - use crate::net::launch_activate_socket::get_launch_activate_tcp_listener; - - let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name, true)?; - let tokio_listener = TokioTcpListener::from_std(std_listener)?; - ShadowTcpListener::from_listener(tokio_listener, self.context.accept_opts())? - } _ => { - create_standard_tcp_listener(&self.context, &self.client_config).await? - } + let listener = if let Some(launchd_socket_name) = self.launchd_socket_name { + use tokio::net::TcpListener as TokioTcpListener; + use crate::net::launch_activate_socket::get_launch_activate_tcp_listener; + + let std_listener = get_launch_activate_tcp_listener(&launchd_socket_name)?; + let tokio_listener = TokioTcpListener::from_std(std_listener)?; + ShadowTcpListener::from_listener(tokio_listener, self.context.accept_opts())? + } else { + create_standard_tcp_listener(&self.context, &self.client_config).await? }; } else { let listener = create_standard_tcp_listener(&self.context, &self.client_config).await?; @@ -140,8 +138,6 @@ async fn handle_tcp_client( svr_cfg.addr(), ); - let mut remote = - AutoProxyClientStream::connect_proxied_with_opts(context, &server, forward_addr, server.connect_opts_ref()) - .await?; + let mut remote = AutoProxyClientStream::connect_proxied(context, &server, forward_addr).await?; establish_tcp_tunnel(svr_cfg, &mut stream, &mut remote, peer_addr, forward_addr).await } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/udprelay.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/udprelay.rs index e9ced6d..4bace85 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/udprelay.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/tunnel/udprelay.rs @@ -2,17 +2,18 @@ use std::{io, net::SocketAddr, sync::Arc, time::Duration}; +use async_trait::async_trait; use log::{debug, error, info}; use shadowsocks::{ - ServerAddr, relay::{socks5::Address, udprelay::MAXIMUM_UDP_PAYLOAD_SIZE}, + ServerAddr, }; use tokio::{net::UdpSocket, time}; use crate::local::{ context::ServiceContext, loadbalancing::PingBalancer, - net::{UdpAssociationManager, UdpInboundWrite, udp::listener::create_standard_udp_listener}, + net::{udp::listener::create_standard_udp_listener, UdpAssociationManager, UdpInboundWrite}, }; pub struct TunnelUdpServerBuilder { @@ -56,16 +57,14 @@ impl TunnelUdpServerBuilder { pub async fn build(self) -> io::Result { cfg_if::cfg_if! { if #[cfg(target_os = "macos")] { - let socket = match self.launchd_socket_name { - Some(launchd_socket_name) => { - use tokio::net::UdpSocket as TokioUdpSocket; - use crate::net::launch_activate_socket::get_launch_activate_udp_socket; - - let std_socket = get_launch_activate_udp_socket(&launchd_socket_name, true)?; - TokioUdpSocket::from_std(std_socket)? - } _ => { - create_standard_udp_listener(&self.context, &self.client_config).await?.into() - } + let socket = if let Some(launchd_socket_name) = self.launchd_socket_name { + use tokio::net::UdpSocket as TokioUdpSocket; + use crate::net::launch_activate_socket::get_launch_activate_udp_socket; + + let std_socket = get_launch_activate_udp_socket(&launchd_socket_name)?; + TokioUdpSocket::from_std(std_socket)? + } else { + create_standard_udp_listener(&self.context, &self.client_config).await?.into() }; } else { let socket = create_standard_udp_listener(&self.context, &self.client_config).await?.into(); @@ -88,6 +87,7 @@ struct TunnelUdpInboundWriter { inbound: Arc, } +#[async_trait] impl UdpInboundWrite for TunnelUdpInboundWriter { async fn send_to(&self, peer_addr: SocketAddr, _remote_addr: &Address, data: &[u8]) -> io::Result<()> { self.inbound.send_to(data, peer_addr).await.map(|_| ()) diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/utils.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/utils.rs index 10f5ad8..9d6532f 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/utils.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/local/utils.rs @@ -8,7 +8,7 @@ use shadowsocks::{ relay::{socks5::Address, tcprelay::utils::copy_encrypted_bidirectional}, }; use tokio::{ - io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt, copy_bidirectional}, + io::{copy_bidirectional, AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}, time, }; @@ -60,7 +60,8 @@ where trace!( "tcp tunnel {} -> {} (proxied) sent handshake without data", - peer_addr, target_addr + peer_addr, + target_addr ); } } @@ -70,13 +71,18 @@ where Ok((wn, rn)) => { trace!( "tcp tunnel {} <-> {} (proxied) closed, L2R {} bytes, R2L {} bytes", - peer_addr, target_addr, rn, wn + peer_addr, + target_addr, + rn, + wn ); } Err(err) => { trace!( "tcp tunnel {} <-> {} (proxied) closed with error: {}", - peer_addr, target_addr, err + peer_addr, + target_addr, + err ); } } @@ -100,13 +106,18 @@ where Ok((rn, wn)) => { trace!( "tcp tunnel {} <-> {} (bypassed) closed, L2R {} bytes, R2L {} bytes", - peer_addr, target_addr, rn, wn + peer_addr, + target_addr, + rn, + wn ); } Err(err) => { trace!( "tcp tunnel {} <-> {} (bypassed) closed with error: {}", - peer_addr, target_addr, err + peer_addr, + target_addr, + err ); } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/manager/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/manager/mod.rs index d174d63..1aea538 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/manager/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/manager/mod.rs @@ -2,7 +2,7 @@ //! //! Service for managing multiple relay servers. [Manage Multiple Users](https://github.com/shadowsocks/shadowsocks/wiki/Manage-Multiple-Users) -use std::{io, net::SocketAddr, sync::Arc}; +use std::{io, sync::Arc}; use log::trace; use shadowsocks::net::{AcceptOpts, ConnectOpts}; @@ -36,13 +36,11 @@ pub async fn run(config: Config) -> io::Result<()> { let mut connect_opts = ConnectOpts { #[cfg(any(target_os = "linux", target_os = "android"))] fwmark: config.outbound_fwmark, - #[cfg(target_os = "freebsd")] - user_cookie: config.outbound_user_cookie, #[cfg(target_os = "android")] vpn_protect_path: config.outbound_vpn_protect_path, - bind_local_addr: config.outbound_bind_addr.map(|ip| SocketAddr::new(ip, 0)), + bind_local_addr: config.outbound_bind_addr, bind_interface: config.outbound_bind_interface, ..Default::default() @@ -54,8 +52,6 @@ pub async fn run(config: Config) -> io::Result<()> { connect_opts.tcp.fastopen = config.fast_open; connect_opts.tcp.keepalive = config.keep_alive.or(Some(SERVER_DEFAULT_KEEPALIVE_TIMEOUT)); connect_opts.tcp.mptcp = config.mptcp; - connect_opts.udp.mtu = config.udp_mtu; - connect_opts.udp.allow_fragmentation = config.outbound_udp_allow_fragmentation; let mut accept_opts = AcceptOpts { ipv6_only: config.ipv6_only, @@ -67,7 +63,6 @@ pub async fn run(config: Config) -> io::Result<()> { accept_opts.tcp.fastopen = config.fast_open; accept_opts.tcp.keepalive = config.keep_alive.or(Some(SERVER_DEFAULT_KEEPALIVE_TIMEOUT)); accept_opts.tcp.mptcp = config.mptcp; - accept_opts.udp.mtu = config.udp_mtu; if let Some(resolver) = build_dns_resolver(config.dns, config.ipv6_first, config.dns_cache_size, &connect_opts).await diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/manager/server.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/manager/server.rs index 8ff5a06..f281ef9 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/manager/server.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/manager/server.rs @@ -6,7 +6,6 @@ use std::{collections::HashMap, io, net::SocketAddr, sync::Arc, time::Duration}; use log::{error, info, trace}; use shadowsocks::{ - ManagerListener, ServerAddr, config::{Mode, ServerConfig, ServerType, ServerUser, ServerUserManager}, context::{Context, SharedContext}, crypto::CipherKind, @@ -14,12 +13,23 @@ use shadowsocks::{ manager::{ datagram::ManagerSocketAddr, protocol::{ - self, AddRequest, AddResponse, ErrorResponse, ListResponse, ManagerRequest, PingResponse, RemoveRequest, - RemoveResponse, ServerUserConfig, StatRequest, + self, + AddRequest, + AddResponse, + ErrorResponse, + ListResponse, + ManagerRequest, + PingResponse, + RemoveRequest, + RemoveResponse, + ServerUserConfig, + StatRequest, }, }, net::{AcceptOpts, ConnectOpts}, plugin::PluginConfig, + ManagerListener, + ServerAddr, }; use tokio::{sync::Mutex, task::JoinHandle}; @@ -75,6 +85,7 @@ pub struct ManagerBuilder { acl: Option>, ipv6_first: bool, security: SecurityConfig, + worker_count: usize, } impl ManagerBuilder { @@ -95,6 +106,7 @@ impl ManagerBuilder { acl: None, ipv6_first: false, security: SecurityConfig::default(), + worker_count: 1, } } @@ -144,6 +156,14 @@ impl ManagerBuilder { self.security = security; } + /// Set runtime worker count + /// + /// Should be replaced with tokio's metric API when it is stablized. + /// https://github.com/tokio-rs/tokio/issues/4073 + pub fn set_worker_count(&mut self, worker_count: usize) { + self.worker_count = worker_count; + } + /// Build the manager server instance pub async fn build(self) -> io::Result { let listener = ManagerListener::bind(&self.context, &self.svr_cfg.addr).await?; @@ -158,6 +178,7 @@ impl ManagerBuilder { acl: self.acl, ipv6_first: self.ipv6_first, security: self.security, + worker_count: self.worker_count, listener, }) } @@ -175,6 +196,7 @@ pub struct Manager { acl: Option>, ipv6_first: bool, security: SecurityConfig, + worker_count: usize, listener: ManagerListener, } @@ -271,6 +293,8 @@ impl Manager { server_builder.set_security_config(&self.security); + server_builder.set_worker_count(self.worker_count); + let server_port = server_builder.server_config().addr().port(); let mut servers = self.servers.lock().await; @@ -384,13 +408,6 @@ impl Manager { let server_instance = ServerInstanceConfig { config: svr_cfg.clone(), acl: None, // Set with --acl command line argument - #[cfg(any(target_os = "linux", target_os = "android"))] - outbound_fwmark: None, - #[cfg(target_os = "freebsd")] - outbound_user_cookie: None, - outbound_bind_addr: None, - outbound_bind_interface: None, - outbound_udp_allow_fragmentation: None, }; let mut config = Config::new(ConfigType::Server); @@ -400,12 +417,7 @@ impl Manager { let config_file_content = format!("{config}"); - match OpenOptions::new() - .write(true) - .create(true) - .truncate(true) - .open(&config_file_path) - { + match OpenOptions::new().write(true).create(true).open(&config_file_path) { Err(err) => { error!( "failed to open {} for writing, error: {}", @@ -476,19 +488,10 @@ impl Manager { return Ok(AddResponse(err)); } }, - #[cfg(feature = "aead-cipher")] None => self.svr_cfg.method.unwrap_or(CipherKind::CHACHA20_POLY1305), - #[cfg(not(feature = "aead-cipher"))] - None => return Ok(AddResponse("method is required")), }; - let mut svr_cfg = match ServerConfig::new(addr, req.password.clone(), method) { - Ok(svr_cfg) => svr_cfg, - Err(err) => { - error!("failed to create ServerConfig, error: {}", err); - return Ok(AddResponse("invalid server".to_string())); - } - }; + let mut svr_cfg = ServerConfig::new(addr, req.password.clone(), method); if let Some(ref plugin) = req.plugin { let p = PluginConfig { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/net/launch_activate_socket.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/net/launch_activate_socket.rs index 750504d..85cafc0 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/net/launch_activate_socket.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/net/launch_activate_socket.rs @@ -14,23 +14,15 @@ use log::debug; use crate::sys::get_launch_activate_socket; /// Get a macOS launch active socket as a `TcpListener` -pub fn get_launch_activate_tcp_listener(name: &str, nonblock: bool) -> io::Result { +pub fn get_launch_activate_tcp_listener(name: &str) -> io::Result { let fd = get_launch_activate_socket(name)?; debug!("created TCP listener from launch activate socket {}", fd); - let listener = unsafe { TcpListener::from_raw_fd(fd) }; - if nonblock { - listener.set_nonblocking(true)?; - } - Ok(listener) + Ok(unsafe { TcpListener::from_raw_fd(fd) }) } /// Get a macOS launch activate socket as a `UdpSocket` -pub fn get_launch_activate_udp_socket(name: &str, nonblock: bool) -> io::Result { +pub fn get_launch_activate_udp_socket(name: &str) -> io::Result { let fd = get_launch_activate_socket(name)?; debug!("created UDP socket from launch activate socket {}", fd); - let socket = unsafe { UdpSocket::from_raw_fd(fd) }; - if nonblock { - socket.set_nonblocking(true)?; - } - Ok(socket) + Ok(unsafe { UdpSocket::from_raw_fd(fd) }) } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/net/mon_socket.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/net/mon_socket.rs index 28553a7..7bf541d 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/net/mon_socket.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/net/mon_socket.rs @@ -3,44 +3,25 @@ use std::{io, net::SocketAddr, sync::Arc}; use shadowsocks::{ + relay::{socks5::Address, udprelay::options::UdpSocketControlData}, ProxySocket, - relay::{ - socks5::Address, - udprelay::{DatagramReceive, DatagramSend, options::UdpSocketControlData}, - }, }; +use tokio::net::ToSocketAddrs; use super::flow::FlowStat; /// Monitored `ProxySocket` -pub struct MonProxySocket { - socket: ProxySocket, +pub struct MonProxySocket { + socket: ProxySocket, flow_stat: Arc, } -impl MonProxySocket { +impl MonProxySocket { /// Create a new socket with flow monitor - pub fn from_socket(socket: ProxySocket, flow_stat: Arc) -> MonProxySocket { + pub fn from_socket(socket: ProxySocket, flow_stat: Arc) -> MonProxySocket { MonProxySocket { socket, flow_stat } } - /// Get the underlying `ProxySocket` immutable reference - #[inline] - pub fn get_ref(&self) -> &ProxySocket { - &self.socket - } - - /// Get the flow statistic data - #[inline] - pub fn flow_stat(&self) -> &FlowStat { - &self.flow_stat - } -} - -impl MonProxySocket -where - S: DatagramSend, -{ /// Send a UDP packet to addr through proxy #[inline] pub async fn send(&self, addr: &Address, payload: &[u8]) -> io::Result<()> { @@ -66,7 +47,7 @@ where /// Send a UDP packet to target from proxy #[inline] - pub async fn send_to(&self, target: SocketAddr, addr: &Address, payload: &[u8]) -> io::Result<()> { + pub async fn send_to(&self, target: A, addr: &Address, payload: &[u8]) -> io::Result<()> { let n = self.socket.send_to(target, addr, payload).await?; self.flow_stat.incr_tx(n as u64); @@ -75,9 +56,9 @@ where /// Send a UDP packet to target from proxy #[inline] - pub async fn send_to_with_ctrl( + pub async fn send_to_with_ctrl( &self, - target: SocketAddr, + target: A, addr: &Address, control: &UdpSocketControlData, payload: &[u8], @@ -87,12 +68,7 @@ where Ok(()) } -} -impl MonProxySocket -where - S: DatagramReceive, -{ /// Receive packet from Shadowsocks' UDP server /// /// This function will use `recv_buf` to store intermediate data, so it has to be big enough to store the whole shadowsocks' packet @@ -150,4 +126,14 @@ where Ok((n, peer_addr, addr, control)) } + + #[inline] + pub fn get_ref(&self) -> &ProxySocket { + &self.socket + } + + #[inline] + pub fn flow_stat(&self) -> &FlowStat { + &self.flow_stat + } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/mod.rs index 1851480..738e4c9 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/mod.rs @@ -1,15 +1,22 @@ //! Shadowsocks server -use std::{io, net::SocketAddr, sync::Arc, time::Duration}; +use std::{ + future::Future, + io::{self, ErrorKind}, + pin::Pin, + sync::Arc, + task::{Context, Poll}, + time::Duration, +}; -use futures::future; +use futures::{future, ready}; use log::trace; -use shadowsocks::net::{AcceptOpts, ConnectOpts, UdpSocketOpts}; +use shadowsocks::net::{AcceptOpts, ConnectOpts}; +use tokio::task::JoinHandle; use crate::{ config::{Config, ConfigType}, dns::build_dns_resolver, - utils::ServerHandle, }; pub use self::{ @@ -42,12 +49,8 @@ pub async fn run(config: Config) -> io::Result<()> { let server = &inst.config; if server.method().is_stream() { - log::warn!( - "stream cipher {} for server {} have inherent weaknesses (see discussion in https://github.com/shadowsocks/shadowsocks-org/issues/36). \ - DO NOT USE. It will be removed in the future.", - server.method(), - server.addr() - ); + log::warn!("stream cipher {} for server {} have inherent weaknesses (see discussion in https://github.com/shadowsocks/shadowsocks-org/issues/36). \ + DO NOT USE. It will be removed in the future.", server.method(), server.addr()); } } @@ -64,21 +67,13 @@ pub async fn run(config: Config) -> io::Result<()> { let mut connect_opts = ConnectOpts { #[cfg(any(target_os = "linux", target_os = "android"))] fwmark: config.outbound_fwmark, - #[cfg(target_os = "freebsd")] - user_cookie: config.outbound_user_cookie, #[cfg(target_os = "android")] vpn_protect_path: config.outbound_vpn_protect_path, - bind_local_addr: config.outbound_bind_addr.map(|ip| SocketAddr::new(ip, 0)), + bind_local_addr: config.outbound_bind_addr, bind_interface: config.outbound_bind_interface, - udp: UdpSocketOpts { - allow_fragmentation: config.outbound_udp_allow_fragmentation, - - ..Default::default() - }, - ..Default::default() }; @@ -88,7 +83,6 @@ pub async fn run(config: Config) -> io::Result<()> { connect_opts.tcp.fastopen = config.fast_open; connect_opts.tcp.keepalive = config.keep_alive.or(Some(SERVER_DEFAULT_KEEPALIVE_TIMEOUT)); connect_opts.tcp.mptcp = config.mptcp; - connect_opts.udp.mtu = config.udp_mtu; let mut accept_opts = AcceptOpts { ipv6_only: config.ipv6_only, @@ -100,7 +94,6 @@ pub async fn run(config: Config) -> io::Result<()> { accept_opts.tcp.fastopen = config.fast_open; accept_opts.tcp.keepalive = config.keep_alive.or(Some(SERVER_DEFAULT_KEEPALIVE_TIMEOUT)); accept_opts.tcp.mptcp = config.mptcp; - accept_opts.udp.mtu = config.udp_mtu; let resolver = build_dns_resolver(config.dns, config.ipv6_first, config.dns_cache_size, &connect_opts) .await @@ -116,33 +109,8 @@ pub async fn run(config: Config) -> io::Result<()> { server_builder.set_dns_resolver(r.clone()); } - let mut connect_opts = connect_opts.clone(); - let accept_opts = accept_opts.clone(); - - #[cfg(any(target_os = "linux", target_os = "android"))] - if let Some(fwmark) = inst.outbound_fwmark { - connect_opts.fwmark = Some(fwmark); - } - - #[cfg(target_os = "freebsd")] - if let Some(user_cookie) = inst.outbound_user_cookie { - connect_opts.user_cookie = Some(user_cookie); - } - - if let Some(bind_local_addr) = inst.outbound_bind_addr { - connect_opts.bind_local_addr = Some(SocketAddr::new(bind_local_addr, 0)); - } - - if let Some(bind_interface) = inst.outbound_bind_interface { - connect_opts.bind_interface = Some(bind_interface); - } - - if let Some(udp_allow_fragmentation) = inst.outbound_udp_allow_fragmentation { - connect_opts.udp.allow_fragmentation = udp_allow_fragmentation; - } - - server_builder.set_connect_opts(connect_opts); - server_builder.set_accept_opts(accept_opts); + server_builder.set_connect_opts(connect_opts.clone()); + server_builder.set_accept_opts(accept_opts.clone()); if let Some(c) = config.udp_max_associations { server_builder.set_udp_capacity(c); @@ -167,6 +135,10 @@ pub async fn run(config: Config) -> io::Result<()> { server_builder.set_ipv6_first(config.ipv6_first); } + if config.worker_count >= 1 { + server_builder.set_worker_count(config.worker_count); + } + server_builder.set_security_config(&config.security); let server = server_builder.build().await?; @@ -187,3 +159,24 @@ pub async fn run(config: Config) -> io::Result<()> { let (res, ..) = future::select_all(vfut).await; res } + +struct ServerHandle(JoinHandle>); + +impl Drop for ServerHandle { + #[inline] + fn drop(&mut self) { + self.0.abort(); + } +} + +impl Future for ServerHandle { + type Output = io::Result<()>; + + #[inline] + fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + match ready!(Pin::new(&mut self.0).poll(cx)) { + Ok(res) => res.into(), + Err(err) => Err(io::Error::new(ErrorKind::Other, err)).into(), + } + } +} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/server.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/server.rs index 5d93127..f06811a 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/server.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/server.rs @@ -7,39 +7,40 @@ use std::{ time::Duration, }; -use futures::future; +use futures::{stream::FuturesUnordered, FutureExt, StreamExt}; use log::{error, trace}; use shadowsocks::{ - ManagerClient, config::{ManagerAddr, ServerConfig}, dns_resolver::DnsResolver, net::{AcceptOpts, ConnectOpts}, plugin::{Plugin, PluginMode}, + ManagerClient, }; use tokio::time; -use crate::{acl::AccessControl, config::SecurityConfig, net::FlowStat, utils::ServerHandle}; +use crate::{acl::AccessControl, config::SecurityConfig, net::FlowStat}; use super::{context::ServiceContext, tcprelay::TcpServer, udprelay::UdpServer}; /// Shadowsocks Server Builder pub struct ServerBuilder { - context: ServiceContext, + context: Arc, svr_cfg: ServerConfig, udp_expiry_duration: Option, udp_capacity: Option, manager_addr: Option, accept_opts: AcceptOpts, + worker_count: usize, } impl ServerBuilder { /// Create a new server builder from configuration pub fn new(svr_cfg: ServerConfig) -> ServerBuilder { - ServerBuilder::with_context(ServiceContext::new(), svr_cfg) + ServerBuilder::with_context(Arc::new(ServiceContext::new()), svr_cfg) } /// Create a new server builder with context - fn with_context(context: ServiceContext, svr_cfg: ServerConfig) -> ServerBuilder { + pub fn with_context(context: Arc, svr_cfg: ServerConfig) -> ServerBuilder { ServerBuilder { context, svr_cfg, @@ -47,6 +48,7 @@ impl ServerBuilder { udp_capacity: None, manager_addr: None, accept_opts: AcceptOpts::default(), + worker_count: 1, } } @@ -62,7 +64,8 @@ impl ServerBuilder { /// Set `ConnectOpts` pub fn set_connect_opts(&mut self, opts: ConnectOpts) { - self.context.set_connect_opts(opts) + let context = Arc::get_mut(&mut self.context).expect("cannot set ConnectOpts on a shared context"); + context.set_connect_opts(opts) } /// Set UDP association's expiry duration @@ -80,6 +83,14 @@ impl ServerBuilder { self.manager_addr = Some(manager_addr); } + /// Set runtime worker count + /// + /// Should be replaced with tokio's metric API when it is stablized. + /// https://github.com/tokio-rs/tokio/issues/4073 + pub fn set_worker_count(&mut self, worker_count: usize) { + self.worker_count = worker_count; + } + /// Get server's configuration pub fn server_config(&self) -> &ServerConfig { &self.svr_cfg @@ -87,12 +98,14 @@ impl ServerBuilder { /// Set customized DNS resolver pub fn set_dns_resolver(&mut self, resolver: Arc) { - self.context.set_dns_resolver(resolver) + let context = Arc::get_mut(&mut self.context).expect("cannot set DNS resolver on a shared context"); + context.set_dns_resolver(resolver) } /// Set access control list pub fn set_acl(&mut self, acl: Arc) { - self.context.set_acl(acl); + let context = Arc::get_mut(&mut self.context).expect("cannot set ACL on a shared context"); + context.set_acl(acl); } /// Set `AcceptOpts` for accepting new connections @@ -102,12 +115,14 @@ impl ServerBuilder { /// Try to connect IPv6 addresses first if hostname could be resolved to both IPv4 and IPv6 pub fn set_ipv6_first(&mut self, ipv6_first: bool) { - self.context.set_ipv6_first(ipv6_first); + let context = Arc::get_mut(&mut self.context).expect("cannot set ipv6_first on a shared context"); + context.set_ipv6_first(ipv6_first); } /// Set security config pub fn set_security_config(&mut self, security: &SecurityConfig) { - self.context.set_security_config(security) + let context = Arc::get_mut(&mut self.context).expect("cannot set security on a shared context"); + context.set_security_config(security) } /// Start the server @@ -116,8 +131,6 @@ impl ServerBuilder { /// 2. Starts TCP server (listener) /// 3. Starts UDP server (listener) pub async fn build(mut self) -> io::Result { - let context = Arc::new(self.context); - let mut plugin = None; if let Some(plugin_cfg) = self.svr_cfg.plugin() { @@ -128,25 +141,26 @@ impl ServerBuilder { let mut tcp_server = None; if self.svr_cfg.mode().enable_tcp() { - let server = TcpServer::new(context.clone(), self.svr_cfg.clone(), self.accept_opts.clone()).await?; + let server = TcpServer::new(self.context.clone(), self.svr_cfg.clone(), self.accept_opts.clone()).await?; tcp_server = Some(server); } let mut udp_server = None; if self.svr_cfg.mode().enable_udp() { - let server = UdpServer::new( - context.clone(), + let mut server = UdpServer::new( + self.context.clone(), self.svr_cfg.clone(), self.udp_expiry_duration, self.udp_capacity, self.accept_opts.clone(), ) .await?; + server.set_worker_count(self.worker_count); udp_server = Some(server); } Ok(Server { - context, + context: self.context, svr_cfg: self.svr_cfg, tcp_server, udp_server, @@ -184,33 +198,36 @@ impl Server { /// Start serving pub async fn run(self) -> io::Result<()> { - let mut vfut = Vec::new(); + let vfut = FuturesUnordered::new(); if let Some(plugin) = self.plugin { - vfut.push(ServerHandle(tokio::spawn(async move { - match plugin.join().await { - Ok(status) => { - error!("plugin exited with status: {}", status); - Ok(()) - } - Err(err) => { - error!("plugin exited with error: {}", err); - Err(err) + vfut.push( + async move { + match plugin.join().await { + Ok(status) => { + error!("plugin exited with status: {}", status); + Ok(()) + } + Err(err) => { + error!("plugin exited with error: {}", err); + Err(err) + } } } - }))); + .boxed(), + ); } if let Some(tcp_server) = self.tcp_server { - vfut.push(ServerHandle(tokio::spawn(tcp_server.run()))); + vfut.push(tcp_server.run().boxed()); } if let Some(udp_server) = self.udp_server { - vfut.push(ServerHandle(tokio::spawn(udp_server.run()))); + vfut.push(udp_server.run().boxed()) } if let Some(manager_addr) = self.manager_addr { - vfut.push(ServerHandle(tokio::spawn(async move { + let manager_fut = async move { loop { match ManagerClient::connect( self.context.context_ref(), @@ -231,16 +248,13 @@ impl Server { let req = StatRequest { stat }; - match client.stat(&req).await { - Err(err) => { - error!( - "failed to send stat to manager {}, error: {}, {:?}", - manager_addr, err, req - ); - } - _ => { - trace!("report to manager {}, {:?}", manager_addr, req); - } + if let Err(err) = client.stat(&req).await { + error!( + "failed to send stat to manager {}, error: {}, {:?}", + manager_addr, err, req + ); + } else { + trace!("report to manager {}, {:?}", manager_addr, req); } } } @@ -248,10 +262,13 @@ impl Server { // Report every 10 seconds time::sleep(Duration::from_secs(10)).await; } - }))); + } + .boxed(); + vfut.push(manager_fut); } - if let (Err(err), ..) = future::select_all(vfut).await { + let (res, _) = vfut.into_future().await; + if let Some(Err(err)) = res { error!("servers exited with error: {}", err); } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/tcprelay.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/tcprelay.rs index 8f01a67..d4490cb 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/tcprelay.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/tcprelay.rs @@ -10,10 +10,11 @@ use std::{ use log::{debug, error, info, trace, warn}; use shadowsocks::{ - ProxyListener, ServerConfig, crypto::CipherKind, net::{AcceptOpts, TcpStream as OutboundTcpStream}, - relay::tcprelay::{ProxyServerStream, utils::copy_encrypted_bidirectional}, + relay::tcprelay::{utils::copy_encrypted_bidirectional, ProxyServerStream}, + ProxyListener, + ServerConfig, }; use tokio::{ io::{AsyncReadExt, AsyncWriteExt}, @@ -21,7 +22,7 @@ use tokio::{ time, }; -use crate::net::{MonProxyStream, utils::ignore_until_end}; +use crate::net::{utils::ignore_until_end, MonProxyStream}; use super::context::ServiceContext; @@ -179,7 +180,8 @@ impl TcpServerClient { trace!( "tcp silent-drop peer: {} is now closing with result {:?}", - self.peer_addr, res + self.peer_addr, + res ); return Ok(()); @@ -188,7 +190,8 @@ impl TcpServerClient { trace!( "accepted tcp client connection {}, establishing tunnel to {}", - self.peer_addr, target_addr + self.peer_addr, + target_addr ); if self.context.check_outbound_blocked(&target_addr).await { @@ -242,7 +245,8 @@ impl TcpServerClient { trace!( "tcp tunnel {} -> {} sent TFO connect without data", - self.peer_addr, target_addr + self.peer_addr, + target_addr ); } } @@ -259,13 +263,18 @@ impl TcpServerClient { Ok((rn, wn)) => { trace!( "tcp tunnel {} <-> {} closed, L2R {} bytes, R2L {} bytes", - self.peer_addr, target_addr, rn, wn + self.peer_addr, + target_addr, + rn, + wn ); } Err(err) => { trace!( "tcp tunnel {} <-> {} closed with error: {}", - self.peer_addr, target_addr, err + self.peer_addr, + target_addr, + err ); } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/udprelay.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/udprelay.rs index d673b2f..70d0a0e 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/udprelay.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/server/udprelay.rs @@ -3,8 +3,11 @@ use std::{ cell::RefCell, io::{self, ErrorKind}, - net::SocketAddr, - sync::Arc, + net::{SocketAddr, SocketAddrV6}, + sync::{ + atomic::{AtomicBool, Ordering}, + Arc, + }, time::Duration, }; @@ -12,26 +15,28 @@ use bytes::Bytes; use futures::future; use log::{debug, error, info, trace, warn}; use lru_time_cache::LruCache; -use rand::{Rng, SeedableRng, rngs::SmallRng}; +use rand::{rngs::SmallRng, Rng, SeedableRng}; use shadowsocks::{ - ServerConfig, config::ServerUser, crypto::CipherCategory, lookup_then, - net::{ - AcceptOpts, AddrFamily, UdpSocket as OutboundUdpSocket, UdpSocket as InboundUdpSocket, - get_ip_stack_capabilities, - }, + net::{AcceptOpts, AddrFamily, UdpSocket as OutboundUdpSocket}, relay::{ socks5::Address, - udprelay::{MAXIMUM_UDP_PAYLOAD_SIZE, ProxySocket, options::UdpSocketControlData}, + udprelay::{options::UdpSocketControlData, ProxySocket, MAXIMUM_UDP_PAYLOAD_SIZE}, }, + ServerConfig, }; -use tokio::{runtime::Handle, sync::mpsc, task::JoinHandle, time}; +use tokio::{sync::mpsc, task::JoinHandle, time}; +#[cfg(windows)] +use windows_sys::Win32::Networking::WinSock::WSAEAFNOSUPPORT; use crate::net::{ - MonProxySocket, UDP_ASSOCIATION_KEEP_ALIVE_CHANNEL_SIZE, UDP_ASSOCIATION_SEND_CHANNEL_SIZE, - packet_window::PacketWindowFilter, utils::to_ipv4_mapped, + packet_window::PacketWindowFilter, + utils::to_ipv4_mapped, + MonProxySocket, + UDP_ASSOCIATION_KEEP_ALIVE_CHANNEL_SIZE, + UDP_ASSOCIATION_SEND_CHANNEL_SIZE, }; use super::context::ServiceContext; @@ -68,11 +73,11 @@ impl NatMap { fn keep_alive(&mut self, key: &NatKey) { match (self, key) { - (NatMap::Association(m), NatKey::PeerAddr(peer_addr)) => { + (NatMap::Association(ref mut m), NatKey::PeerAddr(ref peer_addr)) => { m.get(peer_addr); } #[cfg(feature = "aead-cipher-2022")] - (NatMap::Session(m), NatKey::SessionId(session_id)) => { + (NatMap::Session(ref mut m), NatKey::SessionId(ref session_id)) => { m.get(session_id); } #[allow(unreachable_patterns)] @@ -88,7 +93,8 @@ pub struct UdpServer { keepalive_tx: mpsc::Sender, keepalive_rx: mpsc::Receiver, time_to_live: Duration, - listener: Arc>, + worker_count: usize, + listener: Arc, svr_cfg: ServerConfig, } @@ -113,9 +119,9 @@ impl UdpServer { } let assoc_map = match svr_cfg.method().category() { - CipherCategory::None => NatMap::Association(create_assoc_map(time_to_live, capacity)), - #[cfg(feature = "aead-cipher")] - CipherCategory::Aead => NatMap::Association(create_assoc_map(time_to_live, capacity)), + CipherCategory::None | CipherCategory::Aead => { + NatMap::Association(create_assoc_map(time_to_live, capacity)) + } #[cfg(feature = "stream-cipher")] CipherCategory::Stream => NatMap::Association(create_assoc_map(time_to_live, capacity)), #[cfg(feature = "aead-cipher-2022")] @@ -134,11 +140,17 @@ impl UdpServer { keepalive_tx, keepalive_rx, time_to_live, + worker_count: 1, listener, svr_cfg, }) } + #[inline] + pub(crate) fn set_worker_count(&mut self, worker_count: usize) { + self.worker_count = worker_count; + } + /// Server's configuration pub fn server_config(&self) -> &ServerConfig { &self.svr_cfg @@ -161,7 +173,7 @@ impl UdpServer { let mut orx_opt = None; - let cpus = Handle::current().metrics().num_workers(); + let cpus = self.worker_count; let mut other_receivers = Vec::new(); if cpus > 1 { let (otx, orx) = mpsc::channel((cpus - 1) * 16); @@ -220,7 +232,7 @@ impl UdpServer { async fn multicore_recv(orx_opt: &mut Option>) -> QueuedDataType { match orx_opt { None => future::pending().await, - Some(orx) => match orx.recv().await { + Some(ref mut orx) => match orx.recv().await { Some(t) => t, None => unreachable!("multicore sender should keep at least 1"), }, @@ -277,7 +289,7 @@ impl UdpServer { async fn recv_one_packet( context: &ServiceContext, - l: &MonProxySocket, + l: &MonProxySocket, buffer: &mut [u8], ) -> Option<(usize, SocketAddr, Address, Option)> { let (n, peer_addr, target_addr, control) = match l.recv_from_with_ctrl(buffer).await { @@ -317,7 +329,7 @@ impl UdpServer { async fn send_packet( &mut self, - listener: &Arc>, + listener: &Arc, peer_addr: SocketAddr, target_addr: Address, control: Option, @@ -395,7 +407,7 @@ impl Drop for UdpAssociation { impl UdpAssociation { fn new_association( context: Arc, - inbound: Arc>, + inbound: Arc, peer_addr: SocketAddr, keepalive_tx: mpsc::Sender, ) -> UdpAssociation { @@ -406,7 +418,7 @@ impl UdpAssociation { #[cfg(feature = "aead-cipher-2022")] fn new_session( context: Arc, - inbound: Arc>, + inbound: Arc, peer_addr: SocketAddr, keepalive_tx: mpsc::Sender, client_session_id: u64, @@ -448,7 +460,7 @@ struct UdpAssociationContext { outbound_ipv6_socket: Option, keepalive_tx: mpsc::Sender, keepalive_flag: bool, - inbound: Arc>, + inbound: Arc, // AEAD 2022 client_session: Option, server_session_id: u64, @@ -462,23 +474,18 @@ impl Drop for UdpAssociationContext { } thread_local! { - static CLIENT_SESSION_RNG: RefCell = RefCell::new(SmallRng::from_os_rng()); + static CLIENT_SESSION_RNG: RefCell = RefCell::new(SmallRng::from_entropy()); } #[inline] fn generate_server_session_id() -> u64 { - loop { - let id = CLIENT_SESSION_RNG.with(|rng| rng.borrow_mut().random()); - if id != 0 { - break id; - } - } + CLIENT_SESSION_RNG.with(|rng| rng.borrow_mut().gen()) } impl UdpAssociationContext { fn create( context: Arc, - inbound: Arc>, + inbound: Arc, peer_addr: SocketAddr, keepalive_tx: mpsc::Sender, client_session_id: Option, @@ -641,7 +648,7 @@ impl UdpAssociationContext { return; } - session_context.client_user.clone_from(&control.user); + session_context.client_user = control.user.clone(); } if let Err(err) = self.dispatch_received_outbound_packet(target_addr, data).await { @@ -667,69 +674,97 @@ impl UdpAssociationContext { } } - async fn send_received_outbound_packet(&mut self, original_target_addr: SocketAddr, data: &[u8]) -> io::Result<()> { - let ip_stack_caps = get_ip_stack_capabilities(); + async fn send_received_outbound_packet(&mut self, mut target_addr: SocketAddr, data: &[u8]) -> io::Result<()> { + static UDP_SOCKET_SUPPORT_DUAL_STACK: AtomicBool = AtomicBool::new(cfg!(any( + target_os = "linux", + target_os = "android", + target_os = "macos", + target_os = "ios", + target_os = "watchos", + target_os = "tvos", + target_os = "freebsd", + // target_os = "dragonfly", + // target_os = "netbsd", + target_os = "windows", + ))); + + let socket = loop { + let socket = if UDP_SOCKET_SUPPORT_DUAL_STACK.load(Ordering::Relaxed) { + match self.outbound_ipv6_socket { + Some(ref mut socket) => socket, + None => { + let socket = match OutboundUdpSocket::connect_any_with_opts( + AddrFamily::Ipv6, + self.context.connect_opts_ref(), + ) + .await + { + Ok(socket) => socket, + Err(err) => { + match err.raw_os_error() { + #[cfg(unix)] + Some(libc::EAFNOSUPPORT) => { + UDP_SOCKET_SUPPORT_DUAL_STACK.store(false, Ordering::Relaxed); + continue; + } + #[cfg(windows)] + Some(WSAEAFNOSUPPORT) => { + UDP_SOCKET_SUPPORT_DUAL_STACK.store(false, Ordering::Relaxed); + continue; + } + _ => {} + } + return Err(err); + } + }; - let target_addr = match original_target_addr { - SocketAddr::V4(ref v4) => { - // If IPv4-mapped-IPv6 is supported. - // Converts IPv4 address to IPv4-mapped-IPv6 - // All sockets will be created in IPv6 (nearly all modern OS supports IPv6 sockets) - if ip_stack_caps.support_ipv4_mapped_ipv6 { - SocketAddr::new(v4.ip().to_ipv6_mapped().into(), v4.port()) - } else { - original_target_addr - } - } - SocketAddr::V6(ref v6) => { - // If IPv6 is not supported. Try to map it back to IPv4. - if !ip_stack_caps.support_ipv6 || !ip_stack_caps.support_ipv4_mapped_ipv6 { - match v6.ip().to_ipv4_mapped() { - Some(v4) => SocketAddr::new(v4.into(), v6.port()), - None => original_target_addr, + self.outbound_ipv6_socket.insert(socket) } - } else { - original_target_addr } - } - }; - - let socket = match target_addr { - SocketAddr::V4(..) => match self.outbound_ipv4_socket { - Some(ref mut socket) => socket, - None => { - let socket = - OutboundUdpSocket::connect_any_with_opts(AddrFamily::Ipv4, self.context.connect_opts_ref()) - .await?; - self.outbound_ipv4_socket.insert(socket) - } - }, - SocketAddr::V6(..) => match self.outbound_ipv6_socket { - Some(ref mut socket) => socket, - None => { - let socket = - OutboundUdpSocket::connect_any_with_opts(AddrFamily::Ipv6, self.context.connect_opts_ref()) - .await?; - self.outbound_ipv6_socket.insert(socket) + } else { + match target_addr { + SocketAddr::V4(..) => match self.outbound_ipv4_socket { + Some(ref mut socket) => socket, + None => { + let socket = + OutboundUdpSocket::connect_any_with_opts(&target_addr, self.context.connect_opts_ref()) + .await?; + self.outbound_ipv4_socket.insert(socket) + } + }, + SocketAddr::V6(..) => match self.outbound_ipv6_socket { + Some(ref mut socket) => socket, + None => { + let socket = + OutboundUdpSocket::connect_any_with_opts(&target_addr, self.context.connect_opts_ref()) + .await?; + self.outbound_ipv6_socket.insert(socket) + } + }, } - }, + }; + break socket; }; - match socket.send_to(data, target_addr).await { - Ok(n) => { - if n != data.len() { - warn!( - "{} -> {} sent {} bytes != expected {} bytes", - self.peer_addr, - target_addr, - n, - data.len() - ); - } - Ok(()) + if UDP_SOCKET_SUPPORT_DUAL_STACK.load(Ordering::Relaxed) { + if let SocketAddr::V4(saddr) = target_addr { + let mapped_ip = saddr.ip().to_ipv6_mapped(); + target_addr = SocketAddr::V6(SocketAddrV6::new(mapped_ip, saddr.port(), 0, 0)); } - Err(err) => Err(err), } + + let n = socket.send_to(data, target_addr).await?; + if n != data.len() { + warn!( + "{} -> {} sent {} bytes != expected {} bytes", + self.peer_addr, + target_addr, + n, + data.len() + ); + } + + Ok(()) } async fn send_received_respond_packet(&mut self, mut addr: Address, data: &[u8]) { @@ -752,19 +787,16 @@ impl UdpAssociationContext { match self.client_session { None => { // Naive route, send data directly back to client without session - match self.inbound.send_to(self.peer_addr, &addr, data).await { - Err(err) => { - warn!( - "udp failed to send back {} bytes to client {}, from target {}, error: {}", - data.len(), - self.peer_addr, - addr, - err - ); - } - _ => { - trace!("udp relay {} <- {} with {} bytes", self.peer_addr, addr, data.len()); - } + if let Err(err) = self.inbound.send_to(self.peer_addr, &addr, data).await { + warn!( + "udp failed to send back {} bytes to client {}, from target {}, error: {}", + data.len(), + self.peer_addr, + addr, + err + ); + } else { + trace!("udp relay {} <- {} with {} bytes", self.peer_addr, addr, data.len()); } } Some(ref client_session) => { @@ -792,32 +824,29 @@ impl UdpAssociationContext { control.client_session_id = client_session.client_session_id; control.server_session_id = self.server_session_id; control.packet_id = self.server_packet_id; - control.user.clone_from(&client_session.client_user); + control.user = client_session.client_user.clone(); - match self + if let Err(err) = self .inbound .send_to_with_ctrl(self.peer_addr, &addr, &control, data) .await { - Err(err) => { - warn!( - "udp failed to send back {} bytes to client {}, from target {}, control: {:?}, error: {}", - data.len(), - self.peer_addr, - addr, - control, - err - ); - } - _ => { - trace!( - "udp relay {} <- {} with {} bytes, control {:?}", - self.peer_addr, - addr, - data.len(), - control - ); - } + warn!( + "udp failed to send back {} bytes to client {}, from target {}, control: {:?}, error: {}", + data.len(), + self.peer_addr, + addr, + control, + err + ); + } else { + trace!( + "udp relay {} <- {} with {} bytes, control {:?}", + self.peer_addr, + addr, + data.len(), + control + ); } } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/mod.rs index ebc14fb..7ea7782 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/mod.rs @@ -3,7 +3,6 @@ use cfg_if::cfg_if; cfg_if! { if #[cfg(unix)] { mod unix; - #[allow(unused_imports)] pub use self::unix::*; } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/unix/macos.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/unix/macos.rs index 384097f..0e887d6 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/unix/macos.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/unix/macos.rs @@ -4,7 +4,7 @@ use std::{ffi::CString, io, os::fd::RawFd, ptr}; use log::error; -unsafe extern "C" { +extern "C" { /// https://developer.apple.com/documentation/xpc/1505523-launch_activate_socket fn launch_activate_socket( name: *const libc::c_char, @@ -59,7 +59,7 @@ pub fn get_launch_activate_socket(name: &str) -> io::Result { } else if cnt > 1 { for idx in 0..cnt { unsafe { - let fd = *(fds.add(idx)); + let fd = *(fds.offset(idx as isize)); let _ = libc::close(fd); } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/unix/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/unix/mod.rs index 14e3690..78d1c83 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/unix/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/sys/unix/mod.rs @@ -5,7 +5,6 @@ use cfg_if::cfg_if; cfg_if! { if #[cfg(target_os = "macos")] { mod macos; - #[allow(unused_imports)] pub use self::macos::*; } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/utils.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/utils.rs deleted file mode 100644 index 4da3e04..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks-service/src/utils.rs +++ /dev/null @@ -1,36 +0,0 @@ -//! Service Utilities - -use std::{ - future::Future, - io::{self, ErrorKind}, - pin::Pin, - task::{Context, Poll}, -}; - -use futures::ready; -use tokio::task::JoinHandle; - -/// Wrapper of `tokio::task::JoinHandle`, which links to a server instance. -/// -/// `ServerHandle` implements `Future` which will join the `JoinHandle` and get the result. -/// When `ServerHandle` drops, it will abort the task. -pub struct ServerHandle(pub JoinHandle>); - -impl Drop for ServerHandle { - #[inline] - fn drop(&mut self) { - self.0.abort(); - } -} - -impl Future for ServerHandle { - type Output = io::Result<()>; - - #[inline] - fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - match ready!(Pin::new(&mut self.0).poll(cx)) { - Ok(res) => res.into(), - Err(err) => Err(io::Error::new(ErrorKind::Other, err)).into(), - } - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/Cargo.toml b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/Cargo.toml index f4b1417..394da46 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/Cargo.toml +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "shadowsocks" -version = "1.23.1" +version = "1.17.2" authors = ["Shadowsocks Contributors"] description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls." repository = "https://github.com/shadowsocks/shadowsocks-rust" @@ -8,14 +8,13 @@ readme = "README.md" documentation = "https://docs.rs/shadowsocks-core" keywords = ["shadowsocks", "proxy", "socks", "socks5", "firewall"] license = "MIT" -edition = "2024" -rust-version = "1.85" +edition = "2021" [badges] maintenance = { status = "passively-maintained" } [features] -default = ["hickory-dns", "aead-cipher"] +default = ["hickory-dns"] # Uses Hickory-DNS instead of tokio's builtin DNS resolver hickory-dns = ["hickory-resolver", "arc-swap", "notify"] @@ -26,22 +25,19 @@ trust-dns = ["hickory-dns"] # WARN: Stream Cipher Protocol is proved to be insecure # https://github.com/shadowsocks/shadowsocks-rust/issues/373 # Users should always avoid using these ciphers in practice -stream-cipher = ["shadowsocks-crypto/v1-stream", "shadowsocks-crypto/ring"] - -# Enable AEAD ciphers -aead-cipher = ["shadowsocks-crypto/v1-aead", "shadowsocks-crypto/ring"] +stream-cipher = ["shadowsocks-crypto/v1-stream"] # Enable extra AEAD ciphers # WARN: These non-standard AEAD ciphers are not officially supported by shadowsocks community -aead-cipher-extra = ["aead-cipher", "shadowsocks-crypto/v1-aead-extra"] +aead-cipher-extra = ["shadowsocks-crypto/v1-aead-extra"] +# Enable AEAD 2022 aead-cipher-2022 = [ "shadowsocks-crypto/v2", - "shadowsocks-crypto/ring", "rand/small_rng", "aes", "lru_time_cache", -] # Enable AEAD 2022 +] # Enable AEAD 2022 with extra ciphers aead-cipher-2022-extra = ["aead-cipher-2022", "shadowsocks-crypto/v2-extra"] @@ -51,18 +47,18 @@ security-replay-attack-detect = ["bloomfilter"] [dependencies] log = "0.4" -libc = "~0.2.141" -bytes = "1.7" +libc = "0.2.141" +bytes = "1.5" cfg-if = "1" byte_string = "1.0" -base64 = "0.22" +base64 = "0.21" url = "2.5" once_cell = "1.17" -spin = { version = "0.10", features = ["std"] } +spin = { version = "0.9", features = ["std"] } pin-project = "1.1" -bloomfilter = { version = "3.0.0", optional = true } -thiserror = "2.0" -rand = { version = "0.9", optional = true } +bloomfilter = { version = "1.0.8", optional = true } +thiserror = "1.0" +rand = { version = "0.8", optional = true } lru_time_cache = { version = "0.11", optional = true } serde = { version = "1.0", features = ["derive"] } @@ -71,8 +67,7 @@ serde_json = "1.0" percent-encoding = "2.1" futures = "0.3" -trait-variant = "0.1" -dynosaur = "0.2.0" +async-trait = "0.1" socket2 = { version = "0.5", features = ["all"] } tokio = { version = "1.9.0", features = [ @@ -85,20 +80,23 @@ tokio = { version = "1.9.0", features = [ "sync", "time", ] } +tokio-tfo = "0.2.0" -hickory-resolver = { version = "0.25", optional = true } -arc-swap = { version = "1.7", optional = true } -notify = { version = "8.0", optional = true } +hickory-resolver = { version = "0.24", optional = true } +arc-swap = { version = "1.6", optional = true } +notify = { version = "6.0", optional = true } aes = { version = "0.8", optional = true } -blake3 = "1.5" -shadowsocks-crypto = { version = "0.6.0", default-features = false } +blake3 = "1.4" + +[target.'cfg(any(target_arch = "x86_64", target_arch = "aarch64"))'.dependencies] +shadowsocks-crypto = { version = "0.5.4", features = ["ring"] } -[target.'cfg(any(windows, target_os = "linux", target_os = "android", target_os = "freebsd", target_os = "macos", target_os = "ios", target_os = "watchos", target_os = "tvos"))'.dependencies] -tokio-tfo = "0.3" +[target.'cfg(not(any(target_arch = "x86_64", target_arch = "aarch64")))'.dependencies] +shadowsocks-crypto = { version = "0.5.4", features = [] } [target.'cfg(windows)'.dependencies] -windows-sys = { version = "0.59", features = [ +windows-sys = { version = "0.52", features = [ "Win32_Foundation", "Win32_NetworkManagement_IpHelper", "Win32_NetworkManagement_Ndis", @@ -110,4 +108,4 @@ windows-sys = { version = "0.59", features = [ sendfd = { version = "0.4", features = ["tokio"] } [dev-dependencies] -env_logger = "0.11" +env_logger = "0.10" diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/config.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/config.rs index 51d61b6..110781f 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/config.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/config.rs @@ -4,9 +4,10 @@ use std::path::PathBuf; use std::{ collections::HashMap, + error, fmt::{self, Debug, Display}, net::SocketAddr, - str::{self, FromStr}, + str::FromStr, sync::Arc, time::Duration, }; @@ -15,13 +16,15 @@ use base64::Engine as _; use byte_string::ByteStr; use bytes::Bytes; use cfg_if::cfg_if; -use log::{error, warn}; +use log::error; use thiserror::Error; use url::{self, Url}; -#[cfg(any(feature = "stream-cipher", feature = "aead-cipher"))] -use crate::crypto::v1::openssl_bytes_to_key; -use crate::{crypto::CipherKind, plugin::PluginConfig, relay::socks5::Address}; +use crate::{ + crypto::{v1::openssl_bytes_to_key, CipherKind}, + plugin::PluginConfig, + relay::socks5::Address, +}; const USER_KEY_BASE64_ENGINE: base64::engine::GeneralPurpose = base64::engine::GeneralPurpose::new( &base64::alphabet::STANDARD, @@ -97,20 +100,15 @@ impl Mode { _ => unreachable!(), } } - - /// String representation of Mode - pub fn as_str(&self) -> &'static str { - match *self { - Mode::TcpOnly => "tcp_only", - Mode::TcpAndUdp => "tcp_and_udp", - Mode::UdpOnly => "udp_only", - } - } } impl fmt::Display for Mode { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - f.write_str(self.as_str()) + match *self { + Mode::TcpOnly => f.write_str("tcp_only"), + Mode::TcpAndUdp => f.write_str("tcp_and_udp"), + Mode::UdpOnly => f.write_str("udp_only"), + } } } @@ -127,74 +125,6 @@ impl FromStr for Mode { } } -struct ModeVisitor; - -impl serde::de::Visitor<'_> for ModeVisitor { - type Value = Mode; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("Mode") - } - - fn visit_str(self, v: &str) -> Result - where - E: serde::de::Error, - { - match v.parse::() { - Ok(m) => Ok(m), - Err(_) => Err(serde::de::Error::invalid_value(serde::de::Unexpected::Str(v), &self)), - } - } - - fn visit_string(self, v: String) -> Result - where - E: serde::de::Error, - { - self.visit_str::(v.as_str()) - } - - fn visit_bytes(self, v: &[u8]) -> Result - where - E: serde::de::Error, - { - match str::from_utf8(v) { - Ok(v) => self.visit_str(v), - Err(_) => Err(serde::de::Error::invalid_value(serde::de::Unexpected::Bytes(v), &self)), - } - } - - fn visit_byte_buf(self, v: Vec) -> Result - where - E: serde::de::Error, - { - match String::from_utf8(v) { - Ok(v) => self.visit_string(v), - Err(e) => Err(serde::de::Error::invalid_value( - serde::de::Unexpected::Bytes(&e.into_bytes()), - &self, - )), - } - } -} - -impl<'de> serde::Deserialize<'de> for Mode { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - deserializer.deserialize_string(ModeVisitor) - } -} - -impl serde::Serialize for Mode { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.as_str()) - } -} - /// Server's weight /// /// Commonly for using in balancer @@ -371,35 +301,6 @@ impl Default for ServerUserManager { } } -/// The source of the ServerConfig -#[derive(Debug, Clone, Copy, Eq, PartialEq)] -pub enum ServerSource { - Default, //< Default source, created in code - Configuration, //< Created from configuration - CommandLine, //< Created from command line - OnlineConfig, //< Created from online configuration (SIP008) -} - -/// Errors when creating a new ServerConfig -#[derive(Debug, Clone, Error)] -pub enum ServerConfigError { - /// Invalid base64 encoding of password - #[error("invalid key encoding for {0}, {1}")] - InvalidKeyEncoding(CipherKind, base64::DecodeError), - - /// Invalid user key encoding - #[error("invalid iPSK encoding for {0}, {1}")] - InvalidUserKeyEncoding(CipherKind, base64::DecodeError), - - /// Key length mismatch - #[error("invalid key length for {0}, expecting {1} bytes, but found {2} bytes")] - InvalidKeyLength(CipherKind, usize, usize), - - /// User Key (ipsk) length mismatch - #[error("invalid user key length for {0}, expecting {1} bytes, but found {2} bytes")] - InvalidUserKeyLength(CipherKind, usize, usize), -} - /// Configuration for a server #[derive(Clone, Debug)] pub struct ServerConfig { @@ -439,44 +340,39 @@ pub struct ServerConfig { /// Weight weight: ServerWeight, - - /// Source - source: ServerSource, } +#[cfg(feature = "aead-cipher-2022")] #[inline] -fn make_derived_key(method: CipherKind, password: &str, enc_key: &mut [u8]) -> Result<(), ServerConfigError> { - #[cfg(feature = "aead-cipher-2022")] +fn make_derived_key(method: CipherKind, password: &str, enc_key: &mut [u8]) { if method.is_aead_2022() { // AEAD 2022 password is a base64 form of enc_key match AEAD2022_PASSWORD_BASE64_ENGINE.decode(password) { Ok(v) => { if v.len() != enc_key.len() { - return Err(ServerConfigError::InvalidKeyLength(method, enc_key.len(), v.len())); + panic!( + "{} is expecting a {} bytes key, but password: {} ({} bytes after decode)", + method, + enc_key.len(), + password, + v.len() + ); } enc_key.copy_from_slice(&v); } Err(err) => { - return Err(ServerConfigError::InvalidKeyEncoding(method, err)); + panic!("{method} password {password} is not base64 encoded, error: {err}"); } } - - return Ok(()); + } else { + openssl_bytes_to_key(password.as_bytes(), enc_key); } +} - cfg_if! { - if #[cfg(any(feature = "stream-cipher", feature = "aead-cipher"))] { - let _ = method; - openssl_bytes_to_key(password.as_bytes(), enc_key); - - Ok(()) - } else { - // No default implementation. - let _ = password; - let _ = enc_key; - unreachable!("{method} don't know how to make a derived key"); - } - } +#[cfg(not(feature = "aead-cipher-2022"))] +#[inline] +fn make_derived_key(_method: CipherKind, password: &str, enc_key: &mut [u8]) { + openssl_bytes_to_key(password.as_bytes(), enc_key); } /// Check if method supports Extended Identity Header @@ -491,40 +387,12 @@ pub fn method_support_eih(method: CipherKind) -> bool { ) } -#[allow(clippy::type_complexity)] -fn password_to_keys

(method: CipherKind, password: P) -> Result<(String, Box<[u8]>, Vec), ServerConfigError> +fn password_to_keys

(method: CipherKind, password: P) -> (String, Box<[u8]>, Vec) where P: Into, { let password = password.into(); - match method { - CipherKind::NONE => { - // NONE method's key length is 0 - debug_assert_eq!(method.key_len(), 0); - - if !password.is_empty() { - warn!( - "method \"none\" doesn't need a password, which should be set as an empty String, but password.len() = {}", - password.len() - ); - } - - return Ok((password, Vec::new().into_boxed_slice(), Vec::new())); - } - - #[cfg(feature = "stream-cipher")] - CipherKind::SS_TABLE => { - // TABLE cipher doesn't need key derivation. - // Reference implemenation: shadowsocks-libev, shadowsocks (Python) - let enc_key = password.clone().into_bytes().into_boxed_slice(); - return Ok((password, enc_key, Vec::new())); - } - - #[allow(unreachable_patterns)] - _ => {} - } - #[cfg(feature = "aead-cipher-2022")] if method_support_eih(method) { // Extensible Identity Headers @@ -537,56 +405,40 @@ where let upsk = split_iter.next().expect("uPSK"); let mut enc_key = vec![0u8; method.key_len()].into_boxed_slice(); - make_derived_key(method, upsk, &mut enc_key)?; + make_derived_key(method, upsk, &mut enc_key); for ipsk in split_iter { match USER_KEY_BASE64_ENGINE.decode(ipsk) { Ok(v) => { - // Double check identity key's length - match method { - CipherKind::AEAD2022_BLAKE3_AES_128_GCM => { - // AES-128 - if v.len() != 16 { - return Err(ServerConfigError::InvalidUserKeyLength(method, 16, v.len())); - } - } - CipherKind::AEAD2022_BLAKE3_AES_256_GCM => { - // AES-256 - if v.len() != 32 { - return Err(ServerConfigError::InvalidUserKeyLength(method, 32, v.len())); - } - } - _ => unreachable!("{} doesn't support EIH", method), - } identity_keys.push(Bytes::from(v)); } Err(err) => { - return Err(ServerConfigError::InvalidUserKeyEncoding(method, err)); + panic!("iPSK {ipsk} is not base64 encoded, error: {err}"); } } } identity_keys.reverse(); - return Ok((upsk.to_owned(), enc_key, identity_keys)); + return (upsk.to_owned(), enc_key, identity_keys); } let mut enc_key = vec![0u8; method.key_len()].into_boxed_slice(); - make_derived_key(method, &password, &mut enc_key)?; + make_derived_key(method, &password, &mut enc_key); - Ok((password, enc_key, Vec::new())) + (password, enc_key, Vec::new()) } impl ServerConfig { /// Create a new `ServerConfig` - pub fn new(addr: A, password: P, method: CipherKind) -> Result + pub fn new(addr: A, password: P, method: CipherKind) -> ServerConfig where A: Into, P: Into, { - let (password, enc_key, identity_keys) = password_to_keys(method, password)?; + let (password, enc_key, identity_keys) = password_to_keys(method, password); - Ok(ServerConfig { + ServerConfig { addr: addr.into(), password, method, @@ -600,24 +452,21 @@ impl ServerConfig { id: None, mode: Mode::TcpAndUdp, // Server serves TCP & UDP by default weight: ServerWeight::new(), - source: ServerSource::Default, - }) + } } /// Set encryption method - pub fn set_method

(&mut self, method: CipherKind, password: P) -> Result<(), ServerConfigError> + pub fn set_method

(&mut self, method: CipherKind, password: P) where P: Into, { self.method = method; - let (password, enc_key, identity_keys) = password_to_keys(method, password)?; + let (password, enc_key, identity_keys) = password_to_keys(method, password); self.password = password; self.enc_key = enc_key; self.identity_keys = Arc::new(identity_keys); - - Ok(()) } /// Set plugin @@ -769,16 +618,6 @@ impl ServerConfig { self.weight = weight; } - /// Get server's source - pub fn source(&self) -> ServerSource { - self.source - } - - /// Set server's source - pub fn set_source(&mut self, source: ServerSource) { - self.source = source; - } - /// Get URL for QRCode /// ```plain /// ss:// + base64(method:password@host:port) @@ -794,7 +633,7 @@ impl ServerConfig { if #[cfg(feature = "aead-cipher-2022")] { let user_info = if !self.method().is_aead_2022() { let user_info = format!("{}:{}", self.method(), self.password()); - URL_PASSWORD_BASE64_ENGINE.encode(user_info) + URL_PASSWORD_BASE64_ENGINE.encode(&user_info) } else { format!("{}:{}", self.method(), percent_encoding::utf8_percent_encode(self.password(), percent_encoding::NON_ALPHANUMERIC)) }; @@ -942,14 +781,8 @@ impl ServerConfig { } }; - let method = match method.parse::() { - Ok(m) => m, - Err(err) => { - error!("failed to parse \"{}\" to CipherKind, err: {:?}", method, err); - return Err(UrlParseError::InvalidMethod); - } - }; - let mut svrconfig = ServerConfig::new(addr, pwd, method)?; + let method = method.parse().expect("method"); + let mut svrconfig = ServerConfig::new(addr, pwd, method); if let Some(q) = parsed.query() { let query = match serde_urlencoded::from_bytes::>(q.as_bytes()) { @@ -982,10 +815,7 @@ impl ServerConfig { } if let Some(frag) = parsed.fragment() { - match percent_encoding::percent_decode_str(frag).decode_utf8() { - Ok(m) => svrconfig.set_remarks(m), - Err(..) => svrconfig.set_remarks(frag), - } + svrconfig.set_remarks(frag); } Ok(svrconfig) @@ -998,26 +828,49 @@ impl ServerConfig { } /// Shadowsocks URL parsing Error -#[derive(Debug, Clone, Error)] +#[derive(Debug, Clone)] pub enum UrlParseError { - #[error("{0}")] - ParseError(#[from] url::ParseError), - #[error("URL must have \"ss://\" scheme")] + ParseError(url::ParseError), InvalidScheme, - #[error("unknown encryption method")] - InvalidMethod, - #[error("invalid user info")] InvalidUserInfo, - #[error("missing host")] MissingHost, - #[error("invalid authentication info")] InvalidAuthInfo, - #[error("invalid server address")] InvalidServerAddr, - #[error("invalid query string")] InvalidQueryString, - #[error("{0}")] - ServerConfigError(#[from] ServerConfigError), +} + +impl From for UrlParseError { + fn from(err: url::ParseError) -> UrlParseError { + UrlParseError::ParseError(err) + } +} + +impl fmt::Display for UrlParseError { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match *self { + UrlParseError::ParseError(ref err) => fmt::Display::fmt(err, f), + UrlParseError::InvalidScheme => write!(f, "URL must have \"ss://\" scheme"), + UrlParseError::InvalidUserInfo => write!(f, "invalid user info"), + UrlParseError::MissingHost => write!(f, "missing host"), + UrlParseError::InvalidAuthInfo => write!(f, "invalid authentication info"), + UrlParseError::InvalidServerAddr => write!(f, "invalid server address"), + UrlParseError::InvalidQueryString => write!(f, "invalid query string"), + } + } +} + +impl error::Error for UrlParseError { + fn source(&self) -> Option<&(dyn error::Error + 'static)> { + match *self { + UrlParseError::ParseError(ref err) => Some(err as &dyn error::Error), + UrlParseError::InvalidScheme => None, + UrlParseError::InvalidUserInfo => None, + UrlParseError::MissingHost => None, + UrlParseError::InvalidAuthInfo => None, + UrlParseError::InvalidServerAddr => None, + UrlParseError::InvalidQueryString => None, + } + } } impl FromStr for ServerConfig { @@ -1099,74 +952,6 @@ impl Display for ServerAddr { } } -struct ServerAddrVisitor; - -impl serde::de::Visitor<'_> for ServerAddrVisitor { - type Value = ServerAddr; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("ServerAddr") - } - - fn visit_str(self, v: &str) -> Result - where - E: serde::de::Error, - { - match v.parse::() { - Ok(m) => Ok(m), - Err(_) => Err(serde::de::Error::invalid_value(serde::de::Unexpected::Str(v), &self)), - } - } - - fn visit_string(self, v: String) -> Result - where - E: serde::de::Error, - { - self.visit_str::(v.as_str()) - } - - fn visit_bytes(self, v: &[u8]) -> Result - where - E: serde::de::Error, - { - match str::from_utf8(v) { - Ok(v) => self.visit_str(v), - Err(_) => Err(serde::de::Error::invalid_value(serde::de::Unexpected::Bytes(v), &self)), - } - } - - fn visit_byte_buf(self, v: Vec) -> Result - where - E: serde::de::Error, - { - match String::from_utf8(v) { - Ok(v) => self.visit_string(v), - Err(e) => Err(serde::de::Error::invalid_value( - serde::de::Unexpected::Bytes(&e.into_bytes()), - &self, - )), - } - } -} - -impl<'de> serde::Deserialize<'de> for ServerAddr { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - deserializer.deserialize_string(ServerAddrVisitor) - } -} - -impl serde::Serialize for ServerAddr { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.to_string().as_str()) - } -} - impl From for ServerAddr { fn from(addr: SocketAddr) -> ServerAddr { ServerAddr::SocketAddr(addr) @@ -1280,74 +1065,6 @@ impl Display for ManagerAddr { } } -struct ManagerAddrVisitor; - -impl serde::de::Visitor<'_> for ManagerAddrVisitor { - type Value = ManagerAddr; - - fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("ManagerAddr") - } - - fn visit_str(self, v: &str) -> Result - where - E: serde::de::Error, - { - match v.parse::() { - Ok(m) => Ok(m), - Err(_) => Err(serde::de::Error::invalid_value(serde::de::Unexpected::Str(v), &self)), - } - } - - fn visit_string(self, v: String) -> Result - where - E: serde::de::Error, - { - self.visit_str::(v.as_str()) - } - - fn visit_bytes(self, v: &[u8]) -> Result - where - E: serde::de::Error, - { - match str::from_utf8(v) { - Ok(v) => self.visit_str(v), - Err(_) => Err(serde::de::Error::invalid_value(serde::de::Unexpected::Bytes(v), &self)), - } - } - - fn visit_byte_buf(self, v: Vec) -> Result - where - E: serde::de::Error, - { - match String::from_utf8(v) { - Ok(v) => self.visit_string(v), - Err(e) => Err(serde::de::Error::invalid_value( - serde::de::Unexpected::Bytes(&e.into_bytes()), - &self, - )), - } - } -} - -impl<'de> serde::Deserialize<'de> for ManagerAddr { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - deserializer.deserialize_string(ManagerAddrVisitor) - } -} - -impl serde::Serialize for ManagerAddr { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.to_string().as_str()) - } -} - impl From for ManagerAddr { fn from(addr: SocketAddr) -> ManagerAddr { ManagerAddr::SocketAddr(addr) @@ -1425,14 +1142,3 @@ impl FromStr for ReplayAttackPolicy { } } } - -#[cfg(test)] -mod test { - use super::*; - - #[test] - fn test_server_config_from_url() { - let server_config = ServerConfig::from_url("ss://foo:bar@127.0.0.1:9999"); - assert!(matches!(server_config, Err(UrlParseError::InvalidMethod))); - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/context.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/context.rs index a32634b..08cae47 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/context.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/context.rs @@ -7,13 +7,12 @@ use log::warn; use crate::{ config::{ReplayAttackPolicy, ServerType}, - crypto::CipherKind, + crypto::{v1::random_iv_or_salt, CipherKind}, dns_resolver::DnsResolver, security::replay::ReplayProtector, }; /// Service context -#[derive(Debug)] pub struct Context { // Protector against replay attack // The actual replay detection behavior is implemented in ReplayProtector @@ -50,7 +49,6 @@ impl Context { /// Check if nonce exist or not /// /// If not, set into the current bloom filter - #[cfg(any(feature = "stream-cipher", feature = "aead-cipher", feature = "aead-cipher-2022"))] #[inline(always)] fn check_nonce_and_set(&self, method: CipherKind, nonce: &[u8]) -> bool { match self.replay_policy { @@ -65,10 +63,7 @@ impl Context { return; } - #[cfg(any(feature = "stream-cipher", feature = "aead-cipher", feature = "aead-cipher-2022"))] loop { - use crate::crypto::utils::random_iv_or_salt; - random_iv_or_salt(nonce); // Salt already exists, generate a new one. @@ -78,12 +73,6 @@ impl Context { break; } - - #[cfg(not(any(feature = "stream-cipher", feature = "aead-cipher", feature = "aead-cipher-2022")))] - if !nonce.is_empty() { - let _ = unique; - panic!("{method} don't know how to generate nonce"); - } } /// Check nonce replay @@ -133,11 +122,8 @@ impl Context { } /// Resolves DNS address to `SocketAddr`s - pub async fn dns_resolve<'a>( - &self, - addr: &'a str, - port: u16, - ) -> io::Result + 'a + use<'a>> { + #[allow(clippy::needless_lifetimes)] + pub async fn dns_resolve<'a>(&self, addr: &'a str, port: u16) -> io::Result + 'a> { self.dns_resolver.resolve(addr, port).await } @@ -156,7 +142,7 @@ impl Context { self.replay_policy = replay_policy; } - /// Get policy against replay attack + /// Get policy against replay attach pub fn replay_attack_policy(&self) -> ReplayAttackPolicy { self.replay_policy } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs index 9c5b69d..9db908e 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/hickory_dns_resolver.rs @@ -7,23 +7,26 @@ use std::{ ops::Deref, pin::Pin, task::{Context, Poll}, - time::Duration, }; +use cfg_if::cfg_if; use futures::ready; use hickory_resolver::{ - ResolveError, Resolver, config::{LookupIpStrategy, ResolverConfig, ResolverOpts}, - name_server::GenericConnector, + error::ResolveResult, + name_server::{GenericConnector, RuntimeProvider}, proto::{ - runtime::{RuntimeProvider, TokioHandle, TokioTime, iocompat::AsyncIoTokioAsStd}, - udp::DnsUdpSocket, + iocompat::AsyncIoTokioAsStd, + udp::{DnsUdpSocket, QuicLocalAddr}, + TokioTime, }, + AsyncResolver, + TokioHandle, }; -use log::{error, trace}; +use log::trace; use tokio::{io::ReadBuf, net::UdpSocket}; -use crate::net::{ConnectOpts, tcp::TcpStream as ShadowTcpStream, udp::UdpSocket as ShadowUdpSocket}; +use crate::net::{tcp::TcpStream as ShadowTcpStream, udp::UdpSocket as ShadowUdpSocket, ConnectOpts}; /// Shadowsocks hickory-dns Runtime Provider #[derive(Clone)] @@ -60,6 +63,12 @@ impl DnsUdpSocket for ShadowUdpSocket { } } +impl QuicLocalAddr for ShadowUdpSocket { + fn local_addr(&self) -> io::Result { + self.deref().local_addr() + } +} + impl RuntimeProvider for ShadowDnsRuntimeProvider { type Handle = TokioHandle; type Tcp = AsyncIoTokioAsStd; @@ -70,31 +79,10 @@ impl RuntimeProvider for ShadowDnsRuntimeProvider { self.handle.clone() } - fn connect_tcp( - &self, - server_addr: SocketAddr, - bind_addr: Option, - wait_for: Option, - ) -> Pin>>> { - let mut connect_opts = self.connect_opts.clone(); - - if let Some(bind_addr) = bind_addr { - connect_opts.bind_local_addr = Some(bind_addr); - } - - let wait_for = wait_for.unwrap_or_else(|| Duration::from_secs(5)); - + fn connect_tcp(&self, server_addr: SocketAddr) -> Pin>>> { + let connect_opts = self.connect_opts.clone(); Box::pin(async move { - let tcp = match tokio::time::timeout( - wait_for, - ShadowTcpStream::connect_with_opts(&server_addr, &connect_opts), - ) - .await - { - Ok(Ok(s)) => s, - Ok(Err(err)) => return Err(err), - Err(_) => return Err(io::ErrorKind::TimedOut.into()), - }; + let tcp = ShadowTcpStream::connect_with_opts(&server_addr, &connect_opts).await?; Ok(AsyncIoTokioAsStd(tcp)) }) } @@ -118,65 +106,71 @@ pub type ShadowDnsConnectionProvider = GenericConnector; +pub type DnsResolver = AsyncResolver; /// Create a `hickory-dns` asynchronous DNS resolver pub async fn create_resolver( dns: Option, opts: Option, connect_opts: ConnectOpts, -) -> Result { +) -> ResolveResult { // Customized dns resolution match dns { Some(conf) => { - trace!("initializing DNS resolver with config {:?}", conf,); - - let mut builder = DnsResolver::builder_with_config( - conf, - ShadowDnsConnectionProvider::new(ShadowDnsRuntimeProvider::new(connect_opts)), - ); - if let Some(opts) = opts { - *builder.options_mut() = opts; - } - let resolver_opts = builder.options_mut(); - + let mut resolver_opts = opts.unwrap_or_default(); // Use Ipv4AndIpv6 strategy. Because Ipv4ThenIpv6 or Ipv6ThenIpv4 will return if the first query returned. // Since we want to use Happy Eyeballs to connect to both IPv4 and IPv6 addresses, we need both A and AAAA records. resolver_opts.ip_strategy = LookupIpStrategy::Ipv4AndIpv6; - // Enable EDNS0 for large records - resolver_opts.edns0 = true; - - trace!("initializing DNS resolver with opts {:?}", resolver_opts); - - Ok(builder.build()) + trace!( + "initializing DNS resolver with config {:?} opts {:?}", + conf, + resolver_opts + ); + Ok(DnsResolver::new( + conf, + resolver_opts, + ShadowDnsConnectionProvider::new(ShadowDnsRuntimeProvider::new(connect_opts)), + )) } // To make this independent, if targeting macOS, BSD, Linux, or Windows, we can use the system's configuration // Android doesn't have /etc/resolv.conf. None => { - match DnsResolver::builder(ShadowDnsConnectionProvider::new(ShadowDnsRuntimeProvider::new( - connect_opts, - ))) { - Ok(mut builder) => { - let opts = builder.options_mut(); + cfg_if! { + if #[cfg(any(all(unix, not(target_os = "android")), windows))] { + use hickory_resolver::system_conf::read_system_conf; + + // use the system resolver configuration + let (config, mut opts) = match read_system_conf() { + Ok(o) => o, + Err(err) => { + use log::error; + + error!("failed to initialize DNS resolver with system-config, error: {}", err); + + // From::from is required because on error type is different on Windows + #[allow(clippy::useless_conversion)] + return Err(From::from(err)); + } + }; + // NOTE: timeout will be set by config (for example, /etc/resolv.conf on UNIX-like system) // // Only ip_strategy should be changed. Why Ipv4AndIpv6? See comments above. opts.ip_strategy = LookupIpStrategy::Ipv4AndIpv6; - // Enable EDNS0 for large records - opts.edns0 = true; + trace!( + "initializing DNS resolver with system-config {:?} opts {:?}", + config, + opts + ); - trace!("initializing DNS resolver with system-config opts {:?}", opts); + Ok(DnsResolver::new(config, opts, ShadowDnsConnectionProvider::new(ShadowDnsRuntimeProvider::new(connect_opts)))) + } else { + use hickory_resolver::error::ResolveError; - Ok(builder.build()) - } - Err(err) => { - error!("initialize DNS resolver with system-config failed, error: {}", err); - Err(ResolveError::from( - "current platform doesn't support hickory-dns resolver with system configured".to_owned(), - )) + Err(ResolveError::from("current platform doesn't support hickory-dns resolver with system configured".to_owned())) } } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/mod.rs index 3d99308..1fba47f 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/mod.rs @@ -10,7 +10,7 @@ mod resolver; /// Helper macro for resolving host and then process each addresses #[macro_export] macro_rules! lookup_then { - ($context:expr_2021, $addr:expr_2021, $port:expr_2021, |$resolved_addr:ident| $body:block) => {{ + ($context:expr, $addr:expr, $port:expr, |$resolved_addr:ident| $body:block) => {{ use std::net::SocketAddr; let ipv6_first = $context.ipv6_first(); @@ -49,7 +49,7 @@ macro_rules! lookup_then { } }}; - (RESOLVE @ $addrs:expr_2021, $resolved_addr:ident, $body:block) => {{ + (RESOLVE @ $addrs:expr, $resolved_addr:ident, $body:block) => {{ let mut result = None; for $resolved_addr in $addrs { @@ -70,7 +70,7 @@ macro_rules! lookup_then { #[macro_export] macro_rules! lookup_then_connect { - ($context:expr_2021, $addr:expr_2021, $port:expr_2021, |$resolved_addr:ident| $body:block) => {{ + ($context:expr, $addr:expr, $port:expr, |$resolved_addr:ident| $body:block) => {{ use futures::future::{self, Either}; use log::trace; use std::{net::SocketAddr, time::Duration}; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/resolver.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/resolver.rs index e319a4f..0915b70 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/resolver.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/dns_resolver/resolver.rs @@ -11,6 +11,7 @@ use std::{ #[cfg(feature = "hickory-dns")] use arc_swap::ArcSwap; +use async_trait::async_trait; use cfg_if::cfg_if; #[cfg(feature = "hickory-dns")] use hickory_resolver::config::ResolverConfig; @@ -18,7 +19,7 @@ use hickory_resolver::config::ResolverConfig; use hickory_resolver::config::ResolverOpts; #[cfg(all(feature = "hickory-dns", unix, not(target_os = "android")))] use log::error; -use log::{Level, log_enabled, trace}; +use log::{log_enabled, trace, Level}; use tokio::net::lookup_host; #[cfg(all(feature = "hickory-dns", unix, not(target_os = "android")))] use tokio::task::JoinHandle; @@ -30,24 +31,18 @@ use crate::net::ConnectOpts; use super::hickory_dns_resolver::DnsResolver as HickoryDnsResolver; /// Abstract DNS resolver -#[trait_variant::make(Send)] -#[dynosaur::dynosaur(DynDnsResolve)] +#[async_trait] pub trait DnsResolve { /// Resolves `addr:port` to a list of `SocketAddr` async fn resolve(&self, addr: &str, port: u16) -> io::Result>; } -// Equivalent to (dyn DnsResolve + Send + Sync) -unsafe impl Send for DynDnsResolve<'_> {} -unsafe impl Sync for DynDnsResolve<'_> {} - #[cfg(feature = "hickory-dns")] -#[derive(Debug)] pub struct HickoryDnsSystemResolver { resolver: ArcSwap, - #[cfg_attr(any(windows, target_os = "android"), allow(dead_code))] + #[cfg_attr(windows, allow(dead_code))] connect_opts: ConnectOpts, - #[cfg_attr(any(windows, target_os = "android"), allow(dead_code))] + #[cfg_attr(windows, allow(dead_code))] opts: Option, } @@ -67,7 +62,7 @@ pub enum DnsResolver { #[cfg(feature = "hickory-dns")] HickoryDns(HickoryDnsResolver), /// Customized Resolver - Custom(Box>), + Custom(Box), } impl Default for DnsResolver { @@ -161,7 +156,7 @@ async fn hickory_dns_notify_update_dns(resolver: Arc) use super::hickory_dns_resolver::create_resolver; - const DNS_RESOLV_FILE_PATH: &str = "/etc/resolv.conf"; + static DNS_RESOLV_FILE_PATH: &str = "/etc/resolv.conf"; if !Path::new(DNS_RESOLV_FILE_PATH).exists() { trace!("resolv file {DNS_RESOLV_FILE_PATH} doesn't exist"); @@ -286,15 +281,12 @@ impl DnsResolver { where R: DnsResolve + Send + Sync + 'static, { - DnsResolver::Custom(DynDnsResolve::boxed(custom)) + DnsResolver::Custom(Box::new(custom) as Box) } /// Resolve address into `SocketAddr`s - pub async fn resolve<'a>( - &self, - addr: &'a str, - port: u16, - ) -> io::Result + 'a + use<'a>> { + #[allow(clippy::needless_lifetimes)] + pub async fn resolve<'a>(&self, addr: &'a str, port: u16) -> io::Result + 'a> { struct ResolverLogger<'x, 'y> { resolver: &'x DnsResolver, addr: &'y str, @@ -319,7 +311,7 @@ impl DnsResolver { } } - impl Drop for ResolverLogger<'_, '_> { + impl<'x, 'y> Drop for ResolverLogger<'x, 'y> { fn drop(&mut self) { match self.start_time { Some(start_time) => { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/client.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/client.rs index f3fc969..67d1b90 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/client.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/client.rs @@ -8,8 +8,16 @@ use super::{ datagram::ManagerDatagram, error::Error, protocol::{ - AddRequest, AddResponse, ListRequest, ListResponse, ManagerProtocol, PingRequest, PingResponse, RemoveRequest, - RemoveResponse, StatRequest, + AddRequest, + AddResponse, + ListRequest, + ListResponse, + ManagerProtocol, + PingRequest, + PingResponse, + RemoveRequest, + RemoveResponse, + StatRequest, }, }; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/datagram.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/datagram.rs index f50186c..05131d9 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/datagram.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/datagram.rs @@ -6,7 +6,7 @@ use std::{fmt, io, net::SocketAddr}; use tokio::net::UdpSocket; #[cfg(unix)] -use tokio::net::{UnixDatagram, unix::SocketAddr as UnixSocketAddr}; +use tokio::net::{unix::SocketAddr as UnixSocketAddr, UnixDatagram}; use crate::{ config::ManagerAddr, @@ -46,7 +46,6 @@ impl fmt::Display for ManagerSocketAddr { /// Datagram socket for manager /// /// For *nix system, this is a wrapper for both UDP socket and Unix socket -#[derive(Debug)] pub enum ManagerDatagram { UdpDatagram(UdpSocket), #[cfg(unix)] diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/listener.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/listener.rs index 6f79d9d..004d82f 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/listener.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/manager/listener.rs @@ -13,7 +13,6 @@ use super::{ }; /// Manager server Listener -#[derive(Debug)] pub struct ManagerListener { socket: ManagerDatagram, } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/mod.rs index 6b69fbc..a47bda3 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/mod.rs @@ -5,8 +5,8 @@ use std::net::SocketAddr; #[cfg(unix)] pub use self::sys::uds::{UnixListener, UnixStream}; pub use self::{ - option::{AcceptOpts, ConnectOpts, TcpSocketOpts, UdpSocketOpts}, - sys::{IpStackCapabilities, get_ip_stack_capabilities, set_tcp_fastopen, socket_bind_dual_stack}, + option::{AcceptOpts, ConnectOpts, TcpSocketOpts}, + sys::{set_tcp_fastopen, socket_bind_dual_stack}, tcp::{TcpListener, TcpStream}, udp::UdpSocket, }; @@ -46,8 +46,7 @@ impl From for AddrFamily { /// Check if `SocketAddr` could be used for creating dual-stack sockets pub fn is_dual_stack_addr(addr: &SocketAddr) -> bool { if let SocketAddr::V6(ref v6) = *addr { - let ip = v6.ip(); - ip.is_unspecified() || ip.to_ipv4_mapped().is_some() + v6.ip().is_unspecified() } else { false } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/option.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/option.rs index 24c7f33..231b986 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/option.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/option.rs @@ -1,6 +1,6 @@ //! Options for connecting to remote server -use std::{net::SocketAddr, time::Duration}; +use std::{net::IpAddr, time::Duration}; /// Options for connecting to TCP remote server #[derive(Debug, Clone, Default)] @@ -30,18 +30,6 @@ pub struct TcpSocketOpts { pub mptcp: bool, } -/// Options for UDP server -#[derive(Debug, Clone, Default)] -pub struct UdpSocketOpts { - /// Maximum Transmission Unit (MTU) for UDP socket `recv` - /// - /// NOTE: MTU includes IP header, UDP header, UDP payload - pub mtu: Option, - - /// Outbound UDP socket allows IP fragmentation - pub allow_fragmentation: bool, -} - /// Options for connecting to remote server #[derive(Debug, Clone, Default)] pub struct ConnectOpts { @@ -63,16 +51,13 @@ pub struct ConnectOpts { /// Outbound socket binds to this IP address, mostly for choosing network interfaces /// /// It only affects sockets that trying to connect to addresses with the same family - pub bind_local_addr: Option, + pub bind_local_addr: Option, /// Outbound socket binds to interface pub bind_interface: Option, /// TCP options pub tcp: TcpSocketOpts, - - /// UDP options - pub udp: UdpSocketOpts, } /// Inbound connection options @@ -81,9 +66,6 @@ pub struct AcceptOpts { /// TCP options pub tcp: TcpSocketOpts, - /// UDP options - pub udp: UdpSocketOpts, - /// Enable IPV6_V6ONLY option for socket pub ipv6_only: bool, } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/mod.rs index 42d3d33..0f5ac07 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/mod.rs @@ -1,12 +1,11 @@ use std::{ io::{self, ErrorKind}, - net::{Ipv4Addr, Ipv6Addr, SocketAddr}, + net::{IpAddr, SocketAddr}, }; use cfg_if::cfg_if; use log::{debug, warn}; -use once_cell::sync::Lazy; -use socket2::{Domain, Protocol, SockAddr, Socket, Type}; +use socket2::{SockAddr, Socket}; use tokio::net::TcpSocket; use super::ConnectOpts; @@ -23,26 +22,15 @@ cfg_if! { fn set_common_sockopt_for_connect(addr: SocketAddr, socket: &TcpSocket, opts: &ConnectOpts) -> io::Result<()> { // Binds to IP address - if let Some(baddr) = opts.bind_local_addr { - match (baddr, addr) { - (SocketAddr::V4(..), SocketAddr::V4(..)) => { - socket.bind(baddr)?; + if let Some(ip) = opts.bind_local_addr { + match (ip, addr.ip()) { + (IpAddr::V4(..), IpAddr::V4(..)) => { + socket.bind(SocketAddr::new(ip, 0))?; } - (SocketAddr::V4(v4baddr), SocketAddr::V6(..)) => { - socket.bind(SocketAddr::new(v4baddr.ip().to_ipv6_mapped().into(), v4baddr.port()))?; + (IpAddr::V6(..), IpAddr::V6(..)) => { + socket.bind(SocketAddr::new(ip, 0))?; } - (SocketAddr::V6(..), SocketAddr::V6(..)) => { - socket.bind(baddr)?; - } - (SocketAddr::V6(v6baddr), SocketAddr::V4(..)) => match v6baddr.ip().to_ipv4_mapped() { - Some(v4baddr) => socket.bind(SocketAddr::new(v4baddr.into(), v6baddr.port()))?, - None => { - return Err(io::Error::new( - ErrorKind::InvalidInput, - "bind_local_addr is not a valid IPv4-mapped IPv6 address", - )); - } - }, + _ => {} } } @@ -79,7 +67,7 @@ where let sock = unsafe { Socket::from_raw_fd(fd) }; let result = socket_bind_dual_stack_inner(&sock, addr, ipv6_only); - let _ = sock.into_raw_fd(); + sock.into_raw_fd(); result } @@ -98,7 +86,7 @@ where let sock = unsafe { Socket::from_raw_socket(handle) }; let result = socket_bind_dual_stack_inner(&sock, addr, ipv6_only); - let _ = sock.into_raw_socket(); + sock.into_raw_socket(); result } @@ -139,64 +127,3 @@ fn socket_bind_dual_stack_inner(socket: &Socket, addr: &SocketAddr, ipv6_only: b Ok(()) } - -/// IP Stack Capabilities -#[derive(Debug, Clone, Copy, Default)] -pub struct IpStackCapabilities { - /// IP stack supports IPv4 - pub support_ipv4: bool, - /// IP stack supports IPv6 - pub support_ipv6: bool, - /// IP stack supports IPv4-mapped-IPv6 - pub support_ipv4_mapped_ipv6: bool, -} - -static IP_STACK_CAPABILITIES: Lazy = Lazy::new(|| { - // Reference Implementation: https://github.com/golang/go/blob/master/src/net/ipsock_posix.go - - let mut caps = IpStackCapabilities { - support_ipv4: false, - support_ipv6: false, - support_ipv4_mapped_ipv6: false, - }; - - // Check IPv4 - if Socket::new(Domain::IPV4, Type::STREAM, Some(Protocol::TCP)).is_ok() { - caps.support_ipv4 = true; - debug!("IpStackCapability support_ipv4=true"); - } - - // Check IPv6 (::1) - if let Ok(ipv6_socket) = Socket::new(Domain::IPV6, Type::STREAM, Some(Protocol::TCP)) { - if ipv6_socket.set_only_v6(true).is_ok() { - let local_host = SockAddr::from(SocketAddr::new(Ipv6Addr::LOCALHOST.into(), 0)); - if ipv6_socket.bind(&local_host).is_ok() { - caps.support_ipv6 = true; - debug!("IpStackCapability support_ipv6=true"); - } - } - } - - // Check IPv4-mapped-IPv6 (127.0.0.1) - if check_ipv4_mapped_ipv6_capability().is_ok() { - caps.support_ipv4_mapped_ipv6 = true; - debug!("IpStackCapability support_ipv4_mapped_ipv6=true"); - } - - caps -}); - -fn check_ipv4_mapped_ipv6_capability() -> io::Result<()> { - let socket = Socket::new(Domain::IPV6, Type::STREAM, Some(Protocol::TCP))?; - socket.set_only_v6(false)?; - - let local_host = SockAddr::from(SocketAddr::new(Ipv4Addr::LOCALHOST.to_ipv6_mapped().into(), 0)); - socket.bind(&local_host)?; - - Ok(()) -} - -/// Get globally probed `IpStackCapabilities` -pub fn get_ip_stack_capabilities() -> &'static IpStackCapabilities { - &IP_STACK_CAPABILITIES -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/bsd/freebsd.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/bsd/freebsd.rs index da865d2..180154c 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/bsd/freebsd.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/bsd/freebsd.rs @@ -1,7 +1,7 @@ use std::{ - io::{self, ErrorKind}, + io, mem, - net::{Ipv4Addr, Ipv6Addr, SocketAddr}, + net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}, os::unix::io::{AsRawFd, RawFd}, pin::Pin, ptr, @@ -19,9 +19,11 @@ use tokio::{ use tokio_tfo::TfoStream; use crate::net::{ - AcceptOpts, AddrFamily, ConnectOpts, sys::{set_common_sockopt_after_connect, set_common_sockopt_for_connect, socket_bind_dual_stack}, udp::{BatchRecvMessage, BatchSendMessage}, + AcceptOpts, + AddrFamily, + ConnectOpts, }; /// A `TcpStream` that supports TFO (TCP Fast Open) @@ -228,19 +230,8 @@ pub fn set_disable_ip_fragmentation(af: AddrFamily, socket: &S) -> i #[inline] pub async fn create_outbound_udp_socket(af: AddrFamily, config: &ConnectOpts) -> io::Result { let bind_addr = match (af, config.bind_local_addr) { - (AddrFamily::Ipv4, Some(SocketAddr::V4(addr))) => addr.into(), - (AddrFamily::Ipv4, Some(SocketAddr::V6(addr))) => { - // Map IPv6 bind_local_addr to IPv4 if AF is IPv4 - match addr.ip().to_ipv4_mapped() { - Some(addr) => SocketAddr::new(addr.into(), 0), - None => return Err(io::Error::new(ErrorKind::InvalidInput, "Invalid IPv6 address")), - } - } - (AddrFamily::Ipv6, Some(SocketAddr::V6(addr))) => addr.into(), - (AddrFamily::Ipv6, Some(SocketAddr::V4(addr))) => { - // Map IPv4 bind_local_addr to IPv6 if AF is IPv6 - SocketAddr::new(addr.ip().to_ipv6_mapped().into(), 0) - } + (AddrFamily::Ipv4, Some(IpAddr::V4(ip))) => SocketAddr::new(ip.into(), 0), + (AddrFamily::Ipv6, Some(IpAddr::V6(ip))) => SocketAddr::new(ip.into(), 0), (AddrFamily::Ipv4, ..) => SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), 0), (AddrFamily::Ipv6, ..) => SocketAddr::new(Ipv6Addr::UNSPECIFIED.into(), 0), }; @@ -249,7 +240,7 @@ pub async fn create_outbound_udp_socket(af: AddrFamily, config: &ConnectOpts) -> } /// Create a `UdpSocket` binded to `bind_addr` -pub async fn bind_outbound_udp_socket(bind_addr: &SocketAddr, config: &ConnectOpts) -> io::Result { +pub async fn bind_outbound_udp_socket(bind_addr: &SocketAddr, _config: &ConnectOpts) -> io::Result { let af = AddrFamily::from(bind_addr); let socket = if af != AddrFamily::Ipv6 { @@ -263,10 +254,8 @@ pub async fn bind_outbound_udp_socket(bind_addr: &SocketAddr, config: &ConnectOp UdpSocket::from_std(socket.into())? }; - if !config.udp.allow_fragmentation { - if let Err(err) = set_disable_ip_fragmentation(af, &socket) { - warn!("failed to disable IP fragmentation, error: {}", err); - } + if let Err(err) = set_disable_ip_fragmentation(af, &socket) { + warn!("failed to disable IP fragmentation, error: {}", err); } Ok(socket) diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/bsd/macos.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/bsd/macos.rs index 2d65020..dbc6e41 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/bsd/macos.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/bsd/macos.rs @@ -3,7 +3,7 @@ use std::{ collections::HashMap, io::{self, ErrorKind}, mem, - net::{Ipv4Addr, Ipv6Addr, SocketAddr, TcpStream as StdTcpStream}, + net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, TcpStream as StdTcpStream}, os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}, pin::Pin, ptr, @@ -22,9 +22,11 @@ use tokio::{ use tokio_tfo::TfoStream; use crate::net::{ - AcceptOpts, AddrFamily, ConnectOpts, sys::{set_common_sockopt_after_connect, set_common_sockopt_for_connect, socket_bind_dual_stack}, udp::{BatchRecvMessage, BatchSendMessage}, + AcceptOpts, + AddrFamily, + ConnectOpts, }; /// A `TcpStream` that supports TFO (TCP Fast Open) @@ -54,10 +56,6 @@ impl TcpStream { let socket = unsafe { let fd = libc::socket(AF_MULTIPATH, libc::SOCK_STREAM, libc::IPPROTO_TCP); - if fd < 0 { - let err = io::Error::last_os_error(); - return Err(err); - } let socket = Socket::from_raw_fd(fd); socket.set_nonblocking(true)?; TcpSocket::from_raw_fd(socket.into_raw_fd()) @@ -355,19 +353,8 @@ pub fn set_disable_ip_fragmentation(af: AddrFamily, socket: &S) -> i #[inline] pub async fn create_outbound_udp_socket(af: AddrFamily, config: &ConnectOpts) -> io::Result { let bind_addr = match (af, config.bind_local_addr) { - (AddrFamily::Ipv4, Some(SocketAddr::V4(addr))) => addr.into(), - (AddrFamily::Ipv4, Some(SocketAddr::V6(addr))) => { - // Map IPv6 bind_local_addr to IPv4 if AF is IPv4 - match addr.ip().to_ipv4_mapped() { - Some(addr) => SocketAddr::new(addr.into(), 0), - None => return Err(io::Error::new(ErrorKind::InvalidInput, "Invalid IPv6 address")), - } - } - (AddrFamily::Ipv6, Some(SocketAddr::V6(addr))) => addr.into(), - (AddrFamily::Ipv6, Some(SocketAddr::V4(addr))) => { - // Map IPv4 bind_local_addr to IPv6 if AF is IPv6 - SocketAddr::new(addr.ip().to_ipv6_mapped().into(), 0) - } + (AddrFamily::Ipv4, Some(IpAddr::V4(ip))) => SocketAddr::new(ip.into(), 0), + (AddrFamily::Ipv6, Some(IpAddr::V6(ip))) => SocketAddr::new(ip.into(), 0), (AddrFamily::Ipv4, ..) => SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), 0), (AddrFamily::Ipv6, ..) => SocketAddr::new(Ipv6Addr::UNSPECIFIED.into(), 0), }; @@ -390,10 +377,8 @@ pub async fn bind_outbound_udp_socket(bind_addr: &SocketAddr, config: &ConnectOp UdpSocket::from_std(socket.into())? }; - if !config.udp.allow_fragmentation { - if let Err(err) = set_disable_ip_fragmentation(af, &socket) { - warn!("failed to disable IP fragmentation, error: {}", err); - } + if let Err(err) = set_disable_ip_fragmentation(af, &socket) { + warn!("failed to disable IP fragmentation, error: {}", err); } // Set IP_BOUND_IF for BSD-like @@ -418,7 +403,7 @@ struct msghdr_x { msg_datalen: libc::size_t, //< byte length of buffer in msg_iov } -unsafe extern "C" { +extern "C" { fn recvmsg_x(s: libc::c_int, msgp: *const msghdr_x, cnt: libc::c_uint, flags: libc::c_int) -> libc::ssize_t; fn sendmsg_x(s: libc::c_int, msgp: *const msghdr_x, cnt: libc::c_uint, flags: libc::c_int) -> libc::ssize_t; } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/linux/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/linux/mod.rs index 58a9a15..07acde4 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/linux/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/linux/mod.rs @@ -1,7 +1,7 @@ use std::{ - io::{self, ErrorKind}, + io, mem, - net::{Ipv4Addr, Ipv6Addr, SocketAddr}, + net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}, os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}, pin::Pin, ptr, @@ -20,9 +20,11 @@ use tokio::{ use tokio_tfo::TfoStream; use crate::net::{ - AcceptOpts, AddrFamily, ConnectOpts, sys::{set_common_sockopt_after_connect, set_common_sockopt_for_connect, socket_bind_dual_stack}, udp::{BatchRecvMessage, BatchSendMessage}, + AcceptOpts, + AddrFamily, + ConnectOpts, }; /// A `TcpStream` that supports TFO (TCP Fast Open) @@ -56,7 +58,7 @@ impl TcpStream { // This is a workaround for VPNService #[cfg(target_os = "android")] if !addr.ip().is_loopback() { - use std::time::Duration; + use std::{io::ErrorKind, time::Duration}; use tokio::time; if let Some(ref path) = opts.vpn_protect_path { @@ -214,18 +216,12 @@ pub fn set_tcp_fastopen(socket: &S) -> io::Result<()> { } fn create_mptcp_socket(bind_addr: &SocketAddr) -> io::Result { - // https://www.kernel.org/doc/html/next/networking/mptcp.html - unsafe { let family = match bind_addr { SocketAddr::V4(..) => libc::AF_INET, SocketAddr::V6(..) => libc::AF_INET6, }; let fd = libc::socket(family, libc::SOCK_STREAM, libc::IPPROTO_MPTCP); - if fd < 0 { - let err = io::Error::last_os_error(); - return Err(err); - } let socket = Socket::from_raw_fd(fd); socket.set_nonblocking(true)?; Ok(TcpSocket::from_raw_fd(socket.into_raw_fd())) @@ -287,19 +283,8 @@ pub fn set_disable_ip_fragmentation(af: AddrFamily, socket: &S) -> i #[inline] pub async fn create_outbound_udp_socket(af: AddrFamily, config: &ConnectOpts) -> io::Result { let bind_addr = match (af, config.bind_local_addr) { - (AddrFamily::Ipv4, Some(SocketAddr::V4(addr))) => addr.into(), - (AddrFamily::Ipv4, Some(SocketAddr::V6(addr))) => { - // Map IPv6 bind_local_addr to IPv4 if AF is IPv4 - match addr.ip().to_ipv4_mapped() { - Some(addr) => SocketAddr::new(addr.into(), 0), - None => return Err(io::Error::new(ErrorKind::InvalidInput, "Invalid IPv6 address")), - } - } - (AddrFamily::Ipv6, Some(SocketAddr::V6(addr))) => addr.into(), - (AddrFamily::Ipv6, Some(SocketAddr::V4(addr))) => { - // Map IPv4 bind_local_addr to IPv6 if AF is IPv6 - SocketAddr::new(addr.ip().to_ipv6_mapped().into(), 0) - } + (AddrFamily::Ipv4, Some(IpAddr::V4(ip))) => SocketAddr::new(ip.into(), 0), + (AddrFamily::Ipv6, Some(IpAddr::V6(ip))) => SocketAddr::new(ip.into(), 0), (AddrFamily::Ipv4, ..) => SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), 0), (AddrFamily::Ipv6, ..) => SocketAddr::new(Ipv6Addr::UNSPECIFIED.into(), 0), }; @@ -322,17 +307,15 @@ pub async fn bind_outbound_udp_socket(bind_addr: &SocketAddr, config: &ConnectOp UdpSocket::from_std(socket.into())? }; - if !config.udp.allow_fragmentation { - if let Err(err) = set_disable_ip_fragmentation(af, &socket) { - warn!("failed to disable IP fragmentation, error: {}", err); - } + if let Err(err) = set_disable_ip_fragmentation(af, &socket) { + warn!("failed to disable IP fragmentation, error: {}", err); } // Any traffic except localhost should be protected // This is a workaround for VPNService #[cfg(target_os = "android")] { - use std::time::Duration; + use std::{io::ErrorKind, time::Duration}; use tokio::time; if let Some(ref path) = config.vpn_protect_path { @@ -397,7 +380,10 @@ fn set_bindtodevice(socket: &S, iface: &str) -> io::Result<()> { cfg_if! { if #[cfg(target_os = "android")] { - use std::path::Path; + use std::{ + io::ErrorKind, + path::Path, + }; use tokio::io::AsyncReadExt; use super::uds::UnixStream; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/mod.rs index 03642b0..6020c08 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/mod.rs @@ -9,7 +9,7 @@ use log::warn; use socket2::{Domain, Protocol, Socket, TcpKeepalive, Type}; use tokio::net::UdpSocket; -use crate::net::{AcceptOpts, AddrFamily, ConnectOpts, TcpSocketOpts, is_dual_stack_addr, sys::socket_bind_dual_stack}; +use crate::net::{is_dual_stack_addr, sys::socket_bind_dual_stack, AcceptOpts, AddrFamily, ConnectOpts, TcpSocketOpts}; cfg_if! { if #[cfg(any(target_os = "linux", target_os = "android"))] { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/others.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/others.rs index 81fc78b..04251c5 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/others.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/others.rs @@ -1,8 +1,7 @@ use std::{ - io::{self, ErrorKind}, + io, net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}, ops::{Deref, DerefMut}, - os::fd::AsRawFd, pin::Pin, task::{self, Poll}, }; @@ -14,8 +13,10 @@ use tokio::{ }; use crate::net::{ - AcceptOpts, AddrFamily, ConnectOpts, sys::{set_common_sockopt_after_connect, set_common_sockopt_for_connect}, + AcceptOpts, + AddrFamily, + ConnectOpts, }; /// A wrapper of `TcpStream` @@ -81,20 +82,8 @@ pub fn set_disable_ip_fragmentation(_af: AddrFamily, _socket: &S) -> #[inline] pub async fn create_outbound_udp_socket(af: AddrFamily, config: &ConnectOpts) -> io::Result { let bind_addr = match (af, config.bind_local_addr) { - (AddrFamily::Ipv4, Some(SocketAddr::V4(addr))) => addr.into(), - (AddrFamily::Ipv4, Some(SocketAddr::V6(addr))) => { - // Map IPv6 bind_local_addr to IPv4 if AF is IPv4 - match addr.ip().to_ipv4_mapped() { - Some(addr) => SocketAddr::new(IpAddr::from(addr), 0), - None => return Err(io::Error::new(ErrorKind::InvalidInput, "Invalid IPv6 address")), - } - } - (AddrFamily::Ipv6, Some(SocketAddr::V6(addr))) => addr.into(), - (AddrFamily::Ipv6, Some(SocketAddr::V4(addr))) => { - // Map IPv4 bind_local_addr to IPv6 if AF is IPv6 - let ip_addr: IpAddr = addr.ip().to_ipv6_mapped().into(); - SocketAddr::new(ip_addr, 0) - } + (AddrFamily::Ipv4, Some(IpAddr::V4(ip))) => SocketAddr::new(ip.into(), 0), + (AddrFamily::Ipv6, Some(IpAddr::V6(ip))) => SocketAddr::new(ip.into(), 0), (AddrFamily::Ipv4, ..) => SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), 0), (AddrFamily::Ipv6, ..) => SocketAddr::new(Ipv6Addr::UNSPECIFIED.into(), 0), }; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/uds.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/uds.rs index e8eba2b..31f597d 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/uds.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/unix/uds.rs @@ -13,7 +13,7 @@ use pin_project::pin_project; use sendfd::{RecvWithFd, SendWithFd}; use tokio::{ io::{AsyncRead, AsyncWrite, Interest, ReadBuf}, - net::{UnixListener as TokioUnixListener, UnixStream as TokioUnixStream, unix::SocketAddr}, + net::{unix::SocketAddr, UnixListener as TokioUnixListener, UnixStream as TokioUnixStream}, }; /// A UnixStream supports transferring FDs between processes diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/windows/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/windows/mod.rs index fb3d462..fdb50e8 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/windows/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/sys/windows/mod.rs @@ -1,7 +1,7 @@ use std::{ cell::RefCell, collections::HashMap, - ffi::{CStr, CString, OsString, c_void}, + ffi::{c_void, CStr, CString, OsString}, io::{self, ErrorKind}, mem, net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}, @@ -10,7 +10,8 @@ use std::{ io::{AsRawSocket, FromRawSocket, IntoRawSocket, RawSocket}, }, pin::Pin, - ptr, slice, + ptr, + slice, task::{self, Poll}, time::{Duration, Instant}, }; @@ -25,27 +26,49 @@ use tokio::{ }; use tokio_tfo::TfoStream; use windows_sys::{ + core::PCSTR, Win32::{ Foundation::{BOOL, ERROR_BUFFER_OVERFLOW, ERROR_NO_DATA, ERROR_SUCCESS}, NetworkManagement::IpHelper::{ - GAA_FLAG_SKIP_ANYCAST, GAA_FLAG_SKIP_DNS_SERVER, GAA_FLAG_SKIP_MULTICAST, GAA_FLAG_SKIP_UNICAST, - GetAdaptersAddresses, IP_ADAPTER_ADDRESSES_LH, if_nametoindex, + if_nametoindex, + GetAdaptersAddresses, + GAA_FLAG_SKIP_ANYCAST, + GAA_FLAG_SKIP_DNS_SERVER, + GAA_FLAG_SKIP_MULTICAST, + GAA_FLAG_SKIP_UNICAST, + IP_ADAPTER_ADDRESSES_LH, }, Networking::WinSock::{ - AF_UNSPEC, IP_MTU_DISCOVER, IP_PMTUDISC_DO, IP_UNICAST_IF, IPPROTO_IP, IPPROTO_IPV6, IPPROTO_TCP, - IPV6_MTU_DISCOVER, IPV6_UNICAST_IF, SIO_UDP_CONNRESET, SOCKET, SOCKET_ERROR, TCP_FASTOPEN, WSAGetLastError, - WSAIoctl, htonl, setsockopt, + htonl, + setsockopt, + WSAGetLastError, + WSAIoctl, + AF_UNSPEC, + IPPROTO_IP, + IPPROTO_IPV6, + IPPROTO_TCP, + IPV6_MTU_DISCOVER, + IPV6_UNICAST_IF, + IP_MTU_DISCOVER, + IP_PMTUDISC_DO, + IP_UNICAST_IF, + SIO_UDP_CONNRESET, + SOCKET, + SOCKET_ERROR, + TCP_FASTOPEN, }, }, - core::PCSTR, }; // BOOL values const FALSE: BOOL = 0; use crate::net::{ - AcceptOpts, AddrFamily, ConnectOpts, is_dual_stack_addr, + is_dual_stack_addr, sys::{set_common_sockopt_for_connect, socket_bind_dual_stack}, + AcceptOpts, + AddrFamily, + ConnectOpts, }; /// A `TcpStream` that supports TFO (TCP Fast Open) @@ -467,19 +490,8 @@ pub async fn create_inbound_udp_socket(addr: &SocketAddr, ipv6_only: bool) -> io #[inline(always)] pub async fn create_outbound_udp_socket(af: AddrFamily, opts: &ConnectOpts) -> io::Result { let bind_addr = match (af, opts.bind_local_addr) { - (AddrFamily::Ipv4, Some(SocketAddr::V4(addr))) => addr.into(), - (AddrFamily::Ipv4, Some(SocketAddr::V6(addr))) => { - // Map IPv6 bind_local_addr to IPv4 if AF is IPv4 - match addr.ip().to_ipv4_mapped() { - Some(addr) => SocketAddr::new(addr.into(), 0), - None => return Err(io::Error::new(ErrorKind::InvalidInput, "Invalid IPv6 address")), - } - } - (AddrFamily::Ipv6, Some(SocketAddr::V6(addr))) => addr.into(), - (AddrFamily::Ipv6, Some(SocketAddr::V4(addr))) => { - // Map IPv4 bind_local_addr to IPv6 if AF is IPv6 - SocketAddr::new(addr.ip().to_ipv6_mapped().into(), 0) - } + (AddrFamily::Ipv4, Some(IpAddr::V4(ip))) => SocketAddr::new(ip.into(), 0), + (AddrFamily::Ipv6, Some(IpAddr::V6(ip))) => SocketAddr::new(ip.into(), 0), (AddrFamily::Ipv4, ..) => SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), 0), (AddrFamily::Ipv6, ..) => SocketAddr::new(Ipv6Addr::UNSPECIFIED.into(), 0), }; @@ -508,10 +520,8 @@ pub async fn bind_outbound_udp_socket(bind_addr: &SocketAddr, opts: &ConnectOpts socket.set_nonblocking(true)?; let socket = UdpSocket::from_std(socket.into())?; - if !opts.udp.allow_fragmentation { - if let Err(err) = set_disable_ip_fragmentation(af, &socket) { - warn!("failed to disable IP fragmentation, error: {}", err); - } + if let Err(err) = set_disable_ip_fragmentation(af, &socket) { + warn!("failed to disable IP fragmentation, error: {}", err); } disable_connection_reset(&socket)?; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/tcp.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/tcp.rs index d0f7ebc..09fce11 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/tcp.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/tcp.rs @@ -19,14 +19,19 @@ use tokio::{ net::{TcpListener as TokioTcpListener, TcpStream as TokioTcpStream}, }; -use crate::{ServerAddr, context::Context, relay::socks5::Address}; +use crate::{context::Context, relay::socks5::Address, ServerAddr}; use super::{ - AcceptOpts, ConnectOpts, is_dual_stack_addr, + is_dual_stack_addr, sys::{ - TcpStream as SysTcpStream, create_inbound_tcp_socket, set_common_sockopt_after_accept, set_tcp_fastopen, + create_inbound_tcp_socket, + set_common_sockopt_after_accept, + set_tcp_fastopen, socket_bind_dual_stack, + TcpStream as SysTcpStream, }, + AcceptOpts, + ConnectOpts, }; /// TcpStream for outbound connections @@ -120,7 +125,6 @@ impl AsyncWrite for TcpStream { } /// `TcpListener` for accepting inbound connections -#[derive(Debug)] pub struct TcpListener { inner: TokioTcpListener, accept_opts: AcceptOpts, @@ -131,14 +135,6 @@ impl TcpListener { pub async fn bind_with_opts(addr: &SocketAddr, accept_opts: AcceptOpts) -> io::Result { let socket = create_inbound_tcp_socket(addr, &accept_opts).await?; - if let Some(size) = accept_opts.tcp.send_buffer_size { - socket.set_send_buffer_size(size)?; - } - - if let Some(size) = accept_opts.tcp.recv_buffer_size { - socket.set_recv_buffer_size(size)?; - } - // On platforms with Berkeley-derived sockets, this allows to quickly // rebind a socket, without needing to wait for the OS to clean up the // previous one. diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/udp.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/udp.rs index 2cb8247..afce737 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/udp.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/net/udp.rs @@ -1,5 +1,10 @@ //! UDP socket wrappers +use std::{ + io, + net::SocketAddr, + ops::{Deref, DerefMut}, +}; #[cfg(any( target_os = "linux", target_os = "android", @@ -7,11 +12,8 @@ target_os = "ios", target_os = "freebsd" ))] -use std::io::{ErrorKind, IoSlice, IoSliceMut}; use std::{ - io, - net::SocketAddr, - ops::{Deref, DerefMut}, + io::{ErrorKind, IoSlice, IoSliceMut}, task::{Context as TaskContext, Poll}, }; @@ -22,9 +24,8 @@ use std::{ target_os = "ios", target_os = "freebsd" ))] -use futures::future; -use futures::ready; - +use futures::{future, ready}; +use pin_project::pin_project; #[cfg(any( target_os = "linux", target_os = "android", @@ -33,13 +34,14 @@ use futures::ready; target_os = "freebsd" ))] use tokio::io::Interest; -use tokio::{io::ReadBuf, net::ToSocketAddrs}; -use crate::{ServerAddr, context::Context, relay::socks5::Address}; +use crate::{context::Context, relay::socks5::Address, ServerAddr}; use super::{ - AcceptOpts, AddrFamily, ConnectOpts, sys::{bind_outbound_udp_socket, create_inbound_udp_socket, create_outbound_udp_socket}, + AcceptOpts, + AddrFamily, + ConnectOpts, }; /// Message struct for `batch_send` @@ -51,11 +53,8 @@ use super::{ target_os = "freebsd" ))] pub struct BatchSendMessage<'a> { - /// Optional target address pub addr: Option, - /// Data to be transmitted pub data: &'a [IoSlice<'a>], - /// Output result. The number of bytes sent by `batch_send` pub data_len: usize, } @@ -68,28 +67,14 @@ pub struct BatchSendMessage<'a> { target_os = "freebsd" ))] pub struct BatchRecvMessage<'a> { - /// Peer address pub addr: SocketAddr, - /// Data buffer for receiving pub data: &'a mut [IoSliceMut<'a>], - /// Output result. The number of bytes received by `batch_recv` pub data_len: usize, } -#[inline] -fn make_mtu_error(packet_size: usize, mtu: usize) -> io::Error { - io::Error::new( - io::ErrorKind::Other, - format!("UDP packet {} > MTU {}", packet_size, mtu), - ) -} - /// Wrappers for outbound `UdpSocket` -#[derive(Debug)] -pub struct UdpSocket { - socket: tokio::net::UdpSocket, - mtu: Option, -} +#[pin_project] +pub struct UdpSocket(#[pin] tokio::net::UdpSocket); impl UdpSocket { /// Connects to shadowsocks server @@ -113,10 +98,7 @@ impl UdpSocket { } }; - Ok(UdpSocket { - socket, - mtu: opts.udp.mtu, - }) + Ok(UdpSocket(socket)) } /// Connects to proxy target @@ -140,44 +122,24 @@ impl UdpSocket { } }; - Ok(UdpSocket { - socket, - mtu: opts.udp.mtu, - }) + Ok(UdpSocket(socket)) } /// Connects to shadowsocks server pub async fn connect_with_opts(addr: &SocketAddr, opts: &ConnectOpts) -> io::Result { let socket = create_outbound_udp_socket(From::from(addr), opts).await?; socket.connect(addr).await?; - Ok(UdpSocket { - socket, - mtu: opts.udp.mtu, - }) + Ok(UdpSocket(socket)) } /// Binds to a specific address with opts pub async fn connect_any_with_opts>(af: AF, opts: &ConnectOpts) -> io::Result { - create_outbound_udp_socket(af.into(), opts) - .await - .map(|socket| UdpSocket { - socket, - mtu: opts.udp.mtu, - }) - } - - /// Binds to a specific address as an outbound socket - #[inline] - pub async fn bind(addr: &SocketAddr) -> io::Result { - UdpSocket::bind_with_opts(addr, &ConnectOpts::default()).await + create_outbound_udp_socket(af.into(), opts).await.map(UdpSocket) } /// Binds to a specific address with opts as an outbound socket pub async fn bind_with_opts(addr: &SocketAddr, opts: &ConnectOpts) -> io::Result { - bind_outbound_udp_socket(addr, opts).await.map(|socket| UdpSocket { - socket, - mtu: opts.udp.mtu, - }) + bind_outbound_udp_socket(addr, opts).await.map(UdpSocket) } /// Binds to a specific address (inbound) @@ -189,116 +151,7 @@ impl UdpSocket { /// Binds to a specific address (inbound) pub async fn listen_with_opts(addr: &SocketAddr, opts: AcceptOpts) -> io::Result { let socket = create_inbound_udp_socket(addr, opts.ipv6_only).await?; - Ok(UdpSocket { - socket, - mtu: opts.udp.mtu, - }) - } - - /// Wrapper of `UdpSocket::poll_send` - pub fn poll_send(&self, cx: &mut TaskContext<'_>, buf: &[u8]) -> Poll> { - // Check MTU - if let Some(mtu) = self.mtu { - if buf.len() > mtu { - return Err(make_mtu_error(buf.len(), mtu)).into(); - } - } - - self.socket.poll_send(cx, buf) - } - - /// Wrapper of `UdpSocket::send` - #[inline] - pub async fn send(&self, buf: &[u8]) -> io::Result { - // Check MTU - if let Some(mtu) = self.mtu { - if buf.len() > mtu { - return Err(make_mtu_error(buf.len(), mtu)); - } - } - - self.socket.send(buf).await - } - - /// Wrapper of `UdpSocket::poll_send_to` - pub fn poll_send_to(&self, cx: &mut TaskContext<'_>, buf: &[u8], target: SocketAddr) -> Poll> { - // Check MTU - if let Some(mtu) = self.mtu { - if buf.len() > mtu { - return Err(make_mtu_error(buf.len(), mtu)).into(); - } - } - - self.socket.poll_send_to(cx, buf, target) - } - - /// Wrapper of `UdpSocket::send_to` - #[inline] - pub async fn send_to(&self, buf: &[u8], target: A) -> io::Result { - // Check MTU - if let Some(mtu) = self.mtu { - if buf.len() > mtu { - return Err(make_mtu_error(buf.len(), mtu)); - } - } - - self.socket.send_to(buf, target).await - } - - /// Wrapper of `UdpSocket::poll_recv` - #[inline] - pub fn poll_recv(&self, cx: &mut TaskContext<'_>, buf: &mut ReadBuf<'_>) -> Poll> { - ready!(self.socket.poll_recv(cx, buf))?; - - if let Some(mtu) = self.mtu { - if buf.filled().len() > mtu { - return Err(make_mtu_error(buf.filled().len(), mtu)).into(); - } - } - - Ok(()).into() - } - - /// Wrapper of `UdpSocket::recv` - #[inline] - pub async fn recv(&self, buf: &mut [u8]) -> io::Result { - let n = self.socket.recv(buf).await?; - - if let Some(mtu) = self.mtu { - if n > mtu { - return Err(make_mtu_error(n, mtu)); - } - } - - Ok(n) - } - - /// Wrapper of `UdpSocket::poll_recv_from` - #[inline] - pub fn poll_recv_from(&self, cx: &mut TaskContext<'_>, buf: &mut ReadBuf<'_>) -> Poll> { - let addr = ready!(self.socket.poll_recv_from(cx, buf))?; - - if let Some(mtu) = self.mtu { - if buf.filled().len() > mtu { - return Err(make_mtu_error(buf.filled().len(), mtu)).into(); - } - } - - Ok(addr).into() - } - - /// Wrapper of `UdpSocket::recv` - #[inline] - pub async fn recv_from(&self, buf: &mut [u8]) -> io::Result<(usize, SocketAddr)> { - let (n, addr) = self.socket.recv_from(buf).await?; - - if let Some(mtu) = self.mtu { - if n > mtu { - return Err(make_mtu_error(n, mtu)); - } - } - - Ok((n, addr)) + Ok(UdpSocket(socket)) } /// Batch send packets @@ -317,12 +170,9 @@ impl UdpSocket { use super::sys::batch_sendmsg; loop { - ready!(self.socket.poll_send_ready(cx))?; + ready!(self.0.poll_send_ready(cx))?; - match self - .socket - .try_io(Interest::WRITABLE, || batch_sendmsg(&self.socket, msgs)) - { + match self.0.try_io(Interest::WRITABLE, || batch_sendmsg(&self.0, msgs)) { Ok(n) => return Ok(n).into(), Err(ref err) if err.kind() == ErrorKind::WouldBlock => {} Err(err) => return Err(err).into(), @@ -358,12 +208,9 @@ impl UdpSocket { use super::sys::batch_recvmsg; loop { - ready!(self.socket.poll_recv_ready(cx))?; + ready!(self.0.poll_recv_ready(cx))?; - match self - .socket - .try_io(Interest::READABLE, || batch_recvmsg(&self.socket, msgs)) - { + match self.0.try_io(Interest::READABLE, || batch_recvmsg(&self.0, msgs)) { Ok(n) => return Ok(n).into(), Err(ref err) if err.kind() == ErrorKind::WouldBlock => {} Err(err) => return Err(err).into(), @@ -388,24 +235,24 @@ impl Deref for UdpSocket { type Target = tokio::net::UdpSocket; fn deref(&self) -> &Self::Target { - &self.socket + &self.0 } } impl DerefMut for UdpSocket { fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.socket + &mut self.0 } } impl From for UdpSocket { - fn from(socket: tokio::net::UdpSocket) -> Self { - UdpSocket { socket, mtu: None } + fn from(s: tokio::net::UdpSocket) -> Self { + UdpSocket(s) } } impl From for tokio::net::UdpSocket { fn from(s: UdpSocket) -> tokio::net::UdpSocket { - s.socket + s.0 } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/plugin/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/plugin/mod.rs index 379052f..b55f7c0 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/plugin/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/plugin/mod.rs @@ -58,7 +58,6 @@ pub enum PluginMode { } /// A shadowsocks SIP004 Plugin -#[derive(Debug)] pub struct Plugin { process: Child, local_addr: SocketAddr, diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/plugin/ss_plugin.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/plugin/ss_plugin.rs index 9487d91..c6a2f21 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/plugin/ss_plugin.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/plugin/ss_plugin.rs @@ -7,7 +7,11 @@ use tokio::process::Command; pub fn plugin_cmd(plugin: &PluginConfig, remote: &ServerAddr, local: &SocketAddr, _mode: PluginMode) -> Command { trace!( "Starting plugin \"{}\", opt: {:?}, arg: {:?}, remote: {}, local: {}", - plugin.plugin, plugin.plugin_opts, plugin.plugin_args, remote, local + plugin.plugin, + plugin.plugin_opts, + plugin.plugin_args, + remote, + local ); let mut cmd = Command::new(&plugin.plugin); diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/mod.rs index 0fe4a26..52b05a8 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/mod.rs @@ -15,14 +15,14 @@ const AEAD2022_MAX_PADDING_SIZE: usize = 900; fn get_aead_2022_padding_size(payload: &[u8]) -> usize { use std::cell::RefCell; - use rand::{Rng, SeedableRng, rngs::SmallRng}; + use rand::{rngs::SmallRng, Rng, SeedableRng}; thread_local! { - static PADDING_RNG: RefCell = RefCell::new(SmallRng::from_os_rng()); + static PADDING_RNG: RefCell = RefCell::new(SmallRng::from_entropy()); } if payload.is_empty() { - PADDING_RNG.with(|rng| rng.borrow_mut().random_range::(0..=AEAD2022_MAX_PADDING_SIZE)) + PADDING_RNG.with(|rng| rng.borrow_mut().gen::() % AEAD2022_MAX_PADDING_SIZE) } else { 0 } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/socks5.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/socks5.rs index 8ccb2b7..7477f2f 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/socks5.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/socks5.rs @@ -16,7 +16,10 @@ use bytes::{Buf, BufMut, BytesMut}; use tokio::io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt}; pub use self::consts::{ - SOCKS5_AUTH_METHOD_GSSAPI, SOCKS5_AUTH_METHOD_NONE, SOCKS5_AUTH_METHOD_NOT_ACCEPTABLE, SOCKS5_AUTH_METHOD_PASSWORD, + SOCKS5_AUTH_METHOD_GSSAPI, + SOCKS5_AUTH_METHOD_NONE, + SOCKS5_AUTH_METHOD_NOT_ACCEPTABLE, + SOCKS5_AUTH_METHOD_PASSWORD, }; #[rustfmt::skip] @@ -478,7 +481,7 @@ fn write_domain_name_address(dnaddr: &str, port: u16, buf: &mut B) { "domain name length must be smaller than 256" ); buf.put_u8(dnaddr.len() as u8); - buf.put_slice(dnaddr.as_bytes()); + buf.put_slice(dnaddr[..].as_bytes()); buf.put_u16(port); } @@ -837,7 +840,7 @@ impl UdpAssociateHeader { } } -/// Username/Password Authentication Initial Negotiation +/// Username/Password Authentication Inittial Negociation /// /// https://datatracker.ietf.org/doc/html/rfc1929 /// @@ -880,7 +883,7 @@ impl PasswdAuthRequest { let mut ver_buf = [0u8; 1]; let _ = r.read_exact(&mut ver_buf).await?; - // The only valid subnegotiation version + // The only valid subnegociation version if ver_buf[0] != 0x01 { return Err(Error::UnsupportedPasswdAuthVersion(ver_buf[0])); } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/aead.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/aead.rs index d8c757f..6945502 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/aead.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/aead.rs @@ -1,6 +1,6 @@ //! AEAD packet I/O facilities //! -//! AEAD protocol is defined in . +//! AEAD protocol is defined in . //! //! ```plain //! TCP request (before encryption) @@ -37,6 +37,7 @@ use std::{ pin::Pin, slice, task::{self, Poll}, + u16, }; use byte_string::ByteStr; @@ -47,7 +48,7 @@ use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; use crate::{ context::Context, - crypto::{CipherKind, v1::Cipher}, + crypto::{v1::Cipher, CipherKind}, }; /// AEAD packet payload must be smaller than 0x3FFF @@ -64,9 +65,7 @@ pub enum ProtocolError { DecryptDataError, #[error("decrypt length failed")] DecryptLengthError, - #[error( - "buffer size too large ({0:#x}), AEAD encryption protocol requires buffer to be smaller than 0x3FFF, the higher two bits must be set to zero" - )] + #[error("buffer size too large ({0:#x}), AEAD encryption protocol requires buffer to be smaller than 0x3FFF, the higher two bits must be set to zero")] DataTooLong(usize), } @@ -82,7 +81,6 @@ impl From for io::Error { } } -#[derive(Debug)] enum DecryptReadState { WaitSalt { key: Bytes }, ReadLength, @@ -308,7 +306,7 @@ impl DecryptedReader { }; if plen > MAX_PACKET_SIZE { - // https://shadowsocks.org/doc/aead.html + // https://shadowsocks.org/en/spec/AEAD-Ciphers.html // // AEAD TCP protocol have reserved the higher two bits for future use return Err(ProtocolError::DataTooLong(plen)); @@ -323,7 +321,6 @@ impl DecryptedReader { } } -#[derive(Debug)] enum EncryptWriteState { AssemblePacket, Writing { pos: usize }, diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/aead_2022.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/aead_2022.rs index f66f6de..5a424c4 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/aead_2022.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/aead_2022.rs @@ -51,11 +51,14 @@ use std::{ sync::Arc, task::{self, Poll}, time::SystemTime, + u16, }; use aes::{ - Aes128, Aes256, Block, cipher::{BlockDecrypt, BlockEncrypt, KeyInit}, + Aes128, + Aes256, + Block, }; use byte_string::ByteStr; use bytes::{Buf, BufMut, Bytes, BytesMut}; @@ -65,9 +68,9 @@ use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; use super::{crypto_io::StreamType, proxy_stream::protocol::v2::SERVER_STREAM_TIMESTAMP_MAX_DIFF}; use crate::{ - config::{ServerUserManager, method_support_eih}, + config::{method_support_eih, ServerUserManager}, context::Context, - crypto::{CipherKind, v2::tcp::TcpCipher}, + crypto::{v2::tcp::TcpCipher, CipherKind}, }; #[inline] @@ -102,7 +105,7 @@ pub enum ProtocolError { DecryptLengthError, #[error("invalid stream type, expecting {0:#x}, but found {1:#x}")] InvalidStreamType(u8, u8), - #[error("invalid timestamp {0} - now {1} = {ts_diff}", ts_diff = *.0 as i64 - *.1 as i64)] + #[error("invalid timestamp {0} - now {1} = {}", *.0 as i64 - *.1 as i64)] InvalidTimestamp(u64, u64), } @@ -298,53 +301,50 @@ impl DecryptedReader { // Extensible Identity Header // https://github.com/Shadowsocks-NET/shadowsocks-specs/blob/main/2022-2-shadowsocks-2022-extensible-identity-headers.md let mut cipher = if require_eih { - match self.user_manager { - Some(ref user_manager) => { - // Assume we have at least 1 EIH - if header_chunk.len() < 16 { - error!("expecting EIH, but header chunk len: {}", header_chunk.len()); - return Err(ProtocolError::MissingExtendedIdentityHeader).into(); - } + if let Some(ref user_manager) = self.user_manager { + // Assume we have at least 1 EIH + if header_chunk.len() < 16 { + error!("expecting EIH, but header chunk len: {}", header_chunk.len()); + return Err(ProtocolError::MissingExtendedIdentityHeader).into(); + } - let (eih, remain_header_chunk) = header_chunk.split_at_mut(16); - header_chunk = remain_header_chunk; + let (eih, remain_header_chunk) = header_chunk.split_at_mut(16); + header_chunk = remain_header_chunk; - let key_material = [key, salt].concat(); - let identity_sub_key = blake3::derive_key(AEAD2022_EIH_SUBKEY_CONTEXT, &key_material); - let mut user_hash = Block::from([0u8; 16]); - match self.method { - CipherKind::AEAD2022_BLAKE3_AES_128_GCM => { - let cipher = Aes128::new_from_slice(&identity_sub_key[0..16]).expect("AES-128"); - cipher.decrypt_block_b2b(Block::from_slice(eih), &mut user_hash); - } - CipherKind::AEAD2022_BLAKE3_AES_256_GCM => { - let cipher = Aes256::new_from_slice(&identity_sub_key[0..32]).expect("AES-256"); - cipher.decrypt_block_b2b(Block::from_slice(eih), &mut user_hash); - } - _ => unreachable!("{} doesn't support EIH", self.method), + let key_material = [key, salt].concat(); + let identity_sub_key = blake3::derive_key(AEAD2022_EIH_SUBKEY_CONTEXT, &key_material); + let mut user_hash = Block::from([0u8; 16]); + match self.method { + CipherKind::AEAD2022_BLAKE3_AES_128_GCM => { + let cipher = Aes128::new_from_slice(&identity_sub_key[0..16]).expect("AES-128"); + cipher.decrypt_block_b2b(Block::from_slice(eih), &mut user_hash); } + CipherKind::AEAD2022_BLAKE3_AES_256_GCM => { + let cipher = Aes256::new_from_slice(&identity_sub_key[0..32]).expect("AES-256"); + cipher.decrypt_block_b2b(Block::from_slice(eih), &mut user_hash); + } + _ => unreachable!("{} doesn't support EIH", self.method), + } - let user_hash = user_hash.as_slice(); - trace!( - "server EIH {:?}, hash: {:?}", - ByteStr::new(eih), - ByteStr::new(user_hash) - ); + let user_hash = user_hash.as_slice(); + trace!( + "server EIH {:?}, hash: {:?}", + ByteStr::new(eih), + ByteStr::new(user_hash) + ); - match user_manager.get_user_by_hash(user_hash) { - None => { - return Err(ProtocolError::InvalidClientUser(Bytes::copy_from_slice(user_hash))).into(); - } - Some(user) => { - trace!("{:?} chosen by EIH", user); - self.user_key = Some(Bytes::copy_from_slice(user.key())); - TcpCipher::new(self.method, user.key(), salt) - } + match user_manager.get_user_by_hash(user_hash) { + None => { + return Err(ProtocolError::InvalidClientUser(Bytes::copy_from_slice(user_hash))).into(); + } + Some(user) => { + trace!("{:?} chosen by EIH", user); + self.user_key = Some(Bytes::copy_from_slice(user.key())); + TcpCipher::new(self.method, user.key(), salt) } } - _ => { - unreachable!("user_manager must not be None") - } + } else { + unreachable!("user_manager must not be None") } } else { TcpCipher::new(self.method, key, salt) @@ -532,7 +532,7 @@ pub struct EncryptedWriter { impl EncryptedWriter { /// Creates a new EncryptedWriter pub fn new(stream_ty: StreamType, method: CipherKind, key: &[u8], nonce: &[u8]) -> EncryptedWriter { - const EMPTY_IDENTITY: [Bytes; 0] = []; + static EMPTY_IDENTITY: [Bytes; 0] = []; EncryptedWriter::with_identity(stream_ty, method, key, nonce, &EMPTY_IDENTITY) } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/crypto_io.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/crypto_io.rs index 244e9bc..701503d 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/crypto_io.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/crypto_io.rs @@ -1,18 +1,16 @@ //! IO facilities for TCP relay use std::{ - fmt, io, + io, marker::Unpin, pin::Pin, sync::Arc, task::{self, Poll}, }; -#[cfg(any(feature = "stream-cipher", feature = "aead-cipher", feature = "aead-cipher-2022"))] use byte_string::ByteStr; use bytes::Bytes; use futures::ready; -#[cfg(any(feature = "stream-cipher", feature = "aead-cipher", feature = "aead-cipher-2022"))] use log::trace; use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; @@ -22,7 +20,6 @@ use crate::{ crypto::{CipherCategory, CipherKind}, }; -#[cfg(feature = "aead-cipher")] use super::aead::{DecryptedReader as AeadDecryptedReader, EncryptedWriter as AeadEncryptedWriter}; #[cfg(feature = "aead-cipher-2022")] use super::aead_2022::{DecryptedReader as Aead2022DecryptedReader, EncryptedWriter as Aead2022EncryptedWriter}; @@ -37,7 +34,6 @@ pub enum ProtocolError { #[cfg(feature = "stream-cipher")] #[error(transparent)] StreamError(#[from] super::stream::ProtocolError), - #[cfg(feature = "aead-cipher")] #[error(transparent)] AeadError(#[from] super::aead::ProtocolError), #[cfg(feature = "aead-cipher-2022")] @@ -54,7 +50,6 @@ impl From for io::Error { ProtocolError::IoError(err) => err, #[cfg(feature = "stream-cipher")] ProtocolError::StreamError(err) => err.into(), - #[cfg(feature = "aead-cipher")] ProtocolError::AeadError(err) => err.into(), #[cfg(feature = "aead-cipher-2022")] ProtocolError::Aead2022Error(err) => err.into(), @@ -75,7 +70,6 @@ pub enum StreamType { #[allow(clippy::large_enum_variant)] pub enum DecryptedReader { None, - #[cfg(feature = "aead-cipher")] Aead(AeadDecryptedReader), #[cfg(feature = "stream-cipher")] Stream(StreamDecryptedReader), @@ -104,13 +98,8 @@ impl DecryptedReader { match method.category() { #[cfg(feature = "stream-cipher")] CipherCategory::Stream => DecryptedReader::Stream(StreamDecryptedReader::new(method, key)), - #[cfg(feature = "aead-cipher")] CipherCategory::Aead => DecryptedReader::Aead(AeadDecryptedReader::new(method, key)), - CipherCategory::None => { - let _ = method; - let _ = key; - DecryptedReader::None - } + CipherCategory::None => DecryptedReader::None, #[cfg(feature = "aead-cipher-2022")] CipherCategory::Aead2022 => DecryptedReader::Aead2022(Aead2022DecryptedReader::with_user_manager( stream_ty, @@ -138,14 +127,10 @@ impl DecryptedReader { DecryptedReader::Stream(ref mut reader) => { reader.poll_read_decrypted(cx, context, stream, buf).map_err(Into::into) } - #[cfg(feature = "aead-cipher")] DecryptedReader::Aead(ref mut reader) => { reader.poll_read_decrypted(cx, context, stream, buf).map_err(Into::into) } - DecryptedReader::None => { - let _ = context; - Pin::new(stream).poll_read(cx, buf).map_err(Into::into) - } + DecryptedReader::None => Pin::new(stream).poll_read(cx, buf).map_err(Into::into), #[cfg(feature = "aead-cipher-2022")] DecryptedReader::Aead2022(ref mut reader) => { reader.poll_read_decrypted(cx, context, stream, buf).map_err(Into::into) @@ -158,7 +143,6 @@ impl DecryptedReader { match *self { #[cfg(feature = "stream-cipher")] DecryptedReader::Stream(ref reader) => reader.iv(), - #[cfg(feature = "aead-cipher")] DecryptedReader::Aead(ref reader) => reader.salt(), DecryptedReader::None => None, #[cfg(feature = "aead-cipher-2022")] @@ -171,7 +155,6 @@ impl DecryptedReader { match *self { #[cfg(feature = "stream-cipher")] DecryptedReader::Stream(..) => None, - #[cfg(feature = "aead-cipher")] DecryptedReader::Aead(..) => None, DecryptedReader::None => None, #[cfg(feature = "aead-cipher-2022")] @@ -184,7 +167,6 @@ impl DecryptedReader { match *self { #[cfg(feature = "stream-cipher")] DecryptedReader::Stream(..) => None, - #[cfg(feature = "aead-cipher")] DecryptedReader::Aead(..) => None, DecryptedReader::None => None, #[cfg(feature = "aead-cipher-2022")] @@ -196,7 +178,6 @@ impl DecryptedReader { match *self { #[cfg(feature = "stream-cipher")] DecryptedReader::Stream(ref reader) => reader.handshaked(), - #[cfg(feature = "aead-cipher")] DecryptedReader::Aead(ref reader) => reader.handshaked(), DecryptedReader::None => true, #[cfg(feature = "aead-cipher-2022")] @@ -208,7 +189,6 @@ impl DecryptedReader { /// Writer for writing encrypted data stream into shadowsocks' tunnel pub enum EncryptedWriter { None, - #[cfg(feature = "aead-cipher")] Aead(AeadEncryptedWriter), #[cfg(feature = "stream-cipher")] Stream(StreamEncryptedWriter), @@ -226,13 +206,8 @@ impl EncryptedWriter { match method.category() { #[cfg(feature = "stream-cipher")] CipherCategory::Stream => EncryptedWriter::Stream(StreamEncryptedWriter::new(method, key, nonce)), - #[cfg(feature = "aead-cipher")] CipherCategory::Aead => EncryptedWriter::Aead(AeadEncryptedWriter::new(method, key, nonce)), - CipherCategory::None => { - let _ = key; - let _ = nonce; - EncryptedWriter::None - } + CipherCategory::None => EncryptedWriter::None, #[cfg(feature = "aead-cipher-2022")] CipherCategory::Aead2022 => { EncryptedWriter::Aead2022(Aead2022EncryptedWriter::new(stream_ty, method, key, nonce)) @@ -256,13 +231,8 @@ impl EncryptedWriter { match method.category() { #[cfg(feature = "stream-cipher")] CipherCategory::Stream => EncryptedWriter::Stream(StreamEncryptedWriter::new(method, key, nonce)), - #[cfg(feature = "aead-cipher")] CipherCategory::Aead => EncryptedWriter::Aead(AeadEncryptedWriter::new(method, key, nonce)), - CipherCategory::None => { - let _ = key; - let _ = nonce; - EncryptedWriter::None - } + CipherCategory::None => EncryptedWriter::None, #[cfg(feature = "aead-cipher-2022")] CipherCategory::Aead2022 => EncryptedWriter::Aead2022(Aead2022EncryptedWriter::with_identity( stream_ty, @@ -288,7 +258,6 @@ impl EncryptedWriter { match *self { #[cfg(feature = "stream-cipher")] EncryptedWriter::Stream(ref mut writer) => writer.poll_write_encrypted(cx, stream, buf).map_err(Into::into), - #[cfg(feature = "aead-cipher")] EncryptedWriter::Aead(ref mut writer) => writer.poll_write_encrypted(cx, stream, buf).map_err(Into::into), EncryptedWriter::None => Pin::new(stream).poll_write(cx, buf).map_err(Into::into), #[cfg(feature = "aead-cipher-2022")] @@ -303,7 +272,6 @@ impl EncryptedWriter { match *self { #[cfg(feature = "stream-cipher")] EncryptedWriter::Stream(ref writer) => writer.iv(), - #[cfg(feature = "aead-cipher")] EncryptedWriter::Aead(ref writer) => writer.salt(), EncryptedWriter::None => &[], #[cfg(feature = "aead-cipher-2022")] @@ -345,15 +313,6 @@ pub struct CryptoStream { has_handshaked: bool, } -impl fmt::Debug for CryptoStream { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("CryptoStream") - .field("method", &self.method) - .field("has_handshaked", &self.has_handshaked) - .finish() - } -} - impl CryptoStream { /// Create a new CryptoStream with the underlying stream connection pub fn from_stream( @@ -363,7 +322,7 @@ impl CryptoStream { method: CipherKind, key: &[u8], ) -> CryptoStream { - const EMPTY_IDENTITY: [Bytes; 0] = []; + static EMPTY_IDENTITY: [Bytes; 0] = []; CryptoStream::from_stream_with_identity(context, stream, stream_ty, method, key, &EMPTY_IDENTITY, None) } @@ -387,7 +346,6 @@ impl CryptoStream { let prev_len = match category { #[cfg(feature = "stream-cipher")] CipherCategory::Stream => method.iv_len(), - #[cfg(feature = "aead-cipher")] CipherCategory::Aead => method.salt_len(), CipherCategory::None => 0, #[cfg(feature = "aead-cipher-2022")] @@ -402,18 +360,13 @@ impl CryptoStream { trace!("generated Stream cipher IV {:?}", ByteStr::new(&local_iv)); local_iv } - #[cfg(feature = "aead-cipher")] CipherCategory::Aead => { let mut local_salt = vec![0u8; prev_len]; context.generate_nonce(method, &mut local_salt, true); trace!("generated AEAD cipher salt {:?}", ByteStr::new(&local_salt)); local_salt } - CipherCategory::None => { - debug_assert_eq!(prev_len, 0); - let _ = context; - Vec::new() - } + CipherCategory::None => Vec::new(), #[cfg(feature = "aead-cipher-2022")] CipherCategory::Aead2022 => { // AEAD-2022 has a request-salt in respond header, so the generated salt doesn't need to be remembered. @@ -499,11 +452,10 @@ impl CryptoStream { /// Returning (DataChunkCount, RemainingBytes) #[cfg(feature = "aead-cipher-2022")] pub(crate) fn current_data_chunk_remaining(&self) -> (u64, usize) { - match self.dec { - DecryptedReader::Aead2022(ref dec) => dec.current_data_chunk_remaining(), - _ => { - panic!("only AEAD-2022 protocol has data chunk counter"); - } + if let DecryptedReader::Aead2022(ref dec) = self.dec { + dec.current_data_chunk_remaining() + } else { + panic!("only AEAD-2022 protocol has data chunk counter"); } } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/mod.rs index b15e082..8aeda85 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/mod.rs @@ -5,7 +5,6 @@ pub use self::{ proxy_stream::{ProxyClientStream, ProxyServerStream}, }; -#[cfg(feature = "aead-cipher")] mod aead; #[cfg(feature = "aead-cipher-2022")] mod aead_2022; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_listener.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_listener.rs index 9cac931..2c1c776 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_listener.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_listener.rs @@ -17,7 +17,6 @@ use crate::{ }; /// A TCP listener for accepting shadowsocks' client connection -#[derive(Debug)] pub struct ProxyListener { listener: TcpListener, method: CipherKind, @@ -79,7 +78,7 @@ impl ProxyListener { let stream = map_fn(stream); // Create a ProxyServerStream and read the target address from it - let stream = ProxyServerStream::from_stream_with_user_manager( + let stream = ProxyServerStream::from_stream( self.context.clone(), stream, self.method, diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/client.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/client.rs index 5b01512..953815e 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/client.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/client.rs @@ -30,14 +30,12 @@ use crate::{ }, }; -#[derive(Debug)] enum ProxyClientStreamWriteState { Connect(Address), Connecting(BytesMut), Connected, } -#[derive(Debug)] enum ProxyClientStreamReadState { #[cfg(feature = "aead-cipher-2022")] CheckRequestNonce, @@ -45,7 +43,6 @@ enum ProxyClientStreamReadState { } /// A stream for sending / receiving data stream from remote server via shadowsocks' proxy server -#[derive(Debug)] #[pin_project] pub struct ProxyClientStream { #[pin] @@ -128,7 +125,7 @@ where return Err(io::Error::new( ErrorKind::TimedOut, format!("connect {} timeout", svr_cfg.addr()), - )); + )) } } } @@ -303,7 +300,7 @@ where loop { match this.writer_state { - &mut ProxyClientStreamWriteState::Connect(ref addr) => { + ProxyClientStreamWriteState::Connect(ref addr) => { let buffer = make_first_packet_buffer(this.stream.method(), addr, buf); // Save the concatenated buffer before it is written successfully. @@ -313,7 +310,7 @@ where // before IO completion. *(this.writer_state) = ProxyClientStreamWriteState::Connecting(buffer); } - &mut ProxyClientStreamWriteState::Connecting(ref buffer) => { + ProxyClientStreamWriteState::Connecting(ref buffer) => { let n = ready!(this.stream.poll_write_encrypted(cx, buffer))?; // In general, poll_write_encrypted should perform like write_all. diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/mod.rs index 883986a..55e8b2a 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/mod.rs @@ -18,7 +18,6 @@ pub mod v1; #[cfg(feature = "aead-cipher-2022")] pub mod v2; -#[derive(Debug)] pub enum TcpRequestHeader { Stream(StreamTcpRequestHeader), #[cfg(feature = "aead-cipher-2022")] @@ -28,11 +27,7 @@ pub enum TcpRequestHeader { impl TcpRequestHeader { pub async fn read_from(method: CipherKind, reader: &mut R) -> io::Result { match method.category() { - CipherCategory::None => Ok(TcpRequestHeader::Stream( - StreamTcpRequestHeader::read_from(reader).await?, - )), - #[cfg(feature = "aead-cipher")] - CipherCategory::Aead => Ok(TcpRequestHeader::Stream( + CipherCategory::None | CipherCategory::Aead => Ok(TcpRequestHeader::Stream( StreamTcpRequestHeader::read_from(reader).await?, )), #[cfg(feature = "stream-cipher")] @@ -79,14 +74,13 @@ impl TcpRequestHeader { } } -#[derive(Debug)] pub enum TcpRequestHeaderRef<'a> { Stream(StreamTcpRequestHeaderRef<'a>), #[cfg(feature = "aead-cipher-2022")] Aead2022(Aead2022TcpRequestHeaderRef<'a>), } -impl TcpRequestHeaderRef<'_> { +impl<'a> TcpRequestHeaderRef<'a> { pub fn write_to_buf(&self, buf: &mut B) { match *self { TcpRequestHeaderRef::Stream(ref h) => h.write_to_buf(buf), diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/v1.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/v1.rs index 2eaa81d..17b9b36 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/v1.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/v1.rs @@ -7,7 +7,6 @@ use tokio::io::AsyncRead; use crate::relay::socks5::Address; -#[derive(Debug)] pub struct StreamTcpRequestHeader { pub addr: Address, } @@ -28,12 +27,11 @@ impl StreamTcpRequestHeader { } } -#[derive(Debug)] pub struct StreamTcpRequestHeaderRef<'a> { pub addr: &'a Address, } -impl StreamTcpRequestHeaderRef<'_> { +impl<'a> StreamTcpRequestHeaderRef<'a> { pub fn write_to_buf(&self, buf: &mut B) { self.addr.write_to_buf(buf); } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/v2.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/v2.rs index 656306d..5b45fec 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/v2.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/protocol/v2.rs @@ -66,13 +66,12 @@ impl Aead2022TcpRequestHeader { } } -#[derive(Debug)] pub struct Aead2022TcpRequestHeaderRef<'a> { pub addr: &'a Address, pub padding_size: u16, } -impl Aead2022TcpRequestHeaderRef<'_> { +impl<'a> Aead2022TcpRequestHeaderRef<'a> { pub fn write_to_buf(&self, buf: &mut B) { assert!( self.padding_size as usize <= MAX_PADDING_SIZE, diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/server.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/server.rs index 73026d7..a2005bd 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/server.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/proxy_stream/server.rs @@ -25,7 +25,6 @@ use crate::{ }, }; -#[derive(Debug)] enum ProxyServerStreamWriteState { #[cfg(feature = "aead-cipher-2022")] PrepareHeader(Option), @@ -33,7 +32,6 @@ enum ProxyServerStreamWriteState { } /// A stream for communicating with shadowsocks' proxy client -#[derive(Debug)] #[pin_project] pub struct ProxyServerStream { #[pin] @@ -44,15 +42,7 @@ pub struct ProxyServerStream { } impl ProxyServerStream { - /// Create a `ProxyServerStream` from a connection stream - pub fn from_stream(context: SharedContext, stream: S, method: CipherKind, key: &[u8]) -> ProxyServerStream { - ProxyServerStream::from_stream_with_user_manager(context, stream, method, key, None) - } - - /// Create a `ProxyServerStream` from a connection stream - /// - /// Set `user_manager` to enable support of verifying EIH users. - pub fn from_stream_with_user_manager( + pub(crate) fn from_stream( context: SharedContext, stream: S, method: CipherKind, @@ -69,7 +59,7 @@ impl ProxyServerStream { #[cfg(not(feature = "aead-cipher-2022"))] let writer_state = ProxyServerStreamWriteState::Established; - const EMPTY_IDENTITY: [Bytes; 0] = []; + static EMPTY_IDENTITY: [Bytes; 0] = []; ProxyServerStream { stream: CryptoStream::from_stream_with_identity( &context, @@ -162,7 +152,7 @@ where // Wakeup writer task because we have already received the salt #[cfg(feature = "aead-cipher-2022")] - if let ProxyServerStreamWriteState::PrepareHeader(waker) = this.writer_state { + if let ProxyServerStreamWriteState::PrepareHeader(ref mut waker) = this.writer_state { if let Some(waker) = waker.take() { waker.wake(); } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/stream.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/stream.rs index e7e72d3..5918f56 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/stream.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/stream.rs @@ -15,7 +15,7 @@ use tokio::io::{AsyncRead, AsyncWrite, ReadBuf}; use crate::{ context::Context, - crypto::{CipherKind, v1::Cipher}, + crypto::{v1::Cipher, CipherKind}, }; /// Stream protocol error diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/utils.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/utils.rs index ce964db..434acea 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/utils.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/tcprelay/utils.rs @@ -155,7 +155,6 @@ where fn plain_read_buffer_size(method: CipherKind) -> usize { match method.category() { - #[cfg(feature = "aead-cipher")] CipherCategory::Aead => super::aead::MAX_PACKET_SIZE, #[cfg(feature = "stream-cipher")] CipherCategory::Stream => 1 << 14, @@ -240,7 +239,7 @@ where } } -impl Future for CopyBidirectional<'_, A, B> +impl<'a, A, B> Future for CopyBidirectional<'a, A, B> where A: AsyncRead + AsyncWrite + Unpin + ?Sized, B: AsyncRead + AsyncWrite + Unpin + ?Sized, @@ -255,7 +254,8 @@ where Ok(..) => { trace!( "copy bidirection ends, a_to_b: {:?}, b_to_a: {:?}", - self.a_to_b, self.b_to_a + self.a_to_b, + self.b_to_a ); } Err(ref err) => { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/aead.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/aead.rs index 618b9d0..4455b44 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/aead.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/aead.rs @@ -19,7 +19,7 @@ use log::trace; use crate::{ context::Context, - crypto::{CipherKind, v1::Cipher}, + crypto::{v1::Cipher, CipherKind}, relay::socks5::{Address, Error as Socks5Error}, }; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/aead_2022.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/aead_2022.rs index 2e07346..7057cc0 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/aead_2022.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/aead_2022.rs @@ -57,8 +57,10 @@ use std::{ }; use aes::{ - Aes128, Aes256, Block, cipher::{BlockDecrypt, BlockEncrypt, KeyInit}, + Aes128, + Aes256, + Block, }; use byte_string::ByteStr; use bytes::{Buf, BufMut, Bytes, BytesMut}; @@ -68,11 +70,11 @@ use lru_time_cache::LruCache; #[cfg(feature = "aead-cipher-2022-extra")] use crate::crypto::v2::udp::ChaCha8Poly1305Cipher; use crate::{ - config::{ServerUser, ServerUserManager, method_support_eih}, + config::{method_support_eih, ServerUser, ServerUserManager}, context::Context, crypto::{ - CipherKind, v2::udp::{ChaCha20Poly1305Cipher, UdpCipher}, + CipherKind, }, relay::{ get_aead_2022_padding_size, @@ -99,7 +101,7 @@ pub enum ProtocolError { InvalidClientUser(Bytes), #[error("invalid socket type, expecting {0:#x}, but found {1:#x}")] InvalidSocketType(u8, u8), - #[error("invalid timestamp {0} - now {1} = {ts_diff}", ts_diff = *.0 as i64 - *.1 as i64)] + #[error("invalid timestamp {0} - now {1} = {}", *.0 as i64 - *.1 as i64)] InvalidTimestamp(u64, u64), #[error(transparent)] IoError(#[from] io::Error), diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/compat.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/compat.rs deleted file mode 100644 index 8dec3e2..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/compat.rs +++ /dev/null @@ -1,209 +0,0 @@ -use std::{ - future::Future, - io, - net::SocketAddr, - ops::Deref, - pin::Pin, - task::{Context, Poll}, -}; - -use futures::ready; -use pin_project::pin_project; -use tokio::io::ReadBuf; - -use crate::net::UdpSocket; - -/// A socket I/O object that can transport datagram -pub trait DatagramSocket { - /// Local binded address - fn local_addr(&self) -> io::Result; -} - -/// A socket I/O object that can receive datagram -pub trait DatagramReceive { - /// `recv` data into `buf` - fn poll_recv(&self, cx: &mut Context<'_>, buf: &mut ReadBuf<'_>) -> Poll>; - /// `recv` data into `buf` with source address - fn poll_recv_from(&self, cx: &mut Context<'_>, buf: &mut ReadBuf<'_>) -> Poll>; - /// Check if the underlying I/O object is ready for `recv` - fn poll_recv_ready(&self, cx: &mut Context<'_>) -> Poll>; -} - -/// A socket I/O object that can send datagram -pub trait DatagramSend { - /// `send` data with `buf`, returning the sent bytes - fn poll_send(&self, cx: &mut Context<'_>, buf: &[u8]) -> Poll>; - /// `send` data with `buf` to `target`, returning the sent bytes - fn poll_send_to(&self, cx: &mut Context<'_>, buf: &[u8], target: SocketAddr) -> Poll>; - /// Check if the underlying I/O object is ready for `send` - fn poll_send_ready(&self, cx: &mut Context<'_>) -> Poll>; -} - -impl DatagramSocket for UdpSocket { - fn local_addr(&self) -> io::Result { - self.deref().local_addr() - } -} - -impl DatagramReceive for UdpSocket { - fn poll_recv(&self, cx: &mut Context<'_>, buf: &mut ReadBuf<'_>) -> Poll> { - UdpSocket::poll_recv(self, cx, buf) - } - - fn poll_recv_from(&self, cx: &mut Context<'_>, buf: &mut ReadBuf<'_>) -> Poll> { - UdpSocket::poll_recv_from(self, cx, buf) - } - - fn poll_recv_ready(&self, cx: &mut Context<'_>) -> Poll> { - self.deref().poll_recv_ready(cx) - } -} - -impl DatagramSend for UdpSocket { - fn poll_send(&self, cx: &mut Context<'_>, buf: &[u8]) -> Poll> { - UdpSocket::poll_send(self, cx, buf) - } - - fn poll_send_to(&self, cx: &mut Context<'_>, buf: &[u8], target: SocketAddr) -> Poll> { - UdpSocket::poll_send_to(self, cx, buf, target) - } - - fn poll_send_ready(&self, cx: &mut Context<'_>) -> Poll> { - self.deref().poll_send_ready(cx) - } -} - -/// Future for `recv` -#[pin_project] -pub struct RecvFut<'a, S: DatagramReceive + ?Sized> { - #[pin] - io: &'a S, - buf: &'a mut [u8], -} - -impl Future for RecvFut<'_, S> { - type Output = io::Result; - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let this = self.project(); - - let mut read_buf = ReadBuf::new(this.buf); - ready!(this.io.poll_recv(cx, &mut read_buf))?; - Ok(read_buf.filled().len()).into() - } -} - -/// Future for `recv_from` -#[pin_project] -pub struct RecvFromFut<'a, S: DatagramReceive + ?Sized> { - #[pin] - io: &'a S, - buf: &'a mut [u8], -} - -impl Future for RecvFromFut<'_, S> { - type Output = io::Result<(usize, SocketAddr)>; - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - let this = self.project(); - - let mut read_buf = ReadBuf::new(this.buf); - let src_addr = ready!(this.io.poll_recv_from(cx, &mut read_buf))?; - Ok((read_buf.filled().len(), src_addr)).into() - } -} - -/// Future for `recv_ready` -pub struct RecvReadyFut<'a, S: DatagramReceive + ?Sized> { - io: &'a S, -} - -impl Future for RecvReadyFut<'_, S> { - type Output = io::Result<()>; - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - self.io.poll_recv_ready(cx) - } -} - -/// Future for `send` -pub struct SendFut<'a, S: DatagramSend + ?Sized> { - io: &'a S, - buf: &'a [u8], -} - -impl Future for SendFut<'_, S> { - type Output = io::Result; - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - self.io.poll_send(cx, self.buf) - } -} - -/// Future for `send_to` -pub struct SendToFut<'a, S: DatagramSend + ?Sized> { - io: &'a S, - target: SocketAddr, - buf: &'a [u8], -} - -impl Future for SendToFut<'_, S> { - type Output = io::Result; - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - self.io.poll_send_to(cx, self.buf, self.target) - } -} - -/// Future for `recv_ready` -pub struct SendReadyFut<'a, S: DatagramSend + ?Sized> { - io: &'a S, -} - -impl Future for SendReadyFut<'_, S> { - type Output = io::Result<()>; - - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { - self.io.poll_send_ready(cx) - } -} - -/// Extension methods for `DatagramReceive` -pub trait DatagramReceiveExt: DatagramReceive { - /// Async method for `poll_recv` - fn recv<'a>(&'a self, buf: &'a mut [u8]) -> RecvFut<'a, Self> { - RecvFut { io: self, buf } - } - - /// Async method for `poll_recv_from` - fn recv_from<'a>(&'a self, buf: &'a mut [u8]) -> RecvFromFut<'a, Self> { - RecvFromFut { io: self, buf } - } - - /// Async method for `poll_recv_ready` - fn recv_ready(&self) -> RecvReadyFut<'_, Self> { - RecvReadyFut { io: self } - } -} - -impl DatagramReceiveExt for S {} - -/// Extension methods for `DatagramSend` -pub trait DatagramSendExt: DatagramSend { - /// Async method for `poll_send` - fn send<'a>(&'a self, buf: &'a [u8]) -> SendFut<'a, Self> { - SendFut { io: self, buf } - } - - /// Async method for `poll_send_to` - fn send_to<'a>(&'a self, buf: &'a [u8], target: SocketAddr) -> SendToFut<'a, Self> { - SendToFut { io: self, target, buf } - } - - /// Async method for `poll_send_ready` - fn send_ready(&self) -> SendReadyFut<'_, Self> { - SendReadyFut { io: self } - } -} - -impl DatagramSendExt for S {} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/crypto_io.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/crypto_io.rs index b500f16..e0c0825 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/crypto_io.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/crypto_io.rs @@ -30,16 +30,19 @@ use crate::{ relay::socks5::{Address, Error as Socks5Error}, }; -#[cfg(feature = "aead-cipher")] -use super::aead::{decrypt_payload_aead, encrypt_payload_aead}; #[cfg(feature = "aead-cipher-2022")] use super::aead_2022::{ - decrypt_client_payload_aead_2022, decrypt_server_payload_aead_2022, encrypt_client_payload_aead_2022, + decrypt_client_payload_aead_2022, + decrypt_server_payload_aead_2022, + encrypt_client_payload_aead_2022, encrypt_server_payload_aead_2022, }; -use super::options::UdpSocketControlData; #[cfg(feature = "stream-cipher")] use super::stream::{decrypt_payload_stream, encrypt_payload_stream}; +use super::{ + aead::{decrypt_payload_aead, encrypt_payload_aead}, + options::UdpSocketControlData, +}; /// UDP shadowsocks protocol errors #[derive(thiserror::Error, Debug)] @@ -49,7 +52,6 @@ pub enum ProtocolError { #[cfg(feature = "stream-cipher")] #[error(transparent)] StreamError(#[from] super::stream::ProtocolError), - #[cfg(feature = "aead-cipher")] #[error(transparent)] AeadError(#[from] super::aead::ProtocolError), #[cfg(feature = "aead-cipher-2022")] @@ -74,8 +76,6 @@ pub fn encrypt_client_payload( ) { match method.category() { CipherCategory::None => { - let _ = context; - let _ = key; let _ = control; let _ = identity_keys; dst.reserve(addr.serialized_len() + payload.len()); @@ -88,7 +88,6 @@ pub fn encrypt_client_payload( let _ = identity_keys; encrypt_payload_stream(context, method, key, addr, payload, dst) } - #[cfg(feature = "aead-cipher")] CipherCategory::Aead => { let _ = control; let _ = identity_keys; @@ -113,8 +112,6 @@ pub fn encrypt_server_payload( ) { match method.category() { CipherCategory::None => { - let _ = context; - let _ = key; let _ = control; dst.reserve(addr.serialized_len() + payload.len()); addr.write_to_buf(dst); @@ -125,7 +122,6 @@ pub fn encrypt_server_payload( let _ = control; encrypt_payload_stream(context, method, key, addr, payload, dst) } - #[cfg(feature = "aead-cipher")] CipherCategory::Aead => { let _ = control; encrypt_payload_aead(context, method, key, addr, payload, dst) @@ -145,8 +141,6 @@ pub fn decrypt_client_payload( ) -> ProtocolResult<(usize, Address, Option)> { match method.category() { CipherCategory::None => { - let _ = context; - let _ = key; let _ = user_manager; let mut cur = Cursor::new(payload); match Address::read_cursor(&mut cur) { @@ -166,7 +160,6 @@ pub fn decrypt_client_payload( .map(|(n, a)| (n, a, None)) .map_err(Into::into) } - #[cfg(feature = "aead-cipher")] CipherCategory::Aead => { let _ = user_manager; decrypt_payload_aead(context, method, key, payload) @@ -189,9 +182,6 @@ pub fn decrypt_server_payload( ) -> ProtocolResult<(usize, Address, Option)> { match method.category() { CipherCategory::None => { - let _ = context; - let _ = key; - let mut cur = Cursor::new(payload); match Address::read_cursor(&mut cur) { Ok(address) => { @@ -207,7 +197,6 @@ pub fn decrypt_server_payload( CipherCategory::Stream => decrypt_payload_stream(context, method, key, payload) .map(|(n, a)| (n, a, None)) .map_err(Into::into), - #[cfg(feature = "aead-cipher")] CipherCategory::Aead => decrypt_payload_aead(context, method, key, payload) .map(|(n, a)| (n, a, None)) .map_err(Into::into), diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/mod.rs index 3ecadce..dc22d0d 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/mod.rs @@ -50,13 +50,10 @@ use std::time::Duration; pub use self::proxy_socket::ProxySocket; -pub use compat::{DatagramReceive, DatagramReceiveExt, DatagramSend, DatagramSendExt, DatagramSocket}; -#[cfg(feature = "aead-cipher")] mod aead; #[cfg(feature = "aead-cipher-2022")] mod aead_2022; -mod compat; pub mod crypto_io; pub mod options; pub mod proxy_socket; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/proxy_socket.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/proxy_socket.rs index 6ad3290..8127330 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/proxy_socket.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/proxy_socket.rs @@ -1,14 +1,10 @@ //! UDP socket for communicating with shadowsocks' proxy server -#[cfg(unix)] -use std::os::fd::{AsFd, AsRawFd, BorrowedFd, IntoRawFd, RawFd}; -#[cfg(windows)] -use std::os::windows::io::{AsRawSocket, AsSocket, BorrowedSocket, IntoRawSocket, RawSocket}; use std::{ io::{self, ErrorKind}, net::SocketAddr, sync::Arc, - task::{Context, Poll, ready}, + task::{ready, Context, Poll}, time::Duration, }; @@ -16,7 +12,7 @@ use byte_string::ByteStr; use bytes::{Bytes, BytesMut}; use log::{info, trace, warn}; use once_cell::sync::Lazy; -use tokio::{io::ReadBuf, time}; +use tokio::{io::ReadBuf, net::ToSocketAddrs, time}; use crate::{ config::{ServerAddr, ServerConfig, ServerUserManager}, @@ -26,12 +22,13 @@ use crate::{ relay::{socks5::Address, udprelay::options::UdpSocketControlData}, }; -use super::{ - compat::{DatagramReceive, DatagramReceiveExt, DatagramSend, DatagramSendExt, DatagramSocket}, - crypto_io::{ - ProtocolError, ProtocolResult, decrypt_client_payload, decrypt_server_payload, encrypt_client_payload, - encrypt_server_payload, - }, +use super::crypto_io::{ + decrypt_client_payload, + decrypt_server_payload, + encrypt_client_payload, + encrypt_server_payload, + ProtocolError, + ProtocolResult, }; static DEFAULT_CONNECT_OPTS: Lazy = Lazy::new(Default::default); @@ -73,10 +70,9 @@ impl From for io::Error { pub type ProxySocketResult = Result; /// UDP client for communicating with ShadowSocks' server -#[derive(Debug)] -pub struct ProxySocket { +pub struct ProxySocket { socket_type: UdpSocketType, - io: S, + socket: ShadowUdpSocket, method: CipherKind, key: Box<[u8]>, send_timeout: Option, @@ -86,13 +82,12 @@ pub struct ProxySocket { user_manager: Option>, } -impl ProxySocket { +impl ProxySocket { /// Create a client to communicate with Shadowsocks' UDP server (outbound) - pub async fn connect( - context: SharedContext, - svr_cfg: &ServerConfig, - ) -> ProxySocketResult> { - ProxySocket::connect_with_opts(context, svr_cfg, &DEFAULT_CONNECT_OPTS).await + pub async fn connect(context: SharedContext, svr_cfg: &ServerConfig) -> ProxySocketResult { + ProxySocket::connect_with_opts(context, svr_cfg, &DEFAULT_CONNECT_OPTS) + .await + .map_err(Into::into) } /// Create a client to communicate with Shadowsocks' UDP server (outbound) @@ -100,7 +95,7 @@ impl ProxySocket { context: SharedContext, svr_cfg: &ServerConfig, opts: &ConnectOpts, - ) -> ProxySocketResult> { + ) -> ProxySocketResult { // Note: Plugins doesn't support UDP relay let socket = ShadowUdpSocket::connect_server_with_opts(&context, svr_cfg.udp_external_addr(), opts).await?; @@ -120,54 +115,24 @@ impl ProxySocket { )) } - /// Create a `ProxySocket` binding to a specific address (inbound) - pub async fn bind( - context: SharedContext, - svr_cfg: &ServerConfig, - ) -> ProxySocketResult> { - ProxySocket::bind_with_opts(context, svr_cfg, AcceptOpts::default()).await - } - - /// Create a `ProxySocket` binding to a specific address (inbound) - pub async fn bind_with_opts( - context: SharedContext, - svr_cfg: &ServerConfig, - opts: AcceptOpts, - ) -> ProxySocketResult> { - // Plugins doesn't support UDP - let socket = match svr_cfg.udp_external_addr() { - ServerAddr::SocketAddr(sa) => ShadowUdpSocket::listen_with_opts(sa, opts).await?, - ServerAddr::DomainName(domain, port) => { - lookup_then!(&context, domain, *port, |addr| { - ShadowUdpSocket::listen_with_opts(&addr, opts.clone()).await - })? - .1 - } - }; - Ok(ProxySocket::from_socket( - UdpSocketType::Server, - context, - svr_cfg, - socket, - )) - } -} - -impl ProxySocket { - /// Create a `ProxySocket` from a I/O object that impls `DatagramTransport` - pub fn from_socket( + /// Create a `ProxySocket` from a `UdpSocket` + pub fn from_socket( socket_type: UdpSocketType, context: SharedContext, svr_cfg: &ServerConfig, socket: S, - ) -> ProxySocket { + ) -> ProxySocket + where + S: Into, + { let key = svr_cfg.key().to_vec().into_boxed_slice(); let method = svr_cfg.method(); // NOTE: svr_cfg.timeout() is not for this socket, but for associations. + ProxySocket { socket_type, - io: socket, + socket: socket.into(), method, key, send_timeout: None, @@ -184,21 +149,37 @@ impl ProxySocket { } } - /// Set `send` timeout, `None` will clear timeout - pub fn set_send_timeout(&mut self, t: Option) { - self.send_timeout = t; + /// Create a `ProxySocket` binding to a specific address (inbound) + pub async fn bind(context: SharedContext, svr_cfg: &ServerConfig) -> ProxySocketResult { + ProxySocket::bind_with_opts(context, svr_cfg, AcceptOpts::default()) + .await + .map_err(Into::into) } - /// Set `recv` timeout, `None` will clear timeout - pub fn set_recv_timeout(&mut self, t: Option) { - self.recv_timeout = t; + /// Create a `ProxySocket` binding to a specific address (inbound) + pub async fn bind_with_opts( + context: SharedContext, + svr_cfg: &ServerConfig, + opts: AcceptOpts, + ) -> ProxySocketResult { + // Plugins doesn't support UDP + let socket = match svr_cfg.udp_external_addr() { + ServerAddr::SocketAddr(sa) => ShadowUdpSocket::listen_with_opts(sa, opts).await?, + ServerAddr::DomainName(domain, port) => { + lookup_then!(&context, domain, *port, |addr| { + ShadowUdpSocket::listen_with_opts(&addr, opts.clone()).await + })? + .1 + } + }; + Ok(ProxySocket::from_socket( + UdpSocketType::Server, + context, + svr_cfg, + socket, + )) } -} -impl ProxySocket -where - S: DatagramSend, -{ fn encrypt_send_buffer( &self, addr: &Address, @@ -236,10 +217,12 @@ where /// Send a UDP packet to addr through proxy #[inline] pub async fn send(&self, addr: &Address, payload: &[u8]) -> ProxySocketResult { - self.send_with_ctrl(addr, &DEFAULT_SOCKET_CONTROL, payload).await + self.send_with_ctrl(addr, &DEFAULT_SOCKET_CONTROL, payload) + .await + .map_err(Into::into) } - /// Send a UDP packet to addr through proxy with `ControlData` + /// Send a UDP packet to addr through proxy pub async fn send_with_ctrl( &self, addr: &Address, @@ -258,8 +241,8 @@ where ); let send_len = match self.send_timeout { - None => self.io.send(&send_buf).await?, - Some(d) => match time::timeout(d, self.io.send(&send_buf)).await { + None => self.socket.send(&send_buf).await?, + Some(d) => match time::timeout(d, self.socket.send(&send_buf)).await { Ok(Ok(l)) => l, Ok(Err(err)) => return Err(err.into()), Err(..) => return Err(io::Error::from(ErrorKind::TimedOut).into()), @@ -278,19 +261,11 @@ where } /// poll family functions - /// - /// Send a UDP packet to addr through proxy - /// - /// NOTE: the `send_timeout` is ignored. + /// the send_timeout is ignored. pub fn poll_send(&self, addr: &Address, payload: &[u8], cx: &mut Context<'_>) -> Poll> { self.poll_send_with_ctrl(addr, &DEFAULT_SOCKET_CONTROL, payload, cx) } - /// poll family functions - /// - /// Send a UDP packet to addr through proxy with `ControlData` - /// - /// NOTE: the `send_timeout` is ignored. pub fn poll_send_with_ctrl( &self, addr: &Address, @@ -312,7 +287,7 @@ where let n_send_buf = send_buf.len(); - match self.io.poll_send(cx, &send_buf).map_err(|x| x.into()) { + match self.socket.poll_send(cx, &send_buf).map_err(|x| x.into()) { Poll::Ready(Ok(l)) => { if l == n_send_buf { Poll::Ready(Ok(payload.len())) @@ -324,11 +299,6 @@ where } } - /// poll family functions - /// - /// Send a UDP packet to addr through proxy `target` - /// - /// NOTE: the `send_timeout` is ignored. pub fn poll_send_to( &self, target: SocketAddr, @@ -339,11 +309,6 @@ where self.poll_send_to_with_ctrl(target, addr, &DEFAULT_SOCKET_CONTROL, payload, cx) } - /// poll family functions - /// - /// Send a UDP packet to addr through proxy `target` with `ControlData` - /// - /// NOTE: the `send_timeout` is ignored. pub fn poll_send_to_with_ctrl( &self, target: SocketAddr, @@ -357,14 +322,14 @@ where self.encrypt_send_buffer(addr, control, &self.identity_keys, payload, &mut send_buf)?; info!( - "UDP server client poll_send_to to {}, payload length {} bytes, packet length {} bytes", + "UDP server client send to {}, payload length {} bytes, packet length {} bytes", target, payload.len(), send_buf.len() ); let n_send_buf = send_buf.len(); - match self.io.poll_send_to(cx, &send_buf, target).map_err(|x| x.into()) { + match self.socket.poll_send_to(cx, &send_buf, target).map_err(|x| x.into()) { Poll::Ready(Ok(l)) => { if l == n_send_buf { Poll::Ready(Ok(payload.len())) @@ -376,23 +341,26 @@ where } } - /// poll family functions - /// - /// Check if socket is ready to `send`, or writable. pub fn poll_send_ready(&self, cx: &mut Context<'_>) -> Poll> { - self.io.poll_send_ready(cx).map_err(|x| x.into()) + self.socket.poll_send_ready(cx).map_err(|x| x.into()) } - /// Send a UDP packet to target through proxy `target` - pub async fn send_to(&self, target: SocketAddr, addr: &Address, payload: &[u8]) -> ProxySocketResult { + /// Send a UDP packet to target from proxy + pub async fn send_to( + &self, + target: A, + addr: &Address, + payload: &[u8], + ) -> ProxySocketResult { self.send_to_with_ctrl(target, addr, &DEFAULT_SOCKET_CONTROL, payload) .await + .map_err(Into::into) } - /// Send a UDP packet to target through proxy `target` - pub async fn send_to_with_ctrl( + /// Send a UDP packet to target from proxy + pub async fn send_to_with_ctrl( &self, - target: SocketAddr, + target: A, addr: &Address, control: &UdpSocketControlData, payload: &[u8], @@ -401,7 +369,7 @@ where self.encrypt_send_buffer(addr, control, &self.identity_keys, payload, &mut send_buf)?; trace!( - "UDP server client send_to to, addr {}, control: {:?}, payload length {} bytes, packet length {} bytes", + "UDP server client send to, addr {}, control: {:?}, payload length {} bytes, packet length {} bytes", addr, control, payload.len(), @@ -409,8 +377,8 @@ where ); let send_len = match self.send_timeout { - None => self.io.send_to(&send_buf, target).await?, - Some(d) => match time::timeout(d, self.io.send_to(&send_buf, target)).await { + None => self.socket.send_to(&send_buf, target).await?, + Some(d) => match time::timeout(d, self.socket.send_to(&send_buf, target)).await { Ok(Ok(l)) => l, Ok(Err(err)) => return Err(err.into()), Err(..) => return Err(io::Error::from(ErrorKind::TimedOut).into()), @@ -419,7 +387,7 @@ where if send_buf.len() != send_len { warn!( - "UDP server client send_to {} bytes, but actually sent {} bytes", + "UDP server client send {} bytes, but actually sent {} bytes", send_buf.len(), send_len ); @@ -427,12 +395,7 @@ where Ok(send_len) } -} -impl ProxySocket -where - S: DatagramReceive, -{ fn decrypt_recv_buffer( &self, recv_buf: &mut [u8], @@ -464,9 +427,10 @@ where &self, recv_buf: &mut [u8], ) -> ProxySocketResult<(usize, Address, usize, Option)> { + // Waiting for response from server SERVER -> CLIENT let recv_n = match self.recv_timeout { - None => self.io.recv(recv_buf).await?, - Some(d) => match time::timeout(d, self.io.recv(recv_buf)).await { + None => self.socket.recv(recv_buf).await?, + Some(d) => match time::timeout(d, self.socket.recv(recv_buf)).await { Ok(Ok(l)) => l, Ok(Err(err)) => return Err(err.into()), Err(..) => return Err(io::Error::from(ErrorKind::TimedOut).into()), @@ -480,7 +444,10 @@ where trace!( "UDP server client receive from {}, control: {:?}, packet length {} bytes, payload length {} bytes", - addr, control, recv_n, n + addr, + control, + recv_n, + n ); Ok((n, addr, recv_n, control)) @@ -510,8 +477,8 @@ where ) -> ProxySocketResult<(usize, SocketAddr, Address, usize, Option)> { // Waiting for response from server SERVER -> CLIENT let (recv_n, target_addr) = match self.recv_timeout { - None => self.io.recv_from(recv_buf).await?, - Some(d) => match time::timeout(d, self.io.recv_from(recv_buf)).await { + None => self.socket.recv_from(recv_buf).await?, + Some(d) => match time::timeout(d, self.socket.recv_from(recv_buf)).await { Ok(Ok(l)) => l, Ok(Err(err)) => return Err(err.into()), Err(..) => return Err(io::Error::from(ErrorKind::TimedOut).into()), @@ -525,7 +492,11 @@ where trace!( "UDP server client receive from {}, addr {}, control: {:?}, packet length {} bytes, payload length {} bytes", - target_addr, addr, control, recv_n, n, + target_addr, + addr, + control, + recv_n, + n, ); Ok((n, target_addr, addr, recv_n, control)) @@ -550,7 +521,7 @@ where cx: &mut Context<'_>, recv_buf: &mut ReadBuf, ) -> Poll)>> { - ready!(self.io.poll_recv(cx, recv_buf))?; + ready!(self.socket.poll_recv(cx, recv_buf))?; let n_recv = recv_buf.filled().len(); @@ -578,7 +549,7 @@ where cx: &mut Context<'_>, recv_buf: &mut ReadBuf, ) -> Poll)>> { - let src = ready!(self.io.poll_recv_from(cx, recv_buf))?; + let src = ready!(self.socket.poll_recv_from(cx, recv_buf))?; let n_recv = recv_buf.filled().len(); match self.decrypt_recv_buffer(recv_buf.filled_mut(), self.user_manager.as_deref()) { @@ -589,77 +560,21 @@ where /// poll family functions pub fn poll_recv_ready(&self, cx: &mut Context<'_>) -> Poll> { - self.io.poll_recv_ready(cx).map_err(|x| x.into()) + self.socket.poll_recv_ready(cx).map_err(|x| x.into()) } -} -impl ProxySocket -where - S: DatagramSocket, -{ /// Get local addr of socket pub fn local_addr(&self) -> io::Result { - self.io.local_addr() - } -} - -#[cfg(unix)] -impl AsRawFd for ProxySocket -where - S: AsRawFd, -{ - /// Retrieve raw fd of the outbound socket - fn as_raw_fd(&self) -> RawFd { - self.io.as_raw_fd() - } -} - -#[cfg(unix)] -impl AsFd for ProxySocket -where - S: AsFd, -{ - fn as_fd(&self) -> BorrowedFd<'_> { - self.io.as_fd() + self.socket.local_addr() } -} - -#[cfg(unix)] -impl IntoRawFd for ProxySocket -where - S: IntoRawFd, -{ - fn into_raw_fd(self) -> RawFd { - self.io.into_raw_fd() - } -} - -#[cfg(windows)] -impl AsRawSocket for ProxySocket -where - S: AsRawSocket, -{ - fn as_raw_socket(&self) -> RawSocket { - self.io.as_raw_socket() - } -} -#[cfg(windows)] -impl AsSocket for ProxySocket -where - S: AsSocket, -{ - fn as_socket(&self) -> BorrowedSocket<'_> { - self.io.as_socket() + /// Set `send` timeout, `None` will clear timeout + pub fn set_send_timeout(&mut self, t: Option) { + self.send_timeout = t; } -} -#[cfg(windows)] -impl IntoRawSocket for ProxySocket -where - S: IntoRawSocket, -{ - fn into_raw_socket(self) -> RawSocket { - self.io.into_raw_socket() + /// Set `recv` timeout, `None` will clear timeout + pub fn set_recv_timeout(&mut self, t: Option) { + self.recv_timeout = t; } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/stream.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/stream.rs index f213331..d6706c7 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/stream.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/relay/udprelay/stream.rs @@ -17,7 +17,7 @@ use log::trace; use crate::{ context::Context, - crypto::{CipherKind, v1::Cipher}, + crypto::{v1::Cipher, CipherKind}, relay::socks5::{Address, Error as Socks5Error}, }; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/security/replay/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/security/replay/mod.rs index 2848c56..968f8d7 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/security/replay/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/security/replay/mod.rs @@ -1,5 +1,3 @@ -use std::fmt; - #[cfg(feature = "aead-cipher-2022")] use std::time::Duration; @@ -17,7 +15,7 @@ use self::ppbloom::PingPongBloom; #[cfg(feature = "security-replay-attack-detect")] mod ppbloom; -/// A Bloom Filter based protector against replay attack +/// A Bloom Filter based protector against replay attach pub struct ReplayProtector { // Check for duplicated IV/Nonce, for prevent replay attack // https://github.com/shadowsocks/shadowsocks-org/issues/44 @@ -31,12 +29,6 @@ pub struct ReplayProtector { nonce_set: spin::Mutex, ()>>, } -impl fmt::Debug for ReplayProtector { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - f.debug_struct("ReplayProtector").finish() - } -} - impl ReplayProtector { /// Create a new ReplayProtector #[allow(unused_variables)] diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/security/replay/ppbloom.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/security/replay/ppbloom.rs index 88dfa20..cf0be9c 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/security/replay/ppbloom.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/src/security/replay/ppbloom.rs @@ -27,7 +27,6 @@ const BF_ERROR_RATE_FOR_CLIENT: f64 = 1e-15; // // It contains 2 bloom filters and each one holds 1/2 entries. // Use them as a ring buffer. -#[derive(Debug)] pub struct PingPongBloom { blooms: [Bloom<[u8]>; 2], bloom_count: [usize; 2], @@ -47,8 +46,8 @@ impl PingPongBloom { PingPongBloom { blooms: [ - Bloom::new_for_fp_rate(item_count, fp_p).expect("BloomFilter1"), - Bloom::new_for_fp_rate(item_count, fp_p).expect("BloomFilter2"), + Bloom::new_for_fp_rate(item_count, fp_p), + Bloom::new_for_fp_rate(item_count, fp_p), ], bloom_count: [0, 0], item_count, diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/tcp.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/tcp.rs index d2e4691..8153ce8 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/tcp.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/tcp.rs @@ -14,7 +14,6 @@ use tokio::{ }; use shadowsocks::{ - ProxyClientStream, ProxyListener, config::{ServerConfig, ServerType}, context::Context, crypto::CipherKind, @@ -25,6 +24,8 @@ use shadowsocks::{ utils::{copy_from_encrypted, copy_to_encrypted}, }, }, + ProxyClientStream, + ProxyListener, }; async fn handle_tcp_tunnel_server_client( @@ -90,7 +91,7 @@ async fn tcp_tunnel_example( password: &str, method: CipherKind, ) -> io::Result<()> { - let svr_cfg_server = ServerConfig::new(server_addr, password, method).unwrap(); + let svr_cfg_server = ServerConfig::new(server_addr, password, method); let svr_cfg_local = svr_cfg_server.clone(); let ctx_server = Context::new_shared(ServerType::Server); @@ -135,7 +136,7 @@ async fn tcp_tunnel_example( let mut client = TcpStream::connect(local_addr).await?; - const HTTP_REQUEST: &[u8] = b"GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\nConnection: close\r\n\r\n"; + static HTTP_REQUEST: &[u8] = b"GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\nConnection: close\r\n\r\n"; client.write_all(HTTP_REQUEST).await?; let mut reader = BufReader::new(client); @@ -145,13 +146,12 @@ async fn tcp_tunnel_example( println!("{:?}", ByteStr::new(&buffer)); - const HTTP_RESPONSE_STATUS: &[u8] = b"HTTP/1.0 200 OK\r\n"; + static HTTP_RESPONSE_STATUS: &[u8] = b"HTTP/1.0 200 OK\r\n"; assert!(buffer.starts_with(HTTP_RESPONSE_STATUS)); Ok(()) } -#[cfg(feature = "aead-cipher")] #[tokio::test] async fn tcp_tunnel_aead() { let _ = env_logger::try_init(); @@ -181,7 +181,7 @@ async fn tcp_tunnel_none() { let server_addr = "127.0.0.1:33001".parse::().unwrap(); let local_addr = "127.0.0.1:33101".parse::().unwrap(); - tcp_tunnel_example(server_addr, local_addr, "", CipherKind::NONE) + tcp_tunnel_example(server_addr, local_addr, "p$p", CipherKind::NONE) .await .unwrap(); } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/tcp_tfo.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/tcp_tfo.rs index ae1aea5..1894ee5 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/tcp_tfo.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/tcp_tfo.rs @@ -13,7 +13,6 @@ use byte_string::ByteStr; use futures::future; use log::debug; use shadowsocks::{ - ProxyClientStream, ProxyListener, ServerConfig, config::ServerType, context::Context, crypto::CipherKind, @@ -22,6 +21,9 @@ use shadowsocks::{ socks5::Address, tcprelay::utils::{copy_from_encrypted, copy_to_encrypted}, }, + ProxyClientStream, + ProxyListener, + ServerConfig, }; use tokio::{ io::{AsyncBufReadExt, AsyncWriteExt, BufReader}, @@ -32,7 +34,7 @@ use tokio::{ async fn tcp_tunnel_tfo() { let _ = env_logger::try_init(); - let svr_cfg = ServerConfig::new(("127.0.0.1", 41000), "", CipherKind::NONE).unwrap(); + let svr_cfg = ServerConfig::new(("127.0.0.1", 41000), "?", CipherKind::NONE); let svr_cfg_client = svr_cfg.clone(); tokio::spawn(async move { @@ -97,6 +99,6 @@ async fn tcp_tunnel_tfo() { println!("{:?}", ByteStr::new(&buffer)); - const HTTP_RESPONSE_STATUS: &[u8] = b"HTTP/1.0 200 OK\r\n"; + static HTTP_RESPONSE_STATUS: &[u8] = b"HTTP/1.0 200 OK\r\n"; assert!(buffer.starts_with(HTTP_RESPONSE_STATUS)); } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/udp.rs b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/udp.rs index 8b257ee..1895215 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/udp.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/crates/shadowsocks/tests/udp.rs @@ -8,7 +8,6 @@ use shadowsocks::{ config::{ServerConfig, ServerType}, context::{Context, SharedContext}, crypto::CipherKind, - net::UdpSocket as ShadowUdpSocket, relay::{socks5::Address, udprelay::ProxySocket}, }; @@ -16,7 +15,7 @@ async fn handle_udp_server_client( peer_addr: SocketAddr, remote_addr: Address, payload: &[u8], - socket: &ProxySocket, + socket: &ProxySocket, ) -> io::Result<()> { let remote_socket = UdpSocket::bind("0.0.0.0:0").await?; @@ -60,7 +59,7 @@ async fn udp_tunnel_echo( password: &str, method: CipherKind, ) -> io::Result<()> { - let svr_cfg_server = ServerConfig::new(server_addr, password, method).unwrap(); + let svr_cfg_server = ServerConfig::new(server_addr, password, method); let svr_cfg_local = svr_cfg_server.clone(); let ctx_server = Context::new_shared(ServerType::Server); @@ -125,7 +124,7 @@ async fn udp_tunnel_echo( let socket = UdpSocket::bind("0.0.0.0:0").await?; socket.connect(local_addr).await?; - const SEND_PAYLOAD: &[u8] = b"HELLO WORLD. \x0012345"; + static SEND_PAYLOAD: &[u8] = b"HELLO WORLD. \012345"; socket.send(SEND_PAYLOAD).await?; let mut buffer = [0u8; 65536]; @@ -136,7 +135,6 @@ async fn udp_tunnel_echo( Ok(()) } -#[cfg(feature = "aead-cipher")] #[tokio::test] async fn udp_tunnel_aead() { let _ = env_logger::try_init(); diff --git a/obfuscator/src/main/rust/shadowsocks-rust/debian/changelog b/obfuscator/src/main/rust/shadowsocks-rust/debian/changelog index 31c5357..05c1073 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/debian/changelog +++ b/obfuscator/src/main/rust/shadowsocks-rust/debian/changelog @@ -1,289 +1,3 @@ -shadowsocks-rust (1.23.4) unstable; urgency=medium - - ## Bug Fixes - - - shadowsocks/shadowsocks-android#3185 `local-dns`: Fixed skipping remote resolver for remote servers' names - -shadowsocks-rust (1.23.3) unstable; urgency=medium - - ## Features - - - #1943 `online-config`: SIP008 online configuration supports adding plugin whitelist (see README for details) - - ## Bug Fixes - - - Build feature `--full` won't report errors for targets that are not supported by `local-tun` and `local-redir`. - -shadowsocks-rust (1.23.2) unstable; urgency=medium - - ## Bug Fixes - - - #1940 `local-tun`: Fixes `panic` when resizing cached buffers - -shadowsocks-rust (1.23.1) unstable; urgency=medium - - ## Features - - - #1922 `local-tun`: Enable congestion control algorithm for TCP connections - - #1923 `local-tun`: Disable TCP package receive checksum for improving performance - - `local-tun`: Buffer for receiving/sending packets from/to `tun` device are cached globally - - ## Bug Fixes - - - #1929 `outbound_bind_addr` for UDP sockets failed to `bind()` if it is an IPv4 address - - Double check IPSK key length (AEAD-2022) when reading from configuration file - -shadowsocks-rust (1.23.0) unstable; urgency=medium - - ## Features, Breaking Changes - - - MSRV bumps to v1.85, Rust language edition upgraded to `2024` - - `rand` crate upgraded to v0.9, which may be incompatible with other older crates - - `local-fake-dns` switched storage engine from `sled` to `rocksdb`, users should delete the old database file and let `sslocal` recreate it ageain - - `local-fake-dns` is moved from `full` to `full-extra` feature because its still unstable - - ## Bug fixes - - - #1832 Fixes FreeBSD build error - - #1833 Fixes `sswinservice.exe` file paths in Powershell build script - - `mips-*` targets cross build reenabled - - ## Miscellaneous - - - #1834 Shadowsocks entrance APIs has strongly typed errors - -shadowsocks-rust (1.22.0) unstable; urgency=medium - - ## Features, Breaking Changes - - - `ServerConfig::new` returns a `Result`, fails if `password` doesn't match `method`'s requirements - - `ConnectOpts::bind_local_addr` supports binding to a specific port - - Uses `async` in trait, bump MSRV to v1.75 - - #1790 `outbound_udp_allow_fragmentation` new option for allowing UDP outbound sockets to enable IP fragmentation - - `tun2` has been merged back to `meh/rust-tun` - - #1810 `UdpSocket::bind` - - `shadowsocks-rust` binary crate "default" feature set to `full` - - ## Bug Fixes - - - Method `none` (`plain`) skips key derivation process. - - #1762 Do not crash in `ServerConfig::from_url()` on unknown method - - #1759 Flush `local-tun` tcp writer half before close - - #1765 Disallow HTTP/SOCKS4a in `socks` protocol handler when authentication is required - - `ConnectOpts`'s per-server options should not be shared globally - - #1814 `local-dns` upstream udp packet buffer size 256 - - ## Miscellaneous - - - Make cryptographic dependencies optional in default build of `shadowsocks` crate. - -shadowsocks-rust (1.21.2) unstable; urgency=medium - - ## Bug Fixes - - - #1730 `local-http`: HTTP Client removes Authority from Request URI only for HTTP/1.x - -shadowsocks-rust (1.21.1) unstable; urgency=medium - - ## Bug Fixes - - - #1730 `local-http`: The URI field in HTTP Request sent from `sslocal` should only contain path and query. - - ## Miscellaneous - - - #1702 Debian package build removes dependency of `pwgen` - -shadowsocks-rust (1.21.0) unstable; urgency=medium - - ## Features - - - #1641 `shadowsocks`: `ProxySocket` supports generic I/O socket type - - #1567 `shadowsocks-service`: Support OpenBSD Packet-Filter (pf) - -shadowsocks-rust (1.20.4) unstable; urgency=medium - - ## Features - - - #1616 `local`: Allow configuring SOCKS5 `UDP_ASSOCIATE` address - - #1607 Published in MacPorts: https://ports.macports.org/port/shadowsocks-rust/ - - #1613 `ProxyServerStream::from_stream` made public - - ## Bug Fixes - - - #1612 `server`: Properly exit server instance if any of the sub-tasks exited - -shadowsocks-rust (1.20.3) unstable; urgency=medium - - ## Features - - - `local`: Ping Balancer scores replaced standard deviation with median absolute deviation, which should help focusing less on outlying observations in latency samples. - - ## Bug Fixes - - - #1589 `local-tun`: Removes linking to [`SetInterfaceDnsSettings`](https://learn.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-setinterfacednssettings) on Windows - -shadowsocks-rust (1.20.2) unstable; urgency=medium - - ## Features - - - #1560 PingBalancer check Firefox portal allowing `200` HTTP status - -shadowsocks-rust (1.20.1) unstable; urgency=medium - - ## Bug Fixes - - - `local-online-config`: SIP008 auto reload configuration task will add online servers without replacing the existed ones. This bug will eventually cause `sslocal` consumes too many memories and get OOM killed. - - Users are encourage to update to this version if using 1.19.4 to 1.20.0. - - ## Features - - - `shadowsocks-service`: Updated [`rustls`](https://crates.io/crates/rustls) to v0.23 with [`ring`](https://crates.io/crates/ring) backend. - - `local-redir`, `server`: Better approach to check current platform IP stack capabilities like Go (IPv4, IPv6, IPv4-mapped-IPv6 supports). - - Explicitly enable dual-stack if listen addresses (`server`, `local_address`) are IPv4-mapped-IPv6, by setting `IPV6_V6ONLY=0`. - -shadowsocks-rust (1.20.0) unstable; urgency=medium - - ## Breaking Changes - - - #887 shadowsocks stream cipher (`TABLE`) doesn't need to make a derived key instead of using user's predefined key directly. This change will make shadowsocks-rust not going to be compatible with its older version. Users who are using `TABLE` cipher should upgrade all your local and server instances to the latest version of shadowsocks-rust. On the other hand, `TABLE` cipher is marked deprecated because it is vulnerable, users **must** migrate to other more secured methods immediately. - -shadowsocks-rust (1.19.4) unstable; urgency=medium - - ## Features - - - `local-online-config`: Making HTTP requests with `local-http`'s HttpClient implementation, mainly for supporting `outbound_*` socket configurations. - - ## Miscellaneous - - - Fixed build failures on some platforms. - -shadowsocks-rust (1.19.3) unstable; urgency=medium - - ## Breaking Changes - - - Feature `dns-over-h3` moved from feature `full` to `full-extra`. DNS over H3 is still an experimental feature. - - `local-fake-dns`: Disabled compression (zstd), which seems to be deprecated by [`sled`](https://crates.io/crates/sled). - - ## Features - - - `local-online-config`: Set 30s timeout for update HTTP requests. - -shadowsocks-rust (1.19.2) unstable; urgency=medium - - ## Bug Fixes - - - `local-tun`: `tun2` handles IP packet information automatically. - -shadowsocks-rust (1.19.1) unstable; urgency=medium - - ## Features - - - Rollback `rustls` to v0.22, v0.23 first introduced `aws-lc` as the default crypto implementation, but it cannot be built on some targets if there are still older versions of `rustls` in the dependency tree. - - `local-tun`: Switch from `tun` to `tun2`, which is a fork of `tun`. `tun` seems to be abandoned. - - ## Bug Fixes - - - #1539 `local-fake-dns`: Query Response Message has to include the original Query and flags. - -shadowsocks-rust (1.19.0) unstable; urgency=medium - - ## Features - - - #302 `sslocal` support SIP008 Online Configuration. Pull `servers` from remote servers automatically. (Experimental) - - Add `basic`, `full`, `full-extra` features makes building command line arguments shorter - - ## Bug Fixes - - - #1525 Check `"users"` in server configuration if `method` doesn't support AEAD-2022 EIH. - - #1528 Fixed FreeBSD build. - - ## Miscellaneous - - - Snap: Add alias names like `sslocal`, `ssserver`, ... - - `local-tun` feature could be enabled even if target platform is not supported. - - ## BREAKING - - - Minimal Supported Rust Version (MSRV) is v1.74 - -shadowsocks-rust (1.18.4) unstable; urgency=medium - - ## Features - - - #1495 Binaries support `--plugin-mode` command line argument - - `local-tun` is enabled by default for Windows targets in CI builds - - ## Bug Fixes - - - #1516 `local-dns` UDP client support AEAD-2022 protocol properly - -shadowsocks-rust (1.18.3) unstable; urgency=medium - - ## Features - - - #1466 Support `outbound_fwmark` in server side to split outbound tunnel - - #1467 Default build for `*-windows-*` targets includes `sswinservice` - - `local-fakedns`: Add a basic implementation of Fake-DNS, which will allocate IPs from pool for DNS queries. This experimental feature could be useful when using `local-tun`, `local-redir` or other features that could only receive IP destinations, the domain name that is resolved by the Fake-DNS will be translated from IP back to domain name when connecting to the remote. - - #1500 Add `launchd_udp_socket_name`, `launchd_tcp_socket_name` to basic config format - - ## Bug Fixes - - - Fixed build on OpenBSD - - #1491 Fixed per-server outbound options not taking effect - - #1509 `local-tun` TCP socket creation made non-blocking - -shadowsocks-rust (1.18.2) unstable; urgency=medium - - ## Features - - - `local-tun`: Support `tun_interface_destination` configuration key - - ## Bug Fixes - - - `local`: macOS launch activate sockets set non-blocking - -shadowsocks-rust (1.18.1) unstable; urgency=medium - - ## Features - - - Default logging framework changed to [`tracing-subscriber`](https://crates.io/crates/tracing-subscriber), which: - - Support libraries that log with both [`tracing`](https://crates.io/crates/tracing), and [`log`](https://crates.io/crates/log). - - NOTE: `--log-config` parameter will apply only to [`log4rs`](https://crates.io/crates/log4rs), which doesn't support the `tracing` framework. - - ## Bug Fixes - - - #1425 Enable `EDNS(0)` by default for hickory-dns resolver. - - ## NOTE - - - [`clap`](https://crates.io/crates/clap) upgraded MSRV (Minimal Supported Rust Version) to v1.74 since v4.5.0. This project will have to stay in v4.4 until the next major release. - - -- ty Sun, 18 Feb 2024 22:05:00 +0800 - -shadowsocks-rust (1.18.0) unstable; urgency=medium - - Mostly identical to v1.17.2, except that: - - - Minimal Supported Rust Version (MSRV) upgraded from v1.64 to v1.71 - - #1259 Fixed Snapcraft build. `base` changed to `core22`, auto-build architecture changed to [`arm64`, `amd64`, `armhf`] - - #1426 MIPS targets removed from release build, because MIPS targets are now downgraded to TIER 3 - - -- ty Thu, 08 Feb 2024 00:00:00 +0800 - -shadowsocks-rust (1.17.2) unstable; urgency=medium - - ## Features - - - `local`: `socks` local server will support SOCKS5, SOCKS4a, HTTP proxy protocols when `local-http`, `local-socks4` features are enabled - - `local`: Support setting `udp_mtu` in configuration file to actively reject `packet.size > MTU` - - ## Bug Fixes - - - #1378 dns-over-tls/https with rustls add dependencies to certs - - #1381 Set the incoming socket buffer sizes properly on the listen socket - - #1414 TUN synchronize SYN packet and Socket creation - shadowsocks-rust (1.17.1) unstable; urgency=medium ## Features diff --git a/obfuscator/src/main/rust/shadowsocks-rust/debian/compat b/obfuscator/src/main/rust/shadowsocks-rust/debian/compat index f599e28..ec63514 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/debian/compat +++ b/obfuscator/src/main/rust/shadowsocks-rust/debian/compat @@ -1 +1 @@ -10 +9 diff --git a/obfuscator/src/main/rust/shadowsocks-rust/debian/config.json b/obfuscator/src/main/rust/shadowsocks-rust/debian/config.json index fecbd4b..6ab67d5 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/debian/config.json +++ b/obfuscator/src/main/rust/shadowsocks-rust/debian/config.json @@ -3,7 +3,7 @@ "server_port": 8388, "local_address": "127.0.0.1", "local_port": 1080, - "password": "barfoo", + "password": "barfoo!", "timeout": 300, "method": "chacha20-ietf-poly1305" } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/debian/control b/obfuscator/src/main/rust/shadowsocks-rust/debian/control index ea23379..94d0284 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/debian/control +++ b/obfuscator/src/main/rust/shadowsocks-rust/debian/control @@ -2,7 +2,7 @@ Source: shadowsocks-rust Section: net Priority: optional Maintainer: Y. T. Chung -Build-Depends: debhelper (>=9), rustc, cargo, libcap2-bin [linux-any] +Build-Depends: debhelper (>=9), rustc, cargo, apg | pwgen, libcap2-bin [linux-any] Standards-Version: 3.9.6 Homepage: https://github.com/shadowsocks/shadowsocks-rust diff --git a/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust-local@.service b/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust-local@.service index ec609b9..05a9964 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust-local@.service +++ b/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust-local@.service @@ -13,7 +13,6 @@ After=network.target Type=simple CapabilityBoundingSet=CAP_NET_BIND_SERVICE AmbientCapabilities=CAP_NET_BIND_SERVICE -DynamicUser=yes ExecStart=/usr/bin/ssservice local --log-without-time -c /etc/shadowsocks-rust/%i.json [Install] diff --git a/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust-server@.service b/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust-server@.service index 73f59d5..0f129e7 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust-server@.service +++ b/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust-server@.service @@ -13,7 +13,6 @@ After=network.target Type=simple CapabilityBoundingSet=CAP_NET_BIND_SERVICE AmbientCapabilities=CAP_NET_BIND_SERVICE -DynamicUser=yes ExecStart=/usr/bin/ssservice server --log-without-time -c /etc/shadowsocks-rust/%i.json [Install] diff --git a/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust.postinst b/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust.postinst index e8a2be7..c39b2af 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust.postinst +++ b/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust.postinst @@ -21,16 +21,20 @@ pathfind() { case "$1" in configure|reconfigure) pathfind setcap && setcap \ - cap_net_bind_service+ep /usr/bin/ssservice \ + cap_net_bind_service+ep /usr/bin/ssservice \ cap_net_bind_service+ep /usr/bin/sslocal \ cap_net_bind_service+ep /usr/bin/ssserver if [ ! -f /etc/shadowsocks-rust/config.json ]; then set +e - passwd=$(/usr/bin/ssservice genkey -m "chacha20-ietf-poly1305") - passwd=$(echo $passwd | sed "s/+/\\\\+/g" | sed "s/\\//\\\\\\//g") + pathfind apg + if [ $? -eq 0 ]; then + passwd=$(apg -n 1 -M ncl) + else + passwd=$(pwgen 12 1) + fi set -e mkdir -p /etc/shadowsocks-rust - sed "s/barfoo/$passwd/" /usr/share/shadowsocks-rust/config.json \ + sed "s/barfoo!/$passwd/" /usr/share/shadowsocks-rust/config.json \ > /etc/shadowsocks-rust/config.json fi ;; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust.service b/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust.service index f4b807d..af56887 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust.service +++ b/obfuscator/src/main/rust/shadowsocks-rust/debian/shadowsocks-rust.service @@ -11,7 +11,8 @@ After=network.target [Service] Type=simple EnvironmentFile=/etc/default/shadowsocks-rust -DynamicUser=yes +User=nobody +Group=nogroup LimitNOFILE=32768 ExecStart=/usr/bin/ssservice server -c ${CONFFILE} ${DAEMON_ARGS} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/deny.toml b/obfuscator/src/main/rust/shadowsocks-rust/deny.toml deleted file mode 100644 index e32d47d..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/deny.toml +++ /dev/null @@ -1,252 +0,0 @@ -# This template contains all of the possible sections and their default values - -# Note that all fields that take a lint level have these possible values: -# * deny - An error will be produced and the check will fail -# * warn - A warning will be produced, but the check will not fail -# * allow - No warning or error will be produced, though in some cases a note -# will be - -# The values provided in this template are the default values that will be used -# when any section or field is not specified in your own configuration - -# Root options - -# The graph table configures how the dependency graph is constructed and thus -# which crates the checks are performed against -[graph] -# If 1 or more target triples (and optionally, target_features) are specified, -# only the specified targets will be checked when running `cargo deny check`. -# This means, if a particular package is only ever used as a target specific -# dependency, such as, for example, the `nix` crate only being used via the -# `target_family = "unix"` configuration, that only having windows targets in -# this list would mean the nix crate, as well as any of its exclusive -# dependencies not shared by any other crates, would be ignored, as the target -# list here is effectively saying which targets you are building for. -targets = [ - # The triple can be any string, but only the target triples built in to - # rustc (as of 1.40) can be checked against actual config expressions - #"x86_64-unknown-linux-musl", - # You can also specify which target_features you promise are enabled for a - # particular target. target_features are currently not validated against - # the actual valid features supported by the target architecture. - #{ triple = "wasm32-unknown-unknown", features = ["atomics"] }, -] -# When creating the dependency graph used as the source of truth when checks are -# executed, this field can be used to prune crates from the graph, removing them -# from the view of cargo-deny. This is an extremely heavy hammer, as if a crate -# is pruned from the graph, all of its dependencies will also be pruned unless -# they are connected to another crate in the graph that hasn't been pruned, -# so it should be used with care. The identifiers are [Package ID Specifications] -# (https://doc.rust-lang.org/cargo/reference/pkgid-spec.html) -#exclude = [] -# If true, metadata will be collected with `--all-features`. Note that this can't -# be toggled off if true, if you want to conditionally enable `--all-features` it -# is recommended to pass `--all-features` on the cmd line instead -all-features = false -# If true, metadata will be collected with `--no-default-features`. The same -# caveat with `all-features` applies -no-default-features = false -# If set, these feature will be enabled when collecting metadata. If `--features` -# is specified on the cmd line they will take precedence over this option. -features = ["full-extra"] - -# The output table provides options for how/if diagnostics are outputted -[output] -# When outputting inclusion graphs in diagnostics that include features, this -# option can be used to specify the depth at which feature edges will be added. -# This option is included since the graphs can be quite large and the addition -# of features from the crate(s) to all of the graph roots can be far too verbose. -# This option can be overridden via `--feature-depth` on the cmd line -feature-depth = 1 - -# This section is considered when running `cargo deny check advisories` -# More documentation for the advisories section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html -[advisories] -# The path where the advisory databases are cloned/fetched into -#db-path = "$CARGO_HOME/advisory-dbs" -# The url(s) of the advisory databases to use -#db-urls = ["https://github.com/rustsec/advisory-db"] -# A list of advisory IDs to ignore. Note that ignored advisories will still -# output a note when they are encountered. -ignore = [ - #"RUSTSEC-0000-0000", - #{ id = "RUSTSEC-0000-0000", reason = "you can specify a reason the advisory is ignored" }, - #"a-crate-that-is-yanked@0.1.1", # you can also ignore yanked crate versions if you wish - #{ crate = "a-crate-that-is-yanked@0.1.1", reason = "you can specify why you are ignoring the yanked crate" }, - - # https://github.com/estk/log4rs/pull/351 - { id = "RUSTSEC-2024-0388", reason = "log4rs PRs are not merged yet" }, -] -# If this is true, then cargo deny will use the git executable to fetch advisory database. -# If this is false, then it uses a built-in git library. -# Setting this to true can be helpful if you have special authentication requirements that cargo-deny does not support. -# See Git Authentication for more information about setting up git authentication. -#git-fetch-with-cli = true - -# This section is considered when running `cargo deny check licenses` -# More documentation for the licenses section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html -[licenses] -# List of explicitly allowed licenses -# See https://spdx.org/licenses/ for list of possible licenses -# [possible values: any SPDX 3.11 short identifier (+ optional exception)]. -allow = [ - "MIT", - "Apache-2.0", - "Apache-2.0 WITH LLVM-exception", - "ISC", - "BSD-2-Clause", - "BSD-3-Clause", - "Unicode-3.0", - "MPL-2.0", - "CDLA-Permissive-2.0", - "CC0-1.0", - "0BSD", -] -# The confidence threshold for detecting a license from license text. -# The higher the value, the more closely the license text must be to the -# canonical license text of a valid SPDX license file. -# [possible values: any between 0.0 and 1.0]. -confidence-threshold = 0.8 -# Allow 1 or more licenses on a per-crate basis, so that particular licenses -# aren't accepted for every possible crate as with the normal allow list -exceptions = [ - # Each entry is the crate and version constraint, and its specific allow - # list - #{ allow = ["Zlib"], crate = "adler32" }, - { allow = ["WTFPL"], crate = "tun" }, -] - -# Some crates don't have (easily) machine readable licensing information, -# adding a clarification entry for it allows you to manually specify the -# licensing information -#[[licenses.clarify]] -# The package spec the clarification applies to -#crate = "ring" -# The SPDX expression for the license requirements of the crate -#expression = "MIT AND ISC AND OpenSSL" -# One or more files in the crate's source used as the "source of truth" for -# the license expression. If the contents match, the clarification will be used -# when running the license check, otherwise the clarification will be ignored -# and the crate will be checked normally, which may produce warnings or errors -# depending on the rest of your configuration -#license-files = [ -# Each entry is a crate relative path, and the (opaque) hash of its contents -#{ path = "LICENSE", hash = 0xbd0eed23 } -#] - -[[licenses.clarify]] -name = "ring" -expression = "LicenseRef-ring" -license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] - -[licenses.private] -# If true, ignores workspace crates that aren't published, or are only -# published to private registries. -# To see how to mark a crate as unpublished (to the official registry), -# visit https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field. -ignore = false -# One or more private registries that you might publish crates to, if a crate -# is only published to private registries, and ignore is true, the crate will -# not have its license(s) checked -registries = [ - #"https://sekretz.com/registry -] - -# This section is considered when running `cargo deny check bans`. -# More documentation about the 'bans' section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html -[bans] -# Lint level for when multiple versions of the same crate are detected -multiple-versions = "warn" -# Lint level for when a crate version requirement is `*` -wildcards = "deny" -# The graph highlighting used when creating dotgraphs for crates -# with multiple versions -# * lowest-version - The path to the lowest versioned duplicate is highlighted -# * simplest-path - The path to the version with the fewest edges is highlighted -# * all - Both lowest-version and simplest-path are used -highlight = "all" -# The default lint level for `default` features for crates that are members of -# the workspace that is being checked. This can be overridden by allowing/denying -# `default` on a crate-by-crate basis if desired. -workspace-default-features = "allow" -# The default lint level for `default` features for external crates that are not -# members of the workspace. This can be overridden by allowing/denying `default` -# on a crate-by-crate basis if desired. -external-default-features = "allow" -# List of crates that are allowed. Use with care! -allow = [ - #"ansi_term@0.11.0", - #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is allowed" }, -] -# List of crates to deny -deny = [ - #"ansi_term@0.11.0", - #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is banned" }, - # Wrapper crates can optionally be specified to allow the crate when it - # is a direct dependency of the otherwise banned crate - #{ crate = "ansi_term@0.11.0", wrappers = ["this-crate-directly-depends-on-ansi_term"] }, -] - -# List of features to allow/deny -# Each entry the name of a crate and a version range. If version is -# not specified, all versions will be matched. -#[[bans.features]] -#crate = "reqwest" -# Features to not allow -#deny = ["json"] -# Features to allow -#allow = [ -# "rustls", -# "__rustls", -# "__tls", -# "hyper-rustls", -# "rustls", -# "rustls-pemfile", -# "rustls-tls-webpki-roots", -# "tokio-rustls", -# "webpki-roots", -#] -# If true, the allowed features must exactly match the enabled feature set. If -# this is set there is no point setting `deny` -#exact = true - -# Certain crates/versions that will be skipped when doing duplicate detection. -skip = [ - #"ansi_term@0.11.0", - #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason why it can't be updated/removed" }, -] -# Similarly to `skip` allows you to skip certain crates during duplicate -# detection. Unlike skip, it also includes the entire tree of transitive -# dependencies starting at the specified crate, up to a certain depth, which is -# by default infinite. -skip-tree = [ - #"ansi_term@0.11.0", # will be skipped along with _all_ of its direct and transitive dependencies - #{ crate = "ansi_term@0.11.0", depth = 20 }, -] - -# This section is considered when running `cargo deny check sources`. -# More documentation about the 'sources' section can be found here: -# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html -[sources] -# Lint level for what to happen when a crate from a crate registry that is not -# in the allow list is encountered -unknown-registry = "deny" -# Lint level for what to happen when a crate from a git repository that is not -# in the allow list is encountered -unknown-git = "deny" -# List of URLs for allowed crate registries. Defaults to the crates.io index -# if not specified. If it is specified but empty, no registries are allowed. -allow-registry = ["https://github.com/rust-lang/crates.io-index"] -# List of URLs for allowed Git repositories -allow-git = [] - -[sources.allow-org] -# github.com organizations to allow git sources for -github = [] -# gitlab.com organizations to allow git sources for -gitlab = [] -# bitbucket.org organizations to allow git sources for -bitbucket = [] diff --git a/obfuscator/src/main/rust/shadowsocks-rust/docker/linux-cross/Dockerfile b/obfuscator/src/main/rust/shadowsocks-rust/docker/linux-cross/Dockerfile deleted file mode 100644 index 5f17c9a..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/docker/linux-cross/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -ARG CROSS_BASE_IMAGE -FROM $CROSS_BASE_IMAGE - -ARG DEBIAN_FRONTEND=noninteractive - -RUN apt-get update && \ - apt-get install --assume-yes --no-install-recommends build-essential cmake nasm llvm-8-dev libclang-8-dev clang-8 && \ - git config --global --add safe.directory '*' && \ - rm -rf /tmp/* - -ENV GOCACHE=/tmp diff --git a/obfuscator/src/main/rust/shadowsocks-rust/homebrew/shadowsocks-rust.rb b/obfuscator/src/main/rust/shadowsocks-rust/homebrew/shadowsocks-rust.rb index 8cd549b..d5b364a 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/homebrew/shadowsocks-rust.rb +++ b/obfuscator/src/main/rust/shadowsocks-rust/homebrew/shadowsocks-rust.rb @@ -1,8 +1,8 @@ class ShadowsocksRust < Formula desc "Rust port of Shadowsocks" homepage "https://github.com/shadowsocks/shadowsocks-rust" - url "https://github.com/shadowsocks/shadowsocks-rust/archive/v1.17.2.tar.gz" - sha256 "79d3d5204fad725bd2712f29066e71d14a329c3ea956b708cb6ea64bb0316a0b" + url "https://github.com/shadowsocks/shadowsocks-rust/archive/v1.17.1.tar.gz" + sha256 "97a1c8ebf7fd19de94cd6d0dfee398667e1f4e131ec8a37ecb7c3191af7cc75e" license "MIT" head "https://github.com/shadowsocks/shadowsocks-rust.git", branch: "master" diff --git a/obfuscator/src/main/rust/shadowsocks-rust/rustfmt.toml b/obfuscator/src/main/rust/shadowsocks-rust/rustfmt.toml index 0407a9d..4ee82b9 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/rustfmt.toml +++ b/obfuscator/src/main/rust/shadowsocks-rust/rustfmt.toml @@ -15,4 +15,4 @@ use_try_shorthand = true reorder_impl_items = true #use_small_heuristics = "Max" imports_layout = "HorizontalVertical" -#imports_granularity = "Crate" +imports_granularity = "Crate" diff --git a/obfuscator/src/main/rust/shadowsocks-rust/snap/snapcraft.yaml b/obfuscator/src/main/rust/shadowsocks-rust/snap/snapcraft.yaml index 489421c..4805ce4 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/snap/snapcraft.yaml +++ b/obfuscator/src/main/rust/shadowsocks-rust/snap/snapcraft.yaml @@ -3,24 +3,15 @@ adopt-info: shadowsocks-rust summary: Rust port of Shadowsocks description: | Shadowsocks Client & Server, written in Rust. -base: core22 +base: core18 grade: stable confinement: strict -architectures: - - build-on: amd64 - - build-on: arm64 - - build-on: armhf - - build-on: ppc64el - - build-on: s390x - - build-on: riscv64 -license: MIT -source-code: https://github.com/shadowsocks/shadowsocks-rust +architectures: [amd64, arm64, armhf, i386, ppc64el] apps: sslocal: command: bin/sslocal plugs: [network, network-bind, network-control, home] - aliases: [sslocal] sslocal-daemon: command: bin/sslocal @@ -31,7 +22,6 @@ apps: ssserver: command: bin/ssserver plugs: [network, network-bind, home] - aliases: [ssserver] ssserver-daemon: command: bin/ssserver @@ -41,12 +31,10 @@ apps: ssurl: command: bin/ssurl - aliases: [ssurl] ssmanager: command: bin/ssmanager - plugs: [network, network-bind, home] - aliases: [ssmanager] + plugs: [network, home] passthrough: layout: @@ -58,13 +46,7 @@ parts: plugin: rust source: https://github.com/shadowsocks/shadowsocks-rust.git rust-channel: stable - rust-features: [full] + rust-features: [local-tun, local-redir] override-pull: | snapcraftctl pull snapcraftctl set-version `git describe --tags --long | sed 's/\([^-]*-g\)/r\1/;s/-/./g'` - build-packages: - - cmake - - bindgen - - llvm-dev - - libclang-dev - - clang diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/config.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/config.rs index 002ab65..fe1d4fd 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/config.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/src/config.rs @@ -54,8 +54,7 @@ pub fn get_default_config_path(config_file: &str) -> Option { // UNIX systems, XDG Base Directory // https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html #[cfg(unix)] - { - let base_directories = xdg::BaseDirectories::with_prefix("shadowsocks-rust"); + if let Ok(base_directories) = xdg::BaseDirectories::with_prefix("shadowsocks-rust") { // $XDG_CONFIG_HOME/shadowsocks-rust/config.json // for dir in $XDG_CONFIG_DIRS; $dir/shadowsocks-rust/config.json for filename in &config_files { @@ -68,13 +67,12 @@ pub fn get_default_config_path(config_file: &str) -> Option { // UNIX global configuration file #[cfg(unix)] { - let mut global_config_path = PathBuf::from("/etc/shadowsocks-rust"); for filename in &config_files { - global_config_path.push(filename); + let path_str = "/etc/shadowsocks-rust/".to_owned() + filename; + let global_config_path = Path::new(&path_str); if global_config_path.exists() { return Some(global_config_path.to_path_buf()); } - global_config_path.pop(); } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/error.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/error.rs deleted file mode 100644 index c0d7b17..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/error.rs +++ /dev/null @@ -1,40 +0,0 @@ -//! Shadowsocks-specific error encoding. - -/// A result with a shadowsocks-specific error. -pub type ShadowsocksResult = Result; - -/// A generic error class which encodes all possible ways the application can -/// fail, along with debug information. -#[derive(Clone, Debug)] -pub enum ShadowsocksError { - ServerExitUnexpectedly(String), - ServerAborted(String), - LoadConfigFailure(String), - LoadAclFailure(String), - InsufficientParams(String), -} - -impl ShadowsocksError { - /// The corresponding `sysexits::ExitCode` for this error. - pub fn exit_code(&self) -> sysexits::ExitCode { - match self { - Self::ServerExitUnexpectedly(_) | Self::ServerAborted(_) => sysexits::ExitCode::Software, - Self::LoadConfigFailure(_) | Self::LoadAclFailure(_) => sysexits::ExitCode::Config, - Self::InsufficientParams(_) => sysexits::ExitCode::Usage, - } - } -} - -impl std::fmt::Display for ShadowsocksError { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match self { - Self::ServerExitUnexpectedly(msg) - | Self::ServerAborted(msg) - | Self::LoadConfigFailure(msg) - | Self::LoadAclFailure(msg) - | Self::InsufficientParams(msg) => write!(f, "{msg}"), - } - } -} - -impl std::error::Error for ShadowsocksError {} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/lib.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/lib.rs index 1f92950..13a947b 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/lib.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/src/lib.rs @@ -4,7 +4,6 @@ pub mod allocator; pub mod config; #[cfg(unix)] pub mod daemonize; -pub mod error; #[cfg(feature = "logging")] pub mod logging; pub mod monitor; @@ -13,6 +12,17 @@ pub mod service; pub mod sys; pub mod vparser; +/// Exit code when server exits unexpectedly +pub const EXIT_CODE_SERVER_EXIT_UNEXPECTEDLY: sysexits::ExitCode = sysexits::ExitCode::Software; +/// Exit code when server aborted +pub const EXIT_CODE_SERVER_ABORTED: sysexits::ExitCode = sysexits::ExitCode::Software; +/// Exit code when loading configuration from file fails +pub const EXIT_CODE_LOAD_CONFIG_FAILURE: sysexits::ExitCode = sysexits::ExitCode::Config; +/// Exit code when loading ACL from file fails +pub const EXIT_CODE_LOAD_ACL_FAILURE: sysexits::ExitCode = sysexits::ExitCode::Config; +/// Exit code when insufficient params are passed via CLI +pub const EXIT_CODE_INSUFFICIENT_PARAMS: sysexits::ExitCode = sysexits::ExitCode::Usage; + /// Build timestamp in UTC pub const BUILD_TIME: &str = build_time::build_time_utc!(); diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/logging/log4rs.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/logging/log4rs.rs deleted file mode 100644 index a050229..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/logging/log4rs.rs +++ /dev/null @@ -1,70 +0,0 @@ -//! Logging facilities with log4rs - -use std::path::Path; - -use log::LevelFilter; -use log4rs::{ - append::console::{ConsoleAppender, Target}, - config::{Appender, Config, Logger, Root}, - encode::pattern::PatternEncoder, -}; - -use crate::config::LogConfig; - -/// Initialize logger ([log4rs](https://crates.io/crates/log4rs)) from yaml configuration file -pub fn init_with_file

(path: P) -where - P: AsRef, -{ - log4rs::init_file(path, Default::default()).expect("init logging with file"); -} - -/// Initialize logger with provided configuration -#[allow(dead_code)] -pub fn init_with_config(bin_name: &str, config: &LogConfig) { - let debug_level = config.level; - let without_time = config.format.without_time; - - let mut pattern = String::new(); - if !without_time { - pattern += "{d} "; - } - pattern += "{h({l}):<5} "; - if debug_level >= 1 { - pattern += "[{P}:{I}] [{M}] "; - } - pattern += "{m}{n}"; - - let logging_builder = Config::builder().appender( - Appender::builder().build( - "console", - Box::new( - ConsoleAppender::builder() - .encoder(Box::new(PatternEncoder::new(&pattern))) - .target(Target::Stderr) - .build(), - ), - ), - ); - - let (l1, l2) = match debug_level { - 0 => (LevelFilter::Info, LevelFilter::Off), - 1 => (LevelFilter::Debug, LevelFilter::Off), - 2 => (LevelFilter::Trace, LevelFilter::Off), - 3 => (LevelFilter::Trace, LevelFilter::Debug), - _ => (LevelFilter::Off, LevelFilter::Trace), - }; - - let config = match debug_level { - 0..=3 => logging_builder - .logger(Logger::builder().build(bin_name, l1)) - .logger(Logger::builder().build("shadowsocks_rust", l1)) - .logger(Logger::builder().build("shadowsocks", l1)) - .logger(Logger::builder().build("shadowsocks_service", l1)), - _ => logging_builder, - } - .build(Root::builder().appender("console").build(l2)) - .expect("logging"); - - log4rs::init_config(config).expect("logging"); -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/logging/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/logging/mod.rs index 7f5098c..b1d0692 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/logging/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/src/logging/mod.rs @@ -2,31 +2,70 @@ use std::path::Path; -use log::warn; +use log::LevelFilter; +use log4rs::{ + append::console::{ConsoleAppender, Target}, + config::{Appender, Config, Logger, Root}, + encode::pattern::PatternEncoder, +}; use crate::config::LogConfig; -mod log4rs; -mod tracing; - -/// Initialize logger ([log4rs](https://crates.io/crates/log4rs), [trace4rs](https://crates.io/crates/trace4rs)) from yaml configuration file +/// Initialize logger ([log4rs](https://crates.io/crates/log4rs)) from yaml configuration file pub fn init_with_file

(path: P) where P: AsRef, { - log4rs::init_with_file(path); - - warn!( - "log4rs doesn't support the tracing (https://crates.io/crates/tracing) framework, - so it would be removed in the future. Consider configure logging with RUST_LOG environment variable. - Check more configuration detail in https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/index.html#filtering-events-with-environment-variables ." - ); + log4rs::init_file(path, Default::default()).expect("init logging with file"); } -/// Initialize logger with provided configuration +/// Initialize logger with default configuration pub fn init_with_config(bin_name: &str, config: &LogConfig) { - // log4rs::init_with_config(bin_name, config); - tracing::init_with_config(bin_name, config); + let debug_level = config.level; + let without_time = config.format.without_time; + + let mut pattern = String::new(); + if !without_time { + pattern += "{d} "; + } + pattern += "{h({l}):<5} "; + if debug_level >= 1 { + pattern += "[{P}:{I}] [{M}] "; + } + pattern += "{m}{n}"; + + let logging_builder = Config::builder().appender( + Appender::builder().build( + "console", + Box::new( + ConsoleAppender::builder() + .encoder(Box::new(PatternEncoder::new(&pattern))) + .target(Target::Stderr) + .build(), + ), + ), + ); + + let (l1, l2) = match debug_level { + 0 => (LevelFilter::Info, LevelFilter::Off), + 1 => (LevelFilter::Debug, LevelFilter::Off), + 2 => (LevelFilter::Trace, LevelFilter::Off), + 3 => (LevelFilter::Trace, LevelFilter::Debug), + _ => (LevelFilter::Off, LevelFilter::Trace), + }; + + let config = match debug_level { + 0 | 1 | 2 | 3 => logging_builder + .logger(Logger::builder().build(bin_name, l1)) + .logger(Logger::builder().build("shadowsocks_rust", l1)) + .logger(Logger::builder().build("shadowsocks", l1)) + .logger(Logger::builder().build("shadowsocks_service", l1)), + _ => logging_builder, + } + .build(Root::builder().appender("console").build(l2)) + .expect("logging"); + + log4rs::init_config(config).expect("logging"); } /// Init a default logger diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/logging/tracing.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/logging/tracing.rs deleted file mode 100644 index b045946..0000000 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/logging/tracing.rs +++ /dev/null @@ -1,82 +0,0 @@ -//! Logging facilities with tracing - -use std::io::IsTerminal; - -use time::UtcOffset; -use tracing::level_filters::LevelFilter; -use tracing_subscriber::{EnvFilter, FmtSubscriber, fmt::time::OffsetTime}; - -use crate::config::LogConfig; - -/// Initialize logger with provided configuration -pub fn init_with_config(bin_name: &str, config: &LogConfig) { - let debug_level = config.level; - let without_time = config.format.without_time; - - let mut builder = FmtSubscriber::builder() - .with_level(true) - .with_timer(match OffsetTime::local_rfc_3339() { - Ok(t) => t, - Err(..) => { - // Reinit with UTC time - OffsetTime::new(UtcOffset::UTC, time::format_description::well_known::Rfc3339) - } - }); - - // NOTE: ansi is enabled by default. - // Could be disabled by `NO_COLOR` environment variable. - // https://no-color.org/ - if !std::io::stdout().is_terminal() { - builder = builder.with_ansi(false); - } - - if debug_level >= 1 { - builder = builder.with_target(true).with_thread_ids(true).with_thread_names(true); - - if debug_level >= 3 { - builder = builder.with_file(true).with_line_number(true); - } - } else { - builder = builder - .with_target(false) - .with_thread_ids(false) - .with_thread_names(false); - } - - let filter = match EnvFilter::try_from_default_env() { - Ok(f) => f, - Err(..) => match debug_level { - 0 => EnvFilter::builder() - .with_regex(true) - .with_default_directive(LevelFilter::ERROR.into()) - .parse_lossy(format!( - "warn,{}=info,shadowsocks_rust=info,shadowsocks_service=info,shadowsocks=info", - bin_name - )), - 1 => EnvFilter::builder() - .with_regex(true) - .with_default_directive(LevelFilter::ERROR.into()) - .parse_lossy(format!( - "warn,{}=debug,shadowsocks_rust=debug,shadowsocks_service=debug,shadowsocks=debug", - bin_name - )), - 2 => EnvFilter::builder() - .with_regex(true) - .with_default_directive(LevelFilter::ERROR.into()) - .parse_lossy(format!( - "warn,{}=trace,shadowsocks_rust=trace,shadowsocks_service=trace,shadowsocks=trace", - bin_name - )), - _ => EnvFilter::builder() - .with_default_directive(LevelFilter::TRACE.into()) - .parse_lossy(""), - }, - }; - let builder = builder.with_env_filter(filter); - - if without_time { - builder.without_time().init(); - } else { - builder.init(); - } -} diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/monitor/unix.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/monitor/unix.rs index d7a36f0..59ede04 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/monitor/unix.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/src/monitor/unix.rs @@ -1,7 +1,7 @@ use futures::future::{self, Either, FutureExt}; use log::info; use std::io; -use tokio::signal::unix::{SignalKind, signal}; +use tokio::signal::unix::{signal, SignalKind}; /// Create a monitor future for signals /// diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/service/genkey.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/service/genkey.rs index 3a361ea..a28eaa2 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/service/genkey.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/src/service/genkey.rs @@ -3,9 +3,10 @@ use std::process::ExitCode; use base64::Engine as _; -use clap::{Arg, ArgAction, ArgMatches, Command, builder::PossibleValuesParser}; +use clap::{builder::PossibleValuesParser, Arg, ArgAction, ArgMatches, Command}; +use rand::RngCore; -use shadowsocks_service::shadowsocks::crypto::{CipherKind, available_ciphers}; +use shadowsocks_service::shadowsocks::crypto::{available_ciphers, CipherKind}; /// Defines command line options pub fn define_command_line_options(mut app: Command) -> Command { @@ -33,7 +34,8 @@ pub fn main(matches: &ArgMatches) -> ExitCode { let key_len = method.key_len(); if key_len > 0 { let mut key = vec![0u8; key_len]; - rand::fill(key.as_mut_slice()); + let mut rng = rand::thread_rng(); + rng.fill_bytes(&mut key); let encoded_key = base64::engine::general_purpose::STANDARD.encode(&key); println!("{encoded_key}"); diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/service/local.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/service/local.rs index dc47718..64cad9b 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/service/local.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/src/service/local.rs @@ -1,18 +1,10 @@ //! Local server launchers -#[cfg(unix)] -use std::sync::Arc; -use std::{ - future::Future, - net::IpAddr, - path::PathBuf, - process::ExitCode, - time::{Duration, Instant}, -}; +use std::{future::Future, net::IpAddr, path::PathBuf, process::ExitCode, time::Duration}; -use clap::{Arg, ArgAction, ArgGroup, ArgMatches, Command, ValueHint, builder::PossibleValuesParser}; -use futures::future::{self, FutureExt}; -use log::{error, info, trace}; +use clap::{builder::PossibleValuesParser, Arg, ArgAction, ArgGroup, ArgMatches, Command, ValueHint}; +use futures::future::{self, Either}; +use log::{info, trace}; use tokio::{ self, runtime::{Builder, Runtime}, @@ -25,13 +17,18 @@ use shadowsocks_service::shadowsocks::relay::socks5::Address; use shadowsocks_service::{ acl::AccessControl, config::{ - Config, ConfigType, LocalConfig, LocalInstanceConfig, ProtocolType, ServerInstanceConfig, read_variable_field_value, + Config, + ConfigType, + LocalConfig, + LocalInstanceConfig, + ProtocolType, + ServerInstanceConfig, }, - local::{Server, loadbalancing::PingBalancer}, + local::{loadbalancing::PingBalancer, Server}, shadowsocks::{ - config::{Mode, ServerAddr, ServerConfig, ServerSource}, - crypto::{CipherKind, available_ciphers}, + config::{Mode, ServerAddr, ServerConfig}, + crypto::{available_ciphers, CipherKind}, plugin::PluginConfig, }, }; @@ -40,8 +37,8 @@ use shadowsocks_service::{ use crate::logging; use crate::{ config::{Config as ServiceConfig, RuntimeMode}, - error::{ShadowsocksError, ShadowsocksResult}, - monitor, vparser, + monitor, + vparser, }; #[cfg(feature = "local-dns")] @@ -133,14 +130,6 @@ pub fn define_command_line_options(mut app: Command) -> Command { .value_parser(vparser::parse_server_addr) .help("UDP relay's bind address, default is the same as local-addr"), ) - .arg( - Arg::new("UDP_ASSOCIATE_ADDR") - .long("udp-associate-addr") - .num_args(1) - .action(ArgAction::Set) - .value_parser(vparser::parse_server_addr) - .help("UDP relay's externally visible address return in UDP Associate responses"), - ) .arg( Arg::new("SERVER_ADDR") .short('s') @@ -185,15 +174,7 @@ pub fn define_command_line_options(mut app: Command) -> Command { .action(ArgAction::Set) .value_hint(ValueHint::CommandName) .requires("SERVER_ADDR") - .help("SIP003 (https://shadowsocks.org/doc/sip003.html) plugin"), - ) - .arg( - Arg::new("PLUGIN_MODE") - .long("plugin-mode") - .num_args(1) - .action(ArgAction::Set) - .requires("PLUGIN") - .help("SIP003/SIP003u plugin mode, must be one of `tcp_only` (default), `udp_only` and `tcp_and_udp`"), + .help("SIP003 (https://shadowsocks.org/guide/sip003.html) plugin"), ) .arg( Arg::new("PLUGIN_OPT") @@ -210,7 +191,7 @@ pub fn define_command_line_options(mut app: Command) -> Command { .action(ArgAction::Set) .value_hint(ValueHint::Url) .value_parser(vparser::parse_server_url) - .help("Server address in SIP002 (https://shadowsocks.org/doc/sip002.html) URL"), + .help("Server address in SIP002 (https://shadowsocks.org/guide/sip002.html) URL"), ) .group(ArgGroup::new("SERVER_CONFIG") .arg("SERVER_ADDR").arg("SERVER_URL").multiple(true)) @@ -462,43 +443,6 @@ pub fn define_command_line_options(mut app: Command) -> Command { } } - #[cfg(feature = "local-fake-dns")] - { - app = app - .arg( - Arg::new("FAKE_DNS_RECORD_EXPIRE_DURATION") - .long("fake-dns-record-expire-duration") - .num_args(1) - .action(ArgAction::Set) - .value_parser(clap::value_parser!(u64)) - .help("Fake DNS record expire duration in seconds"), - ) - .arg( - Arg::new("FAKE_DNS_IPV4_NETWORK") - .long("fake-dns-ipv4-network") - .num_args(1) - .action(ArgAction::Set) - .value_parser(vparser::parse_ipnet) - .help("Fake DNS IPv4 address network"), - ) - .arg( - Arg::new("FAKE_DNS_IPV6_NETWORK") - .long("fake-dns-ipv6-network") - .num_args(1) - .action(ArgAction::Set) - .value_parser(vparser::parse_ipnet) - .help("Fake DNS IPv6 address network"), - ) - .arg( - Arg::new("FAKE_DNS_DATABASE_PATH") - .long("fake-dns-database-path") - .num_args(1) - .action(ArgAction::Set) - .value_hint(ValueHint::AnyPath) - .help("Fake DNS database storage path"), - ); - } - #[cfg(unix)] { app = app @@ -552,40 +496,12 @@ pub fn define_command_line_options(mut app: Command) -> Command { ); } - #[cfg(feature = "local-online-config")] - { - app = app - .arg( - Arg::new("ONLINE_CONFIG_URL") - .long("online-config-url") - .num_args(1) - .action(ArgAction::Set) - .value_hint(ValueHint::Url) - .help("SIP008 Online Configuration Delivery URL (https://shadowsocks.org/doc/sip008.html)"), - ) - .arg( - Arg::new("ONLINE_CONFIG_UPDATE_INTERVAL") - .long("online-config-update-interval") - .num_args(1) - .action(ArgAction::Set) - .value_parser(clap::value_parser!(u64)) - .help("SIP008 Online Configuration Delivery update interval in seconds, 3600 by default"), - ) - .arg( - Arg::new("ONLINE_CONFIG_ALLOWED_PLUGIN") - .long("online-config-allowed-plugin") - .action(ArgAction::Append) - .help("SIP008 Online Configuration Delivery allowed plugin list"), - ); - } - app } /// Create `Runtime` and `main` entry -pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future + use<>)> { - #[cfg_attr(not(feature = "local-online-config"), allow(unused_mut))] - let (config, _, runtime) = { +pub fn create(matches: &ArgMatches) -> Result<(Runtime, impl Future), ExitCode> { + let (config, runtime) = { let config_path_opt = matches.get_one::("CONFIG").cloned().or_else(|| { if !matches.contains_id("SERVER_CONFIG") { match crate::config::get_default_config_path("local.json") { @@ -601,8 +517,13 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future ServiceConfig::load_from_file(config_path) - .map_err(|err| ShadowsocksError::LoadConfigFailure(format!("loading config {config_path:?}, {err}")))?, + Some(ref config_path) => match ServiceConfig::load_from_file(config_path) { + Ok(c) => c, + Err(err) => { + eprintln!("loading config {config_path:?}, {err}"); + return Err(crate::EXIT_CODE_LOAD_CONFIG_FAILURE.into()); + } + }, None => ServiceConfig::default(), }; service_config.set_options(matches); @@ -620,8 +541,13 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future Config::load_from_file(&cpath, ConfigType::Local) - .map_err(|err| ShadowsocksError::LoadConfigFailure(format!("loading config {cpath:?}, {err}")))?, + Some(cpath) => match Config::load_from_file(&cpath, ConfigType::Local) { + Ok(cfg) => cfg, + Err(err) => { + eprintln!("loading config {cpath:?}, {err}"); + return Err(crate::EXIT_CODE_LOAD_CONFIG_FAILURE.into()); + } + }, None => Config::new(ConfigType::Local), }; @@ -650,13 +576,7 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future().expect("server-addr"); let timeout = matches.get_one::("TIMEOUT").map(|x| Duration::from_secs(*x)); - let mut sc = match ServerConfig::new(svr_addr, password, method) { - Ok(sc) => sc, - Err(err) => { - panic!("failed to create ServerConfig, error: {}", err); - } - }; - sc.set_source(ServerSource::CommandLine); + let mut sc = ServerConfig::new(svr_addr, password, method); if let Some(timeout) = timeout { sc.set_timeout(timeout); } @@ -666,13 +586,7 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("PLUGIN_OPT").cloned(), plugin_args: Vec::new(), - plugin_mode: matches - .get_one::("PLUGIN_MODE") - .map(|x| { - x.parse::() - .expect("plugin-mode must be one of `tcp_only` (default), `udp_only` and `tcp_and_udp`") - }) - .unwrap_or(Mode::TcpOnly), + plugin_mode: Mode::TcpOnly, }; sc.set_plugin(plugin); @@ -681,8 +595,7 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("SERVER_URL").cloned() { - svr_addr.set_source(ServerSource::CommandLine); + if let Some(svr_addr) = matches.get_one::("SERVER_URL").cloned() { config.server.push(ServerInstanceConfig::with_server_config(svr_addr)); } @@ -742,10 +655,6 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("UDP_ASSOCIATE_ADDR").cloned() { - local_config.udp_associate_addr = Some(udp_associate_addr); - } - #[cfg(feature = "local-tunnel")] if let Some(addr) = matches.get_one::

("FORWARD_ADDR").cloned() { local_config.forward_addr = Some(addr); @@ -819,24 +728,6 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("FAKE_DNS_RECORD_EXPIRE_DURATION") { - local_config.fake_dns_record_expire_duration = Some(Duration::from_secs(*d)); - } - if let Some(n) = matches.get_one::("FAKE_DNS_IPV4_NETWORK") { - local_config.fake_dns_ipv4_network = Some(*n); - } - if let Some(n) = matches.get_one::("FAKE_DNS_IPV6_NETWORK") { - local_config.fake_dns_ipv6_network = Some(*n); - } - if let Some(p) = matches.get_one::("FAKE_DNS_DATABASE_PATH").cloned() { - local_config.fake_dns_database_path = Some(p); - } - } - if matches.get_flag("UDP_ONLY") { local_config.mode = Mode::UdpOnly; } @@ -889,8 +780,13 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("ACL") { - let acl = AccessControl::load_from_file(acl_file) - .map_err(|err| ShadowsocksError::LoadAclFailure(format!("loading ACL \"{acl_file}\", {err}")))?; + let acl = match AccessControl::load_from_file(acl_file) { + Ok(acl) => acl, + Err(err) => { + eprintln!("loading ACL \"{acl_file}\", {err}"); + return Err(crate::EXIT_CODE_LOAD_ACL_FAILURE.into()); + } + }; config.acl = Some(acl); } @@ -931,37 +827,20 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("ONLINE_CONFIG_URL") { - use shadowsocks_service::config::OnlineConfig; - - let online_config_update_interval = matches.get_one::("ONLINE_CONFIG_UPDATE_INTERVAL").cloned(); - - let mut allowed_plugins = None; - if let Some(plugins) = matches.get_many::("ONLINE_CONFIG_ALLOWED_PLUGIN") { - allowed_plugins = Some(plugins.cloned().collect()); - } - - config.online_config = Some(OnlineConfig { - config_url: online_config_url.clone(), - update_interval: online_config_update_interval.map(Duration::from_secs), - allowed_plugins, - }); - } - // DONE READING options if config.local.is_empty() { - return Err(ShadowsocksError::InsufficientParams( + eprintln!( "missing `local_address`, consider specifying it by --local-addr command line option, \ or \"local_address\" and \"local_port\" in configuration file" - .to_string(), - )); + ); + return Err(crate::EXIT_CODE_INSUFFICIENT_PARAMS.into()); } - config - .check_integrity() - .map_err(|err| ShadowsocksError::LoadConfigFailure(format!("config integrity check failed, {err}")))?; + if let Err(err) = config.check_integrity() { + eprintln!("config integrity check failed, {err}"); + return Err(crate::EXIT_CODE_LOAD_CONFIG_FAILURE.into()); + } #[cfg(unix)] if matches.get_flag("DAEMONIZE") || matches.get_raw("DAEMONIZE_PID_PATH").is_some() { @@ -971,9 +850,10 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("USER") { - crate::sys::run_as_user(uname).map_err(|err| { - ShadowsocksError::InsufficientParams(format!("failed to change as user, error: {err}")) - })?; + if let Err(err) = crate::sys::run_as_user(uname) { + eprintln!("failed to change as user, error: {err}"); + return Err(crate::EXIT_CODE_INSUFFICIENT_PARAMS.into()); + } } info!("shadowsocks local {} build {}", crate::VERSION, crate::BUILD_TIME); @@ -993,7 +873,7 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future ShadowsocksResult<(Runtime, impl Future ServerReloader { - config_path: config_path.clone(), - balancer: instance.server_balancer().clone(), - } - .launch_reload_server_task() - .boxed(), - None => future::pending().boxed(), - }; + if let Some(config_path) = config_path { + launch_reload_server_task(config_path, instance.server_balancer().clone()); + } let abort_signal = monitor::create_signal_monitor(); let server = instance.run(); - let reload_task = reload_task.fuse(); - let abort_signal = abort_signal.fuse(); - let server = server.fuse(); - - tokio::pin!(reload_task); tokio::pin!(abort_signal); tokio::pin!(server); - loop { - futures::select! { - server_res = server => { - match server_res { - // Server future resolved without an error. This should never happen. - Ok(..) => { - return Err(ShadowsocksError::ServerExitUnexpectedly("server exited unexpectedly".to_owned())); - } - // Server future resolved with error, which are listener errors in most cases - Err(err) => { - return Err(ShadowsocksError::ServerAborted(format!("server aborted with {err}"))); - } - } - } - // The abort signal future resolved. Means we should just exit. - _ = abort_signal => { - return Ok(()); - } - _ = reload_task => { - // continue. - trace!("server-loader task task exited"); - } + match future::select(server, abort_signal).await { + // Server future resolved without an error. This should never happen. + Either::Left((Ok(..), ..)) => { + eprintln!("server exited unexpectedly"); + crate::EXIT_CODE_SERVER_EXIT_UNEXPECTEDLY.into() + } + // Server future resolved with error, which are listener errors in most cases + Either::Left((Err(err), ..)) => { + eprintln!("server aborted with {err}"); + crate::EXIT_CODE_SERVER_ABORTED.into() } + // The abort signal future resolved. Means we should just exit. + Either::Right(_) => ExitCode::SUCCESS, } }; @@ -1054,91 +913,42 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future ExitCode { - match create(matches).and_then(|(runtime, main_fut)| runtime.block_on(main_fut)) { - Ok(()) => ExitCode::SUCCESS, - Err(err) => { - eprintln!("{err}"); - err.exit_code().into() - } + match create(matches) { + Ok((runtime, main_fut)) => runtime.block_on(main_fut), + Err(code) => code, } } -struct ServerReloader { - config_path: PathBuf, - balancer: PingBalancer, -} - -impl ServerReloader { - #[cfg_attr(not(unix), allow(dead_code))] - async fn run_once(&self) -> Result<(), Box> { - let start_time = Instant::now(); - - // Load servers from source - let source_config = match Config::load_from_file(&self.config_path, ConfigType::Local) { - Ok(c) => c, - Err(err) => { - error!( - "server-loader task failed to load from file: {}, error: {}", - self.config_path.display(), - err - ); - return Err(Box::new(err)); - } - }; - - let server_len = source_config.server.len(); - - let fetch_end_time = Instant::now(); - - if let Err(err) = self - .balancer - .reset_servers(source_config.server, &[ServerSource::Configuration]) - .await - { - error!("server-loader task {} servers but found error: {}", server_len, err); - return Err(Box::new(err)); - } - - let total_end_time = Instant::now(); - - info!( - "server-loader task load from {} with {} servers, fetch costs: {:?}, total costs: {:?}", - self.config_path.display(), - server_len, - fetch_end_time - start_time, - total_end_time - start_time, - ); - - Ok(()) - } - - #[cfg(unix)] - async fn launch_signal_reload_server_task(self: Arc) { - use log::debug; - use tokio::signal::unix::{SignalKind, signal}; +#[cfg(unix)] +fn launch_reload_server_task(config_path: PathBuf, balancer: PingBalancer) { + use log::error; + use tokio::signal::unix::{signal, SignalKind}; + tokio::spawn(async move { let mut sigusr1 = signal(SignalKind::user_defined1()).expect("signal"); - debug!("server-loader task is now listening USR1"); - while sigusr1.recv().await.is_some() { - let _ = self.run_once().await; - } - } + let config = match Config::load_from_file(&config_path, ConfigType::Local) { + Ok(c) => c, + Err(err) => { + error!("auto-reload {} failed with error: {}", config_path.display(), err); + continue; + } + }; - #[cfg(unix)] - async fn launch_reload_server_task(self) { - let arc_self = Arc::new(self); - arc_self.launch_signal_reload_server_task().await - } + let servers: Vec = config.server.into_iter().map(|s| s.config).collect(); + info!("auto-reload {} with {} servers", config_path.display(), servers.len()); - #[cfg(windows)] - async fn launch_reload_server_task(self) { - let _ = self.config_path; - let _ = self.balancer; - } + if let Err(err) = balancer.reset_servers(servers).await { + error!("auto-reload {} but found error: {}", config_path.display(), err); + } + } + }); } +#[cfg(not(unix))] +fn launch_reload_server_task(_: PathBuf, _: PingBalancer) {} + #[cfg(test)] mod test { use clap::Command; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/service/manager.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/service/manager.rs index ae7f1d5..ebf7a2f 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/service/manager.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/src/service/manager.rs @@ -2,7 +2,7 @@ use std::{future::Future, net::IpAddr, path::PathBuf, process::ExitCode, time::Duration}; -use clap::{Arg, ArgAction, ArgGroup, ArgMatches, Command, ValueHint, builder::PossibleValuesParser}; +use clap::{builder::PossibleValuesParser, Arg, ArgAction, ArgGroup, ArgMatches, Command, ValueHint}; use futures::future::{self, Either}; use log::{info, trace}; use tokio::{ @@ -18,7 +18,7 @@ use shadowsocks_service::{ run_manager, shadowsocks::{ config::{ManagerAddr, Mode}, - crypto::{CipherKind, available_ciphers}, + crypto::{available_ciphers, CipherKind}, plugin::PluginConfig, }, }; @@ -27,8 +27,8 @@ use shadowsocks_service::{ use crate::logging; use crate::{ config::{Config as ServiceConfig, RuntimeMode}, - error::{ShadowsocksError, ShadowsocksResult}, - monitor, vparser, + monitor, + vparser, }; /// Defines command line options @@ -93,15 +93,7 @@ pub fn define_command_line_options(mut app: Command) -> Command { .num_args(1) .action(ArgAction::Set) .value_hint(ValueHint::CommandName) - .help("Default SIP003 (https://shadowsocks.org/doc/sip003.html) plugin"), - ) - .arg( - Arg::new("PLUGIN_MODE") - .long("plugin-mode") - .num_args(1) - .action(ArgAction::Set) - .requires("PLUGIN") - .help("SIP003/SIP003u plugin mode, must be one of `tcp_only` (default), `udp_only` and `tcp_and_udp`"), + .help("Default SIP003 (https://shadowsocks.org/guide/sip003.html) plugin"), ) .arg( Arg::new("PLUGIN_OPT") @@ -268,7 +260,7 @@ pub fn define_command_line_options(mut app: Command) -> Command { } /// Create `Runtime` and `main` entry -pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future + use<>)> { +pub fn create(matches: &ArgMatches) -> Result<(Runtime, impl Future), ExitCode> { let (config, runtime) = { let config_path_opt = matches.get_one::("CONFIG").cloned().or_else(|| { if !matches.contains_id("SERVER_CONFIG") { @@ -285,8 +277,13 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future ServiceConfig::load_from_file(config_path) - .map_err(|err| ShadowsocksError::LoadConfigFailure(format!("loading config {config_path:?}, {err}")))?, + Some(ref config_path) => match ServiceConfig::load_from_file(config_path) { + Ok(c) => c, + Err(err) => { + eprintln!("loading config {config_path:?}, {err}"); + return Err(crate::EXIT_CODE_LOAD_CONFIG_FAILURE.into()); + } + }, None => ServiceConfig::default(), }; service_config.set_options(matches); @@ -304,8 +301,13 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future Config::load_from_file(&cpath, ConfigType::Manager) - .map_err(|err| ShadowsocksError::LoadConfigFailure(format!("loading config {cpath:?}, {err}")))?, + Some(cpath) => match Config::load_from_file(&cpath, ConfigType::Manager) { + Ok(cfg) => cfg, + Err(err) => { + eprintln!("loading config {cpath:?}, {err}"); + return Err(crate::EXIT_CODE_LOAD_CONFIG_FAILURE.into()); + } + }, None => Config::new(ConfigType::Manager), }; @@ -340,13 +342,10 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("MANAGER_ADDR").cloned() { - match config.manager { - Some(ref mut manager_config) => { - manager_config.addr = addr; - } - _ => { - config.manager = Some(ManagerConfig::new(addr)); - } + if let Some(ref mut manager_config) = config.manager { + manager_config.addr = addr; + } else { + config.manager = Some(ManagerConfig::new(addr)); } } @@ -378,13 +377,7 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("PLUGIN_OPT").cloned(), plugin_args: Vec::new(), - plugin_mode: matches - .get_one::("PLUGIN_MODE") - .map(|x| { - x.parse::() - .expect("plugin-mode must be one of `tcp_only` (default), `udp_only` and `tcp_and_udp`") - }) - .unwrap_or(Mode::TcpOnly), + plugin_mode: Mode::TcpOnly, }); } @@ -415,8 +408,13 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("ACL") { - let acl = AccessControl::load_from_file(acl_file) - .map_err(|err| ShadowsocksError::LoadAclFailure(format!("loading ACL \"{acl_file}\", {err}")))?; + let acl = match AccessControl::load_from_file(acl_file) { + Ok(acl) => acl, + Err(err) => { + eprintln!("loading ACL \"{acl_file}\", {err}"); + return Err(crate::EXIT_CODE_LOAD_ACL_FAILURE.into()); + } + }; config.acl = Some(acl); } @@ -459,17 +457,18 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future ShadowsocksResult<(Runtime, impl Future("USER") { - crate::sys::run_as_user(uname).map_err(|err| { - ShadowsocksError::InsufficientParams(format!("failed to change as user, error: {err}")) - })?; + if let Err(err) = crate::sys::run_as_user(uname) { + eprintln!("failed to change as user, error: {err}"); + return Err(crate::EXIT_CODE_INSUFFICIENT_PARAMS.into()); + } } info!("shadowsocks manager {} build {}", crate::VERSION, crate::BUILD_TIME); + let mut worker_count = 1; let mut builder = match service_config.runtime.mode { RuntimeMode::SingleThread => Builder::new_current_thread(), #[cfg(feature = "multi-threaded")] RuntimeMode::MultiThread => { let mut builder = Builder::new_multi_thread(); if let Some(worker_threads) = service_config.runtime.worker_count { + worker_count = worker_threads; builder.worker_threads(worker_threads); + } else { + worker_count = num_cpus::get(); } builder } }; + config.worker_count = worker_count; let runtime = builder.enable_all().build().expect("create tokio Runtime"); @@ -513,13 +518,17 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future Err(ShadowsocksError::ServerExitUnexpectedly( - "server exited unexpectedly".to_owned(), - )), + Either::Left((Ok(..), ..)) => { + eprintln!("server exited unexpectedly"); + crate::EXIT_CODE_SERVER_EXIT_UNEXPECTEDLY.into() + } // Server future resolved with error, which are listener errors in most cases - Either::Left((Err(err), ..)) => Err(ShadowsocksError::ServerAborted(format!("server aborted with {err}"))), + Either::Left((Err(err), ..)) => { + eprintln!("server aborted with {err}"); + crate::EXIT_CODE_SERVER_ABORTED.into() + } // The abort signal future resolved. Means we should just exit. - Either::Right(_) => Ok(()), + Either::Right(_) => ExitCode::SUCCESS, } }; @@ -529,12 +538,9 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future ExitCode { - match create(matches).and_then(|(runtime, main_fut)| runtime.block_on(main_fut)) { - Ok(()) => ExitCode::SUCCESS, - Err(err) => { - eprintln!("{err}"); - err.exit_code().into() - } + match create(matches) { + Ok((runtime, main_fut)) => runtime.block_on(main_fut), + Err(code) => code, } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/service/server.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/service/server.rs index 045243a..6f1fa84 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/service/server.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/src/service/server.rs @@ -2,7 +2,7 @@ use std::{future::Future, net::IpAddr, path::PathBuf, process::ExitCode, time::Duration}; -use clap::{Arg, ArgAction, ArgGroup, ArgMatches, Command, ValueHint, builder::PossibleValuesParser}; +use clap::{builder::PossibleValuesParser, Arg, ArgAction, ArgGroup, ArgMatches, Command, ValueHint}; use futures::future::{self, Either}; use log::{info, trace}; use tokio::{ @@ -12,11 +12,11 @@ use tokio::{ use shadowsocks_service::{ acl::AccessControl, - config::{Config, ConfigType, ManagerConfig, ServerInstanceConfig, read_variable_field_value}, + config::{read_variable_field_value, Config, ConfigType, ManagerConfig, ServerInstanceConfig}, run_server, shadowsocks::{ config::{ManagerAddr, Mode, ServerAddr, ServerConfig}, - crypto::{CipherKind, available_ciphers}, + crypto::{available_ciphers, CipherKind}, plugin::PluginConfig, }, }; @@ -25,8 +25,8 @@ use shadowsocks_service::{ use crate::logging; use crate::{ config::{Config as ServiceConfig, RuntimeMode}, - error::{ShadowsocksError, ShadowsocksResult}, - monitor, vparser, + monitor, + vparser, }; /// Defines command line options @@ -121,15 +121,7 @@ pub fn define_command_line_options(mut app: Command) -> Command { .action(ArgAction::Set) .value_hint(ValueHint::CommandName) .requires("SERVER_ADDR") - .help("SIP003 (https://shadowsocks.org/doc/sip003.html) plugin"), - ) - .arg( - Arg::new("PLUGIN_MODE") - .long("plugin-mode") - .num_args(1) - .action(ArgAction::Set) - .requires("PLUGIN") - .help("SIP003/SIP003u plugin mode, must be one of `tcp_only` (default), `udp_only` and `tcp_and_udp`"), + .help("SIP003 (https://shadowsocks.org/guide/sip003.html) plugin"), ) .arg( Arg::new("PLUGIN_OPT") @@ -280,7 +272,7 @@ pub fn define_command_line_options(mut app: Command) -> Command { } /// Create `Runtime` and `main` entry -pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future + use<>)> { +pub fn create(matches: &ArgMatches) -> Result<(Runtime, impl Future), ExitCode> { let (config, runtime) = { let config_path_opt = matches.get_one::("CONFIG").cloned().or_else(|| { if !matches.contains_id("SERVER_CONFIG") { @@ -297,8 +289,13 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future ServiceConfig::load_from_file(config_path) - .map_err(|err| ShadowsocksError::LoadConfigFailure(format!("loading config {config_path:?}, {err}")))?, + Some(ref config_path) => match ServiceConfig::load_from_file(config_path) { + Ok(c) => c, + Err(err) => { + eprintln!("loading config {config_path:?}, {err}"); + return Err(crate::EXIT_CODE_LOAD_CONFIG_FAILURE.into()); + } + }, None => ServiceConfig::default(), }; service_config.set_options(matches); @@ -316,8 +313,13 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future Config::load_from_file(&cpath, ConfigType::Server) - .map_err(|err| ShadowsocksError::LoadConfigFailure(format!("loading config {cpath:?}, {err}")))?, + Some(cpath) => match Config::load_from_file(&cpath, ConfigType::Server) { + Ok(cfg) => cfg, + Err(err) => { + eprintln!("loading config {cpath:?}, {err}"); + return Err(crate::EXIT_CODE_LOAD_CONFIG_FAILURE.into()); + } + }, None => Config::new(ConfigType::Server), }; @@ -346,12 +348,7 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future().expect("server-addr"); let timeout = matches.get_one::("TIMEOUT").map(|x| Duration::from_secs(*x)); - let mut sc = match ServerConfig::new(svr_addr, password, method) { - Ok(sc) => sc, - Err(err) => { - panic!("failed to create ServerConfig, error: {}", err); - } - }; + let mut sc = ServerConfig::new(svr_addr, password, method); if let Some(timeout) = timeout { sc.set_timeout(timeout); } @@ -361,13 +358,7 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("PLUGIN_OPT").cloned(), plugin_args: Vec::new(), - plugin_mode: matches - .get_one::("PLUGIN_MODE") - .map(|x| { - x.parse::() - .expect("plugin-mode must be one of `tcp_only` (default), `udp_only` and `tcp_and_udp`") - }) - .unwrap_or(Mode::TcpOnly), + plugin_mode: Mode::TcpOnly, }; sc.set_plugin(plugin); @@ -418,13 +409,10 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("MANAGER_ADDR").cloned() { - match config.manager { - Some(ref mut manager_config) => { - manager_config.addr = addr; - } - _ => { - config.manager = Some(ManagerConfig::new(addr)); - } + if let Some(ref mut manager_config) = config.manager { + manager_config.addr = addr; + } else { + config.manager = Some(ManagerConfig::new(addr)); } } @@ -439,8 +427,13 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future("ACL") { - let acl = AccessControl::load_from_file(acl_file) - .map_err(|err| ShadowsocksError::LoadAclFailure(format!("loading ACL \"{acl_file}\", {err}")))?; + let acl = match AccessControl::load_from_file(acl_file) { + Ok(acl) => acl, + Err(err) => { + eprintln!("loading ACL \"{acl_file}\", {err}"); + return Err(crate::EXIT_CODE_LOAD_ACL_FAILURE.into()); + } + }; config.acl = Some(acl); } @@ -484,17 +477,18 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future ShadowsocksResult<(Runtime, impl Future("USER") { - crate::sys::run_as_user(uname).map_err(|err| { - ShadowsocksError::InsufficientParams(format!("failed to change as user, error: {err}")) - })?; + if let Err(err) = crate::sys::run_as_user(uname) { + eprintln!("failed to change as user, error: {err}"); + return Err(crate::EXIT_CODE_INSUFFICIENT_PARAMS.into()); + } } info!("shadowsocks server {} build {}", crate::VERSION, crate::BUILD_TIME); + let mut worker_count = 1; let mut builder = match service_config.runtime.mode { RuntimeMode::SingleThread => Builder::new_current_thread(), #[cfg(feature = "multi-threaded")] RuntimeMode::MultiThread => { let mut builder = Builder::new_multi_thread(); if let Some(worker_threads) = service_config.runtime.worker_count { + worker_count = worker_threads; builder.worker_threads(worker_threads); + } else { + worker_count = num_cpus::get(); } builder } }; + config.worker_count = worker_count; let runtime = builder.enable_all().build().expect("create tokio Runtime"); @@ -538,13 +538,17 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future Err(ShadowsocksError::ServerExitUnexpectedly( - "server exited unexpectedly".to_owned(), - )), + Either::Left((Ok(..), ..)) => { + eprintln!("server exited unexpectedly"); + crate::EXIT_CODE_SERVER_EXIT_UNEXPECTEDLY.into() + } // Server future resolved with error, which are listener errors in most cases - Either::Left((Err(err), ..)) => Err(ShadowsocksError::ServerAborted(format!("server aborted with {err}"))), + Either::Left((Err(err), ..)) => { + eprintln!("server aborted with {err}"); + crate::EXIT_CODE_SERVER_ABORTED.into() + } // The abort signal future resolved. Means we should just exit. - Either::Right(_) => Ok(()), + Either::Right(_) => ExitCode::SUCCESS, } }; @@ -554,12 +558,9 @@ pub fn create(matches: &ArgMatches) -> ShadowsocksResult<(Runtime, impl Future ExitCode { - match create(matches).and_then(|(runtime, main_fut)| runtime.block_on(main_fut)) { - Ok(()) => ExitCode::SUCCESS, - Err(err) => { - eprintln!("{err}"); - err.exit_code().into() - } + match create(matches) { + Ok((runtime, main_fut)) => runtime.block_on(main_fut), + Err(code) => code, } } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/sys.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/sys.rs index 9e42e96..dc9501e 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/sys.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/src/sys.rs @@ -30,7 +30,7 @@ pub fn adjust_nofile() { { use std::ptr; - unsafe extern "C" { + extern "C" { fn sysctlbyname( name: *const libc::c_char, oldp: *mut libc::c_void, @@ -120,7 +120,7 @@ pub fn run_as_user(uname: &str) -> std::io::Result<()> { return Err(err); } - if libc::initgroups(pwd.pw_name, pwd.pw_gid as _) != 0 { + if libc::initgroups(pwd.pw_name, pwd.pw_gid.try_into().unwrap()) != 0 { let err = Error::last_os_error(); error!( "could not change supplementary groups to user {:?}'s gid: {}, uid: {}, error: {}", diff --git a/obfuscator/src/main/rust/shadowsocks-rust/src/vparser/mod.rs b/obfuscator/src/main/rust/shadowsocks-rust/src/vparser/mod.rs index ccdf8c9..9853c51 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/src/vparser/mod.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/src/vparser/mod.rs @@ -4,7 +4,7 @@ use std::net::{IpAddr, SocketAddr}; -#[cfg(any(feature = "local-tun", feature = "local-fake-dns"))] +#[cfg(feature = "local-tun")] use ipnet::IpNet; #[cfg(feature = "local-redir")] use shadowsocks_service::config::RedirType; @@ -12,7 +12,7 @@ use shadowsocks_service::config::RedirType; use shadowsocks_service::local::dns::NameServerAddr; use shadowsocks_service::{ config::{ManagerServerHost, ManagerServerMode}, - shadowsocks::{ManagerAddr, ServerAddr, ServerConfig, crypto::CipherKind, relay::socks5::Address}, + shadowsocks::{crypto::CipherKind, relay::socks5::Address, ManagerAddr, ServerAddr, ServerConfig}, }; macro_rules! value_parser_type { @@ -52,11 +52,11 @@ value_parser_type!(parse_cipher_kind, CipherKind, "invalid cipher"); pub fn parse_server_url(v: &str) -> Result { match ServerConfig::from_url(v) { Ok(t) => Ok(t), - Err(..) => Err("should be SIP002 (https://shadowsocks.org/doc/sip002.html) format".to_owned()), + Err(..) => Err("should be SIP002 (https://shadowsocks.org/guide/sip002.html) format".to_owned()), } } -#[cfg(any(feature = "local-tun", feature = "local-fake-dns"))] +#[cfg(feature = "local-tun")] pub fn parse_ipnet(v: &str) -> Result { match v.parse::() { Err(..) => Err("should be a CIDR address like 10.1.2.3/24".to_owned()), diff --git a/obfuscator/src/main/rust/shadowsocks-rust/tests/dns.rs b/obfuscator/src/main/rust/shadowsocks-rust/tests/dns.rs index 1d3609d..33c0374 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/tests/dns.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/tests/dns.rs @@ -11,7 +11,8 @@ use tokio::{ use shadowsocks_service::{ config::{Config, ConfigType}, - run_local, run_server, + run_local, + run_server, }; #[tokio::test] @@ -56,7 +57,7 @@ async fn dns_relay() { time::sleep(Duration::from_secs(1)).await; // Query firefox.com, TransactionID: 0x1234 - const DNS_QUERY: &[u8] = b"\x12\x34\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07firefox\x03com\x00\x00\x01\x00\x01"; + static DNS_QUERY: &[u8] = b"\x12\x34\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x07firefox\x03com\x00\x00\x01\x00\x01"; // 1. DoT { diff --git a/obfuscator/src/main/rust/shadowsocks-rust/tests/http.rs b/obfuscator/src/main/rust/shadowsocks-rust/tests/http.rs index 4dd541f..70ae7fd 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/tests/http.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/tests/http.rs @@ -10,7 +10,8 @@ use tokio::{ use shadowsocks_service::{ config::{Config, ConfigType}, - run_local, run_server, + run_local, + run_server, }; #[tokio::test] diff --git a/obfuscator/src/main/rust/shadowsocks-rust/tests/socks4.rs b/obfuscator/src/main/rust/shadowsocks-rust/tests/socks4.rs index 9679982..66cf6f5 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/tests/socks4.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/tests/socks4.rs @@ -13,7 +13,8 @@ use tokio::{ use shadowsocks_service::{ config::{Config, ConfigType, LocalConfig, LocalInstanceConfig, ProtocolType, ServerInstanceConfig}, local::socks::client::Socks4TcpClient, - run_local, run_server, + run_local, + run_server, shadowsocks::{ config::{ServerAddr, ServerConfig}, crypto::CipherKind, @@ -39,9 +40,11 @@ impl Socks4TestServer { local_addr, svr_config: { let mut cfg = Config::new(ConfigType::Server); - cfg.server = vec![ServerInstanceConfig::with_server_config( - ServerConfig::new(svr_addr, pwd.to_owned(), method).unwrap(), - )]; + cfg.server = vec![ServerInstanceConfig::with_server_config(ServerConfig::new( + svr_addr, + pwd.to_owned(), + method, + ))]; cfg }, cli_config: { @@ -50,9 +53,11 @@ impl Socks4TestServer { ServerAddr::from(local_addr), ProtocolType::Socks, ))]; - cfg.server = vec![ServerInstanceConfig::with_server_config( - ServerConfig::new(svr_addr, pwd.to_owned(), method).unwrap(), - )]; + cfg.server = vec![ServerInstanceConfig::with_server_config(ServerConfig::new( + svr_addr, + pwd.to_owned(), + method, + ))]; cfg }, } @@ -86,7 +91,7 @@ async fn socks4_relay_connect() { let svr = Socks4TestServer::new(SERVER_ADDR, LOCAL_ADDR, PASSWORD, METHOD); svr.run().await; - const HTTP_REQUEST: &[u8] = b"GET /success.txt HTTP/1.0\r\nHost: detectportal.firefox.com\r\nAccept: */*\r\n\r\n"; + static HTTP_REQUEST: &[u8] = b"GET /success.txt HTTP/1.0\r\nHost: detectportal.firefox.com\r\nAccept: */*\r\n\r\n"; let mut c = Socks4TcpClient::connect(("detectportal.firefox.com", 80), LOCAL_ADDR, Vec::new()) .await diff --git a/obfuscator/src/main/rust/shadowsocks-rust/tests/socks5.rs b/obfuscator/src/main/rust/shadowsocks-rust/tests/socks5.rs index 0075c0d..c09299d 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/tests/socks5.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/tests/socks5.rs @@ -13,7 +13,8 @@ use tokio::{ use shadowsocks_service::{ config::{Config, ConfigType, LocalConfig, LocalInstanceConfig, ProtocolType, ServerInstanceConfig}, local::socks::client::socks5::Socks5TcpClient, - run_local, run_server, + run_local, + run_server, shadowsocks::{ config::{Mode, ServerAddr, ServerConfig}, crypto::CipherKind, @@ -40,9 +41,11 @@ impl Socks5TestServer { local_addr, svr_config: { let mut cfg = Config::new(ConfigType::Server); - cfg.server = vec![ServerInstanceConfig::with_server_config( - ServerConfig::new(svr_addr, pwd.to_owned(), method).unwrap(), - )]; + cfg.server = vec![ServerInstanceConfig::with_server_config(ServerConfig::new( + svr_addr, + pwd.to_owned(), + method, + ))]; cfg.server[0] .config .set_mode(if enable_udp { Mode::TcpAndUdp } else { Mode::TcpOnly }); @@ -55,9 +58,11 @@ impl Socks5TestServer { ProtocolType::Socks, ))]; cfg.local[0].config.mode = if enable_udp { Mode::TcpAndUdp } else { Mode::TcpOnly }; - cfg.server = vec![ServerInstanceConfig::with_server_config( - ServerConfig::new(svr_addr, pwd.to_owned(), method).unwrap(), - )]; + cfg.server = vec![ServerInstanceConfig::with_server_config(ServerConfig::new( + svr_addr, + pwd.to_owned(), + method, + ))]; cfg }, } diff --git a/obfuscator/src/main/rust/shadowsocks-rust/tests/tunnel.rs b/obfuscator/src/main/rust/shadowsocks-rust/tests/tunnel.rs index c4f5a10..0330dfa 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/tests/tunnel.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/tests/tunnel.rs @@ -11,24 +11,21 @@ use tokio::{ use shadowsocks_service::{ config::{Config, ConfigType}, - run_local, run_server, + run_local, + run_server, }; -fn random_local_tcp_port_pair() -> (u16, u16) { - let listener1 = std::net::TcpListener::bind("127.0.0.1:0").unwrap(); - let port1 = listener1.local_addr().unwrap().port(); - - let listener2 = std::net::TcpListener::bind("127.0.0.1:0").unwrap(); - let port2 = listener2.local_addr().unwrap().port(); - - (port1, port2) +fn random_local_tcp_port() -> u16 { + let listener = std::net::TcpListener::bind("127.0.0.1:0").unwrap(); + listener.local_addr().unwrap().port() } #[tokio::test] async fn tcp_tunnel() { let _ = env_logger::try_init(); - let (local_port, server_port) = random_local_tcp_port_pair(); + let local_port = random_local_tcp_port(); + let server_port = random_local_tcp_port(); let local_config = Config::load_from_str( &format!( r#"{{ @@ -67,7 +64,7 @@ async fn tcp_tunnel() { tokio::spawn(run_local(local_config)); tokio::spawn(run_server(server_config)); - time::sleep(Duration::from_secs(5)).await; + time::sleep(Duration::from_secs(1)).await; // Connect it directly, because it is now established a TCP tunnel with detectportal.firefox.com let mut stream = TcpStream::connect(("127.0.0.1", local_port)).await.unwrap(); @@ -89,13 +86,11 @@ async fn tcp_tunnel() { async fn udp_tunnel() { let _ = env_logger::try_init(); - let socket = UdpSocket::bind("127.0.0.1:0").await.unwrap(); - let socket_local_addr = socket.local_addr().unwrap(); - let echo_server_port = socket_local_addr.port(); - // A UDP echo server - tokio::spawn(async move { - debug!("UDP echo server listening on {socket_local_addr}"); + tokio::spawn(async { + let socket = UdpSocket::bind("127.0.0.1:9230").await.unwrap(); + + debug!("UDP echo server listening on 127.0.0.1:9230"); let mut buffer = [0u8; 65536]; loop { @@ -107,7 +102,8 @@ async fn udp_tunnel() { time::sleep(Duration::from_secs(1)).await; - let (local_port, server_port) = random_local_tcp_port_pair(); + let local_port = random_local_tcp_port(); + let server_port = random_local_tcp_port(); let local_config = Config::load_from_str( &format!( r#"{{ @@ -117,7 +113,7 @@ async fn udp_tunnel() { "local_address": "127.0.0.1", "protocol": "tunnel", "forward_address": "127.0.0.1", - "forward_port": {echo_server_port} + "forward_port": 9230 }} ], "server": "127.0.0.1", @@ -148,7 +144,7 @@ async fn udp_tunnel() { tokio::spawn(run_local(local_config)); tokio::spawn(run_server(server_config)); - time::sleep(Duration::from_secs(5)).await; + time::sleep(Duration::from_secs(1)).await; const MESSAGE: &[u8] = b"hello shadowsocks"; diff --git a/obfuscator/src/main/rust/shadowsocks-rust/tests/udp.rs b/obfuscator/src/main/rust/shadowsocks-rust/tests/udp.rs index c0d2c04..1e71622 100644 --- a/obfuscator/src/main/rust/shadowsocks-rust/tests/udp.rs +++ b/obfuscator/src/main/rust/shadowsocks-rust/tests/udp.rs @@ -1,3 +1,4 @@ +#![cfg_attr(clippy, allow(blacklisted_name))] #![cfg(all(feature = "local", feature = "server"))] use std::net::SocketAddr; @@ -8,8 +9,9 @@ use tokio::time::{self, Duration}; use shadowsocks_service::{ config::{Config, ConfigType, LocalConfig, LocalInstanceConfig, ProtocolType, ServerInstanceConfig}, local::socks::client::socks5::Socks5UdpClient, - run_local, run_server, - shadowsocks::{ServerConfig, config::Mode, crypto::CipherKind, relay::socks5::Address}, + run_local, + run_server, + shadowsocks::{config::Mode, crypto::CipherKind, relay::socks5::Address, ServerConfig}, }; const SERVER_ADDR: &str = "127.0.0.1:8093"; @@ -22,9 +24,11 @@ const METHOD: CipherKind = CipherKind::AES_128_GCM; fn get_svr_config() -> Config { let mut cfg = Config::new(ConfigType::Server); - cfg.server = vec![ServerInstanceConfig::with_server_config( - ServerConfig::new(SERVER_ADDR.parse::().unwrap(), PASSWORD.to_owned(), METHOD).unwrap(), - )]; + cfg.server = vec![ServerInstanceConfig::with_server_config(ServerConfig::new( + SERVER_ADDR.parse::().unwrap(), + PASSWORD.to_owned(), + METHOD, + ))]; cfg.server[0].config.set_mode(Mode::TcpAndUdp); cfg } @@ -36,9 +40,11 @@ fn get_cli_config() -> Config { ProtocolType::Socks, ))]; cfg.local[0].config.mode = Mode::TcpAndUdp; - cfg.server = vec![ServerInstanceConfig::with_server_config( - ServerConfig::new(SERVER_ADDR.parse::().unwrap(), PASSWORD.to_owned(), METHOD).unwrap(), - )]; + cfg.server = vec![ServerInstanceConfig::with_server_config(ServerConfig::new( + SERVER_ADDR.parse::().unwrap(), + PASSWORD.to_owned(), + METHOD, + ))]; cfg } diff --git a/settings.gradle.kts b/settings.gradle.kts index ae6f4c1..0dd9bf9 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,7 +12,6 @@ dependencyResolutionManagement { google() mavenLocal() mavenCentral() - gradlePluginPortal() } } diff --git a/testapp/build.gradle.kts b/testapp/build.gradle.kts index 3b70438..18179d6 100644 --- a/testapp/build.gradle.kts +++ b/testapp/build.gradle.kts @@ -5,12 +5,12 @@ plugins { android { namespace = "com.kape.obfuscator.testapp" - compileSdk = 35 + compileSdk = 34 defaultConfig { applicationId = "com.kape.obfuscator.testapp" minSdk = 24 - targetSdk = 35 + targetSdk = 34 versionCode = 1 versionName = "1.0" }