package tlstapper import ( "github.com/cilium/ebpf/link" "github.com/go-errors/errors" ) type syscallHooks struct { sysEnterRead link.Link sysEnterWrite link.Link sysEnterAccept4 link.Link sysExitAccept4 link.Link sysEnterConnect link.Link sysExitConnect link.Link } func (s *syscallHooks) installSyscallHooks(bpfObjects *tlsTapperObjects) error { var err error s.sysEnterRead, err = link.Tracepoint("syscalls", "sys_enter_read", bpfObjects.SysEnterRead, nil) if err != nil { return errors.Wrap(err, 0) } s.sysEnterWrite, err = link.Tracepoint("syscalls", "sys_enter_write", bpfObjects.SysEnterWrite, nil) if err != nil { return errors.Wrap(err, 0) } s.sysEnterAccept4, err = link.Tracepoint("syscalls", "sys_enter_accept4", bpfObjects.SysEnterAccept4, nil) if err != nil { return errors.Wrap(err, 0) } s.sysExitAccept4, err = link.Tracepoint("syscalls", "sys_exit_accept4", bpfObjects.SysExitAccept4, nil) if err != nil { return errors.Wrap(err, 0) } s.sysEnterConnect, err = link.Tracepoint("syscalls", "sys_enter_connect", bpfObjects.SysEnterConnect, nil) if err != nil { return errors.Wrap(err, 0) } s.sysExitConnect, err = link.Tracepoint("syscalls", "sys_exit_connect", bpfObjects.SysExitConnect, nil) if err != nil { return errors.Wrap(err, 0) } return nil } func (s *syscallHooks) close() []error { returnValue := make([]error, 0) if err := s.sysEnterRead.Close(); err != nil { returnValue = append(returnValue, err) } if err := s.sysEnterWrite.Close(); err != nil { returnValue = append(returnValue, err) } if err := s.sysEnterAccept4.Close(); err != nil { returnValue = append(returnValue, err) } if err := s.sysExitAccept4.Close(); err != nil { returnValue = append(returnValue, err) } if err := s.sysEnterConnect.Close(); err != nil { returnValue = append(returnValue, err) } if err := s.sysExitConnect.Close(); err != nil { returnValue = append(returnValue, err) } return returnValue }