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

Function __host_socket_option

qiling/os/posix/syscall/socket.py:134–161  ·  view source on GitHub ↗

Convert emulated socket option value to a host socket option.

(vsock_level: int, vsock_opt: int, arch_type: QL_ARCH, os_type: QL_OS)

Source from the content-addressed store, hash-verified

132
133
134def __host_socket_option(vsock_level: int, vsock_opt: int, arch_type: QL_ARCH, os_type: QL_OS) -> int:
135 """Convert emulated socket option value to a host socket option.
136 """
137
138 try:
139 if vsock_level == 0x0000: # IPPROTO_IP
140 vsock_opt_name = socket_ip_option_mapping(vsock_opt, arch_type, os_type)
141
142 elif vsock_level == 0x0006: # IPPROTO_TCP
143 vsock_opt_name = socket_tcp_option_mapping(vsock_opt, arch_type)
144
145 else:
146 vsock_opt_name = socket_option_mapping(vsock_opt, arch_type)
147
148 # Fix for mips
149 if arch_type == QL_ARCH.MIPS:
150 if vsock_opt_name.endswith(('_NEW', '_OLD')):
151 vsock_opt_name = vsock_opt_name[:-4]
152
153 except ValueError:
154 raise NotImplementedError(f'Could not convert emulated socket option {vsock_opt} to a socket option name')
155
156 try:
157 hsock_opt = getattr(socket, vsock_opt_name)
158 except AttributeError:
159 raise NotImplementedError(f'Could not convert emulated socket option name {vsock_opt_name} to a host socket option')
160
161 return hsock_opt
162
163
164def get_opened_socket(os: QlOsPosix, fd: int) -> Union[ql_socket, int]:

Callers 2

ql_syscall_getsockoptFunction · 0.85
ql_syscall_setsockoptFunction · 0.85

Calls 3

socket_ip_option_mappingFunction · 0.90
socket_option_mappingFunction · 0.90

Tested by

no test coverage detected