1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2022 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Worker #![cfg(any(target_os = "android", target_os = "linux"))] 6*bb4ee6a4SAndroid Build Coastguard Worker 7*bb4ee6a4SAndroid Build Coastguard Worker use std::net; 8*bb4ee6a4SAndroid Build Coastguard Worker 9*bb4ee6a4SAndroid Build Coastguard Worker use base::test_utils::call_test_with_sudo; 10*bb4ee6a4SAndroid Build Coastguard Worker use net_util::sys::linux::Tap; 11*bb4ee6a4SAndroid Build Coastguard Worker use net_util::sys::linux::TapTLinux; 12*bb4ee6a4SAndroid Build Coastguard Worker use net_util::MacAddress; 13*bb4ee6a4SAndroid Build Coastguard Worker use net_util::TapTCommon; 14*bb4ee6a4SAndroid Build Coastguard Worker 15*bb4ee6a4SAndroid Build Coastguard Worker #[test] tap_create()16*bb4ee6a4SAndroid Build Coastguard Workerfn tap_create() { 17*bb4ee6a4SAndroid Build Coastguard Worker call_test_with_sudo("tap_create_impl") 18*bb4ee6a4SAndroid Build Coastguard Worker } 19*bb4ee6a4SAndroid Build Coastguard Worker 20*bb4ee6a4SAndroid Build Coastguard Worker #[test] 21*bb4ee6a4SAndroid Build Coastguard Worker #[ignore = "Only to be called by tap_create"] tap_create_impl()22*bb4ee6a4SAndroid Build Coastguard Workerfn tap_create_impl() { 23*bb4ee6a4SAndroid Build Coastguard Worker Tap::new(true, false).unwrap(); 24*bb4ee6a4SAndroid Build Coastguard Worker } 25*bb4ee6a4SAndroid Build Coastguard Worker 26*bb4ee6a4SAndroid Build Coastguard Worker #[test] tap_configure()27*bb4ee6a4SAndroid Build Coastguard Workerfn tap_configure() { 28*bb4ee6a4SAndroid Build Coastguard Worker call_test_with_sudo("tap_configure_impl") 29*bb4ee6a4SAndroid Build Coastguard Worker } 30*bb4ee6a4SAndroid Build Coastguard Worker 31*bb4ee6a4SAndroid Build Coastguard Worker #[test] 32*bb4ee6a4SAndroid Build Coastguard Worker #[ignore = "Only to be called by tap_configure"] tap_configure_impl()33*bb4ee6a4SAndroid Build Coastguard Workerfn tap_configure_impl() { 34*bb4ee6a4SAndroid Build Coastguard Worker let tap = Tap::new(true, false).unwrap(); 35*bb4ee6a4SAndroid Build Coastguard Worker let ip_addr: net::Ipv4Addr = "100.115.92.5".parse().unwrap(); 36*bb4ee6a4SAndroid Build Coastguard Worker let netmask: net::Ipv4Addr = "255.255.255.252".parse().unwrap(); 37*bb4ee6a4SAndroid Build Coastguard Worker let mac_addr: MacAddress = "a2:06:b9:3d:68:4d".parse().unwrap(); 38*bb4ee6a4SAndroid Build Coastguard Worker 39*bb4ee6a4SAndroid Build Coastguard Worker tap.set_ip_addr(ip_addr).unwrap(); 40*bb4ee6a4SAndroid Build Coastguard Worker tap.set_netmask(netmask).unwrap(); 41*bb4ee6a4SAndroid Build Coastguard Worker tap.set_mac_address(mac_addr).unwrap(); 42*bb4ee6a4SAndroid Build Coastguard Worker tap.set_vnet_hdr_size(16).unwrap(); 43*bb4ee6a4SAndroid Build Coastguard Worker tap.set_offload(0).unwrap(); 44*bb4ee6a4SAndroid Build Coastguard Worker } 45*bb4ee6a4SAndroid Build Coastguard Worker 46*bb4ee6a4SAndroid Build Coastguard Worker #[test] tap_enable()47*bb4ee6a4SAndroid Build Coastguard Workerfn tap_enable() { 48*bb4ee6a4SAndroid Build Coastguard Worker call_test_with_sudo("tap_enable_impl") 49*bb4ee6a4SAndroid Build Coastguard Worker } 50*bb4ee6a4SAndroid Build Coastguard Worker 51*bb4ee6a4SAndroid Build Coastguard Worker #[test] 52*bb4ee6a4SAndroid Build Coastguard Worker #[ignore = "Only to be called by tap_enable"] tap_enable_impl()53*bb4ee6a4SAndroid Build Coastguard Workerfn tap_enable_impl() { 54*bb4ee6a4SAndroid Build Coastguard Worker let tap = Tap::new(true, false).unwrap(); 55*bb4ee6a4SAndroid Build Coastguard Worker 56*bb4ee6a4SAndroid Build Coastguard Worker tap.enable().unwrap(); 57*bb4ee6a4SAndroid Build Coastguard Worker } 58