diff --git a/core/net/src/main/java/org/onosproject/net/driver/impl/DriverManager.java b/core/net/src/main/java/org/onosproject/net/driver/impl/DriverManager.java
index b395307..53bf30a 100644
--- a/core/net/src/main/java/org/onosproject/net/driver/impl/DriverManager.java
+++ b/core/net/src/main/java/org/onosproject/net/driver/impl/DriverManager.java
@@ -24,7 +24,6 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
-import org.onosproject.core.Permission;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.device.DeviceService;
@@ -47,6 +46,8 @@
 import static org.onlab.util.Tools.nullIsNotFound;
 import static org.onosproject.net.AnnotationKeys.DRIVER;
 import static org.onosproject.security.AppGuard.checkPermission;
+import static org.onosproject.security.AppPermission.Type.*;
+
 
 
 /**
@@ -108,7 +109,7 @@
 
     @Override
     public Set<Driver> getDrivers() {
-        checkPermission(Permission.DRIVER_READ);
+        checkPermission(DRIVER_READ);
 
         ImmutableSet.Builder<Driver> builder = ImmutableSet.builder();
         drivers.values().forEach(builder::add);
@@ -117,7 +118,7 @@
 
     @Override
     public Set<Driver> getDrivers(Class<? extends Behaviour> withBehaviour) {
-        checkPermission(Permission.DRIVER_READ);
+        checkPermission(DRIVER_READ);
 
         return drivers.values().stream()
                 .filter(d -> d.hasBehaviour(withBehaviour))
@@ -126,14 +127,14 @@
 
     @Override
     public Driver getDriver(String driverName) {
-        checkPermission(Permission.DRIVER_READ);
+        checkPermission(DRIVER_READ);
 
         return nullIsNotFound(drivers.get(driverName), NO_DRIVER);
     }
 
     @Override
     public Driver getDriver(String mfr, String hw, String sw) {
-        checkPermission(Permission.DRIVER_READ);
+        checkPermission(DRIVER_READ);
 
         // First attempt a literal search.
         Driver driver = driverByKey.get(key(mfr, hw, sw));
@@ -160,7 +161,7 @@
 
     @Override
     public Driver getDriver(DeviceId deviceId) {
-        checkPermission(Permission.DRIVER_READ);
+        checkPermission(DRIVER_READ);
 
         Device device = nullIsNotFound(deviceService.getDevice(deviceId), NO_DEVICE);
         String driverName = device.annotations().value(DRIVER);
@@ -174,7 +175,7 @@
 
     @Override
     public DriverHandler createHandler(DeviceId deviceId, String... credentials) {
-        checkPermission(Permission.DRIVER_WRITE);
+        checkPermission(DRIVER_WRITE);
 
         Driver driver = getDriver(deviceId);
         return new DefaultDriverHandler(new DefaultDriverData(driver, deviceId));
