MCPcopy
hub / github.com/evilsocket/opensnitch / readDescriptors

Method readDescriptors

daemon/procmon/details.go:347–385  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

345}
346
347func (p *Process) readDescriptors() {
348 f, err := os.Open(p.pathFd)
349 if err != nil {
350 return
351 }
352 fDesc, err := f.Readdir(-1)
353 f.Close()
354 p.Descriptors = nil
355
356 for _, fd := range fDesc {
357 tempFd := &procDescriptors{
358 Name: fd.Name(),
359 }
360 link, err := os.Readlink(core.ConcatStrings(p.pathFd, fd.Name()))
361 if err != nil {
362 continue
363 }
364 tempFd.SymLink = link
365 socket := socketsRegex.FindStringSubmatch(link)
366 if len(socket) > 0 {
367 socketInfo, err := netlink.GetSocketInfoByInode(socket[1])
368 if err == nil {
369 tempFd.SymLink = fmt.Sprintf("socket:[%s] - %d:%s -> %s:%d, state: %s", fd.Name(),
370 socketInfo.ID.SourcePort,
371 socketInfo.ID.Source.String(),
372 dns.HostOr(socketInfo.ID.Destination, socketInfo.ID.Destination.String()),
373 socketInfo.ID.DestinationPort,
374 netlink.TCPStatesMap[socketInfo.State])
375 }
376 }
377
378 if linkInfo, err := os.Lstat(link); err == nil {
379 tempFd.Size = linkInfo.Size()
380 tempFd.ModTime = linkInfo.ModTime()
381 }
382
383 p.Descriptors = append(p.Descriptors, tempFd)
384 }
385}
386
387func (p *Process) readIOStats() (err error) {
388 f, err := os.Open(p.pathIO)

Callers 2

GetExtraInfoMethod · 0.95
TestProcDescriptorsFunction · 0.80

Calls 4

CloseMethod · 0.65
NameMethod · 0.65
OpenMethod · 0.45
StringMethod · 0.45

Tested by 1

TestProcDescriptorsFunction · 0.64