summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2019-04-23 22:00:00 +0200
committerHarald Welte <laforge@gnumonks.org>2019-04-25 20:06:15 +0000
commitf7a5c3ca0217db7ede7fe6defaa9603276068406 (patch)
tree10773fe3ca67d8aeb69b542e8bf39a32621f3cdb
parentd95f340a01fe7e9fe59f02b6ec4f9d018feb8c75 (diff)
LLC_Templates: Add SABM, UA, FRMR, DM templates
-rw-r--r--library/LLC_Templates.ttcn61
1 files changed, 59 insertions, 2 deletions
diff --git a/library/LLC_Templates.ttcn b/library/LLC_Templates.ttcn
index 086207cb..024ae0b2 100644
--- a/library/LLC_Templates.ttcn
+++ b/library/LLC_Templates.ttcn
@@ -10,6 +10,14 @@ template Address_field t_LLC_Addr(template BIT4 sapi, template BIT1 cr, template
cR := cr,
pD := '0'B
}
+template (value) Address_field ts_LLC_Addr(template (value) BIT4 sapi,
+ template (value) BIT1 cr,
+ template (value) BIT1 pd := '0'B) := {
+ sAPI := sapi,
+ spare := '00'B,
+ cR := cr,
+ pD := '0'B
+}
template (value) Control_field_UI ts_LLC_CtrlUI(uint9_t n_u, boolean encrypted := false,
boolean protected := false) := {
@@ -20,7 +28,7 @@ template (value) Control_field_UI ts_LLC_CtrlUI(uint9_t n_u, boolean encrypted :
pM := bool2bit(protected)
}
-template (value) Control_field_U ts_LLC_CtrlU(BIT4 m_bits, BIT1 p_f) := {
+template (value) Control_field_U ts_LLC_CtrlU(template (value) BIT4 m_bits, template (value) BIT1 p_f) := {
mBits := m_bits,
pF := p_f,
format := '111'B
@@ -47,7 +55,7 @@ template Control_field_U tr_LLC_CtrlU(template BIT4 m_bits := ?,
template PDU_LLC ts_LLC_UI(octetstring payload, BIT4 sapi, BIT1 cr, uint9_t n_u,
boolean encrypted := false, boolean protected := false) := {
pDU_LLC_UI := {
- address_field := t_LLC_Addr(sapi, cr),
+ address_field := ts_LLC_Addr(sapi, cr),
control_field := ts_LLC_CtrlUI(n_u, encrypted, protected),
information_field_UI := payload,
fCS := omit /* causes encoder to generate FCS */
@@ -77,6 +85,55 @@ template PDU_LLC tr_LLC_XID(template XID_Information xid, template BIT4 sapi :=
}
}
+template PDU_LLC tr_LLC_U(template BIT4 m_bits, template BIT1 p_f, template Information_field_U u,
+ template BIT4 sapi, template BIT1 cr) := {
+ pDU_LLC_U := {
+ address_field := t_LLC_Addr(sapi, cr),
+ control_field := tr_LLC_CtrlU(m_bits, p_f),
+ information_field_U := u,
+ fCS := '000000'O /* provided by decoder if FCS OK */
+ }
+}
+template (value) PDU_LLC ts_LLC_U(template (value) BIT4 m_bits, template (value) BIT1 p_f,
+ template (value) Information_field_U u,
+ template (value) BIT4 sapi, template (value) BIT1 cr) := {
+ pDU_LLC_U := {
+ address_field := ts_LLC_Addr(sapi, cr),
+ control_field := ts_LLC_CtrlU(m_bits, p_f),
+ information_field_U := u,
+ fCS := omit /* causes encoder to generate FCS */
+ }
+}
+
+template PDU_LLC tr_LLC_SABM(template SABM_Information sabm_xid, template BIT1 p_f,
+ template BIT4 sapi, template BIT1 cr) :=
+ tr_LLC_U('0111'B, p_f, Information_field_U:{sABM := sabm_xid}, sapi, cr);
+template (value) PDU_LLC ts_LLC_SABM(template (value) SABM_Information sabm_xid,
+ template (value) BIT1 p_f,
+ template (value) BIT4 sapi, template (value) BIT1 cr) :=
+ ts_LLC_U('0111'B, p_f, Information_field_U:{sABM := sabm_xid}, sapi, cr);
+
+template PDU_LLC tr_LLC_UA(template UA_Information ua_xid, template BIT1 p_f,
+ template BIT4 sapi, template BIT1 cr) :=
+ tr_LLC_U('0110'B, p_f, Information_field_U:{uA := ua_xid}, sapi, cr);
+template (value) PDU_LLC ts_LLC_UA(template (value) UA_Information ua_xid,
+ template (value) BIT1 p_f,
+ template (value) BIT4 sapi, template (value) BIT1 cr) :=
+ ts_LLC_U('0110'B, p_f, Information_field_U:{uA := ua_xid}, sapi, cr);
+
+template PDU_LLC tr_LLC_FRMR(template FRMR_Information frmr, template BIT1 p_f,
+ template BIT4 sapi, template BIT1 cr) :=
+ tr_LLC_U('1000'B, p_f, Information_field_U:{fRMR := frmr}, sapi, cr);
+template (value) PDU_LLC ts_LLC_FRMR(template (value) FRMR_Information frmr,
+ template (value) BIT1 p_f,
+ template (value) BIT4 sapi, template (value) BIT1 cr) :=
+ ts_LLC_U('1000'B, p_f, Information_field_U:{fRMR := frmr}, sapi, cr);
+
+template PDU_LLC tr_LLC_DM(template BIT1 p_f, template BIT4 sapi, template BIT1 cr) :=
+ tr_LLC_U('0001'B, p_f, Information_field_U:{dM := ''O}, sapi, cr);
+template (value) PDU_LLC ts_LLC_DM(template (value) BIT1 p_f, template (value) BIT4 sapi,
+ template (value) BIT1 cr) :=
+ ts_LLC_U('0001'B, p_f, Information_field_U:{dM := ''O}, sapi, cr);
const BIT4 c_LLC_SAPI_LLGMM := '0001'B;
const BIT4 c_LLC_SAPI_TOM2 := '0010'B;