RSPRO: Use ClientSlot in ConnectClientReq, ConfigClientReq
Change-Id: I33b44009eea338627b0ccbe69b9e4114e4fb85d8laforge/bankd-fsm-mistake
parent
415e8f66ce
commit
371d026c6b
|
@ -151,7 +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
|
||||
clientSlot ClientSlot OPTIONAL, -- old identity, if any
|
||||
...
|
||||
}
|
||||
ConnectClientRes ::= SEQUENCE {
|
||||
|
@ -186,7 +186,7 @@ RemoveMappingRes ::= SEQUENCE {
|
|||
-- SERVER->CLIENT: set configuration (client ID and BANK IP/Port)
|
||||
ConfigClientReq ::= SEQUENCE {
|
||||
-- server-allocated assignment of a client ID
|
||||
clientId ClientId,
|
||||
clientSlot ClientSlot,
|
||||
-- bank to which the client shall connect
|
||||
bankd IpPort,
|
||||
...
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#include <asn_application.h>
|
||||
|
||||
/* Including external dependencies */
|
||||
#include <osmocom/rspro/ClientId.h>
|
||||
#include <osmocom/rspro/ClientSlot.h>
|
||||
#include <osmocom/rspro/IpPort.h>
|
||||
#include <constr_SEQUENCE.h>
|
||||
|
||||
|
@ -21,7 +21,7 @@ extern "C" {
|
|||
|
||||
/* ConfigClientReq */
|
||||
typedef struct ConfigClientReq {
|
||||
ClientId_t clientId;
|
||||
ClientSlot_t clientSlot;
|
||||
IpPort_t bankd;
|
||||
/*
|
||||
* This type is extensible,
|
||||
|
|
|
@ -12,17 +12,19 @@
|
|||
|
||||
/* Including external dependencies */
|
||||
#include <osmocom/rspro/ComponentIdentity.h>
|
||||
#include <osmocom/rspro/ClientId.h>
|
||||
#include <constr_SEQUENCE.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Forward declarations */
|
||||
struct ClientSlot;
|
||||
|
||||
/* ConnectClientReq */
|
||||
typedef struct ConnectClientReq {
|
||||
ComponentIdentity_t identity;
|
||||
ClientId_t *clientId /* OPTIONAL */;
|
||||
struct ClientSlot *clientSlot /* OPTIONAL */;
|
||||
/*
|
||||
* This type is extensible,
|
||||
* possible extensions are below.
|
||||
|
@ -39,5 +41,8 @@ extern asn_TYPE_descriptor_t asn_DEF_ConnectClientReq;
|
|||
}
|
||||
#endif
|
||||
|
||||
/* Referred external types */
|
||||
#include <osmocom/rspro/ClientSlot.h>
|
||||
|
||||
#endif /* _ConnectClientReq_H_ */
|
||||
#include <asn_internal.h>
|
||||
|
|
|
@ -103,7 +103,7 @@ struct bankd_worker {
|
|||
int fd;
|
||||
struct sockaddr_storage peer_addr;
|
||||
socklen_t peer_addr_len;
|
||||
unsigned int id;
|
||||
struct client_slot clslot;
|
||||
} client;
|
||||
|
||||
struct {
|
||||
|
|
|
@ -215,11 +215,12 @@ static int worker_handle_connectClientReq(struct bankd_worker *worker, const Rsp
|
|||
return -102;
|
||||
}
|
||||
|
||||
if (!pdu->msg.choice.connectClientReq.clientId) {
|
||||
if (!pdu->msg.choice.connectClientReq.clientSlot) {
|
||||
LOGW(worker, "missing clientID, aborting\n");
|
||||
return -103;
|
||||
}
|
||||
worker->client.id = *pdu->msg.choice.connectClientReq.clientId;
|
||||
worker->client.clslot.client_id = pdu->msg.choice.connectClientReq.clientSlot->clientId;
|
||||
worker->client.clslot.slot_nr = pdu->msg.choice.connectClientReq.clientSlot->slotNr;
|
||||
worker_set_state(worker, BW_ST_CONN_CLIENT);
|
||||
|
||||
/* FIXME: resolve mapping */
|
||||
|
@ -367,6 +368,7 @@ static void *worker_main(void *arg)
|
|||
close(worker->client.fd);
|
||||
memset(&worker->client.peer_addr, 0, sizeof(worker->client.peer_addr));
|
||||
worker->client.fd = -1;
|
||||
worker->client.clslot.client_id = worker->client.clslot.slot_nr = 0;
|
||||
}
|
||||
|
||||
pthread_cleanup_pop(1);
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
#include <osmocom/rspro/ConfigClientReq.h>
|
||||
|
||||
static asn_TYPE_member_t asn_MBR_ConfigClientReq_1[] = {
|
||||
{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientReq, clientId),
|
||||
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
|
||||
{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientReq, clientSlot),
|
||||
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
|
||||
0,
|
||||
&asn_DEF_ClientId,
|
||||
&asn_DEF_ClientSlot,
|
||||
0, /* Defer constraints checking to the member type */
|
||||
0, /* PER is not compiled, use -gen-PER */
|
||||
0,
|
||||
"clientId"
|
||||
"clientSlot"
|
||||
},
|
||||
{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientReq, bankd),
|
||||
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
|
||||
|
@ -30,8 +30,8 @@ static const ber_tlv_tag_t asn_DEF_ConfigClientReq_tags_1[] = {
|
|||
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
|
||||
};
|
||||
static const asn_TYPE_tag2member_t asn_MAP_ConfigClientReq_tag2el_1[] = {
|
||||
{ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* clientId */
|
||||
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* bankd */
|
||||
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* clientSlot */
|
||||
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* bankd */
|
||||
};
|
||||
static asn_SEQUENCE_specifics_t asn_SPC_ConfigClientReq_specs_1 = {
|
||||
sizeof(struct ConfigClientReq),
|
||||
|
|
|
@ -16,22 +16,22 @@ static asn_TYPE_member_t asn_MBR_ConnectClientReq_1[] = {
|
|||
0,
|
||||
"identity"
|
||||
},
|
||||
{ ATF_POINTER, 1, offsetof(struct ConnectClientReq, clientId),
|
||||
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
|
||||
{ ATF_POINTER, 1, offsetof(struct ConnectClientReq, clientSlot),
|
||||
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
|
||||
0,
|
||||
&asn_DEF_ClientId,
|
||||
&asn_DEF_ClientSlot,
|
||||
0, /* Defer constraints checking to the member type */
|
||||
0, /* PER is not compiled, use -gen-PER */
|
||||
0,
|
||||
"clientId"
|
||||
"clientSlot"
|
||||
},
|
||||
};
|
||||
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 */
|
||||
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* identity */
|
||||
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* clientSlot */
|
||||
};
|
||||
static asn_SEQUENCE_specifics_t asn_SPC_ConnectClientReq_specs_1 = {
|
||||
sizeof(struct ConnectClientReq),
|
||||
|
|
|
@ -127,13 +127,13 @@ RsproPDU_t *rspro_gen_CreateMappingReq(const ClientSlot_t *client, const BankSlo
|
|||
return pdu;
|
||||
}
|
||||
|
||||
RsproPDU_t *rspro_gen_ConfigClientReq(uint16_t client_id, uint32_t ip, uint16_t port)
|
||||
RsproPDU_t *rspro_gen_ConfigClientReq(const ClientSlot_t *client, uint32_t ip, uint16_t port)
|
||||
{
|
||||
RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));
|
||||
if (!pdu)
|
||||
return NULL;
|
||||
pdu->msg.present = RsproPDUchoice_PR_configClientReq;
|
||||
pdu->msg.choice.configClientReq.clientId = client_id;
|
||||
pdu->msg.choice.configClientReq.clientSlot = *client;
|
||||
fill_ip4_port(&pdu->msg.choice.configClientReq.bankd, ip, port);
|
||||
|
||||
return pdu;
|
||||
|
|
Loading…
Reference in New Issue