@@ -8,6 +8,7 @@ use std::env;
8
8
use std:: ffi:: CStr ;
9
9
#[ cfg( target_os = "linux" ) ]
10
10
use std:: ffi:: CString ;
11
+ #[ cfg( feature = "net" ) ]
11
12
use std:: os:: fd:: RawFd ;
12
13
#[ cfg( not( feature = "tee" ) ) ]
13
14
use std:: path:: Path ;
@@ -33,6 +34,7 @@ use vmm::vmm_config::kernel_bundle::KernelBundle;
33
34
#[ cfg( feature = "tee" ) ]
34
35
use vmm:: vmm_config:: kernel_bundle:: { InitrdBundle , QbootBundle } ;
35
36
use vmm:: vmm_config:: machine_config:: VmConfig ;
37
+ #[ cfg( feature = "net" ) ]
36
38
use vmm:: vmm_config:: net:: NetworkInterfaceConfig ;
37
39
use vmm:: vmm_config:: vsock:: VsockDeviceConfig ;
38
40
@@ -51,12 +53,14 @@ struct TsiConfig {
51
53
port_map : Option < HashMap < u16 , u16 > > ,
52
54
}
53
55
56
+ #[ cfg( feature = "net" ) ]
54
57
struct PasstConfig {
55
58
fd : RawFd ,
56
59
}
57
60
58
61
enum NetworkConfig {
59
62
Tsi ( TsiConfig ) ,
63
+ #[ cfg( feature = "net" ) ]
60
64
Passt ( PasstConfig ) ,
61
65
}
62
66
@@ -172,6 +176,7 @@ impl ContextConfig {
172
176
self . data_block_cfg . clone ( )
173
177
}
174
178
179
+ #[ cfg( feature = "net" ) ]
175
180
fn set_net_cfg ( & mut self , net_cfg : NetworkConfig ) {
176
181
self . net_cfg = net_cfg;
177
182
}
@@ -182,6 +187,7 @@ impl ContextConfig {
182
187
tsi_config. port_map . replace ( new_port_map) ;
183
188
Ok ( ( ) )
184
189
}
190
+ #[ cfg( feature = "net" ) ]
185
191
NetworkConfig :: Passt ( _) => Err ( ( ) ) ,
186
192
}
187
193
}
@@ -494,15 +500,24 @@ pub unsafe extern "C" fn krun_set_passt_fd(ctx_id: u32, fd: c_int) -> i32 {
494
500
return -libc:: EINVAL ;
495
501
}
496
502
497
- match CTX_MAP . lock ( ) . unwrap ( ) . entry ( ctx_id) {
498
- Entry :: Occupied ( mut ctx_cfg) => {
499
- let cfg = ctx_cfg. get_mut ( ) ;
500
- cfg. set_net_cfg ( NetworkConfig :: Passt ( PasstConfig { fd } ) ) ;
501
- }
502
- Entry :: Vacant ( _) => return -libc:: ENOENT ,
503
+ #[ cfg( not( feature = "net" ) ) ]
504
+ {
505
+ let _ = ctx_id;
506
+ let _ = fd;
507
+ -libc:: ENOTSUP
503
508
}
504
509
505
- KRUN_SUCCESS
510
+ #[ cfg( feature = "net" ) ]
511
+ {
512
+ match CTX_MAP . lock ( ) . unwrap ( ) . entry ( ctx_id) {
513
+ Entry :: Occupied ( mut ctx_cfg) => {
514
+ let cfg = ctx_cfg. get_mut ( ) ;
515
+ cfg. set_net_cfg ( NetworkConfig :: Passt ( PasstConfig { fd } ) ) ;
516
+ }
517
+ Entry :: Vacant ( _) => return -libc:: ENOENT ,
518
+ }
519
+ KRUN_SUCCESS
520
+ }
506
521
}
507
522
508
523
#[ allow( clippy:: missing_safety_doc) ]
@@ -820,6 +835,7 @@ pub extern "C" fn krun_start_enter(ctx_id: u32) -> i32 {
820
835
} ;
821
836
ctx_cfg. vmr . set_vsock_device ( vsock_device_config) . unwrap ( ) ;
822
837
}
838
+ #[ cfg( feature = "net" ) ]
823
839
NetworkConfig :: Passt ( passt_cfg) => {
824
840
let network_interface_config = NetworkInterfaceConfig {
825
841
iface_id : "eth0" . to_string ( ) ,
0 commit comments