From e21bdea501d3c077f2148588091790def5bd0163 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sun, 16 May 2010 02:06:11 +0800 Subject: [nat] Use and print the connection type of a SCCP connection. --- openbsc/include/openbsc/bsc_nat.h | 5 +++++ openbsc/src/nat/bsc_nat.c | 1 + openbsc/src/nat/bsc_nat_utils.c | 12 ++++++++++++ openbsc/src/nat/bsc_nat_vty.c | 3 ++- 4 files changed, 20 insertions(+), 1 deletion(-) (limited to 'openbsc') diff --git a/openbsc/include/openbsc/bsc_nat.h b/openbsc/include/openbsc/bsc_nat.h index b9a8c60f0..99a3aa6b7 100644 --- a/openbsc/include/openbsc/bsc_nat.h +++ b/openbsc/include/openbsc/bsc_nat.h @@ -124,6 +124,9 @@ struct sccp_connections { struct sccp_source_reference remote_ref; int has_remote_ref; + /* status */ + int con_type; + /* GSM audio handling. That is 32 * multiplex + ts */ int crcx; int msc_timeslot; @@ -254,6 +257,8 @@ void bsc_nat_set_msc_ip(struct bsc_nat *bsc, const char *ip); void sccp_connection_destroy(struct sccp_connections *); void bsc_close_connection(struct bsc_connection *); +const char *bsc_con_type_to_string(int type); + /** * parse the given message into the above structure */ diff --git a/openbsc/src/nat/bsc_nat.c b/openbsc/src/nat/bsc_nat.c index 59257f4a7..3b10b9a3a 100644 --- a/openbsc/src/nat/bsc_nat.c +++ b/openbsc/src/nat/bsc_nat.c @@ -611,6 +611,7 @@ static int forward_sccp_to_msc(struct bsc_connection *bsc, struct msgb *msg) if (create_sccp_src_ref(bsc, msg, parsed) != 0) goto exit2; con = patch_sccp_src_ref_to_msc(msg, parsed, bsc); + con->con_type = con_type; break; case SCCP_MSG_TYPE_RLSD: case SCCP_MSG_TYPE_CREF: diff --git a/openbsc/src/nat/bsc_nat_utils.c b/openbsc/src/nat/bsc_nat_utils.c index 8083c6ad1..edc398ab9 100644 --- a/openbsc/src/nat/bsc_nat_utils.c +++ b/openbsc/src/nat/bsc_nat_utils.c @@ -390,3 +390,15 @@ void bsc_parse_reg(void *ctx, regex_t *reg, char **imsi, int argc, const char ** } } +static const char *con_types [] = { + [NAT_CON_TYPE_NONE] = "n/a", + [NAT_CON_TYPE_LU] = "Location Update", + [NAT_CON_TYPE_CM_SERV_REQ] = "CM Serv Req", + [NAT_CON_TYPE_PAG_RESP] = "Paging Response", + [NAT_CON_TYPE_OTHER] = "Other", +}; + +const char *bsc_con_type_to_string(int type) +{ + return con_types[type]; +} diff --git a/openbsc/src/nat/bsc_nat_vty.c b/openbsc/src/nat/bsc_nat_vty.c index 3e572bae5..56cd3c40a 100644 --- a/openbsc/src/nat/bsc_nat_vty.c +++ b/openbsc/src/nat/bsc_nat_vty.c @@ -95,7 +95,7 @@ DEFUN(show_sccp, show_sccp_cmd, "show sccp connections", vty_out(vty, "Listing all opening SCCP connections%s", VTY_NEWLINE); llist_for_each_entry(con, &_nat->sccp_connections, list_entry) { - vty_out(vty, "For BSC Nr: %d lac: %d; BSC ref: 0x%x; MUX ref: 0x%x; Network has ref: %d ref: 0x%x MSC/BSC mux: 0x%x/0x%x%s", + vty_out(vty, "For BSC Nr: %d lac: %d; BSC ref: 0x%x; MUX ref: 0x%x; Network has ref: %d ref: 0x%x MSC/BSC mux: 0x%x/0x%x type: %s%s", con->bsc->cfg ? con->bsc->cfg->nr : -1, con->bsc->cfg ? con->bsc->cfg->lac : -1, sccp_src_ref_to_int(&con->real_ref), @@ -103,6 +103,7 @@ DEFUN(show_sccp, show_sccp_cmd, "show sccp connections", con->has_remote_ref, sccp_src_ref_to_int(&con->remote_ref), con->msc_timeslot, con->bsc_timeslot, + bsc_con_type_to_string(con->con_type), VTY_NEWLINE); } -- cgit v1.2.3