Skip to content

Commit 6ea740a

Browse files
committed
ipn/wg: m refactor re-peering ipcset code block
1 parent 0c5aecb commit 6ea740a

1 file changed

Lines changed: 12 additions & 7 deletions

File tree

intra/ipn/wgproxy.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -422,13 +422,7 @@ func (w *wgproxy) Refresh() (err error) {
422422
// Re-apply peer config so wireguard device uses freshly resolved endpoint IPs.
423423
// remote.Refresh() above may have updated IPs; Device.Up() alone does not
424424
// re-call ParseEndpoint, so peers would keep sending handshakes to stale IPs.
425-
if cfg := w.wgtun.uapicfg.Load(); len(cfg) > 0 {
426-
cpcfg := cfg // copies string
427-
_, _ = wgIfConfigOf(w.id, &cpcfg) // removes non-uapi fields
428-
if ipcerr := w.Device.IpcSet(cpcfg); ipcerr != nil {
429-
log.W("proxy: wg: %s: refresh: re-apply ipcset failed; err %v", w.tag(), ipcerr)
430-
}
431-
}
425+
w.redoPeers()
432426
}
433427
}
434428
// not required since wgconn:NewBind() is namespace aware
@@ -438,6 +432,16 @@ func (w *wgproxy) Refresh() (err error) {
438432
return
439433
}
440434

435+
func (w *wgproxy) redoPeers() {
436+
if cfg := w.wgtun.uapicfg.Load(); len(cfg) > 0 {
437+
cpcfg := cfg // copies string
438+
_, _ = wgIfConfigOf(w.id, &cpcfg) // removes non-uapi fields
439+
if ipcerr := w.Device.IpcSet(cpcfg); ipcerr != nil {
440+
log.W("proxy: wg: %s: refresh: re-apply ipcset failed; err %v", w.tag(), ipcerr)
441+
}
442+
}
443+
}
444+
441445
func (h *wgproxy) Dialer() protect.RDialer {
442446
return h
443447
}
@@ -1753,6 +1757,7 @@ func (h *wgtun) listener(op wg.PktDir, err error) {
17531757
log.I("wg: %s listener: %s, state: %s; refreshed %d dns / %d peers; why: %s",
17541758
h.tag(), op, pxstatus(s), m, n, why)
17551759
}
1760+
// TODO: h.redoPeers()
17561761
}
17571762
}
17581763

0 commit comments

Comments
 (0)