mirror of
https://github.com/daeuniverse/dae.git
synced 2025-07-06 00:09:37 +07:00
fix: should reset kernel program outbound alive status every reload
This commit is contained in:
@ -29,7 +29,7 @@ type DialerGroup struct {
|
|||||||
selectionPolicy *DialerSelectionPolicy
|
selectionPolicy *DialerSelectionPolicy
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDialerGroup(option *dialer.GlobalOption, name string, dialers []*dialer.Dialer, p DialerSelectionPolicy, aliveChangeCallback func(alive bool, networkType *dialer.NetworkType)) *DialerGroup {
|
func NewDialerGroup(option *dialer.GlobalOption, name string, dialers []*dialer.Dialer, p DialerSelectionPolicy, aliveChangeCallback func(alive bool, networkType *dialer.NetworkType, isInit bool)) *DialerGroup {
|
||||||
log := option.Log
|
log := option.Log
|
||||||
var aliveDnsTcp4DialerSet *dialer.AliveDialerSet
|
var aliveDnsTcp4DialerSet *dialer.AliveDialerSet
|
||||||
var aliveDnsTcp6DialerSet *dialer.AliveDialerSet
|
var aliveDnsTcp6DialerSet *dialer.AliveDialerSet
|
||||||
@ -54,8 +54,9 @@ func NewDialerGroup(option *dialer.GlobalOption, name string, dialers []*dialer.
|
|||||||
log, name, networkType, option.CheckTolerance, p.Policy, dialers,
|
log, name, networkType, option.CheckTolerance, p.Policy, dialers,
|
||||||
func(networkType *dialer.NetworkType) func(alive bool) {
|
func(networkType *dialer.NetworkType) func(alive bool) {
|
||||||
// Use the trick to copy a pointer of *dialer.NetworkType.
|
// Use the trick to copy a pointer of *dialer.NetworkType.
|
||||||
return func(alive bool) { aliveChangeCallback(alive, networkType) }
|
return func(alive bool) { aliveChangeCallback(alive, networkType, false) }
|
||||||
}(networkType), true)
|
}(networkType), true)
|
||||||
|
aliveChangeCallback(true, networkType, true)
|
||||||
|
|
||||||
networkType = &dialer.NetworkType{
|
networkType = &dialer.NetworkType{
|
||||||
L4Proto: consts.L4ProtoStr_TCP,
|
L4Proto: consts.L4ProtoStr_TCP,
|
||||||
@ -66,8 +67,9 @@ func NewDialerGroup(option *dialer.GlobalOption, name string, dialers []*dialer.
|
|||||||
log, name, networkType, option.CheckTolerance, p.Policy, dialers,
|
log, name, networkType, option.CheckTolerance, p.Policy, dialers,
|
||||||
func(networkType *dialer.NetworkType) func(alive bool) {
|
func(networkType *dialer.NetworkType) func(alive bool) {
|
||||||
// Use the trick to copy a pointer of *dialer.NetworkType.
|
// Use the trick to copy a pointer of *dialer.NetworkType.
|
||||||
return func(alive bool) { aliveChangeCallback(alive, networkType) }
|
return func(alive bool) { aliveChangeCallback(alive, networkType, false) }
|
||||||
}(networkType), true)
|
}(networkType), true)
|
||||||
|
aliveChangeCallback(true, networkType, true)
|
||||||
|
|
||||||
networkType = &dialer.NetworkType{
|
networkType = &dialer.NetworkType{
|
||||||
L4Proto: consts.L4ProtoStr_UDP,
|
L4Proto: consts.L4ProtoStr_UDP,
|
||||||
@ -78,8 +80,9 @@ func NewDialerGroup(option *dialer.GlobalOption, name string, dialers []*dialer.
|
|||||||
log, name, networkType, option.CheckTolerance, p.Policy, dialers,
|
log, name, networkType, option.CheckTolerance, p.Policy, dialers,
|
||||||
func(networkType *dialer.NetworkType) func(alive bool) {
|
func(networkType *dialer.NetworkType) func(alive bool) {
|
||||||
// Use the trick to copy a pointer of *dialer.NetworkType.
|
// Use the trick to copy a pointer of *dialer.NetworkType.
|
||||||
return func(alive bool) { aliveChangeCallback(alive, networkType) }
|
return func(alive bool) { aliveChangeCallback(alive, networkType, false) }
|
||||||
}(networkType), true)
|
}(networkType), true)
|
||||||
|
aliveChangeCallback(true, networkType, true)
|
||||||
|
|
||||||
networkType = &dialer.NetworkType{
|
networkType = &dialer.NetworkType{
|
||||||
L4Proto: consts.L4ProtoStr_UDP,
|
L4Proto: consts.L4ProtoStr_UDP,
|
||||||
@ -90,8 +93,9 @@ func NewDialerGroup(option *dialer.GlobalOption, name string, dialers []*dialer.
|
|||||||
log, name, networkType, option.CheckTolerance, p.Policy, dialers,
|
log, name, networkType, option.CheckTolerance, p.Policy, dialers,
|
||||||
func(networkType *dialer.NetworkType) func(alive bool) {
|
func(networkType *dialer.NetworkType) func(alive bool) {
|
||||||
// Use the trick to copy a pointer of *dialer.NetworkType.
|
// Use the trick to copy a pointer of *dialer.NetworkType.
|
||||||
return func(alive bool) { aliveChangeCallback(alive, networkType) }
|
return func(alive bool) { aliveChangeCallback(alive, networkType, false) }
|
||||||
}(networkType), true)
|
}(networkType), true)
|
||||||
|
aliveChangeCallback(true, networkType, true)
|
||||||
|
|
||||||
if option.CheckDnsTcp {
|
if option.CheckDnsTcp {
|
||||||
aliveDnsTcp4DialerSet = dialer.NewAliveDialerSet(log, name, &dialer.NetworkType{
|
aliveDnsTcp4DialerSet = dialer.NewAliveDialerSet(log, name, &dialer.NetworkType{
|
||||||
|
@ -23,13 +23,15 @@ func FormatL4Proto(l4proto uint8) string {
|
|||||||
return strconv.Itoa(int(l4proto))
|
return strconv.Itoa(int(l4proto))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *controlPlaneCore) OutboundAliveChangeCallback(outbound uint8) func(alive bool, networkType *dialer.NetworkType) {
|
func (c *controlPlaneCore) OutboundAliveChangeCallback(outbound uint8) func(alive bool, networkType *dialer.NetworkType, isInit bool) {
|
||||||
return func(alive bool, networkType *dialer.NetworkType) {
|
return func(alive bool, networkType *dialer.NetworkType, isInit bool) {
|
||||||
c.log.WithFields(logrus.Fields{
|
if !isInit {
|
||||||
"alive": alive,
|
c.log.WithFields(logrus.Fields{
|
||||||
"network": networkType.StringWithoutDns(),
|
"alive": alive,
|
||||||
"outbound": c.outboundId2Name[outbound],
|
"network": networkType.StringWithoutDns(),
|
||||||
}).Warnf("Outbound alive state changed, notify the kernel program.")
|
"outbound": c.outboundId2Name[outbound],
|
||||||
|
}).Warnf("Outbound alive state changed, notify the kernel program.")
|
||||||
|
}
|
||||||
|
|
||||||
value := uint32(0)
|
value := uint32(0)
|
||||||
if alive {
|
if alive {
|
||||||
|
Reference in New Issue
Block a user