enable getsockopt and setsockopt
This commit is contained in:
@@ -92,17 +92,25 @@ pub unsafe extern "C" fn getsockname(
|
||||
)
|
||||
}
|
||||
|
||||
// #[no_mangle]
|
||||
// pub unsafe extern "C" fn getsockopt(
|
||||
// socket: c_int,
|
||||
// level: c_int,
|
||||
// option_name: c_int,
|
||||
// option_value: *mut c_void,
|
||||
// option_len: *mut socklen_t,
|
||||
// ) -> c_int {
|
||||
// Sys::getsockopt(socket, level, option_name, option_value, option_len)
|
||||
// }
|
||||
//
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn getsockopt(
|
||||
socket: c_int,
|
||||
level: c_int,
|
||||
option_name: c_int,
|
||||
option_value: *mut c_void,
|
||||
option_len: *mut socklen_t,
|
||||
) -> c_int {
|
||||
trace_expr!(
|
||||
Sys::getsockopt(socket, level, option_name, option_value, option_len),
|
||||
"getsockopt({}, {}, {}, {:p}, {:p})",
|
||||
socket,
|
||||
level,
|
||||
option_name,
|
||||
option_value,
|
||||
option_len
|
||||
)
|
||||
}
|
||||
|
||||
// #[no_mangle]
|
||||
// pub unsafe extern "C" fn listen(socket: c_int, backlog: c_int) -> c_int {
|
||||
// Sys::listen(socket, backlog)
|
||||
@@ -177,16 +185,24 @@ pub unsafe extern "C" fn sendto(
|
||||
)
|
||||
}
|
||||
|
||||
// #[no_mangle]
|
||||
// pub unsafe extern "C" fn setsockopt(
|
||||
// socket: c_int,
|
||||
// level: c_int,
|
||||
// option_name: c_int,
|
||||
// option_value: *const c_void,
|
||||
// option_len: socklen_t,
|
||||
// ) -> c_int {
|
||||
// Sys::setsockopt(socket, level, option_name, option_value, option_len)
|
||||
// }
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn setsockopt(
|
||||
socket: c_int,
|
||||
level: c_int,
|
||||
option_name: c_int,
|
||||
option_value: *const c_void,
|
||||
option_len: socklen_t,
|
||||
) -> c_int {
|
||||
trace_expr!(
|
||||
Sys::setsockopt(socket, level, option_name, option_value, option_len),
|
||||
"setsockopt({}, {}, {}, {:p}, {})",
|
||||
socket,
|
||||
level,
|
||||
option_name,
|
||||
option_value,
|
||||
option_len
|
||||
)
|
||||
}
|
||||
|
||||
// #[no_mangle]
|
||||
// pub unsafe extern "C" fn shutdown(socket: c_int, how: c_int) -> c_int {
|
||||
|
||||
@@ -4,48 +4,10 @@ use super::{e, Sys};
|
||||
use header::sys_socket::{sockaddr, socklen_t};
|
||||
|
||||
impl Sys {
|
||||
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
|
||||
}
|
||||
|
||||
fn listen(socket: c_int, backlog: c_int) -> c_int {
|
||||
e(unsafe { syscall!(LISTEN, socket, backlog) }) as c_int
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
fn shutdown(socket: c_int, how: c_int) -> c_int {
|
||||
e(unsafe { syscall!(SHUTDOWN, socket, how) }) as c_int
|
||||
}
|
||||
@@ -84,6 +46,25 @@ impl PalSocket for Sys {
|
||||
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,
|
||||
@@ -116,6 +97,25 @@ impl PalSocket for Sys {
|
||||
)) 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
|
||||
}
|
||||
|
||||
@@ -21,6 +21,14 @@ pub trait PalSocket: Pal {
|
||||
address_len: *mut socklen_t,
|
||||
) -> 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;
|
||||
|
||||
unsafe fn recvfrom(
|
||||
socket: c_int,
|
||||
buf: *mut c_void,
|
||||
@@ -39,5 +47,13 @@ pub trait PalSocket: Pal {
|
||||
dest_len: socklen_t,
|
||||
) -> 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;
|
||||
|
||||
unsafe fn socket(domain: c_int, kind: c_int, protocol: c_int) -> c_int;
|
||||
}
|
||||
|
||||
@@ -134,6 +134,16 @@ impl PalSocket for Sys {
|
||||
e(inner_get_name(true, 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(Err(syscall::Error::new(syscall::ENOSYS))) as c_int
|
||||
}
|
||||
|
||||
unsafe fn recvfrom(
|
||||
socket: c_int,
|
||||
buf: *mut c_void,
|
||||
@@ -186,6 +196,16 @@ impl PalSocket for Sys {
|
||||
}
|
||||
}
|
||||
|
||||
fn setsockopt(
|
||||
socket: c_int,
|
||||
level: c_int,
|
||||
option_name: c_int,
|
||||
option_value: *const c_void,
|
||||
option_len: socklen_t,
|
||||
) -> c_int {
|
||||
e(Err(syscall::Error::new(syscall::ENOSYS))) as c_int
|
||||
}
|
||||
|
||||
unsafe fn socket(domain: c_int, mut kind: c_int, protocol: c_int) -> c_int {
|
||||
if domain != AF_INET {
|
||||
errno = syscall::EAFNOSUPPORT;
|
||||
|
||||
Reference in New Issue
Block a user