mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-12-24 11:51:13 +08:00
hotfix: heartbeats with gen icmp packet (#683)
This commit is contained in:
@@ -204,15 +204,39 @@ func (d *ClientDevice) heartbeats(ctx context.Context) {
|
|||||||
ticker := time.NewTicker(config.KeepAliveTime)
|
ticker := time.NewTicker(config.KeepAliveTime)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
|
||||||
|
var bytes, bytes6 []byte
|
||||||
for ; ctx.Err() == nil; <-ticker.C {
|
for ; ctx.Err() == nil; <-ticker.C {
|
||||||
if srcIPv4 != nil {
|
if srcIPv4 != nil {
|
||||||
util.Ping(ctx, srcIPv4.String(), config.RouterIP.String())
|
bytes, err = util.GenICMPPacket(srcIPv4, config.RouterIP)
|
||||||
|
if err != nil {
|
||||||
|
plog.G(ctx).Errorf("Failed to generate IPv4 packet: %v", err)
|
||||||
|
} else {
|
||||||
|
data := config.LPool.Get().([]byte)[:]
|
||||||
|
length := copy(data[1:], bytes)
|
||||||
|
data[0] = 1
|
||||||
|
util.SafeWrite(d.tunInbound, &Packet{
|
||||||
|
data: data[:],
|
||||||
|
length: length + 1,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if srcIPv6 != nil {
|
if srcIPv6 != nil {
|
||||||
util.Ping(ctx, srcIPv6.String(), config.RouterIP6.String())
|
bytes6, err = util.GenICMPPacketIPv6(srcIPv6, config.RouterIP6)
|
||||||
|
if err != nil {
|
||||||
|
plog.G(ctx).Errorf("Failed to generate IPv6 packet: %v", err)
|
||||||
|
} else {
|
||||||
|
data := config.LPool.Get().([]byte)[:]
|
||||||
|
length := copy(data[1:], bytes6)
|
||||||
|
data[0] = 1
|
||||||
|
util.SafeWrite(d.tunInbound, &Packet{
|
||||||
|
data: data[:],
|
||||||
|
length: length + 1,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if dockerSrcIPv4 != nil {
|
if dockerSrcIPv4 != nil {
|
||||||
util.Ping(ctx, dockerSrcIPv4.String(), config.DockerRouterIP.String())
|
_, _ = util.Ping(ctx, dockerSrcIPv4.String(), config.DockerRouterIP.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user