|
@@ -40,7 +40,6 @@ type InterfaceConfig struct {
|
|
|
routines int
|
|
|
MessageMetrics *MessageMetrics
|
|
|
version string
|
|
|
- disconnectInvalid bool
|
|
|
relayManager *relayManager
|
|
|
punchy *Punchy
|
|
|
|
|
@@ -69,7 +68,7 @@ type Interface struct {
|
|
|
dropLocalBroadcast bool
|
|
|
dropMulticast bool
|
|
|
routines int
|
|
|
- disconnectInvalid bool
|
|
|
+ disconnectInvalid atomic.Bool
|
|
|
closed atomic.Bool
|
|
|
relayManager *relayManager
|
|
|
|
|
@@ -176,7 +175,6 @@ func NewInterface(ctx context.Context, c *InterfaceConfig) (*Interface, error) {
|
|
|
version: c.version,
|
|
|
writers: make([]udp.Conn, c.routines),
|
|
|
readers: make([]io.ReadWriteCloser, c.routines),
|
|
|
- disconnectInvalid: c.disconnectInvalid,
|
|
|
myVpnIp: myVpnIp,
|
|
|
relayManager: c.relayManager,
|
|
|
|
|
@@ -294,12 +292,24 @@ func (f *Interface) listenIn(reader io.ReadWriteCloser, i int) {
|
|
|
func (f *Interface) RegisterConfigChangeCallbacks(c *config.C) {
|
|
|
c.RegisterReloadCallback(f.reloadFirewall)
|
|
|
c.RegisterReloadCallback(f.reloadSendRecvError)
|
|
|
+ c.RegisterReloadCallback(f.reloadDisconnectInvalid)
|
|
|
c.RegisterReloadCallback(f.reloadMisc)
|
|
|
+
|
|
|
for _, udpConn := range f.writers {
|
|
|
c.RegisterReloadCallback(udpConn.ReloadConfig)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func (f *Interface) reloadDisconnectInvalid(c *config.C) {
|
|
|
+ initial := c.InitialLoad()
|
|
|
+ if initial || c.HasChanged("pki.disconnect_invalid") {
|
|
|
+ f.disconnectInvalid.Store(c.GetBool("pki.disconnect_invalid", true))
|
|
|
+ if !initial {
|
|
|
+ f.l.Infof("pki.disconnect_invalid changed to %v", f.disconnectInvalid.Load())
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func (f *Interface) reloadFirewall(c *config.C) {
|
|
|
//TODO: need to trigger/detect if the certificate changed too
|
|
|
if c.HasChanged("firewall") == false {
|