db: Add issued/use_count/key_seq fields to AuthTuples
Theses will be useful to know if we can reuse the tuples or if
we should renew. The 'issued' is currently purely informative.
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index cc023b3..a50d9f2 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -605,6 +605,8 @@
};
struct gsm_auth_tuple {
+ int use_count;
+ int key_seq;
u_int8_t rand[16];
u_int8_t sres[8];
u_int8_t kc[8];
diff --git a/openbsc/src/db.c b/openbsc/src/db.c
index bfc7d93..5ad951a 100644
--- a/openbsc/src/db.c
+++ b/openbsc/src/db.c
@@ -133,9 +133,12 @@
"CREATE TABLE IF NOT EXISTS AuthTuples ("
"id INTEGER PRIMARY KEY AUTOINCREMENT, "
"subscriber_id NUMERIC UNIQUE NOT NULL, "
- "rand BLOB, "
- "sres BLOB, "
- "kc BLOB "
+ "issued TIMESTAMP NOT NULL, "
+ "use_count INTEGER NOT NULL DEFAULT 0, "
+ "key_seq INTEGER NOT NULL, "
+ "rand BLOB NOT NULL, "
+ "sres BLOB NOT NULL, "
+ "kc BLOB NOT NULL "
")",
};
@@ -383,6 +386,9 @@
memset(atuple, 0, sizeof(atuple));
+ atuple->use_count = dbi_result_get_ulonglong(result, "use_count");
+ atuple->key_seq = dbi_result_get_ulonglong(result, "key_seq");
+
len = dbi_result_get_field_length(result, "rand");
if (len != sizeof(atuple->rand))
goto err_size;