Update tap targets without reinitializing packet source manager (#925)

This commit is contained in:
Nimrod Gilboa Markevich 2022-03-24 15:39:20 +02:00 committed by GitHub
parent 763b0e7362
commit 99667984d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 9 deletions

View File

@ -110,10 +110,8 @@ func UpdateTapTargets(newTapTargets []v1.Pod) {
success := true success := true
tapTargets = newTapTargets tapTargets = newTapTargets
if err := initializePacketSources(); err != nil {
logger.Log.Fatal(err) packetSourceManager.UpdatePods(tapTargets)
success = false
}
if tlsTapperInstance != nil { if tlsTapperInstance != nil {
if err := tlstapper.UpdateTapTargets(tlsTapperInstance, &tapTargets, *procfs); err != nil { if err := tlstapper.UpdateTapTargets(tlsTapperInstance, &tapTargets, *procfs); err != nil {

View File

@ -11,8 +11,16 @@ import (
const bpfFilterMaxPods = 150 const bpfFilterMaxPods = 150
const hostSourcePid = "0" const hostSourcePid = "0"
type PacketSourceManagerConfig struct {
mtls bool
procfs string
interfaceName string
behaviour TcpPacketSourceBehaviour
}
type PacketSourceManager struct { type PacketSourceManager struct {
sources map[string]*tcpPacketSource sources map[string]*tcpPacketSource
config PacketSourceManagerConfig
} }
func NewPacketSourceManager(procfs string, filename string, interfaceName string, func NewPacketSourceManager(procfs string, filename string, interfaceName string,
@ -28,7 +36,14 @@ func NewPacketSourceManager(procfs string, filename string, interfaceName string
}, },
} }
sourceManager.UpdatePods(mtls, procfs, pods, interfaceName, behaviour) sourceManager.config = PacketSourceManagerConfig{
mtls: mtls,
procfs: procfs,
interfaceName: interfaceName,
behaviour: behaviour,
}
sourceManager.UpdatePods(pods)
return sourceManager, nil return sourceManager, nil
} }
@ -49,10 +64,9 @@ func newHostPacketSource(filename string, interfaceName string,
return source, nil return source, nil
} }
func (m *PacketSourceManager) UpdatePods(mtls bool, procfs string, pods []v1.Pod, func (m *PacketSourceManager) UpdatePods(pods []v1.Pod) {
interfaceName string, behaviour TcpPacketSourceBehaviour) { if m.config.mtls {
if mtls { m.updateMtlsPods(m.config.procfs, pods, m.config.interfaceName, m.config.behaviour)
m.updateMtlsPods(procfs, pods, interfaceName, behaviour)
} }
m.setBPFFilter(pods) m.setBPFFilter(pods)