diff --git a/server/NetworkController.cpp b/server/NetworkController.cpp
index 3e428ff..6a11f92 100644
--- a/server/NetworkController.cpp
+++ b/server/NetworkController.cpp
@@ -585,13 +585,18 @@
 }
 
 int NetworkController::addRoute(unsigned netId, const char* interface, const char* destination,
-                                const char* nexthop, bool legacy, uid_t uid) {
-    return modifyRoute(netId, interface, destination, nexthop, true, legacy, uid);
+                                const char* nexthop, bool legacy, uid_t uid, int mtu) {
+    return modifyRoute(netId, interface, destination, nexthop, ROUTE_ADD, legacy, uid, mtu);
+}
+
+int NetworkController::updateRoute(unsigned netId, const char* interface, const char* destination,
+                                   const char* nexthop, bool legacy, uid_t uid, int mtu) {
+    return modifyRoute(netId, interface, destination, nexthop, ROUTE_UPDATE, legacy, uid, mtu);
 }
 
 int NetworkController::removeRoute(unsigned netId, const char* interface, const char* destination,
                                    const char* nexthop, bool legacy, uid_t uid) {
-    return modifyRoute(netId, interface, destination, nexthop, false, legacy, uid);
+    return modifyRoute(netId, interface, destination, nexthop, ROUTE_REMOVE, legacy, uid, 0);
 }
 
 void NetworkController::addInterfaceAddress(unsigned ifIndex, const char* address) {
@@ -768,7 +773,8 @@
 }
 
 int NetworkController::modifyRoute(unsigned netId, const char* interface, const char* destination,
-                                   const char* nexthop, bool add, bool legacy, uid_t uid) {
+                                   const char* nexthop, enum RouteOperation op, bool legacy,
+                                   uid_t uid, int mtu) {
     ScopedRLock lock(mRWLock);
 
     if (!isValidNetworkLocked(netId)) {
@@ -798,8 +804,15 @@
         tableType = RouteController::INTERFACE;
     }
 
-    return add ? RouteController::addRoute(interface, destination, nexthop, tableType) :
-                 RouteController::removeRoute(interface, destination, nexthop, tableType);
+    switch (op) {
+        case ROUTE_ADD:
+            return RouteController::addRoute(interface, destination, nexthop, tableType, mtu);
+        case ROUTE_UPDATE:
+            return RouteController::updateRoute(interface, destination, nexthop, tableType, mtu);
+        case ROUTE_REMOVE:
+            return RouteController::removeRoute(interface, destination, nexthop, tableType);
+    }
+    return -EINVAL;
 }
 
 int NetworkController::modifyFallthroughLocked(unsigned vpnNetId, bool add) {
