aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte (local) <laflocal@hanuman.gnumonks.org>2009-12-26 19:43:11 +0100
committerHarald Welte <laforge@gnumonks.org>2009-12-26 22:47:55 +0100
commit240ce88185dc69265e4015cdfdc1a7af41006b8e (patch)
tree5b5d0a2bafa9edf2bac2b84acc8b6771d762c1d9
parent441e483bd4350e8e97c466d25865883eee2e5411 (diff)
add 'get_string_value()' as inverse function of 'get_value_string()'
-rw-r--r--openbsc/include/openbsc/gsm_data.h1
-rw-r--r--openbsc/src/gsm_data.c13
2 files changed, 14 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index af72e4765..103466c98 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -9,6 +9,7 @@ struct value_string {
};
const char *get_value_string(const struct value_string *vs, u_int32_t val);
+int get_string_value(const struct value_string *vs, const char *str);
enum gsm_band {
GSM_BAND_400,
diff --git a/openbsc/src/gsm_data.c b/openbsc/src/gsm_data.c
index e2f56d539..774a1ce2d 100644
--- a/openbsc/src/gsm_data.c
+++ b/openbsc/src/gsm_data.c
@@ -45,6 +45,19 @@ const char *get_value_string(const struct value_string *vs, u_int32_t val)
return "unknown";
}
+int get_string_value(const struct value_string *vs, const char *str)
+{
+ int i;
+
+ for (i = 0;; i++) {
+ if (vs[i].value == 0 && vs[i].str == NULL)
+ break;
+ if (!strcasecmp(vs[i].str, str))
+ return vs[i].value;
+ }
+ return -EINVAL;
+}
+
void set_ts_e1link(struct gsm_bts_trx_ts *ts, u_int8_t e1_nr,
u_int8_t e1_ts, u_int8_t e1_ts_ss)
{