libosmo-asn1-mapの C コードを使用して、GSM_MAP プロトコルの実装を取得しました。次に、「 Send authentication Info」メッセージをエンコードしようとします。3GPP TS 29.002で言及されているように、このメッセージには必須部分 (「imsi」など) とオプション部分 (「requestingNodeType」など) が含まれています。
/* SendAuthenticationInfoArg */
typedef struct SendAuthenticationInfoArg {
IMSI_t imsi;
NumberOfRequestedVectors_t numberOfRequestedVectors;
NULL_t *segmentationProhibited /* OPTIONAL */;
NULL_t *immediateResponsePreferred /* OPTIONAL */;
struct Re_synchronisationInfo *re_synchronisationInfo /* OPTIONAL */;
struct ExtensionContainer *extensionContainer /* OPTIONAL */;
/*
* This type is extensible,
* possible extensions are below.
*/
RequestingNodeType_t *requestingNodeType /* OPTIONAL */;
PLMN_Id_t *requestingPLMN_Id /* OPTIONAL */;
NumberOfRequestedVectors_t *numberOfRequestedAdditional_Vectors /* OPTIONAL */;
NULL_t *additionalVectorsAreForEPS /* OPTIONAL */;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} SendAuthenticationInfoArg_t;
osmo-tcap-mapプロジェクトから着想を得た次の C コードを使用しました。
SendAuthenticationInfoArg_t ula;
memset(&ula, 0, sizeof(ula));
ASN1Common::OCTET_STRING_fromRevVal(&ula.imsi, 202015604083166);
ula.requestingNodeType = 0;
ula.numberOfRequestedVectors = 5;
xer_fprint(stdout, &asn_DEF_SendAuthenticationInfoArg, &ula);
ただし、「 requestingNodeType」が初期化されている間、XER 出力にはオプションの部分はありません。
<SendAuthenticationInfoArg>
<imsi>02 02 51 06 04 38 61 F6</imsi>
<numberOfRequestedVectors>5</numberOfRequestedVectors>
</SendAuthenticationInfoArg>
オプション部分を有効にするにはどうすればよいですか (つまり、メッセージに「requestingNodeType」を追加します)?