diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn
index 1628f3a..30eb09f 100644
--- a/library/Osmocom_Gb_Types.ttcn
+++ b/library/Osmocom_Gb_Types.ttcn
@@ -161,6 +161,17 @@
 		return int2oct(valueof(inp), len);
 	}
 
+	private function f_hex_or_wc(template integer inp, integer len) return template hexstring {
+		if (istemplatekind(inp, "omit")) {
+			return omit;
+		} else if (istemplatekind(inp, "*")) {
+			return *;
+		} else if (istemplatekind(inp, "?")) {
+			return ?;
+		}
+		return int2hex(valueof(inp), len);
+	}
+
 	template (value) NS_VCI ts_NS_IE_NSVCI(Nsvci nsvci) := {
 		iEI := '01'O,
 		ext := '1'B,
@@ -806,6 +817,26 @@
 		}
 	}
 
+	private function t_LLC_FRAMES_DISCARDED(template integer frames_discarded)
+	return template LLC_Frames_Discarded {
+		var template LLC_Frames_Discarded r;
+		if (istemplatekind(frames_discarded, "omit")) {
+			return omit;
+		} else if (istemplatekind(frames_discarded, "*")) {
+			return *;
+		} else {
+			r := {
+				iEI := '0F'O,
+				ext := '1'B,
+				lengthIndicator := {
+					length1 := 2
+				},
+				number_of_frames_discarded := f_hex_or_wc(frames_discarded, 2)
+			}
+			return r;
+		}
+	}
+
 	private function t_BSSGP_BVCI(template BssgpBvci bvci)
 	return template BVCI {
 		var template BVCI r;
@@ -1848,6 +1879,32 @@
 		}
 	}
 
+	/* 10.4.3 */
+	template (value) PDU_BSSGP ts_BSSGP_LLC_DISCARDED(GprsTlli tlli, template (value) integer frames_discarded,
+							 template (value) BssgpBvci bvci,
+							 template (value) integer oct_deleted) := {
+		pDU_BSSGP_LLC_DISCARDED := {
+			bssgpPduType := '2C'O,
+			tLLI := ts_BSSGP_TLLI(tlli),
+			lLC_Frames_Discarded := t_LLC_FRAMES_DISCARDED(frames_discarded),
+			bVCI := t_BSSGP_BVCI(bvci),
+			number_of_octets_deleted := t_NO_OCT_AFF(oct_deleted),
+			pFI := omit
+		}
+	}
+	template PDU_BSSGP tr_BSSGP_LLC_DISCARDED(template GprsTlli tlli, template integer frames_discarded,
+						 template BssgpBvci bvci,
+						 template integer oct_deleted) := {
+		pDU_BSSGP_LLC_DISCARDED := {
+			bssgpPduType := '2C'O,
+			tLLI := ts_BSSGP_TLLI(tlli),
+			lLC_Frames_Discarded := t_LLC_FRAMES_DISCARDED(frames_discarded),
+			bVCI := t_BSSGP_BVCI(bvci),
+			number_of_octets_deleted := t_NO_OCT_AFF(oct_deleted),
+			pFI := *
+		}
+	}
+
 	/* 10.2.3 */
 	template (value) PDU_BSSGP ts_BSSGP_RA_CAP(GprsTlli tlli,
 						   template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {
