Open /dev/tun with write permission in vmnic
Bug: 340376951
Test: atest MicrodroidTests
Change-Id: Ibfec58aa0a2bb8a62fae3f8d81ab7e412d834248
diff --git a/virtualizationservice/vmnic/src/aidl.rs b/virtualizationservice/vmnic/src/aidl.rs
index 22308ca..03819b8 100644
--- a/virtualizationservice/vmnic/src/aidl.rs
+++ b/virtualizationservice/vmnic/src/aidl.rs
@@ -23,7 +23,7 @@
use nix::sys::ioctl::ioctl_num_type;
use nix::sys::socket::{socket, AddressFamily, SockFlag, SockType};
use std::ffi::{CStr, CString};
-use std::fs::File;
+use std::fs::OpenOptions;
use std::os::fd::{AsRawFd, RawFd};
use std::slice::from_raw_parts;
@@ -99,7 +99,10 @@
.context(format!("Invalid interface name: {ifname:#?}"))
.or_service_specific_exception(-1)?;
- let tunfd = File::open("/dev/tun")
+ let tunfd = OpenOptions::new()
+ .read(true)
+ .write(true)
+ .open("/dev/tun")
.context("Failed to open /dev/tun")
.or_service_specific_exception(-1)?;
let sock = socket(AddressFamily::Inet, SockType::Datagram, SockFlag::empty(), None)