fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37225?usp=email )
Change subject: {hnbap,ranap,rua,s1ap,sabp,sbcap}: use TITAN's ASN.1 PER codec ......................................................................
{hnbap,ranap,rua,s1ap,sabp,sbcap}: use TITAN's ASN.1 PER codec
TITAN version 10.0.0 finally brings support for the ASN.1 PER codec. Drop libfftranscode dependency, use TTCN_EncDec::CT_PER / PER_ALIGNED.
Change-Id: I990a9c01d965e185fc64bd751ea0685e5d3b869c --- M cbc/regen_makefile.sh M hnbgw/regen_makefile.sh M hnodeb/regen_makefile.sh M library/hnbap/HNBAP_EncDec.cc M library/hnbap/regen_makefile.sh M library/ranap/RANAP_EncDec.cc M library/ranap/regen_makefile.sh M library/rua/RUA_EncDec.cc M library/rua/regen_makefile.sh M library/s1ap/S1AP_EncDec.cc M library/s1ap/regen_makefile.sh M library/sabp/SABP_EncDec.cc M library/sabp/regen_makefile.sh M library/sbcap/SBC_AP_EncDec.cc M library/sbcap/regen_makefile.sh M mme/regen_makefile.sh M msc/regen_makefile.sh M s1gw/regen_makefile.sh M sgsn/regen_makefile.sh 19 files changed, 98 insertions(+), 310 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/25/37225/1
diff --git a/cbc/regen_makefile.sh b/cbc/regen_makefile.sh index 96900b3..56da962 100755 --- a/cbc/regen_makefile.sh +++ b/cbc/regen_makefile.sh @@ -28,5 +28,3 @@ "
../regen-makefile.sh -e $NAME $FILES - -sed -i -e 's/^LINUX_LIBS = -lxml2/LINUX_LIBS = -lxml2 -lfftranscode/' Makefile diff --git a/hnbgw/regen_makefile.sh b/hnbgw/regen_makefile.sh index 13db985..2f5ab1a 100755 --- a/hnbgw/regen_makefile.sh +++ b/hnbgw/regen_makefile.sh @@ -37,5 +37,3 @@ "
../regen-makefile.sh -e $NAME $FILES - -sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lfftranscode/' Makefile diff --git a/hnodeb/regen_makefile.sh b/hnodeb/regen_makefile.sh index cf5fed3..91603d0 100755 --- a/hnodeb/regen_makefile.sh +++ b/hnodeb/regen_makefile.sh @@ -36,5 +36,3 @@ "
../regen-makefile.sh -e $NAME $FILES - -sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lfftranscode/' Makefile diff --git a/library/hnbap/HNBAP_EncDec.cc b/library/hnbap/HNBAP_EncDec.cc index 37d764f..eaf1013 100644 --- a/library/hnbap/HNBAP_EncDec.cc +++ b/library/hnbap/HNBAP_EncDec.cc @@ -1,11 +1,8 @@ - -#include <string.h> -#include <stdarg.h> #include "HNBAP_PDU_Descriptions.hh"
-extern "C" { -#include <fftranscode/transcode.h> -} +/* 3GPP TS 25.469, section 9.4 Message transfer syntax: + * HNBAP shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned Variant + * as transfer syntax as specified in ref. ITU-T Rec. X.691 */
namespace HNBAP__Types {
@@ -13,52 +10,24 @@
OCTETSTRING enc__HNBAP__PDU(const HNBAP__PDU__Descriptions::HNBAP__PDU &pdu) { - uint8_t *aper_buf; - int aper_buf_len; - TTCN_Buffer TTCN_buf; - TTCN_buf.clear(); + TTCN_Buffer buf;
- /* Encode from abstract data type into BER/DER */ - pdu.encode(HNBAP__PDU__Descriptions::HNBAP__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ENCODE_DER); - - aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_HNBAP, &aper_buf, TTCN_buf.get_data(), TTCN_buf.get_len()); - if (aper_buf_len < 0) { - TTCN_error("fftranscode failed."); - } - - /* make octetstring from output buffer */ - OCTETSTRING ret_val(aper_buf_len, aper_buf); - - /* release dynamically-allocated output buffer */ - fftranscode_free(aper_buf); - - return ret_val; + buf.clear(); + pdu.encode(HNBAP__PDU__Descriptions::HNBAP__PDU_descr_, buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return OCTETSTRING(buf.get_len(), buf.get_data()); }
HNBAP__PDU__Descriptions::HNBAP__PDU dec__HNBAP__PDU(const OCTETSTRING &stream) { - uint8_t *ber_buf; - int ber_buf_len; - - /* First, decode APER + re-encode as BER */ - ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_HNBAP, &ber_buf, (const unsigned char *)stream, stream.lengthof()); - if (ber_buf_len < 0) { - TTCN_error("fftranscode failed."); - } - - /* Then, re-encode from BER to TITAN representation */ - HNBAP__PDU__Descriptions::HNBAP__PDU ret_dcc; + HNBAP__PDU__Descriptions::HNBAP__PDU pdu; TTCN_Buffer TTCN_buf; + TTCN_buf.clear(); - TTCN_buf.put_s(ber_buf_len, ber_buf); - - ret_dcc.decode(HNBAP__PDU__Descriptions::HNBAP__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); - - fftranscode_free(ber_buf); - - return ret_dcc; + TTCN_buf.put_os(stream); + pdu.decode(HNBAP__PDU__Descriptions::HNBAP__PDU_descr_, TTCN_buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return pdu; }
} diff --git a/library/hnbap/regen_makefile.sh b/library/hnbap/regen_makefile.sh index 4da6872..02e7fae 100755 --- a/library/hnbap/regen_makefile.sh +++ b/library/hnbap/regen_makefile.sh @@ -3,7 +3,3 @@ FILES="*.asn *.ttcn HNBAP_EncDec.cc"
../../regen-makefile.sh $FILES - -sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile -sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile -sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile diff --git a/library/ranap/RANAP_EncDec.cc b/library/ranap/RANAP_EncDec.cc index 7626b7b..5cee694 100644 --- a/library/ranap/RANAP_EncDec.cc +++ b/library/ranap/RANAP_EncDec.cc @@ -1,11 +1,8 @@ - -#include <string.h> -#include <stdarg.h> #include "RANAP_PDU_Descriptions.hh"
-extern "C" { -#include <fftranscode/transcode.h> -} +/* 3GPP TS 25.413, section 9.4 Message transfer syntax: + * RANAP shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned Variant + * as transfer syntax as specified in ref. ITU-T Rec. X.691 */
namespace RANAP__Types {
@@ -13,54 +10,24 @@
OCTETSTRING enc__RANAP__PDU(const RANAP__PDU__Descriptions::RANAP__PDU &pdu) { - uint8_t *aper_buf; - int aper_buf_len; - TTCN_Buffer TTCN_buf; - TTCN_buf.clear(); + TTCN_Buffer buf;
- /* Encode from abstract data type into BER/DER */ - pdu.encode(RANAP__PDU__Descriptions::RANAP__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ENCODE_DER); - - aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_RANAP, &aper_buf, TTCN_buf.get_data(), TTCN_buf.get_len()); - if (aper_buf_len < 0) { - TTCN_Logger::begin_event_log2str(); - TTCN_buf.log(); - TTCN_error("fftranscode_ber2aper failed: %s", (const char *) TTCN_Logger::end_event_log2str()); - } - - /* make octetstring from output buffer */ - OCTETSTRING ret_val(aper_buf_len, aper_buf); - - /* release dynamically-allocated output buffer */ - fftranscode_free(aper_buf); - - return ret_val; + buf.clear(); + pdu.encode(RANAP__PDU__Descriptions::RANAP__PDU_descr_, buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return OCTETSTRING(buf.get_len(), buf.get_data()); }
RANAP__PDU__Descriptions::RANAP__PDU dec__RANAP__PDU(const OCTETSTRING &stream) { - uint8_t *ber_buf; - int ber_buf_len; - - /* First, decode APER + re-encode as BER */ - ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_RANAP, &ber_buf, (const unsigned char *)stream, stream.lengthof()); - if (ber_buf_len < 0) { - TTCN_error("fftranscode_aper2ber failed."); - } - - /* Then, re-encode from BER to TITAN representation */ - RANAP__PDU__Descriptions::RANAP__PDU ret_dcc; + RANAP__PDU__Descriptions::RANAP__PDU pdu; TTCN_Buffer TTCN_buf; + TTCN_buf.clear(); - TTCN_buf.put_s(ber_buf_len, ber_buf); - - ret_dcc.decode(RANAP__PDU__Descriptions::RANAP__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); - - fftranscode_free(ber_buf); - - return ret_dcc; + TTCN_buf.put_os(stream); + pdu.decode(RANAP__PDU__Descriptions::RANAP__PDU_descr_, TTCN_buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return pdu; }
} diff --git a/library/ranap/regen_makefile.sh b/library/ranap/regen_makefile.sh index 0ae1cfd..2d553b7 100755 --- a/library/ranap/regen_makefile.sh +++ b/library/ranap/regen_makefile.sh @@ -3,7 +3,3 @@ FILES="*.asn *.ttcn RANAP_EncDec.cc"
../../regen-makefile.sh $FILES - -sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile -sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile -sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile diff --git a/library/rua/RUA_EncDec.cc b/library/rua/RUA_EncDec.cc index 808e317..c702f54 100644 --- a/library/rua/RUA_EncDec.cc +++ b/library/rua/RUA_EncDec.cc @@ -1,11 +1,8 @@ - -#include <string.h> -#include <stdarg.h> #include "RUA_PDU_Descriptions.hh"
-extern "C" { -#include <fftranscode/transcode.h> -} +/* 3GPP TS 25.468, section 9.4 Message transfer syntax: + * RUA shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned Variant + * as transfer syntax as specified in ref. ITU-T Rec. X.691 */
namespace RUA__Types {
@@ -13,52 +10,24 @@
OCTETSTRING enc__RUA__PDU(const RUA__PDU__Descriptions::RUA__PDU &pdu) { - uint8_t *aper_buf; - int aper_buf_len; - TTCN_Buffer TTCN_buf; - TTCN_buf.clear(); + TTCN_Buffer buf;
- /* Encode from abstract data type into BER/DER */ - pdu.encode(RUA__PDU__Descriptions::RUA__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ENCODE_DER); - - aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_RUA, &aper_buf, TTCN_buf.get_data(), TTCN_buf.get_len()); - if (aper_buf_len < 0) { - TTCN_error("fftranscode failed."); - } - - /* make octetstring from output buffer */ - OCTETSTRING ret_val(aper_buf_len, aper_buf); - - /* release dynamically-allocated output buffer */ - fftranscode_free(aper_buf); - - return ret_val; + buf.clear(); + pdu.encode(RUA__PDU__Descriptions::RUA__PDU_descr_, buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return OCTETSTRING(buf.get_len(), buf.get_data()); }
RUA__PDU__Descriptions::RUA__PDU dec__RUA__PDU(const OCTETSTRING &stream) { - uint8_t *ber_buf; - int ber_buf_len; - - /* First, decode APER + re-encode as BER */ - ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_RUA, &ber_buf, (const unsigned char *)stream, stream.lengthof()); - if (ber_buf_len < 0) { - TTCN_error("fftranscode failed."); - } - - /* Then, re-encode from BER to TITAN representation */ - RUA__PDU__Descriptions::RUA__PDU ret_dcc; + RUA__PDU__Descriptions::RUA__PDU pdu; TTCN_Buffer TTCN_buf; + TTCN_buf.clear(); - TTCN_buf.put_s(ber_buf_len, ber_buf); - - ret_dcc.decode(RUA__PDU__Descriptions::RUA__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); - - fftranscode_free(ber_buf); - - return ret_dcc; + TTCN_buf.put_os(stream); + pdu.decode(RUA__PDU__Descriptions::RUA__PDU_descr_, TTCN_buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return pdu; }
} diff --git a/library/rua/regen_makefile.sh b/library/rua/regen_makefile.sh index 1f45203..b67ef8e 100755 --- a/library/rua/regen_makefile.sh +++ b/library/rua/regen_makefile.sh @@ -3,7 +3,3 @@ FILES="*.asn *.ttcn RUA_EncDec.cc"
../../regen-makefile.sh $FILES - -sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile -sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile -sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile diff --git a/library/s1ap/S1AP_EncDec.cc b/library/s1ap/S1AP_EncDec.cc index a17f20e..6f82b2b 100644 --- a/library/s1ap/S1AP_EncDec.cc +++ b/library/s1ap/S1AP_EncDec.cc @@ -1,11 +1,8 @@ - -#include <string.h> -#include <stdarg.h> #include "S1AP_PDU_Descriptions.hh"
-extern "C" { -#include <fftranscode/transcode.h> -} +/* 3GPP TS 36.413, section 9.4 Message transfer syntax: + * S1AP shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned Variant + * as transfer syntax as specified in ref. ITU-T Rec. X.691 */
namespace S1AP__Types {
@@ -13,52 +10,24 @@
OCTETSTRING enc__S1AP__PDU(const S1AP__PDU__Descriptions::S1AP__PDU &pdu) { - uint8_t *aper_buf; - int aper_buf_len; - TTCN_Buffer TTCN_buf; - TTCN_buf.clear(); + TTCN_Buffer buf;
- /* Encode from abstract data type into BER/DER */ - pdu.encode(S1AP__PDU__Descriptions::S1AP__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ENCODE_DER); - - aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_S1AP, &aper_buf, TTCN_buf.get_data(), TTCN_buf.get_len()); - if (aper_buf_len < 0) { - TTCN_error("fftranscode failed."); - } - - /* make octetstring from output buffer */ - OCTETSTRING ret_val(aper_buf_len, aper_buf); - - /* release dynamically-allocated output buffer */ - fftranscode_free(aper_buf); - - return ret_val; + buf.clear(); + pdu.encode(S1AP__PDU__Descriptions::S1AP__PDU_descr_, buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return OCTETSTRING(buf.get_len(), buf.get_data()); }
S1AP__PDU__Descriptions::S1AP__PDU dec__S1AP__PDU(const OCTETSTRING &stream) { - uint8_t *ber_buf; - int ber_buf_len; - - /* First, decode APER + re-encode as BER */ - ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_S1AP, &ber_buf, (const unsigned char *)stream, stream.lengthof()); - if (ber_buf_len < 0) { - TTCN_error("fftranscode failed."); - } - - /* Then, re-encode from BER to TITAN representation */ - S1AP__PDU__Descriptions::S1AP__PDU ret_dcc; + S1AP__PDU__Descriptions::S1AP__PDU pdu; TTCN_Buffer TTCN_buf; + TTCN_buf.clear(); - TTCN_buf.put_s(ber_buf_len, ber_buf); - - ret_dcc.decode(S1AP__PDU__Descriptions::S1AP__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); - - fftranscode_free(ber_buf); - - return ret_dcc; + TTCN_buf.put_os(stream); + pdu.decode(S1AP__PDU__Descriptions::S1AP__PDU_descr_, TTCN_buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return pdu; }
} diff --git a/library/s1ap/regen_makefile.sh b/library/s1ap/regen_makefile.sh index fae086c..059c6b3 100755 --- a/library/s1ap/regen_makefile.sh +++ b/library/s1ap/regen_makefile.sh @@ -3,7 +3,3 @@ FILES="*.asn *.ttcn S1AP_EncDec.cc"
../../regen-makefile.sh $FILES - -sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile -sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile -sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile diff --git a/library/sabp/SABP_EncDec.cc b/library/sabp/SABP_EncDec.cc index 3c60e82..4aa0498 100644 --- a/library/sabp/SABP_EncDec.cc +++ b/library/sabp/SABP_EncDec.cc @@ -1,11 +1,8 @@ - -#include <string.h> -#include <stdarg.h> #include "SABP_PDU_Descriptions.hh"
-extern "C" { -#include <fftranscode/transcode.h> -} +/* 3GPP TS 25.419, section 9.4 Message transfer syntax: + * SABP shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned Variant + * as transfer syntax as specified in ref. ITU-T Rec. X.691 */
namespace SABP__Types {
@@ -13,52 +10,24 @@
OCTETSTRING enc__SABP__PDU(const SABP__PDU__Descriptions::SABP__PDU &pdu) { - uint8_t *aper_buf; - int aper_buf_len; - TTCN_Buffer TTCN_buf; - TTCN_buf.clear(); + TTCN_Buffer buf;
- /* Encode from abstract data type into BER/DER */ - pdu.encode(SABP__PDU__Descriptions::SABP__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ENCODE_DER); - - aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_SABP, &aper_buf, TTCN_buf.get_data(), TTCN_buf.get_len()); - if (aper_buf_len < 0) { - TTCN_error("fftranscode failed."); - } - - /* make octetstring from output buffer */ - OCTETSTRING ret_val(aper_buf_len, aper_buf); - - /* release dynamically-allocated output buffer */ - fftranscode_free(aper_buf); - - return ret_val; + buf.clear(); + pdu.encode(SABP__PDU__Descriptions::SABP__PDU_descr_, buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return OCTETSTRING(buf.get_len(), buf.get_data()); }
SABP__PDU__Descriptions::SABP__PDU dec__SABP__PDU(const OCTETSTRING &stream) { - uint8_t *ber_buf; - int ber_buf_len; - - /* First, decode APER + re-encode as BER */ - ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_SABP, &ber_buf, (const unsigned char *)stream, stream.lengthof()); - if (ber_buf_len < 0) { - TTCN_error("fftranscode failed."); - } - - /* Then, re-encode from BER to TITAN representation */ - SABP__PDU__Descriptions::SABP__PDU ret_dcc; + SABP__PDU__Descriptions::SABP__PDU pdu; TTCN_Buffer TTCN_buf; + TTCN_buf.clear(); - TTCN_buf.put_s(ber_buf_len, ber_buf); - - ret_dcc.decode(SABP__PDU__Descriptions::SABP__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); - - fftranscode_free(ber_buf); - - return ret_dcc; + TTCN_buf.put_os(stream); + pdu.decode(SABP__PDU__Descriptions::SABP__PDU_descr_, TTCN_buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return pdu; }
} diff --git a/library/sabp/regen_makefile.sh b/library/sabp/regen_makefile.sh index 382fbd5..d53a09c 100755 --- a/library/sabp/regen_makefile.sh +++ b/library/sabp/regen_makefile.sh @@ -3,7 +3,3 @@ FILES="*.asn *.ttcn SABP_EncDec.cc"
../../regen-makefile.sh $FILES - -sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile -sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile -sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile diff --git a/library/sbcap/SBC_AP_EncDec.cc b/library/sbcap/SBC_AP_EncDec.cc index 08ee75f..26e3364 100644 --- a/library/sbcap/SBC_AP_EncDec.cc +++ b/library/sbcap/SBC_AP_EncDec.cc @@ -1,11 +1,8 @@ - -#include <string.h> -#include <stdarg.h> #include "SBC_AP_PDU_Descriptions.hh"
-extern "C" { -#include <fftranscode/transcode.h> -} +/* 3GPP TS 29.168, section 9.4 Message transfer syntax: + * SBC-AP shall use the ASN.1 Basic Packed Encoding Rules (BASIC-PER) Aligned Variant + * as transfer syntax as specified in ref. ITU-T Rec. X.691 */
namespace SBC__AP__Types {
@@ -13,52 +10,24 @@
OCTETSTRING enc__SBC__AP__PDU(const SBC__AP__PDU__Descriptions::SBC__AP__PDU &pdu) { - uint8_t *aper_buf; - int aper_buf_len; - TTCN_Buffer TTCN_buf; - TTCN_buf.clear(); + TTCN_Buffer buf;
- /* Encode from abstract data type into BER/DER */ - pdu.encode(SBC__AP__PDU__Descriptions::SBC__AP__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ENCODE_DER); - - aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_SBCAP, &aper_buf, TTCN_buf.get_data(), TTCN_buf.get_len()); - if (aper_buf_len < 0) { - TTCN_error("fftranscode failed."); - } - - /* make octetstring from output buffer */ - OCTETSTRING ret_val(aper_buf_len, aper_buf); - - /* release dynamically-allocated output buffer */ - fftranscode_free(aper_buf); - - return ret_val; + buf.clear(); + pdu.encode(SBC__AP__PDU__Descriptions::SBC__AP__PDU_descr_, buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return OCTETSTRING(buf.get_len(), buf.get_data()); }
SBC__AP__PDU__Descriptions::SBC__AP__PDU dec__SBC__AP__PDU(const OCTETSTRING &stream) { - uint8_t *ber_buf; - int ber_buf_len; - - /* First, decode APER + re-encode as BER */ - ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_SBCAP, &ber_buf, (const unsigned char *)stream, stream.lengthof()); - if (ber_buf_len < 0) { - TTCN_error("fftranscode failed."); - } - - /* Then, re-encode from BER to TITAN representation */ - SBC__AP__PDU__Descriptions::SBC__AP__PDU ret_dcc; + SBC__AP__PDU__Descriptions::SBC__AP__PDU pdu; TTCN_Buffer TTCN_buf; + TTCN_buf.clear(); - TTCN_buf.put_s(ber_buf_len, ber_buf); - - ret_dcc.decode(SBC__AP__PDU__Descriptions::SBC__AP__PDU_descr_, TTCN_buf, - TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); - - fftranscode_free(ber_buf); - - return ret_dcc; + TTCN_buf.put_os(stream); + pdu.decode(SBC__AP__PDU__Descriptions::SBC__AP__PDU_descr_, TTCN_buf, + TTCN_EncDec::CT_PER, PER_ALIGNED); + return pdu; }
} diff --git a/library/sbcap/regen_makefile.sh b/library/sbcap/regen_makefile.sh index 0cd6083..064979e 100755 --- a/library/sbcap/regen_makefile.sh +++ b/library/sbcap/regen_makefile.sh @@ -3,7 +3,3 @@ FILES="*.asn *.ttcn SBC_AP_EncDec.cc"
../../regen-makefile.sh $FILES - -sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile -sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile -sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile diff --git a/mme/regen_makefile.sh b/mme/regen_makefile.sh index 6e86346..3520296 100755 --- a/mme/regen_makefile.sh +++ b/mme/regen_makefile.sh @@ -34,4 +34,4 @@
../regen-makefile.sh -e $NAME $FILES
-sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lfftranscode -lgnutls/' Makefile +sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lgnutls/' Makefile diff --git a/msc/regen_makefile.sh b/msc/regen_makefile.sh index 081d2cb..6034e1f 100755 --- a/msc/regen_makefile.sh +++ b/msc/regen_makefile.sh @@ -46,4 +46,4 @@
../regen-makefile.sh -e $NAME $FILES
-sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lfftranscode -lssl/' Makefile +sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lssl/' Makefile diff --git a/s1gw/regen_makefile.sh b/s1gw/regen_makefile.sh index 7eef51b..50cce0e 100755 --- a/s1gw/regen_makefile.sh +++ b/s1gw/regen_makefile.sh @@ -20,7 +20,3 @@ "
../regen-makefile.sh -e $NAME $FILES - -sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile -sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile -sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile diff --git a/sgsn/regen_makefile.sh b/sgsn/regen_makefile.sh index 5c9c5ea..1f89dee 100755 --- a/sgsn/regen_makefile.sh +++ b/sgsn/regen_makefile.sh @@ -33,5 +33,3 @@ "
../regen-makefile.sh -e $NAME $FILES - -sed -i -e 's/^LINUX_LIBS = -lxml2 -lsctp/LINUX_LIBS = -lxml2 -lsctp -lfftranscode/' Makefile