diff --git a/cfg_checker/modules/network/checker.py b/cfg_checker/modules/network/checker.py
index 29ccb41..aeb1e61 100644
--- a/cfg_checker/modules/network/checker.py
+++ b/cfg_checker/modules/network/checker.py
@@ -211,6 +211,21 @@
                             "... no data for the node"
                         )
                     )
+                    # add non-responsive node erorr
+                    self.errors.add_error(
+                        self.errors.NET_NODE_NON_RESPONSIVE,
+                        host=hostname
+                    )
+
+                    # print empty row
+                    _text = " # node non-responsive"
+                    logger_cli.info(
+                        "    {0:17} {1}".format(
+                            hostname.split('.')[0],
+                            _text
+                        )
+                    )
+                    continue
 
                 # get the gateway for current net
                 _routes = self.nodes[hostname]['routes']
@@ -235,10 +250,18 @@
                         # get proper reclass
                         _ip_str = str(_if.exploded)
                         _r = {}
-                        for _item in self.reclass_nets[network][hostname]:
-                            for _item_ifs in _item['ifs']:
-                                if _ip_str == str(_item_ifs.exploded):
-                                    _r = _item
+                        if hostname in self.reclass_nets[network]:
+                            for _item in self.reclass_nets[network][hostname]:
+                                for _item_ifs in _item['ifs']:
+                                    if _ip_str == str(_item_ifs.exploded):
+                                        _r = _item
+                        else:
+                            self.errors.add_error(
+                                self.errors.NET_NODE_UNEXPECTED_IF,
+                                host=hostname,
+                                if_name=_host['name'],
+                                if_ip=_ip_str
+                            )
 
                         # check if node is UP
                         if not self.is_node_available(hostname):
@@ -270,7 +293,7 @@
 
                         # IF status in reclass
                         if 'enabled' not in _r:
-                            _enabled = "no record!"
+                            _enabled = "(no record!)"
                         else:
                             _e = "enabled"
                             _d = "disabled"
@@ -292,8 +315,9 @@
                             # reclass is empty if MTU is untended to be 1500
                             _rc_mtu = "(-)"
                         elif _rc_mtu:
+                            _rc_mtu_s = str(_rc_mtu)
                             # if there is an MTU value, match it
-                            if _host['mtu'] != str(_rc_mtu):
+                            if _host['mtu'] != _rc_mtu_s:
                                 self.errors.add_error(
                                     self.errors.NET_MTU_MISMATCH,
                                     host=hostname,
@@ -317,7 +341,7 @@
                                     _name,
                                     _ip_str,
                                     _host['mtu'],
-                                    str(_rc_mtu) if _rc_mtu else "(No!)",
+                                    "("+_rc_mtu_s+")" if _rc_mtu else "(No!)",
                                     _host['state'],
                                     _enabled,
                                     _gate,
diff --git a/cfg_checker/modules/network/network_errors.py b/cfg_checker/modules/network/network_errors.py
index 2ec3d31..cb9dfef 100644
--- a/cfg_checker/modules/network/network_errors.py
+++ b/cfg_checker/modules/network/network_errors.py
@@ -13,6 +13,8 @@
     NET_DUPLICATE_IF = next(_c)
     NET_SUBNET_INTERSECT = next(_c)
     NET_MASK_MISMATCH = next(_c)
+    NET_NODE_NON_RESPONSIVE = next(_c)
+    NET_NODE_UNEXPECTED_IF = next(_c)
 
     def __init__(self):
         super(NetworkErrors, self).__init__("NET")
@@ -37,6 +39,14 @@
             self.NET_MASK_MISMATCH,
             "IFs mask settings for the same subnet is not the same"
         )
+        self.add_error_type(
+            self.NET_NODE_NON_RESPONSIVE,
+            "Node failed to respond on at least one non-ping salt call"
+        )
+        self.add_error_type(
+            self.NET_NODE_UNEXPECTED_IF,
+            "Node has unexpected IF with mapped IP"
+        )
 
 
 del _c
