device: make new peers inherit broken mobile semantics
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
e3134bf665
commit
111e0566dc
|
@ -44,6 +44,7 @@ type Device struct {
|
||||||
netlinkCancel *rwcancel.RWCancel
|
netlinkCancel *rwcancel.RWCancel
|
||||||
port uint16 // listening port
|
port uint16 // listening port
|
||||||
fwmark uint32 // mark value (0 = disabled)
|
fwmark uint32 // mark value (0 = disabled)
|
||||||
|
brokenRoaming bool
|
||||||
}
|
}
|
||||||
|
|
||||||
staticIdentity struct {
|
staticIdentity struct {
|
||||||
|
|
|
@ -5,7 +5,10 @@
|
||||||
|
|
||||||
package device
|
package device
|
||||||
|
|
||||||
|
// DisableSomeRoamingForBrokenMobileSemantics should ideally be called before peers are created,
|
||||||
|
// though it will try to deal with it, and race maybe, if called after.
|
||||||
func (device *Device) DisableSomeRoamingForBrokenMobileSemantics() {
|
func (device *Device) DisableSomeRoamingForBrokenMobileSemantics() {
|
||||||
|
device.net.brokenRoaming = true
|
||||||
device.peers.RLock()
|
device.peers.RLock()
|
||||||
for _, peer := range device.peers.keyMap {
|
for _, peer := range device.peers.keyMap {
|
||||||
peer.Lock()
|
peer.Lock()
|
||||||
|
|
|
@ -261,6 +261,7 @@ func (peer *ipcSetPeer) handlePostConfig() {
|
||||||
if peer.Peer == nil {
|
if peer.Peer == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
peer.disableRoaming = peer.device.net.brokenRoaming && peer.endpoint != nil
|
||||||
if !peer.dummy && peer.device.isUp() {
|
if !peer.dummy && peer.device.isUp() {
|
||||||
peer.Start()
|
peer.Start()
|
||||||
if peer.pkaOn {
|
if peer.pkaOn {
|
||||||
|
|
Loading…
Reference in a new issue