mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-10-22 07:51:30 +00:00
* add passive-tapper main tester (#353) * add passive-tapper main tester * add errors to go.sum of mizu agent * disable host mode for tester - to avoid filterAuthorities * rename main to tester * build extenssions as part of the tester launch * add a README to the tester * solving go.mod and .sum conflicts with addition of go-errors * trivial warning fixes (#354) * add passive-tapper main tester * trivial warning fixes * add errors to go.sum of mizu agent * disable host mode for tester - to avoid filterAuthorities * tcp streams map (#355) * add passive-tapper main tester * trivial warning fixes * add errors to go.sum of mizu agent * tcp streams map * disable host mode for tester - to avoid filterAuthorities * set tcp streams map for tcp stream factory * change rlog to mizu logger * errors map (#356) * add passive-tapper main tester * trivial warning fixes * add errors to go.sum of mizu agent * tcp streams map * disable host mode for tester - to avoid filterAuthorities * set tcp streams map for tcp stream factory * errors map * change int to uint - errorsmap * change from int to uint * Change errorsMap.nErrors to uint. * change errors map to mizu logger instead of rlog * init mizu logger in tester + fix errormap declaration Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com> * move own ips to tcp stream factory (#358) * add passive-tapper main tester * trivial warning fixes * add errors to go.sum of mizu agent * tcp streams map * disable host mode for tester - to avoid filterAuthorities * set tcp streams map for tcp stream factory * errors map * move own ips to tcp stream factory * Feature/tapper refactor i/move own ips to tcp stream factory (#379) * add passive-tapper main tester * trivial warning fixes * add errors to go.sum of mizu agent * tcp streams map * disable host mode for tester - to avoid filterAuthorities * set tcp streams map for tcp stream factory * errors map * move own ips to tcp stream factory * fix ownips compilation issue Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com>
72 lines
1.8 KiB
Go
72 lines
1.8 KiB
Go
package tap
|
|
|
|
import (
|
|
"runtime"
|
|
_debug "runtime/debug"
|
|
"sync"
|
|
"time"
|
|
|
|
"github.com/up9inc/mizu/shared/logger"
|
|
)
|
|
|
|
type tcpStreamMap struct {
|
|
streams *sync.Map
|
|
streamId int64
|
|
}
|
|
|
|
func NewTcpStreamMap() *tcpStreamMap {
|
|
return &tcpStreamMap{
|
|
streams: &sync.Map{},
|
|
}
|
|
}
|
|
|
|
func (streamMap *tcpStreamMap) Store(key, value interface{}) {
|
|
streamMap.streams.Store(key, value)
|
|
}
|
|
|
|
func (streamMap *tcpStreamMap) Delete(key interface{}) {
|
|
streamMap.streams.Delete(key)
|
|
}
|
|
|
|
func (streamMap *tcpStreamMap) nextId() int64 {
|
|
streamMap.streamId++
|
|
return streamMap.streamId
|
|
}
|
|
|
|
func (streamMap *tcpStreamMap) closeTimedoutTcpStreamChannels() {
|
|
tcpStreamChannelTimeout := GetTcpChannelTimeoutMs()
|
|
for {
|
|
time.Sleep(10 * time.Millisecond)
|
|
_debug.FreeOSMemory()
|
|
streamMap.streams.Range(func(key interface{}, value interface{}) bool {
|
|
streamWrapper := value.(*tcpStreamWrapper)
|
|
stream := streamWrapper.stream
|
|
if stream.superIdentifier.Protocol == nil {
|
|
if !stream.isClosed && time.Now().After(streamWrapper.createdAt.Add(tcpStreamChannelTimeout)) {
|
|
stream.Close()
|
|
appStats.IncDroppedTcpStreams()
|
|
logger.Log.Debugf("Dropped an unidentified TCP stream because of timeout. Total dropped: %d Total Goroutines: %d Timeout (ms): %d\n",
|
|
appStats.DroppedTcpStreams, runtime.NumGoroutine(), tcpStreamChannelTimeout/1000000)
|
|
}
|
|
} else {
|
|
if !stream.superIdentifier.IsClosedOthers {
|
|
for i := range stream.clients {
|
|
reader := &stream.clients[i]
|
|
if reader.extension.Protocol != stream.superIdentifier.Protocol {
|
|
reader.Close()
|
|
}
|
|
}
|
|
for i := range stream.servers {
|
|
reader := &stream.servers[i]
|
|
if reader.extension.Protocol != stream.superIdentifier.Protocol {
|
|
reader.Close()
|
|
}
|
|
}
|
|
stream.superIdentifier.IsClosedOthers = true
|
|
}
|
|
}
|
|
return true
|
|
})
|
|
}
|
|
}
|