Skip to content

Socket mapping do not support "IPPROTO_TCP" level #1286

Description

@squarepants0

I met "Can't convert emu_optname 4 to host platform based optname" when I try to emulate the router Tenda-AC15(with qiling-framework from github)
Then I find out it seems the ql_syscall_setsockopt, which gonna hijack setsockopt in the emulated program, do not support IPPROTO_TCP level:

try:
                emu_level_name = socket_level_mapping(emu_level, ql.arch.type, ql.os.type)

                # emu_opt_name is based on level
                if emu_level_name == "IPPROTO_IP":
                    emu_opt_name = socket_ip_option_mapping(emu_opt, ql.arch.type, ql.os.type)
                else:
                    emu_opt_name = socket_option_mapping(emu_opt, ql.arch.type, ql.os.type)

                # Fix for mips
                if ql.arch.type == QL_ARCH.MIPS:
                    if emu_opt_name.endswith("_NEW") or emu_opt_name.endswith("_OLD"):
                        emu_opt_name = emu_opt_name[:-4]
except KeyError:
                ql.log.error(f"Can't convert emu_optname {emu_opt} to host platform based optname")
                raise

Is there a plan to implement this up?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions