in pkg/profiling/task/network/analyze/base/context.go [285:318]
func (c *AnalyzerContext) lookupTheActiveConnectionInBPf(connection *ConnectionContext, bpfLoader *bpf.Loader,
closedConnections []string) (active *ActiveConnectionInBPF, closedRef []string) {
var activeConnection ActiveConnectionInBPF
// if connection not closed, then load the basic stats from bpf map
if !connection.ConnectionClosed {
err := bpfLoader.ActiveConnectionMap.Lookup(connection.ConnectionID, &activeConnection)
if err != nil {
if errors.Is(err, ebpf.ErrKeyNotExist) {
closedConnections = append(closedConnections, c.generateConnectionKey(connection.ConnectionID, connection.RandomID))
connection.ConnectionClosed = true
} else {
log.Warnf("lookup the active connection error, connection id: %d, error: %v", connection.ConnectionID, err)
}
return nil, closedConnections
}
if log.Enable(logrus.DebugLevel) {
marshal, _ := json.Marshal(activeConnection)
log.Debugf("found the active connection, conid: %d, data: %s", connection.ConnectionID, string(marshal))
}
if connection.Role == enums.ConnectionRoleUnknown && activeConnection.Role != enums.ConnectionRoleUnknown {
connection.Role = activeConnection.Role
}
if connection.Protocol == enums.ConnectionProtocolUnknown && activeConnection.Protocol != enums.ConnectionProtocolUnknown {
connection.Protocol = activeConnection.Protocol
}
if !connection.IsSSL && activeConnection.IsSSL == 1 {
connection.IsSSL = true
}
return &activeConnection, closedConnections
}
return nil, closedConnections
}