bankd: Add client.id to bankd_worker

Change-Id: I1461f626b579d92621df21b53bbbe8062fb97d72
This commit is contained in:
Harald Welte 2018-08-16 14:44:37 +02:00
parent 7f684a0021
commit cce2aadbb3
2 changed files with 34 additions and 3 deletions

View File

@ -103,6 +103,7 @@ struct bankd_worker {
int fd; int fd;
struct sockaddr_storage peer_addr; struct sockaddr_storage peer_addr;
socklen_t peer_addr_len; socklen_t peer_addr_len;
unsigned int id;
} client; } client;
struct { struct {

View File

@ -196,12 +196,41 @@ static int blocking_ipa_read(int fd, uint8_t *buf, unsigned int buf_size)
return len; return len;
} }
static int worker_handle_connectClientReq(struct bankd_worker *worker, const RsproPDU_t *pdu)
{
OSMO_ASSERT(pdu->msg.present == RsproPDUchoice_PR_connectClientReq);
const struct ComponentIdentity *cid = &pdu->msg.choice.connectClientReq.identity;
LOGW(worker, "connectClientReq(T=%lu, N='%s', SW='%s', VER='%s')\n",
cid->type, cid->name.buf, cid->software.buf, cid->swVersion.buf);
/* FIXME: store somewhere? */
if (worker->state != BW_ST_CONN_WAIT_ID) {
LOGW(worker, "Unexpected connectClientReq\n");
return -102;
}
if (!pdu->msg.choice.connectClientReq.clientId) {
LOGW(worker, "missing clientID, aborting\n");
return -103;
}
worker->client.id = *pdu->msg.choice.connectClientReq.clientId;
worker_set_state(worker, BW_ST_CONN_CLIENT);
/* FIXME: resolve mapping */
return 0;
}
/* handle one incoming RSPRO message from a client inside a worker thread */ /* handle one incoming RSPRO message from a client inside a worker thread */
static int worker_handle_rspro(struct bankd_worker *worker, const RsproPDU_t *pdu) static int worker_handle_rspro(struct bankd_worker *worker, const RsproPDU_t *pdu)
{ {
int rc = -100;
switch (pdu->msg.present) { switch (pdu->msg.present) {
case RsproPDUchoice_PR_connectClientReq: case RsproPDUchoice_PR_connectClientReq:
/* FIXME */ rc = worker_handle_connectClientReq(worker, pdu);
break; break;
case RsproPDUchoice_PR_tpduModemToCard: case RsproPDUchoice_PR_tpduModemToCard:
/* FIXME */ /* FIXME */
@ -210,10 +239,11 @@ static int worker_handle_rspro(struct bankd_worker *worker, const RsproPDU_t *pd
/* FIXME */ /* FIXME */
break; break;
default: default:
return -100; rc = -101;
break;
} }
return 0; return rc;
} }
/* body of the main transceive loop */ /* body of the main transceive loop */