diff --git a/lib/backend.py b/lib/backend.py
index 77addb2e9583107336ee57427b7dd85b37218f00..47a83e3cfefbace27974626553d95038065da4e4 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -412,11 +412,15 @@ def StopMasterDaemons():
                   result.cmd, result.exit_code, result.output)
 
 
-def ChangeMasterNetmask(netmask):
+def ChangeMasterNetmask(old_netmask, netmask, master_ip, master_netdev):
   """Change the netmask of the master IP.
 
+  @param old_netmask: the old value of the netmask
+  @param netmask: the new value of the netmask
+  @param master_ip: the master IP
+  @param master_netdev: the master network device
+
   """
-  master_netdev, master_ip, _, _, old_netmask = GetMasterInfo()
   if old_netmask == netmask:
     return
 
diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index d60552be742b38e918e932cd9de15859aa07616b..53eb657402384bd4d0177c6ddaab62a18e2d852d 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -3710,10 +3710,11 @@ class LUClusterSetParams(LogicalUnit):
       self.cluster.master_netdev = self.op.master_netdev
 
     if self.op.master_netmask:
-      master = self.cfg.GetMasterNode()
+      (master, ip, dev, old_netmask, _) = self.cfg.GetMasterNetworkParameters()
       feedback_fn("Changing master IP netmask to %s" % self.op.master_netmask)
-      result = self.rpc.call_node_change_master_netmask(master,
-                                                        self.op.master_netmask)
+      result = self.rpc.call_node_change_master_netmask(master, old_netmask,
+                                                        self.op.master_netmask,
+                                                        ip, dev)
       if result.fail_msg:
         msg = "Could not change the master IP netmask: %s" % result.fail_msg
         self.LogWarning(msg)
diff --git a/lib/rpc_defs.py b/lib/rpc_defs.py
index b4f799e60bbe8f93aa305c8eec5ccf89f496c160..c956be02aaffa63f7a3a6f840994792eeb1fb1a8 100644
--- a/lib/rpc_defs.py
+++ b/lib/rpc_defs.py
@@ -414,7 +414,10 @@ CALLS = {
       ], None,
      "Deactivates master IP on a node"),
     ("node_change_master_netmask", SINGLE, TMO_FAST, [
-      ("netmask", None, None),
+      ("old_netmask", None, "The old value of the netmask"),
+      ("netmask", None, "The new value of the netmask"),
+      ("master_ip", None, "The master IP"),
+      ("master_netdev", None, "The master network device"),
       ], None, "Change master IP netmask"),
     ("node_leave_cluster", SINGLE, TMO_NORMAL, [
       ("modify_ssh_setup", None, None),
diff --git a/lib/server/noded.py b/lib/server/noded.py
index 7e1619ead26db1555805385211aa96e3b49ffadf..07672d98ab9b98bfe3395ce7a8d84426b8c5eca0 100644
--- a/lib/server/noded.py
+++ b/lib/server/noded.py
@@ -718,7 +718,8 @@ class NodeHttpServer(http.server.HttpServer):
     """Change the master IP netmask.
 
     """
-    return backend.ChangeMasterNetmask(params[0])
+    return backend.ChangeMasterNetmask(params[0], params[1], params[2],
+                                       params[3])
 
   @staticmethod
   def perspective_node_leave_cluster(params):