BSSGP_Emulation: Add SNDCP decoding support

Change-Id: Icd2e8feed9173b0a2729b7ee1cfac37a86eca6cf
This commit is contained in:
Harald Welte 2018-02-18 19:03:36 +01:00
parent f58a022221
commit a2526a85d3
5 changed files with 47 additions and 5 deletions

View File

@ -47,6 +47,11 @@ DIR=$BASEDIR/titan.ProtocolModules.LLC_v7.1.0/src
FILES="LLC_EncDec.cc LLC_Types.ttcn"
gen_links $DIR $FILES
DIR=$BASEDIR/titan.ProtocolModules.SNDCP_v7.0.0/src
FILES="SNDCP_Types.ttcn"
gen_links $DIR $FILES
DIR=../library
FILES="General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc L1CTL_Types.ttcn L1CTL_PortType.ttcn LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn "
FILES+="NS_Emulation.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn NS_CodecPort_CtrlFunctDef.cc "

View File

@ -14,6 +14,8 @@ import from MobileL3_Types all;
import from LLC_Types all;
import from LLC_Templates all;
import from SNDCP_Types all;
/***********************************************************************
* Communication between Client Components and Main Component
***********************************************************************/
@ -601,7 +603,8 @@ type record BssgpDecoded {
PDU_BSSGP bssgp,
PDU_LLC llc optional,
PDU_L3_MS_SGSN l3_mo optional,
PDU_L3_SGSN_MS l3_mt optional
PDU_L3_SGSN_MS l3_mt optional,
PDU_SN sndcp optional
}
/* Decode a PDU_BSSGP into a BssgpDecoded (i.e. with LLC/L3 decoded, as applicable) */
@ -610,7 +613,8 @@ private function f_dec_bssgp(PDU_BSSGP bssgp) runs on BSSGP_CT return BssgpDecod
bssgp := bssgp,
llc := omit,
l3_mo := omit,
l3_mt := omit
l3_mt := omit,
sndcp := omit
};
/* Decode LLC, if it is a PDU that contains LLC */
@ -628,6 +632,11 @@ private function f_dec_bssgp(PDU_BSSGP bssgp) runs on BSSGP_CT return BssgpDecod
dec.l3_mt := dec_PDU_L3_SGSN_MS(dec.llc.pDU_LLC_UI.information_field_UI);
}
}
/* Decode SNDCP, if it is a LLC PDU containing user plane data */
if (isvalue(dec.llc) and match(dec.llc, tr_LLC_UI_USER)) {
dec.sndcp := dec_PDU_SN(dec.llc.pDU_LLC_UI.information_field_UI);
}
return dec;
}
@ -657,21 +666,32 @@ template BssgpDecoded tr_BD_BSSGP(template PDU_BSSGP bg) := {
bssgp := bg,
llc := *,
l3_mo := *,
l3_mt := *
l3_mt := *,
sndcp := *
}
template BssgpDecoded tr_BD_LLC(template PDU_LLC llc) := {
bssgp := ?,
llc := llc,
l3_mo := *,
l3_mt := *,
sndcp := *
}
template BssgpDecoded tr_BD_L3_MT(template PDU_L3_SGSN_MS mt) := {
bssgp := ?,
llc := ?,
l3_mo := omit,
l3_mt := mt
l3_mt := mt,
sndcp := omit
}
template BssgpDecoded tr_BD_L3_MO(template PDU_L3_MS_SGSN mo) := {
bssgp := ?,
llc := ?,
l3_mo := mo,
l3_mt := omit
l3_mt := omit,
sndcp := omit
}

View File

@ -68,5 +68,12 @@ const BIT1 LLC_CR_UL_RSP := '1'B;
/* LLC UI frame with SAPI for L3 payload */
template PDU_LLC tr_LLC_UI_L3 := ( tr_LLC_UI(?, c_LLC_SAPI_LLGMM) );
/* LLC UI frame with SAPI for User payload */
template PDU_LLC tr_LLC_UI_USER := tr_LLC_UI(?, (c_LLC_SAPI_LL3,
c_LLC_SAPI_LL5,
c_LLC_SAPI_LL9,
c_LLC_SAPI_LL11)
);
}

View File

@ -24,6 +24,11 @@ import from GTP_CodecPort all;
import from GTPC_Types all;
import from GTPU_Types all;
import from LLC_Types all;
import from LLC_Templates all;
import from SNDCP_Types all;
import from TELNETasp_PortType all;
import from Osmocom_VTY_Functions all;

View File

@ -59,6 +59,11 @@ DIR=$BASEDIR/titan.ProtocolModules.LLC_v7.1.0/src
FILES="LLC_EncDec.cc LLC_Types.ttcn"
gen_links $DIR $FILES
DIR=$BASEDIR/titan.ProtocolModules.SNDCP_v7.0.0/src
FILES="SNDCP_Types.ttcn"
gen_links $DIR $FILES
DIR=$BASEDIR/titan.ProtocolModules.MobileL3_v13.4.0/src
FILES="MobileL3_CC_Types.ttcn MobileL3_CommonIE_Types.ttcn MobileL3_GMM_SM_Types.ttcn MobileL3_MM_Types.ttcn MobileL3_RRM_Types.ttcn MobileL3_SMS_Types.ttcn MobileL3_SS_Types.ttcn MobileL3_Types.ttcn"
gen_links $DIR $FILES