Skip to content

Commit

Permalink
simulation: some socket logs
Browse files Browse the repository at this point in the history
  • Loading branch information
jellevandenhooff committed Dec 5, 2024
1 parent 09c8f00 commit 055234c
Showing 1 changed file with 33 additions and 6 deletions.
39 changes: 33 additions & 6 deletions internal/simulation/os_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -1101,8 +1101,6 @@ func (l *LinuxOS) SysBind(fd int, addrPtr unsafe.Pointer, addrlen Socklen, invoc
return err
}

l.logfFor(invocation, "bind %d %s", fd, addr)

switch {
case addr.Addr().Is4():
default:
Expand All @@ -1114,6 +1112,23 @@ func (l *LinuxOS) SysBind(fd int, addrPtr unsafe.Pointer, addrlen Socklen, invoc
return nil
}

func addrAttr(addr unsafe.Pointer, addrlen Socklen) slog.Attr {
parsedAddr, parseErr := readAddr(addr, addrlen)
if parseErr != 0 {
return slog.Any("addr", parseErr)
} else {
return slog.Any("addr", parsedAddr)
}
}

func (customSyscallLogger) LogEntrySysBind(s int, addr unsafe.Pointer, addrlen Socklen, syscall *syscallabi.Syscall) {
logSyscallEntry("SysBind", syscall, "fd", s, addrAttr(addr, addrlen))
}

func (customSyscallLogger) LogExitSysBind(s int, addr unsafe.Pointer, addrlen Socklen, syscall *syscallabi.Syscall, err error) {
logSyscallExit("SysBind", syscall, "err", err)
}

func (l *LinuxOS) SysListen(fd, backlog int, invocation *syscallabi.Syscall) error {
l.mu.Lock()
defer l.mu.Unlock()
Expand Down Expand Up @@ -1326,8 +1341,6 @@ func (l *LinuxOS) SysGetsockname(fd int, rsa syscallabi.ValueView[RawSockaddrAny
return syscall.EINVAL
}

l.logfFor(invocation, "getsockname %d %d", fd, len.Get())

fdInternal, ok := l.files[fd]
if !ok {
return syscall.EBADFD
Expand Down Expand Up @@ -1356,6 +1369,14 @@ func (l *LinuxOS) SysGetsockname(fd int, rsa syscallabi.ValueView[RawSockaddrAny
}
}

func (customSyscallLogger) LogEntrySysGetsockname(fd int, rsa *RawSockaddrAny, addrlen *Socklen, syscall *syscallabi.Syscall) {
logSyscallEntry("SysGetsockname", syscall, "fd", fd)
}

func (customSyscallLogger) LogExitSysGetsockname(fd int, rsa *RawSockaddrAny, addrlen *Socklen, syscall *syscallabi.Syscall, err error) {
logSyscallExit("SysGetsockname", syscall, addrAttr(unsafe.Pointer(rsa), *addrlen), "err", err)
}

func (l *LinuxOS) SysChdir(path string, invocation *syscallabi.Syscall) (err error) {
l.mu.Lock()
defer l.mu.Unlock()
Expand Down Expand Up @@ -1517,8 +1538,6 @@ func (l *LinuxOS) SysConnect(fd int, addrPtr unsafe.Pointer, addrLen Socklen, in
return errno
}

l.logfFor(invocation, "connect %d %s", fd, addr)

switch {
case addr.Addr().Is4():
default:
Expand All @@ -1537,6 +1556,14 @@ func (l *LinuxOS) SysConnect(fd int, addrPtr unsafe.Pointer, addrLen Socklen, in
return syscall.EINPROGRESS
}

func (customSyscallLogger) LogEntrySysConnect(s int, addr unsafe.Pointer, addrlen Socklen, syscall *syscallabi.Syscall) {
logSyscallEntry("SysConnect", syscall, addrAttr(addr, addrlen))
}

func (customSyscallLogger) LogExitSysConnect(s int, addr unsafe.Pointer, addrlen Socklen, syscall *syscallabi.Syscall, err error) {
logSyscallExit("SysConnect", syscall, "err", err)
}

func (l *LinuxOS) SysGetrandom(ptr syscallabi.ByteSliceView, flags int, invocation *syscallabi.Syscall) (int, error) {
// TODO: implement entirely in userspace?

Expand Down

0 comments on commit 055234c

Please sign in to comment.