| 909 | } |
| 910 | |
| 911 | U32 KNativeSocketObject::bind(KThread* thread, const KFileDescriptorPtr& fd, U32 address, U32 len) { |
| 912 | KMemory* memory = thread->memory; |
| 913 | |
| 914 | U32 family = memory->readw(address); |
| 915 | if (family == K_AF_INET) { |
| 916 | if (fd->kobject->type!=KTYPE_NATIVE_SOCKET) { |
| 917 | return -K_ENOTSOCK; |
| 918 | } |
| 919 | struct sockaddr_in addr = {0}; |
| 920 | readSockAddrIn(&addr, memory, address); |
| 921 | int result = ::bind(this->nativeSocket, (struct sockaddr*)&addr, sizeof(struct sockaddr_in)); |
| 922 | LOG_SOCK("native socket: %x bind result=%x", nativeSocket, result); |
| 923 | if (result == 0) { |
| 924 | this->error = 0; |
| 925 | return 0; |
| 926 | } |
| 927 | std::shared_ptr< KNativeSocketObject> t = std::dynamic_pointer_cast<KNativeSocketObject>(shared_from_this()); |
| 928 | return handleNativeSocketError(t, false); |
| 929 | } |
| 930 | return -K_EAFNOSUPPORT; |
| 931 | } |
| 932 | |
| 933 | U32 KNativeSocketObject::connect(KThread* thread, const KFileDescriptorPtr& fd, U32 address, U32 len) { |
| 934 | char buffer[1024] = {}; |
nothing calls this directly
no test coverage detected