diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn
index d099681..97abc4d 100644
--- a/ggsn_tests/GGSN_Tests.ttcn
+++ b/ggsn_tests/GGSN_Tests.ttcn
@@ -932,6 +932,86 @@
 		T_default.stop;
 	}
 
+	/* Test if the parser can cope with PCO that only contain either a
+	 * single primary DNS or a secondary DNS. */
+	testcase TC_pdp4_act_deact_with_single_dns() runs on GT_CT {
+
+		/* Note: an unpatched osmo-ggsn version will enter an endless-loop when
+		 * the test is executed.
+		 * see also: Change-Id Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5 and OS#3288 */
+
+		f_init();
+		var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
+		var OCT4 ggsn_ip4_dns1 := f_inet_addr(m_ggsn_ip4_dns1);
+		var OCT4 ggsn_ip4_dns2 := f_inet_addr(m_ggsn_ip4_dns2);
+		var octetstring pco_neg_dns;
+		var octetstring pco_neg_dns_expected;
+
+		/* PCO with primary DNS only */
+		ctx.pco_req := valueof(ts_PCO_IPv4_PRI_DNS_IPCP);
+		f_pdp_ctx_act(ctx);
+		pco_neg_dns := f_PCO_extract_proto(ctx.pco_neg, '8021'O, 1);
+		pco_neg_dns_expected := '0200000A8106'O & ggsn_ip4_dns1
+		/* Note: The prepended hex bytes encode the following information:
+		 * 0x02   = Configuration ACK
+		 * 0x00   = Identifier
+		 * 0x000a = Length
+		 * 0x81   = Type (Primary DNS Server Address)
+		 * 0x06   = Length
+		 * (4 byte IP-Address appended) */
+		if (not match(pco_neg_dns, pco_neg_dns_expected)) {
+			setverdict(fail, "Primary DNS IPv4 PCO option not found");
+		}
+		f_pdp_ctx_del(ctx, '1'B);
+
+		/* PCO with secondary DNS only */
+		ctx.pco_req := valueof(ts_PCO_IPv4_SEC_DNS_IPCP);
+		f_pdp_ctx_act(ctx);
+		pco_neg_dns := f_PCO_extract_proto(ctx.pco_neg, '8021'O, 1);
+		pco_neg_dns_expected := '0200000A8306'O & ggsn_ip4_dns2
+		if (not match(pco_neg_dns, pco_neg_dns_expected)) {
+			setverdict(fail, "Secondary DNS IPv4 PCO option not found");
+		}
+		f_pdp_ctx_del(ctx, '1'B);
+	}
+
+	/* Test if the parser can cope with PCO that contains primary and secondary DNS in a separate IPCP container.
+	 * Note: an unpatched osmo-ggsn version will enter an endless-loop when the test is run
+	 * see Change-Id Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5 and OS#3288. */
+	testcase TC_pdp4_act_deact_with_separate_dns() runs on GT_CT {
+
+		/* Note: an unpatched osmo-ggsn version will enter an endless-loop when
+		 * the test is executed.
+		 * see also: Change-Id Icffde89f9bc5d8fcadf6e2dd6c0b4de03440edd5 and OS#3288 */
+
+		f_init();
+		var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
+		var OCT4 ggsn_ip4_dns1 := f_inet_addr(m_ggsn_ip4_dns1);
+		var OCT4 ggsn_ip4_dns2 := f_inet_addr(m_ggsn_ip4_dns2);
+		var octetstring pco_neg_dns;
+		var octetstring pco_neg_dns_expected;
+
+		ctx.pco_req := valueof(ts_PCO_IPv4_SEPARATE_DNS_IPCP);
+		f_pdp_ctx_act(ctx);
+
+		/* Check if primary DNS is contained */
+		pco_neg_dns := f_PCO_extract_proto(ctx.pco_neg, '8021'O, 1);
+		pco_neg_dns_expected := '0200000A8106'O & ggsn_ip4_dns1
+		if (not match(pco_neg_dns, pco_neg_dns_expected)) {
+			setverdict(fail, "Primary DNS IPv4 PCO option not found");
+		}
+		f_pdp_ctx_del(ctx, '1'B);
+
+		/* Check if secondary DNS is contained */
+		/* Note: this check fill fail due to a bug in osmo-ggsn, see also OS#3381 */
+		pco_neg_dns := f_PCO_extract_proto(ctx.pco_neg, '8021'O, 1);
+		pco_neg_dns_expected := '0200000A8306'O & ggsn_ip4_dns2
+		if (not match(pco_neg_dns, pco_neg_dns_expected)) {
+			setverdict(fail, "Secondary DNS IPv4 PCO option not found");
+		}
+		f_pdp_ctx_del(ctx, '1'B);
+	}
+
 	control {
 		execute(TC_pdp4_act_deact());
 		execute(TC_pdp4_act_deact_ipcp());
@@ -939,6 +1019,8 @@
 		execute(TC_pdp4_act_deact_gtpu_access());
 		execute(TC_pdp4_clients_interact_with_txseq());
 		execute(TC_pdp4_clients_interact_without_txseq());
+		execute(TC_pdp4_act_deact_with_single_dns());
+		execute(TC_pdp4_act_deact_with_separate_dns());
 
 		execute(TC_pdp6_act_deact());
 		execute(TC_pdp6_act_deact_pcodns());
