diff --git a/.github/workflows/build-rust.yml b/.github/workflows/build-rust.yml index 05b609d..8048a3a 100644 --- a/.github/workflows/build-rust.yml +++ b/.github/workflows/build-rust.yml @@ -15,6 +15,8 @@ jobs: include: - os: ubuntu-latest platform: Linux + packages: + - gcc-aarch64-linux-gnu targets: - x86_64-unknown-linux-gnu - aarch64-unknown-linux-gnu @@ -34,12 +36,19 @@ jobs: runs-on: ${{ matrix.os }} env: DEVELOPER_DIR: /Applications/Xcode_14.2.app/Contents/Developer + CARGO_INCREMENTAL: 0 + CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc + RUST_BACKTRACE: short steps: - name: Checkout uses: actions/checkout@v3 with: ssh-key: ${{ secrets.DEPLOY_KEY }} submodules: recursive + - name: Install Packages + if: matrix.os == 'ubuntu-latest' + shell: bash + run: sudo apt-get install -y ${{ join(matrix.packages, ' ') }} - name: Install Rust uses: dtolnay/rust-toolchain@master with: diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..0899186 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,22 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "lldb", + "request": "launch", + "name": "Debug", + "cargo": { + "args": [ + "build", + "--bin=burrow", + ], + "filter": { + "name": "burrow", + "kind": "bin" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 5008897..eb2a68a 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -14,4 +14,4 @@ "label": "Check" } ] -} +} \ No newline at end of file diff --git a/tun/build.rs b/tun/build.rs index 47ea9fd..6ad98c3 100644 --- a/tun/build.rs +++ b/tun/build.rs @@ -46,7 +46,7 @@ async fn main() -> anyhow::Result<()> { bindings.write_to_file(out_dir.join("wintun.rs"))?; let mut library = Vec::new(); - let platform = platforms::Platform::find(&env::var("TARGET")?).unwrap(); + let platform = platforms::Platform::find(&std::env::var("TARGET")?).unwrap(); let arch = match platform.target_arch { platforms::target::Arch::Arm => "arm", platforms::Arch::AArch64 => "arm64", diff --git a/tun/src/windows/mod.rs b/tun/src/windows/mod.rs index 2d01db3..6c831d1 100644 --- a/tun/src/windows/mod.rs +++ b/tun/src/windows/mod.rs @@ -2,6 +2,10 @@ use std::io::Result; use std::ptr; use widestring::{u16cstr, U16CString}; +mod queue; + +pub use queue::TunQueue; + pub struct TunInterface { wintun: sys::wintun, handle: sys::WINTUN_ADAPTER_HANDLE, diff --git a/tun/src/windows/queue.rs b/tun/src/windows/queue.rs index 7eccd50..609da89 100644 --- a/tun/src/windows/queue.rs +++ b/tun/src/windows/queue.rs @@ -1,19 +1 @@ -use crate::TunInterface; -use std::os::unix::io::{AsRawFd, IntoRawFd, RawFd}; - -pub struct TunQueue { - inner: crate::windows::sys:: - inner: socket2::Socket, -} - -impl AsRawFd for TunQueue { - fn as_raw_fd(&self) -> RawFd { - self.socket.as_raw_fd() - } -} - -impl IntoRawFd for TunQueue { - fn into_raw_fd(self) -> RawFd { - self.socket.into_raw_fd() - } -} +pub struct TunQueue;