diff --git a/netlink/nss_nlipv4.c b/netlink/nss_nlipv4.c
index 589c66b..084bab7 100644
--- a/netlink/nss_nlipv4.c
+++ b/netlink/nss_nlipv4.c
@@ -623,6 +623,27 @@
 }
 
 /*
+ * nss_nlipv4_verify_identifier()
+ *	verify and override identifier rule entries
+ */
+static int nss_nlipv4_verify_identifier(struct nss_ipv4_rule_create_msg *msg)
+{
+	struct nss_ipv4_identifier_rule *identifier = &msg->identifier;
+	const size_t rule_sz = sizeof(struct nss_ipv4_identifier_rule);
+	uint16_t valid;
+
+	/*
+	 * if identifier is not valid, set identifier rule to 0
+	 */
+	valid = msg->valid_flags & NSS_IPV4_RULE_CREATE_IDENTIFIER_VALID;
+	if (!valid) {
+		memset(identifier, 0, rule_sz);
+	}
+
+	return 0;
+}
+
+/*
  * nss_nlipv4_process_notify()
  * 	process notification messages from NSS
  */
@@ -802,6 +823,15 @@
 	}
 
 	/*
+	 * check identifier
+	 */
+	error = nss_nlipv4_verify_identifier(&nim->msg.rule_create);
+	if (error < 0) {
+		nss_nl_error("%d:invalid identifier rule information passed\n", pid);
+		goto done;
+	}
+
+	/*
 	 * copy the NL message for response
 	 */
 	resp = nss_nl_copy_msg(skb);
diff --git a/netlink/nss_nlipv6.c b/netlink/nss_nlipv6.c
index 5b2e9c4..9021da6 100644
--- a/netlink/nss_nlipv6.c
+++ b/netlink/nss_nlipv6.c
@@ -624,6 +624,27 @@
 }
 
 /*
+ * nss_nlipv6_verify_identifier()
+ *	verify and override identifier rule entries
+ */
+static int nss_nlipv6_verify_identifier(struct nss_ipv6_rule_create_msg *msg)
+{
+	struct nss_ipv6_identifier_rule *identifier = &msg->identifier;
+	const size_t rule_sz = sizeof(struct nss_ipv6_identifier_rule);
+	uint16_t valid;
+
+	/*
+	 * if identifier is not valid, set identifier rule to 0
+	 */
+	valid = msg->valid_flags & NSS_IPV6_RULE_CREATE_IDENTIFIER_VALID;
+	if (!valid) {
+		memset(identifier, 0, rule_sz);
+	}
+
+	return 0;
+}
+
+/*
  * nss_nlipv6_process_notify()
  *	process notification messages from NSS
  */
@@ -796,6 +817,15 @@
 	}
 
 	/*
+	 * check identifier
+	 */
+	error = nss_nlipv6_verify_identifier(&nim->msg.rule_create);
+	if (error < 0) {
+		nss_nl_error("%d:invalid identifier rule information passed\n", pid);
+		goto done;
+	}
+
+	/*
 	 * copy the NL message for response
 	 */
 	resp = nss_nl_copy_msg(skb);
