From fe3df992fefbbf23c2b123a378aa15ff55996c06 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 16 Aug 2018 14:45:49 +0200 Subject: [PATCH] RSPRO.asn: Add optional ClientId field to ConnectClientReq This is required when the client connects to the bankd, so the bankd can figure out who the client is. Change-Id: Ie87b775d2996a62128e2506ad4b0e48e2f704561 --- asn1/RSPRO.asn | 1 + include/osmocom/rspro/ConnectClientReq.h | 2 ++ src/rspro/ConnectClientReq.c | 18 ++++++++++++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/asn1/RSPRO.asn b/asn1/RSPRO.asn index b530887..75a36c7 100644 --- a/asn1/RSPRO.asn +++ b/asn1/RSPRO.asn @@ -151,6 +151,7 @@ ConnectBankRes ::= SEQUENCE { ConnectClientReq ::= SEQUENCE { -- identity of the client that is connecting to the server/bankd identity ComponentIdentity, + clientId ClientId OPTIONAL, -- old identity, if any ... } ConnectClientRes ::= SEQUENCE { diff --git a/include/osmocom/rspro/ConnectClientReq.h b/include/osmocom/rspro/ConnectClientReq.h index 16eebec..46c2d0e 100644 --- a/include/osmocom/rspro/ConnectClientReq.h +++ b/include/osmocom/rspro/ConnectClientReq.h @@ -12,6 +12,7 @@ /* Including external dependencies */ #include +#include #include #ifdef __cplusplus @@ -21,6 +22,7 @@ extern "C" { /* ConnectClientReq */ typedef struct ConnectClientReq { ComponentIdentity_t identity; + ClientId_t *clientId /* OPTIONAL */; /* * This type is extensible, * possible extensions are below. diff --git a/src/rspro/ConnectClientReq.c b/src/rspro/ConnectClientReq.c index 84decb3..7b83b19 100644 --- a/src/rspro/ConnectClientReq.c +++ b/src/rspro/ConnectClientReq.c @@ -16,21 +16,31 @@ static asn_TYPE_member_t asn_MBR_ConnectClientReq_1[] = { 0, "identity" }, + { ATF_POINTER, 1, offsetof(struct ConnectClientReq, clientId), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ClientId, + 0, /* Defer constraints checking to the member type */ + 0, /* PER is not compiled, use -gen-PER */ + 0, + "clientId" + }, }; static const ber_tlv_tag_t asn_DEF_ConnectClientReq_tags_1[] = { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) }; static const asn_TYPE_tag2member_t asn_MAP_ConnectClientReq_tag2el_1[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* clientId */ { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* identity */ }; static asn_SEQUENCE_specifics_t asn_SPC_ConnectClientReq_specs_1 = { sizeof(struct ConnectClientReq), offsetof(struct ConnectClientReq, _asn_ctx), asn_MAP_ConnectClientReq_tag2el_1, - 1, /* Count of tags in the map */ + 2, /* Count of tags in the map */ 0, 0, 0, /* Optional elements (not needed) */ - 0, /* Start extensions */ - 2 /* Stop extensions */ + 1, /* Start extensions */ + 3 /* Stop extensions */ }; asn_TYPE_descriptor_t asn_DEF_ConnectClientReq = { "ConnectClientReq", @@ -53,7 +63,7 @@ asn_TYPE_descriptor_t asn_DEF_ConnectClientReq = { /sizeof(asn_DEF_ConnectClientReq_tags_1[0]), /* 1 */ 0, /* No PER visible constraints */ asn_MBR_ConnectClientReq_1, - 1, /* Elements count */ + 2, /* Elements count */ &asn_SPC_ConnectClientReq_specs_1 /* Additional specs */ };