@@ -5,33 +5,19 @@ use nitro_enclaves::{
5
5
launch:: { ImageType , Launcher , MemoryInfo , PollTimeout , StartFlags } ,
6
6
Device ,
7
7
} ;
8
- use nix:: {
9
- poll:: { poll, PollFd , PollFlags } ,
10
- sys:: {
11
- socket:: { connect, socket, AddressFamily , SockFlag , SockType , VsockAddr as NixVsockAddr } ,
12
- time:: { TimeVal , TimeValLike } ,
13
- } ,
14
- unistd:: read,
15
- } ;
8
+ use nix:: poll:: { poll, PollFd , PollFlags } ;
16
9
use std:: {
17
10
fs:: File ,
18
11
io:: { Read , Write } ,
19
- os:: {
20
- fd:: { AsRawFd , RawFd } ,
21
- unix:: net:: UnixStream ,
22
- } ,
12
+ os:: fd:: AsRawFd ,
23
13
} ;
24
14
use vsock:: { VsockAddr , VsockListener } ;
25
15
26
16
type Result < T > = std:: result:: Result < T , NitroError > ;
27
17
28
18
const ENCLAVE_READY_VSOCK_PORT : u32 = 9000 ;
29
- const CID_TO_CONSOLE_PORT_OFFSET : u32 = 10000 ;
30
19
31
20
const VMADDR_CID_PARENT : u32 = 3 ;
32
- const VMADDR_CID_HYPERVISOR : u32 = 0 ;
33
-
34
- const SO_VM_SOCKETS_CONNECT_TIMEOUT : i32 = 6 ;
35
21
36
22
const HEART_BEAT : u8 = 0xb7 ;
37
23
@@ -43,8 +29,6 @@ pub struct NitroEnclave {
43
29
pub mem_size_mib : usize ,
44
30
/// Number of vCPUs.
45
31
pub vcpus : u8 ,
46
- /// Path of vsock for initial enclave communication.
47
- pub ipc_stream : UnixStream ,
48
32
/// Enclave start flags.
49
33
pub start_flags : StartFlags ,
50
34
}
@@ -78,45 +62,8 @@ impl NitroEnclave {
78
62
79
63
enclave_check ( listener, poll_timeout. into ( ) , cid) ?;
80
64
81
- self . listen ( VMADDR_CID_HYPERVISOR , cid + CID_TO_CONSOLE_PORT_OFFSET ) ?;
82
-
83
65
Ok ( cid)
84
66
}
85
-
86
- fn listen ( & mut self , cid : u32 , port : u32 ) -> Result < ( ) > {
87
- let socket_fd = socket (
88
- AddressFamily :: Vsock ,
89
- SockType :: Stream ,
90
- SockFlag :: empty ( ) ,
91
- None ,
92
- )
93
- . map_err ( |_| NitroError :: VsockCreate ) ?;
94
-
95
- let sockaddr = NixVsockAddr :: new ( cid, port) ;
96
-
97
- vsock_timeout ( socket_fd) ?;
98
-
99
- connect ( socket_fd, & sockaddr) . map_err ( |_| NitroError :: VsockConnect ) ?;
100
-
101
- let mut buf = [ 0u8 ; 512 ] ;
102
- loop {
103
- // Read debug output from vsock.
104
- if let Ok ( sz) = read ( socket_fd, & mut buf) {
105
- // If there is enclave debug output read, write it to the IPC socket.
106
- if sz > 0 {
107
- self . ipc_stream
108
- . write_all ( & buf[ ..sz] )
109
- . map_err ( NitroError :: IpcWrite ) ?;
110
-
111
- continue ;
112
- }
113
- }
114
-
115
- break ;
116
- }
117
-
118
- Ok ( ( ) )
119
- }
120
67
}
121
68
122
69
fn enclave_check ( listener : VsockListener , poll_timeout_ms : libc:: c_int , cid : u32 ) -> Result < ( ) > {
@@ -148,24 +95,3 @@ fn enclave_check(listener: VsockListener, poll_timeout_ms: libc::c_int, cid: u32
148
95
149
96
Ok ( ( ) )
150
97
}
151
-
152
- fn vsock_timeout ( socket_fd : RawFd ) -> Result < ( ) > {
153
- // Set the timeout to 20 seconds.
154
- let timeval = TimeVal :: milliseconds ( 20000 ) ;
155
-
156
- let ret = unsafe {
157
- libc:: setsockopt (
158
- socket_fd,
159
- libc:: AF_VSOCK ,
160
- SO_VM_SOCKETS_CONNECT_TIMEOUT ,
161
- & timeval as * const _ as * const libc:: c_void ,
162
- size_of :: < TimeVal > ( ) as u32 ,
163
- )
164
- } ;
165
-
166
- if ret != 0 {
167
- return Err ( NitroError :: VsockSetTimeout ) ;
168
- }
169
-
170
- Ok ( ( ) )
171
- }
0 commit comments