summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--tun/netstack/tun.go14
1 files changed, 10 insertions, 4 deletions
diff --git a/tun/netstack/tun.go b/tun/netstack/tun.go
index 8e3ce4b..233cf27 100644
--- a/tun/netstack/tun.go
+++ b/tun/netstack/tun.go
@@ -48,13 +48,19 @@ type Net struct {
}
func (e *endpoint) Attach(dispatcher stack.NetworkDispatcher) {
- if dispatcher == nil {
- (*netTun)(e).events <- tun.EventUp
- } else {
- (*netTun)(e).events <- tun.EventDown
+ var event tun.Event
+
+ if e.dispatcher == nil && dispatcher != nil {
+ event = tun.EventUp
+ } else if e.dispatcher != nil && dispatcher == nil {
+ event = tun.EventDown
}
e.dispatcher = dispatcher
+
+ if event > 0 {
+ (*netTun)(e).events <- event
+ }
}
func (e *endpoint) IsAttached() bool {