MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / syscall_socketcall

Function syscall_socketcall

source/kernel/syscall.cpp:519–598  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

517}
518
519static U32 syscall_socketcall(CPU* cpu, U32 eipCount) {
520 U32 result = 0;
521 KMemory* memory = cpu->memory;
522
523 switch (ARG1) {
524 case 1: // SYS_SOCKET
525 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_SOCKET: domain=%d(%s) type=%d(%s) protocol=%d(%s)", SARG2, SARG2==K_AF_UNIX?"AF_UNIX":(SARG2==K_AF_INET)?"AF_INET":"", (SARG3 & 0xFF), (SARG3 & 0xFF)==K_SOCK_STREAM?"SOCK_STREAM":((SARG3 & 0xFF)==K_SOCK_DGRAM)?"AF_SOCK_DGRAM":"", SARG4, (SARG4 == 0)?"IPPROTO_IP":(SARG4==6)?"IPPROTO_TCP":(SARG4==17)?"IPPROTO_UDP":"");
526 result = ksocket(SARG2, SARG3 & 0xFF, SARG4);
527 break;
528 case 2: // SYS_BIND
529 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_BIND: socket=%d address=%X(%s) len=%d", SARG2, SARG3, socketAddressName(memory, SARG3, SARG4).c_str(), SARG4);
530 result = kbind(cpu->thread, SARG2, SARG3, SARG4);
531 break;
532 case 3: // SYS_CONNECT
533 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_CONNECT: socket=%d address=%X(%s) len=%d", SARG2, SARG3, socketAddressName(memory, SARG3, SARG4).c_str(), SARG4);
534 result = kconnect(cpu->thread, SARG2, SARG3, SARG4);
535 break;
536 case 4: // SYS_LISTEN
537 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_LISTEN: socket=%d backlog=%d", SARG2, SARG3);
538 result = klisten(cpu->thread, SARG2, SARG3);
539 break;
540 case 5: // SYS_ACCEPT
541 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_ACCEPT: socket=%d address=%X(%s) len=%d", SARG2, SARG3, socketAddressName(memory, SARG3, SARG4).c_str(), SARG4);
542 result = kaccept(cpu->thread, SARG2, SARG3, SARG4, 0);
543 break;
544 case 6: // SYS_GETSOCKNAME
545 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_GETSOCKNAME: socket=%d address=%X len=%d", SARG2, SARG3, SARG4);
546 result = kgetsockname(cpu->thread, SARG2, SARG3, SARG4);
547 break;
548 case 7: // SYS_GETPEERNAME
549 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_GETPEERNAME: socket=%d address=%X len=%d", SARG2, SARG3, SARG4);
550 result = kgetpeername(cpu->thread, SARG2, SARG3, SARG4);
551 break;
552 case 8: // SYS_SOCKETPAIR
553 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_SOCKETPAIR: af=%d(%s) type=%d(%s) socks=%X", SARG2, SARG2==K_AF_UNIX?"AF_UNIX":(SARG2==K_AF_INET)?"AF_INET":"", SARG3, SARG3==K_SOCK_STREAM?"SOCK_STREAM":(SARG3==K_SOCK_DGRAM)?"AF_SOCK_DGRAM":"", SARG5);
554 result = ksocketpair(cpu->thread, SARG2, SARG3, SARG4, SARG5, 0);
555 break;
556 case 9: // SYS_SEND
557 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_SEND: socket=%d buffer=%X len=%d flags=%X", SARG2, SARG3, SARG4, SARG5);
558 result = ksend(cpu->thread, SARG2, SARG3, SARG4, SARG5);
559 break;
560 case 10: // SYS_RECV
561 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_RECV: socket=%d buffer=%X len=%d flags=%X", SARG2, SARG3, SARG4, SARG5);
562 result = krecv(cpu->thread, SARG2, SARG3, SARG4, SARG5);
563 break;
564 case 11: // SYS_SENDTO
565 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_SENDTO: socket=%d buffer=%X len=%d flags=%X dest=%s", SARG2, SARG3, SARG4, SARG5, socketAddressName(memory, SARG6, SARG7).c_str());
566 result = ksendto(cpu->thread, SARG2, SARG3, SARG4, SARG5, SARG6, SARG7);
567 break;
568 case 12: // SYS_RECVFROM
569 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_RECVFROM: socket=%d buffer=%X len=%d flags=%X address=%s", SARG2, SARG3, SARG4, SARG5, socketAddressName(memory, SARG6, SARG7).c_str());
570 result = krecvfrom(cpu->thread, SARG2, SARG3, SARG4, SARG5, SARG6, SARG7);
571 break;
572 case 13: // SYS_SHUTDOWN
573 SYS_LOG1(SYSCALL_SOCKET, cpu, "SYS_SHUTDOWN: socket=%d how=%d", SARG2, SARG3);
574 result = kshutdown(cpu->thread, SARG2, SARG3);
575 break;
576 case 14: // SYS_SETSOCKOPT

Callers

nothing calls this directly

Calls 15

ksocketFunction · 0.85
socketAddressNameFunction · 0.85
kbindFunction · 0.85
kconnectFunction · 0.85
klistenFunction · 0.85
kacceptFunction · 0.85
kgetsocknameFunction · 0.85
kgetpeernameFunction · 0.85
ksocketpairFunction · 0.85
ksendFunction · 0.85
krecvFunction · 0.85
ksendtoFunction · 0.85

Tested by

no test coverage detected