vtn source network should only be private networks, vtn destination networks should only be access networks
diff --git a/xos/core/models/service.py b/xos/core/models/service.py
index 2b450e0..135dce9 100644
--- a/xos/core/models/service.py
+++ b/xos/core/models/service.py
@@ -168,12 +168,35 @@
 
                 # print "add instance", s
 
+    def get_vtn_src_nets(self):
+        nets=[]
+        for slice in self.slices.all():
+            for ns in slice.networkslices.all():
+                if not ns.network:
+                    continue
+                if ns.network.template.access in ["direct", "indirect"]:
+                    # skip access networks; we want to use the private network
+                    continue
+                if ns.network.name in ["wan_network", "lan_network"]:
+                    # we don't want to attach to the vCPE's lan or wan network
+                    # we only want to attach to its private network
+                    # TODO: fix hard-coding of network name
+                    continue
+                for cn in ns.network.controllernetworks.all():
+                    if cn.net_id:
+                        net = {"name": ns.network.name, "net_id": cn.net_id}
+                        nets.append(net)
+        return nets
+
     def get_vtn_nets(self):
         nets=[]
         for slice in self.slices.all():
             for ns in slice.networkslices.all():
                 if not ns.network:
                     continue
+                if ns.network.template.access not in ["direct", "indirect"]:
+                    # skip anything that's not an access network
+                    continue
                 for cn in ns.network.controllernetworks.all():
                     if cn.net_id:
                         net = {"name": ns.network.name, "net_id": cn.net_id}
@@ -195,11 +218,11 @@
     def get_vtn_dependencies_names(self):
         return [x["name"]+"_"+x["net_id"] for x in self.get_vtn_dependencies_nets()]
 
-    def get_vtn_ids(self):
-        return [x["net_id"] for x in self.get_vtn_nets()]
+    def get_vtn_src_ids(self):
+        return [x["net_id"] for x in self.get_vtn_src_nets()]
 
-    def get_vtn_names(self):
-        return [x["name"]+"_"+x["net_id"] for x in self.get_vtn_nets()]
+    def get_vtn_src_names(self):
+        return [x["name"]+"_"+x["net_id"] for x in self.get_vtn_src_nets()]
 
 
 class ServiceAttribute(PlCoreBase):
diff --git a/xos/core/xoslib/methods/vtn.py b/xos/core/xoslib/methods/vtn.py
index a912613..14dd458 100644
--- a/xos/core/xoslib/methods/vtn.py
+++ b/xos/core/xoslib/methods/vtn.py
@@ -38,7 +38,7 @@
     def get_services_names(self, request, pk=None):
         result = {}
         for service in Service.objects.all():
-           for id in service.get_vtn_names():
+           for id in service.get_vtn_src_names():
                dependencies = service.get_vtn_dependencies_names()
                if dependencies:
                    result[id] = dependencies
@@ -47,7 +47,7 @@
     def get_services(self, request, pk=None):
         result = {}
         for service in Service.objects.all():
-           for id in service.get_vtn_ids():
+           for id in service.get_vtn_src_ids():
                dependencies = service.get_vtn_dependencies_ids()
                if dependencies:
                    result[id] = dependencies