diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-08-18 01:03:44 +0200 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-08-18 03:21:22 +0200 |
commit | 4d8eb4cbd7e7ecc1ad04e3b38ab5121dca2580b1 (patch) | |
tree | 1fd24ce48dc3989e054ed9435c871952ce72d710 /src/hnbgw_vty.c | |
parent | 1d03f19e06ae5ca51e3f37fa01c6585df6d8ad26 (diff) |
hnbgw: move vty commands out to new hnbgw_vty.c
Pass g_hnb_gw and tall_hnb_ctx to hnbgw_vty_init() as they are no longer
statically available.
Change-Id: If85c1b97a240bd1dcf9f367ea6fca857d542ab22
Diffstat (limited to 'src/hnbgw_vty.c')
-rw-r--r-- | src/hnbgw_vty.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/hnbgw_vty.c b/src/hnbgw_vty.c new file mode 100644 index 0000000..f29b849 --- /dev/null +++ b/src/hnbgw_vty.c @@ -0,0 +1,87 @@ +/* HNB-GW interface to quagga VTY */ + +/* (C) 2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de> + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#include <osmocom/vty/command.h> + +#include "hnbgw.h" +#include "context_map.h" + +static void *tall_hnb_ctx = NULL; +static struct hnb_gw *g_hnb_gw = NULL; + +static void vty_dump_hnb_info(struct vty *vty, struct hnb_context *hnb) +{ + struct hnbgw_context_map *map; + + vty_out(vty, "HNB \"%s\" MCC %u MNC %u LAC %u RAC %u SAC %u CID %u%s", hnb->identity_info, + hnb->id.mcc, hnb->id.mnc, hnb->id.lac, hnb->id.rac, hnb->id.sac, hnb->id.cid, + VTY_NEWLINE); + vty_out(vty, " HNBAP ID %u RUA ID %u%s", hnb->hnbap_stream, hnb->rua_stream, VTY_NEWLINE); + + llist_for_each_entry(map, &hnb->map_list, hnb_list) { + vty_out(vty, " Map %u->%u (RUA->SUA) cnlink=%p state=%u%s", map->rua_ctx_id, map->scu_conn_id, + map->cn_link, map->state, VTY_NEWLINE); + + } +} + +static void vty_dump_ue_info(struct vty *vty, struct ue_context *ue) +{ + vty_out(vty, "UE IMSI \"%s\" context ID %u%s", ue->imsi, ue->context_id, VTY_NEWLINE); +} + +DEFUN(show_hnb, show_hnb_cmd, "show hnb all", SHOW_STR "Display information about a HNB") +{ + struct hnb_context *hnb; + + llist_for_each_entry(hnb, &g_hnb_gw->hnb_list, list) { + vty_dump_hnb_info(vty, hnb); + } + + return CMD_SUCCESS; +} + +DEFUN(show_ue, show_ue_cmd, "show ue all", SHOW_STR "Display information about a UE") +{ + struct ue_context *ue; + + llist_for_each_entry(ue, &g_hnb_gw->ue_list, list) { + vty_dump_ue_info(vty, ue); + } + + return CMD_SUCCESS; +} + +DEFUN(show_talloc, show_talloc_cmd, "show talloc", SHOW_STR "Display talloc info") +{ + talloc_report_full(tall_hnb_ctx, stderr); + talloc_report_full(talloc_asn1_ctx, stderr); + + return CMD_SUCCESS; +} + +void hnbgw_vty_init(struct hnb_gw *gw, void *tall_ctx) +{ + g_hnb_gw = gw; + tall_hnb_ctx = tall_ctx; + install_element_ve(&show_hnb_cmd); + install_element_ve(&show_ue_cmd); + install_element_ve(&show_talloc_cmd); +} |