This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Harald Welte gerrit-no-reply at lists.osmocom.orgReview at https://gerrit.osmocom.org/2082 lapd_core: Use 'struct value_string' for LAPD state names We don't really use state numbers without bounds check into string tables since March 2010, when value_string became part of libosmocore. It's time to catch up, 7 years later... Change-Id: I1dac7b4cb441a1119cc167112521e8b8aae62e63 --- M src/gsm/lapd_core.c 1 file changed, 33 insertions(+), 28 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/82/2082/1 diff --git a/src/gsm/lapd_core.c b/src/gsm/lapd_core.c index 5ee88a4..0cc28a6 100644 --- a/src/gsm/lapd_core.c +++ b/src/gsm/lapd_core.c @@ -180,18 +180,23 @@ } /* Figure B.2/Q.921 */ -const char *lapd_state_names[] = { - "LAPD_STATE_NULL", - "LAPD_STATE_TEI_UNASS", - "LAPD_STATE_ASS_TEI_WAIT", - "LAPD_STATE_EST_TEI_WAIT", - "LAPD_STATE_IDLE", - "LAPD_STATE_SABM_SENT", - "LAPD_STATE_DISC_SENT", - "LAPD_STATE_MF_EST", - "LAPD_STATE_TIMER_RECOV", - +const struct value_string lapd_state_names[] = { + OSMO_VALUE_STRING(LAPD_STATE_NULL), + OSMO_VALUE_STRING(LAPD_STATE_TEI_UNASS), + OSMO_VALUE_STRING(LAPD_STATE_ASS_TEI_WAIT), + OSMO_VALUE_STRING(LAPD_STATE_EST_TEI_WAIT), + OSMO_VALUE_STRING(LAPD_STATE_IDLE), + OSMO_VALUE_STRING(LAPD_STATE_SABM_SENT), + OSMO_VALUE_STRING(LAPD_STATE_DISC_SENT), + OSMO_VALUE_STRING(LAPD_STATE_MF_EST), + OSMO_VALUE_STRING(LAPD_STATE_TIMER_RECOV), + { 0, NULL } }; + +static inline const char *lapd_state_name(enum lapd_state state) +{ + return get_value_string(lapd_state_names, state); +} static void lapd_start_t200(struct lapd_datalink *dl) { @@ -228,7 +233,7 @@ static void lapd_dl_newstate(struct lapd_datalink *dl, uint32_t state) { LOGP(DLLAPD, LOGL_INFO, "new state %s -> %s (dl=%p)\n", - lapd_state_names[dl->state], lapd_state_names[state], dl); + lapd_state_name(dl->state), lapd_state_name(state), dl); if (state != LAPD_STATE_MF_EST && dl->state == LAPD_STATE_MF_EST) { /* stop T203 on leaving MF EST state, if running */ @@ -381,7 +386,7 @@ LOGP(DLLAPD, LOGL_NOTICE, "sending MDL-ERROR-IND cause %d from state %s (dl=%p)\n", - cause, lapd_state_names[dl->state], dl); + cause, lapd_state_name(dl->state), dl); osmo_prim_init(&dp.oph, 0, PRIM_MDL_ERROR, PRIM_OP_INDICATION, NULL); dp.u.error_ind.cause = cause; return dl->send_dlsap(&dp, lctx); @@ -550,7 +555,7 @@ struct lapd_datalink *dl = data; LOGP(DLLAPD, LOGL_INFO, "Timeout T200 state=%s (dl=%p)\n", - lapd_state_names[dl->state], dl); + lapd_state_name(dl->state), dl); switch (dl->state) { case LAPD_STATE_SABM_SENT: @@ -669,7 +674,7 @@ break; default: LOGP(DLLAPD, LOGL_INFO, "T200 expired in unexpected " - "dl->state %s (dl=%p)\n", lapd_state_names[dl->state], dl); + "dl->state %s (dl=%p)\n", lapd_state_name(dl->state), dl); } } @@ -679,7 +684,7 @@ struct lapd_datalink *dl = data; LOGP(DLLAPD, LOGL_INFO, "Timeout T203 state=%s (dl=%p)\n", - lapd_state_names[dl->state], dl); + lapd_state_name(dl->state), dl); if (dl->state != LAPD_STATE_MF_EST) { LOGP(DLLAPD, LOGL_ERROR, "T203 fired outside MF EST state, " @@ -796,7 +801,7 @@ op = PRIM_OP_INDICATION; LOGP(DLLAPD, LOGL_INFO, "SABM(E) received in state %s (dl=%p)\n", - lapd_state_names[dl->state], dl); + lapd_state_name(dl->state), dl); /* 5.7.1 */ dl->seq_err_cond = 0; /* G.2.2 Wrong value of the C/R bit */ @@ -843,7 +848,7 @@ if (!dl->cont_res) { LOGP(DLLAPD, LOGL_INFO, "SABM command not " "allowed in state %s (dl=%p)\n", - lapd_state_names[dl->state], dl); + lapd_state_name(dl->state), dl); mdl_error(MDL_CAUSE_SABM_MF, lctx); msgb_free(msg); return 0; @@ -881,7 +886,7 @@ if (dl->tx_hist[0].msg && dl->tx_hist[0].msg->len) { LOGP(DLLAPD, LOGL_NOTICE, "SABM not allowed " "during contention resolution (state=%s, dl=%p)\n", - lapd_state_names[dl->state], dl); + lapd_state_name(dl->state), dl); mdl_error(MDL_CAUSE_SABM_INFO_NOTALL, lctx); } lapd_send_ua(lctx, length, msg->l3h); @@ -923,7 +928,7 @@ break; case LAPD_U_DM: LOGP(DLLAPD, LOGL_INFO, "DM received in state %s (dl=%p)\n", - lapd_state_names[dl->state], dl); + lapd_state_name(dl->state), dl); /* G.2.2 Wrong value of the C/R bit */ if (lctx->cr == dl->cr.rem2loc.cmd) { LOGP(DLLAPD, LOGL_ERROR, @@ -1046,7 +1051,7 @@ op = PRIM_OP_INDICATION; LOGP(DLLAPD, LOGL_INFO, "DISC received in state %s (dl=%p)\n", - lapd_state_names[dl->state], dl); + lapd_state_name(dl->state), dl); /* flush tx and send buffers */ lapd_dl_flush_tx(dl); lapd_dl_flush_send(dl); @@ -1119,7 +1124,7 @@ break; case LAPD_U_UA: LOGP(DLLAPD, LOGL_INFO, "UA received in state %s (dl=%p)\n", - lapd_state_names[dl->state], dl); + lapd_state_name(dl->state), dl); /* G.2.2 Wrong value of the C/R bit */ if (lctx->cr == dl->cr.rem2loc.cmd) { LOGP(DLLAPD, LOGL_ERROR, "UA indicates command " @@ -1279,7 +1284,7 @@ switch (lctx->s_u) { case LAPD_S_RR: LOGP(DLLAPD, LOGL_INFO, "RR received in state %s (dl=%p)\n", - lapd_state_names[dl->state], dl); + lapd_state_name(dl->state), dl); /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */ lapd_acknowledge(lctx); @@ -1323,7 +1328,7 @@ break; case LAPD_S_RNR: LOGP(DLLAPD, LOGL_INFO, "RNR received in state %s (dl=%p)\n", - lapd_state_names[dl->state], dl); + lapd_state_name(dl->state), dl); /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */ lapd_acknowledge(lctx); @@ -1367,7 +1372,7 @@ break; case LAPD_S_REJ: LOGP(DLLAPD, LOGL_INFO, "REJ received in state %s (dl=%p)\n", - lapd_state_names[dl->state], dl); + lapd_state_name(dl->state), dl); /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */ lapd_acknowledge(lctx); @@ -1491,7 +1496,7 @@ int rc; LOGP(DLLAPD, LOGL_INFO, "I received in state %s on SAPI(%u) (dl=%p)\n", - lapd_state_names[dl->state], lctx->sapi, dl); + lapd_state_name(dl->state), lctx->sapi, dl); /* G.2.2 Wrong value of the C/R bit */ if (lctx->cr == dl->cr.rem2loc.resp) { @@ -2223,13 +2228,13 @@ if (i == L2DOWNSLLEN) { LOGP(DLLAPD, LOGL_NOTICE, "Message %u/%u unhandled at this " "state %s. (dl=%p)\n", dp->oph.primitive, - dp->oph.operation, lapd_state_names[dl->state], dl); + dp->oph.operation, lapd_state_name(dl->state), dl); msgb_free(msg); return 0; } LOGP(DLLAPD, LOGL_INFO, "Message %s received in state %s (dl=%p)\n", - l2downstatelist[i].name, lapd_state_names[dl->state], dl); + l2downstatelist[i].name, lapd_state_name(dl->state), dl); rc = l2downstatelist[i].rout(dp, lctx); -- To view, visit https://gerrit.osmocom.org/2082 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1dac7b4cb441a1119cc167112521e8b8aae62e63 Gerrit-PatchSet: 1 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Harald Welte <laforge at gnumonks.org>