diff --git a/app/configuration/controllers/network-controller.html b/app/configuration/controllers/network-controller.html
index 287698f..4b75b28 100644
--- a/app/configuration/controllers/network-controller.html
+++ b/app/configuration/controllers/network-controller.html
@@ -54,20 +54,25 @@
         <div class="row column network-config__ipv4-wrap">
           <fieldset class="net-config__static-ip-wrap" ng-repeat="ipv4 in interface.ipv4.values track by $index">
             <div class="column small-12 large-3">
-              <label for="net-config__ipv4-address">IPV4 address</label>
-              <input id="net-config__ipv4-address" type="text" ng-disabled="interface.DHCPEnabled" ng-model="ipv4.Address"/>
+              <label>IPV4 address</label>
+              <input id="ipv4-address-{{$index+1}}" ng-change="ipv4.update_address = true" type="text" ng-disabled="interface.DHCPEnabled" ng-model="ipv4.Address"/>
             </div>
             <div class="column small-12 large-3">
-              <label for="net-config__subnet">Gateway</label>
-              <input id="net-config__subnet" type="text" ng-disabled="interface.DHCPEnabled" value="" ng-model="ipv4.Gateway"/>
+              <label>Gateway</label>
+              <input id="ipv4-gateway-{{$index+1}}" ng-change="ipv4.update_gateway = true" type="text" ng-disabled="interface.DHCPEnabled" value="" ng-model="ipv4.Gateway"/>
             </div>
             <!-- This netmask prefix length max only works with IPV4 -->
             <div class="column small-12 large-6">
-              <label for="net-config__default-gateway">Netmask Prefix Length</label>
-              <input id="net-config__default-gateway" class="column small-6" type="number" min="1" max="32" step="1" ng-disabled="interface.DHCPEnabled"  ng-model="ipv4.PrefixLength"/>
+              <label>Netmask Prefix Length</label>
+              <input id="ipv4-prefix-{{$index+1}}" class="column small-6" ng-change="ipv4.update_prefix = true" type="number" min="1" max="32" step="1" ng-disabled="interface.DHCPEnabled"  ng-model="ipv4.PrefixLength"/>
               <button class="network-config_remove-button inline" ng-click="removeIpv4Address($index)">Remove</button>
             </div>
           </fieldset>
+          <div class="row column">
+            <div class="column small-12">
+              <button type="button" class="btn-primary inline" ng-click="addIpv4Field()">Add IPV4 address</button>
+            </div>
+          </div>
         </div>
       </fieldset>
     </section>
@@ -85,7 +90,9 @@
           </div>
         </fieldset>
         <div class="row column">
-          <button type="button" class="btn-primary inline dns_add" ng-click="addDNSField()">Add new DNS server</button>
+          <div class="column small-12">
+            <button type="button" class="btn-primary inline dns_add" ng-click="addDNSField()">Add DNS server</button>
+          </div>
         </div>
       </fieldset>
       <div class="network-config__submit-wrapper">
diff --git a/app/configuration/controllers/network-controller.js b/app/configuration/controllers/network-controller.js
index a9546d4..92da0b2 100644
--- a/app/configuration/controllers/network-controller.js
+++ b/app/configuration/controllers/network-controller.js
@@ -44,6 +44,11 @@
         $scope.interface.Nameservers.splice(index, 1);
       };
 
+      $scope.addIpv4Field = function() {
+        $scope.interface.ipv4.values.push(
+            {Address: '', PrefixLength: '', Gateway: ''});
+      };
+
       $scope.removeIpv4Address = function(index) {
         // Check if the IPV4 being removed has an id. This indicates that it is
         // an existing address and needs to be removed in the back end.
@@ -91,7 +96,7 @@
         if (!$scope.interface.DHCPEnabled) {
           // Delete existing IPV4 addresses that were removed
           promises.push(removeIPV4s());
-          // Update any changed IPV4 addresses
+          // Update any changed IPV4 addresses and add new
           for (var i in $scope.interface.ipv4.values) {
             if (!APIUtils.validIPV4IP(
                     $scope.interface.ipv4.values[i].Address)) {
@@ -117,13 +122,18 @@
               $scope.loading = false;
               return;
             }
-            if ($scope.interface.ipv4.values[i].Address !=
-                    $scope.old_interface.ipv4.values[i].Address ||
-                $scope.interface.ipv4.values[i].PrefixLength !=
-                    $scope.old_interface.ipv4.values[i].PrefixLength ||
-                $scope.interface.ipv4.values[i].Gateway !=
-                    $scope.old_interface.ipv4.values[i].Gateway) {
-              promises.push(setIPV4(i));
+            if ($scope.interface.ipv4.values[i].update_address ||
+                $scope.interface.ipv4.values[i].update_gateway ||
+                $scope.interface.ipv4.values[i].update_prefix) {
+              // If IPV4 has an id it means it already exists in the back end,
+              // and in order to update it is required to remove previous IPV4
+              // address and add new one. See openbmc/openbmc/issues/2163.
+              // TODO: update to use PUT once issue 2163 is resolved.
+              if ($scope.interface.ipv4.values[i].id) {
+                promises.push(updateIPV4(i));
+              } else {
+                promises.push(addIPV4(i));
+              }
             }
           }
         }
@@ -227,12 +237,29 @@
         });
       }
 
-      function setIPV4(index) {
+      function addIPV4(index) {
+        return APIUtils
+            .addIPV4(
+                $scope.selectedInterface,
+                $scope.interface.ipv4.values[index].Address,
+                $scope.interface.ipv4.values[index].PrefixLength,
+                $scope.interface.ipv4.values[index].Gateway)
+            .then(
+                function(data) {},
+                function(error) {
+                  console.log(JSON.stringify(error));
+                  $scope.set_network_error =
+                      $scope.interface.ipv4.values[index].Address;
+                })
+      }
+
+      function updateIPV4(index) {
         // The correct way to edit an IPV4 interface is to remove it and then
         // add a new one
         return APIUtils
             .deleteIPV4(
-                $scope.selectedInterface, $scope.interface.ipv4.ids[index])
+                $scope.selectedInterface,
+                $scope.interface.ipv4.values[index].id)
             .then(
                 function(data) {
                   return APIUtils
@@ -278,9 +305,12 @@
             // page
             $scope.old_interface = JSON.parse(JSON.stringify($scope.interface));
           }
-          // Add id values to corresponding IPV4 objects
+          // Add id values and update flags to corresponding IPV4 objects
           for (var i = 0; i < $scope.interface.ipv4.values.length; i++) {
             $scope.interface.ipv4.values[i].id = $scope.interface.ipv4.ids[i];
+            $scope.interface.ipv4.values[i].update_address = false;
+            $scope.interface.ipv4.values[i].update_gateway = false;
+            $scope.interface.ipv4.values[i].update_prefix = false;
           }
         });
       }
