diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index 71756d4..c8617d3 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -209,6 +209,22 @@
                 return response.data;
               });
         },
+        setDefaultGateway: function(defaultGateway) {
+          return $http({
+                   method: 'PUT',
+                   url: DataService.getHost() +
+                       '/xyz/openbmc_project/network/config/attr/DefaultGateway',
+                   headers: {
+                     'Accept': 'application/json',
+                     'Content-Type': 'application/json'
+                   },
+                   withCredentials: true,
+                   data: JSON.stringify({'data': defaultGateway})
+                 })
+              .then(function(response) {
+                return response.data;
+              });
+        },
         getLEDState: function() {
           var deferred = $q.defer();
           $http({
diff --git a/app/configuration/controllers/network-controller.js b/app/configuration/controllers/network-controller.js
index 8acc69e..5fe1594 100644
--- a/app/configuration/controllers/network-controller.js
+++ b/app/configuration/controllers/network-controller.js
@@ -10,8 +10,8 @@
   'use strict';
 
   angular.module('app.configuration').controller('networkController', [
-    '$scope', '$window', 'APIUtils', 'dataService', '$route',
-    function($scope, $window, APIUtils, dataService, $route) {
+    '$scope', '$window', 'APIUtils', 'dataService', '$route', '$q',
+    function($scope, $window, APIUtils, dataService, $route, $q) {
       $scope.dataService = dataService;
       $scope.network = {};
       $scope.interface = {};
@@ -33,20 +33,41 @@
         $scope.confirm_settings = false;
         $scope.set_network_error = '';
         $scope.set_network_success = false;
+        var promises = [];
+
         // TODO openbmc/openbmc#3165: check if the network settings
         // changed before setting
-        APIUtils
+        promises.push(setMACAddress());
+        promises.push(setDefaultGateway());
+        $q.all(promises).finally(function() {
+          if (!$scope.set_network_error) {
+            $scope.set_network_success = true;
+          }
+        });
+
+      };
+
+      function setMACAddress() {
+        return APIUtils
             .setMACAddress(
                 $scope.selectedInterface, $scope.interface.MACAddress)
             .then(
-                function(data) {
-                  $scope.set_network_success = true;
-                },
+                function(data) {},
                 function(error) {
-                  console.log(error);
+                  console.log(JSON.stringify(error));
                   $scope.set_network_error = 'MAC Address';
                 });
-      };
+      }
+
+      function setDefaultGateway() {
+        return APIUtils.setDefaultGateway($scope.defaultgateway)
+            .then(
+                function(data) {},
+                function(error) {
+                  console.log(JSON.stringify(error));
+                  $scope.set_network_error = 'Default Gateway';
+                });
+      }
       $scope.refresh = function() {
         $route.reload();
       };
