aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-06-13 12:38:35 +0800
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-06-13 12:38:35 +0800
commitc9b7d74a087fa136629ab1419df5af199dce5ec2 (patch)
tree18cd351f5fa363b4950119ce98ef931a1b3fff06
parent42a4e9a52de0576aa293f0a3fe085e91480d488d (diff)
channel: Keep track on when a channel got allocated.
This can help to detect 'stale' channels in a network.
-rw-r--r--openbsc/include/openbsc/gsm_data.h3
-rw-r--r--openbsc/src/chan_alloc.c4
2 files changed, 7 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index a3ebbbc9f..e0d33707c 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -288,6 +288,9 @@ struct gsm_lchan {
/* release reason */
u_int8_t release_reason;
+
+ /* timestamp */
+ struct timeval alloc_time;
};
struct gsm_e1_subslot {
diff --git a/openbsc/src/chan_alloc.c b/openbsc/src/chan_alloc.c
index 623069ff0..c6d4e9bcc 100644
--- a/openbsc/src/chan_alloc.c
+++ b/openbsc/src/chan_alloc.c
@@ -25,6 +25,7 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
+#include <time.h>
#include <openbsc/gsm_data.h>
#include <openbsc/chan_alloc.h>
@@ -287,6 +288,9 @@ struct gsm_lchan *lchan_alloc(struct gsm_bts *bts, enum gsm_chan_t type,
memset(&lchan->conn, 0, sizeof(lchan->conn));
lchan->conn.lchan = lchan;
lchan->conn.bts = lchan->ts->trx->bts;
+
+ /* set the alloc time */
+ gettimeofday(&lchan->alloc_time, NULL);
} else {
struct challoc_signal_data sig;
sig.bts = bts;