diff --git a/pkg/vpn/main.go b/pkg/vpn/main.go
index de8e61f2f6ea178acf69b3dccf07a7a2e5dcc281..9ddd9fd1eb5a8025243d3e999ec354259e9b1ffe 100644
--- a/pkg/vpn/main.go
+++ b/pkg/vpn/main.go
@@ -29,6 +29,7 @@ import (
 // Bitmask holds the bitmask client data
 type Bitmask struct {
 	tempdir          string
+	onGateway        string
 	statusCh         chan string
 	managementClient *openvpn.MgmtClient
 	bonafide         *bonafide.Bonafide
@@ -49,7 +50,7 @@ func Init() (*Bitmask, error) {
 	if err != nil {
 		return nil, err
 	}
-	b := Bitmask{tempdir, statusCh, nil, bonafide, launch, "", nil}
+	b := Bitmask{tempdir, "", statusCh, nil, bonafide, launch, "", nil}
 
 	/*
 		TODO -- we still want to do this, since it resets the fw/vpn if running
diff --git a/pkg/vpn/status.go b/pkg/vpn/status.go
index a4d7ada3cc8ff1eedae8ec25f1b730946195e90f..cc2fb62d960a22141e41538ffd902653bde1428c 100644
--- a/pkg/vpn/status.go
+++ b/pkg/vpn/status.go
@@ -18,6 +18,7 @@ package vpn
 import (
 	"fmt"
 	"log"
+	"strings"
 
 	"github.com/apparentlymart/go-openvpn-mgmt/openvpn"
 )
@@ -66,10 +67,14 @@ func (b *Bitmask) eventHandler(eventCh <-chan openvpn.Event) {
 		if !ok {
 			continue
 		}
-		status, ok := statusNames[stateEvent.NewState()]
+		statusName := stateEvent.NewState()
+		status, ok := statusNames[statusName]
 		if ok {
 			b.statusCh <- status
 		}
+		if statusName == "CONNECTED" {
+			b.onGateway = strings.Split(stateEvent.String(), ": ")[1]
+		}
 	}
 	b.statusCh <- Off
 }