123 lines
3.2 KiB
Rust
123 lines
3.2 KiB
Rust
use super::super::types::*;
|
|
use super::super::PalSocket;
|
|
use super::{e, Sys};
|
|
use header::sys_socket::{sockaddr, socklen_t};
|
|
|
|
impl Sys {
|
|
fn listen(socket: c_int, backlog: c_int) -> c_int {
|
|
e(unsafe { syscall!(LISTEN, socket, backlog) }) as c_int
|
|
}
|
|
|
|
fn shutdown(socket: c_int, how: c_int) -> c_int {
|
|
e(unsafe { syscall!(SHUTDOWN, socket, how) }) as c_int
|
|
}
|
|
|
|
fn socketpair(domain: c_int, kind: c_int, protocol: c_int, socket_vector: *mut c_int) -> c_int {
|
|
e(unsafe { syscall!(SOCKETPAIR, domain, kind, protocol, socket_vector) }) as c_int
|
|
}
|
|
}
|
|
|
|
impl PalSocket for Sys {
|
|
unsafe fn accept(socket: c_int, address: *mut sockaddr, address_len: *mut socklen_t) -> c_int {
|
|
e(syscall!(ACCEPT, socket, address, address_len)) as c_int
|
|
}
|
|
|
|
unsafe fn bind(socket: c_int, address: *const sockaddr, address_len: socklen_t) -> c_int {
|
|
e(syscall!(BIND, socket, address, address_len)) as c_int
|
|
}
|
|
|
|
unsafe fn connect(socket: c_int, address: *const sockaddr, address_len: socklen_t) -> c_int {
|
|
e(syscall!(CONNECT, socket, address, address_len)) as c_int
|
|
}
|
|
|
|
unsafe fn getpeername(
|
|
socket: c_int,
|
|
address: *mut sockaddr,
|
|
address_len: *mut socklen_t,
|
|
) -> c_int {
|
|
e(syscall!(GETPEERNAME, socket, address, address_len)) as c_int
|
|
}
|
|
|
|
unsafe fn getsockname(
|
|
socket: c_int,
|
|
address: *mut sockaddr,
|
|
address_len: *mut socklen_t,
|
|
) -> c_int {
|
|
e(syscall!(GETSOCKNAME, socket, address, address_len)) as c_int
|
|
}
|
|
|
|
fn getsockopt(
|
|
socket: c_int,
|
|
level: c_int,
|
|
option_name: c_int,
|
|
option_value: *mut c_void,
|
|
option_len: *mut socklen_t,
|
|
) -> c_int {
|
|
e(unsafe {
|
|
syscall!(
|
|
GETSOCKOPT,
|
|
socket,
|
|
level,
|
|
option_name,
|
|
option_value,
|
|
option_len
|
|
)
|
|
}) as c_int
|
|
}
|
|
|
|
unsafe fn recvfrom(
|
|
socket: c_int,
|
|
buf: *mut c_void,
|
|
len: size_t,
|
|
flags: c_int,
|
|
address: *mut sockaddr,
|
|
address_len: *mut socklen_t,
|
|
) -> ssize_t {
|
|
e(syscall!(
|
|
RECVFROM,
|
|
socket,
|
|
buf,
|
|
len,
|
|
flags,
|
|
address,
|
|
address_len
|
|
)) as ssize_t
|
|
}
|
|
|
|
unsafe fn sendto(
|
|
socket: c_int,
|
|
buf: *const c_void,
|
|
len: size_t,
|
|
flags: c_int,
|
|
dest_addr: *const sockaddr,
|
|
dest_len: socklen_t,
|
|
) -> ssize_t {
|
|
e(syscall!(
|
|
SENDTO, socket, buf, len, flags, dest_addr, dest_len
|
|
)) as ssize_t
|
|
}
|
|
|
|
fn setsockopt(
|
|
socket: c_int,
|
|
level: c_int,
|
|
option_name: c_int,
|
|
option_value: *const c_void,
|
|
option_len: socklen_t,
|
|
) -> c_int {
|
|
e(unsafe {
|
|
syscall!(
|
|
SETSOCKOPT,
|
|
socket,
|
|
level,
|
|
option_name,
|
|
option_value,
|
|
option_len
|
|
)
|
|
}) as c_int
|
|
}
|
|
|
|
unsafe fn socket(domain: c_int, kind: c_int, protocol: c_int) -> c_int {
|
|
e(syscall!(SOCKET, domain, kind, protocol)) as c_int
|
|
}
|
|
}
|