Skip to content

Commit 3ba441d

Browse files
committed
ipn/auto: fetch rpn proxies from RpnProxyProvider
1 parent cbfec10 commit 3ba441d

4 files changed

Lines changed: 29 additions & 25 deletions

File tree

intra/ipn/auto.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,16 @@ func (h *auto) DialerHandle() (mix uintptr) {
8484
mix ^= exit64.DialerHandle()
8585
}
8686
}
87-
if warp, _ := h.pxr.ProxyFor(RpnWg); warp != nil {
87+
if warp, _ := h.pxr.mainRpnProxyOf(RpnWg); warp != nil {
8888
mix ^= warp.DialerHandle()
8989
}
90-
if pro, _ := h.pxr.ProxyFor(RpnPro); pro != nil {
90+
if pro, _ := h.pxr.mainRpnProxyOf(RpnPro); pro != nil {
9191
mix ^= pro.DialerHandle()
9292
}
93-
if amz, _ := h.pxr.ProxyFor(RpnAmz); amz != nil {
93+
if amz, _ := h.pxr.mainRpnProxyOf(RpnAmz); amz != nil {
9494
mix ^= amz.DialerHandle()
9595
}
96-
if sep, _ := h.pxr.ProxyFor(RpnSE); sep != nil {
96+
if sep, _ := h.pxr.mainRpnProxyOf(RpnSE); sep != nil {
9797
mix ^= sep.DialerHandle()
9898
}
9999

@@ -117,10 +117,10 @@ func (h *auto) dial(network, laddr, raddr string) (protect.Conn, error) {
117117

118118
exit, exerr := h.pxr.ProxyFor(Exit)
119119
exit64, ex64err := h.pxr.ProxyFor(Rpn64)
120-
warp, waerr := h.pxr.ProxyFor(RpnWg)
121-
pro, proerr := h.pxr.ProxyFor(RpnPro)
122-
amz, amzerr := h.pxr.ProxyFor(RpnAmz)
123-
sep, seerr := h.pxr.ProxyFor(RpnSE)
120+
warp, waerr := h.pxr.mainRpnProxyOf(RpnWg)
121+
pro, proerr := h.pxr.mainRpnProxyOf(RpnPro)
122+
amz, amzerr := h.pxr.mainRpnProxyOf(RpnAmz)
123+
sep, seerr := h.pxr.mainRpnProxyOf(RpnSE)
124124

125125
if usevia(h.viaID) {
126126
if v, vok := h.via.Get(); !vok {
@@ -316,9 +316,9 @@ func (h *auto) Announce(network, local string) (protect.PacketConn, error) {
316316
}
317317

318318
exit, exerr := h.pxr.ProxyFor(Exit)
319-
warp, waerr := h.pxr.ProxyFor(RpnWg)
320-
pro, proerr := h.pxr.ProxyFor(RpnPro)
321-
amz, amzerr := h.pxr.ProxyFor(RpnAmz)
319+
warp, waerr := h.pxr.mainRpnProxyOf(RpnWg)
320+
pro, proerr := h.pxr.mainRpnProxyOf(RpnPro)
321+
amz, amzerr := h.pxr.mainRpnProxyOf(RpnAmz)
322322

323323
previdx, recent := h.exp.Get(local)
324324

@@ -473,16 +473,16 @@ func (h *auto) Hop(p Proxy, dryrun bool) error {
473473
var warp, sep, amz, pro Proxy
474474
var waerr, seerr, amzerr, proerr error
475475
old := h.swapVia(p)
476-
if warp, waerr = h.pxr.ProxyFor(RpnWg); warp != nil {
476+
if warp, waerr = h.pxr.mainRpnProxyOf(RpnWg); warp != nil {
477477
waerr = warp.Hop(p, dryrun)
478478
}
479-
if pro, proerr = h.pxr.ProxyFor(RpnPro); pro != nil {
479+
if pro, proerr = h.pxr.mainRpnProxyOf(RpnPro); pro != nil {
480480
proerr = pro.Hop(p, dryrun)
481481
}
482-
if amz, amzerr = h.pxr.ProxyFor(RpnAmz); amz != nil {
482+
if amz, amzerr = h.pxr.mainRpnProxyOf(RpnAmz); amz != nil {
483483
amzerr = amz.Hop(p, dryrun)
484484
}
485-
if sep, seerr = h.pxr.ProxyFor(RpnSE); sep != nil {
485+
if sep, seerr = h.pxr.mainRpnProxyOf(RpnSE); sep != nil {
486486
seerr = sep.Hop(p, dryrun)
487487
}
488488

intra/ipn/proxies.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,17 +163,22 @@ type Proxy interface {
163163

164164
type Rpn interface {
165165
x.Rpn
166-
// mainRpnProxyFor returns the main (default) RPN proxy from this multi-transport.
167-
mainRpnProxyOf(provider string) (RpnProxy, error)
168-
// rpnProxyFor returns a country-specific RPN proxy from this multi-transport.
169-
rpnProxyFor(provider, cc string) (Proxy, error)
166+
rpnProxyProvider
170167
// addRpnProxy adds an RPN proxy to this multi-transport.
171168
addRpnProxy(acc RpnAcc, cc string) (Proxy, error)
172169
// removeRpnProxy removes an RPN proxy from this multi-transport.
173170
removeRpnProxy(acc RpnAcc, cc string) bool
174171
}
175172

173+
type rpnProxyProvider interface {
174+
// mainRpnProxyFor returns the main (default) RPN proxy from this multi-transport.
175+
mainRpnProxyOf(provider string) (RpnProxy, error)
176+
// rpnProxyFor returns a country-specific RPN proxy from this multi-transport.
177+
rpnProxyFor(provider, cc string) (Proxy, error)
178+
}
179+
176180
type ProxyProvider interface {
181+
rpnProxyProvider
177182
// ProxyFor returns a transport from this multi-transport.
178183
ProxyFor(id string) (Proxy, error)
179184
// ProxyTo returns the proxy to use for ipp from given pids.

intra/ipn/rpn.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@ import (
1616
"github.com/celzero/firestack/intra/log"
1717
)
1818

19-
type RpnProxy = warp.RpnProxy
19+
type RpnProxy interface {
20+
x.RpnProxy
21+
Proxy
22+
PurgeAll() (n uint32)
23+
}
2024

2125
type RpnAcc = warp.RpnAcc
2226

intra/ipn/warp/api.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,6 @@ var (
3737
errRpnUpdateless = errors.New("rpn cannot be updated only registered")
3838
)
3939

40-
type RpnProxy interface {
41-
x.RpnProxy
42-
PurgeAll() (n uint32)
43-
}
44-
4540
type RpnAcc interface {
4641
x.RpnAcc
4742
ProviderID() string // x.RpnWg, x.RpnPro, x.RpnAmz

0 commit comments

Comments
 (0)