1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use crate::net::udp::UDP;
use crate::net::IPv4;
use crate::task::current_process;
use crate::task::current_task;
use alloc::sync::Arc;
pub fn sys_connect(raddr: u32, lport: u16, rport: u16) -> isize {
trace!(
"kernel:pid[{}] sys_connect",
current_task().unwrap().process.upgrade().unwrap().getpid()
);
let process = current_process();
let mut inner = process.inner_exclusive_access();
let fd = inner.alloc_fd();
let udp_node = UDP::new(IPv4::from_u32(raddr), lport, rport);
inner.fd_table[fd] = Some(Arc::new(udp_node));
fd as isize
}