in pkg/skoop/collector/podcollector/collector.go [604:659]
func sockCollector(sandboxInfo *netstack.NetNSInfo) error {
netstat.ProcRoot = fmt.Sprintf("/proc/%d/", sandboxInfo.PID)
tcpConns, err := netstat.TCP.Connections()
if err != nil {
return fmt.Errorf("error get tcp connections: %v", err)
}
tcp6Conns, err := netstat.TCP6.Connections()
if err != nil {
return fmt.Errorf("error get tcp6 connections: %v", err)
}
tcpConns = append(tcpConns, tcp6Conns...)
udpConns, err := netstat.UDP.Connections()
if err != nil {
return fmt.Errorf("error get udp connections: %v", err)
}
udp6Conns, err := netstat.UDP6.Connections()
if err != nil {
return fmt.Errorf("error get udp6 connections: %v", err)
}
udpConns = append(udpConns, udp6Conns...)
for _, tc := range tcpConns {
conn := netstack.ConnStat{
LocalIP: tc.IP.String(),
LocalPort: uint16(tc.Port),
RemoteIP: tc.RemoteIP.String(),
RemotePort: uint16(tc.RemotePort),
Protocol: model.TCP,
}
conn.State = netstack.SockStatUnknown
if tc.State == netstat.TCPEstablished {
conn.State = netstack.SockStatEstablish
}
if tc.State == netstat.TCPListen {
conn.State = netstack.SockStatListen
}
sandboxInfo.ConnStats = append(sandboxInfo.ConnStats, conn)
}
for _, tc := range udpConns {
conn := netstack.ConnStat{
LocalIP: tc.IP.String(),
LocalPort: uint16(tc.Port),
RemoteIP: tc.RemoteIP.String(),
RemotePort: uint16(tc.RemotePort),
Protocol: model.UDP,
}
conn.State = netstack.SockStatUnknown
if tc.State == netstat.TCPEstablished {
conn.State = netstack.SockStatEstablish
}
if slices.Contains([]string{"0.0.0.0", "::"}, tc.RemoteIP.String()) {
conn.State = netstack.SockStatListen
}
sandboxInfo.ConnStats = append(sandboxInfo.ConnStats, conn)
}
return nil
}