diff --git a/lib/cmdlib.py b/lib/cmdlib.py
index acde43dca66ac6ec6b665a66544691130b4193e0..c0021093a0d3dc7d28ef7c9fff27be4733465253 100644
--- a/lib/cmdlib.py
+++ b/lib/cmdlib.py
@@ -1547,6 +1547,8 @@ class LUQueryNodes(NoHooksLU):
     "pinst_list", "sinst_list",
     "pip", "sip", "tags",
     "serial_no",
+    "master_candidate",
+    "master",
     )
 
   def ExpandNames(self):
@@ -1635,6 +1637,8 @@ class LUQueryNodes(NoHooksLU):
           if secnode in node_to_secondary:
             node_to_secondary[secnode].add(inst.name)
 
+    master_node = self.cfg.GetMasterNode()
+
     # end data gathering
 
     output = []
@@ -1659,6 +1663,10 @@ class LUQueryNodes(NoHooksLU):
           val = list(node.GetTags())
         elif field == "serial_no":
           val = node.serial_no
+        elif field == "master_candidate":
+          val = node.master_candidate
+        elif field == "master":
+          val = node.name == master_node
         elif self._FIELDS_DYNAMIC.Matches(field):
           val = live_data[node.name].get(field, None)
         else:
diff --git a/scripts/gnt-node b/scripts/gnt-node
index 36ded90b1c1c1a45777443375afed906f23f9c5a..1b20a66f8750a71fb5194dd5889ff1f1e59a49e6 100755
--- a/scripts/gnt-node
+++ b/scripts/gnt-node
@@ -115,6 +115,8 @@ def ListNodes(opts, args):
       "ctotal": "CTotal",
       "tags": "Tags",
       "serial_no": "SerialNo",
+      "master_candidate": "MasterC",
+      "master": "IsMaster",
       }
   else:
     headers = None
@@ -133,6 +135,11 @@ def ListNodes(opts, args):
       val = row[idx]
       if field in list_type_fields:
         val = ",".join(val)
+      elif field in ('master', 'master_candidate'):
+        if val:
+          val = 'Y'
+        else:
+          val = 'N'
       elif val is None:
         val = "?"
       row[idx] = str(val)