MCPcopy Create free account
hub / github.com/qilingframework/qiling / ql_syscall_setsockopt

Function ql_syscall_setsockopt

qiling/os/posix/syscall/socket.py:343–370  ·  view source on GitHub ↗
(ql: Qiling, sockfd: int, level: int, optname: int, optval_addr: int, optlen: int)

Source from the content-addressed store, hash-verified

341
342
343def ql_syscall_setsockopt(ql: Qiling, sockfd: int, level: int, optname: int, optval_addr: int, optlen: int):
344 sock = get_opened_socket(ql.os, sockfd)
345
346 if isinstance(sock, int):
347 return sock
348
349 if optval_addr == 0:
350 sock.setsockopt(level, optname, None, optlen)
351
352 else:
353 vsock_level = level
354 hsock_level = __host_socket_level(vsock_level, ql.arch.type)
355
356 ql.log.debug(f'Converted emulated socket level {vsock_level} to host socket level {hsock_level}')
357
358 vsock_opt = optname
359 hsock_opt = __host_socket_option(vsock_level, vsock_opt, ql.arch.type, ql.os.type)
360
361 ql.log.debug(f'Converted emulated socket option {vsock_opt} to host socket option {hsock_opt}')
362
363 optval = ql.mem.read(optval_addr, optlen)
364
365 try:
366 sock.setsockopt(hsock_level, hsock_opt, optval)
367 except (ConnectionError, OSError) as ex:
368 return -ex.errno
369
370 return 0
371
372
373def ql_syscall_shutdown(ql: Qiling, sockfd: int, how: int):

Callers

nothing calls this directly

Calls 5

get_opened_socketFunction · 0.85
__host_socket_levelFunction · 0.85
__host_socket_optionFunction · 0.85
setsockoptMethod · 0.80
readMethod · 0.45

Tested by

no test coverage detected