mirror of
https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw.git
synced 2025-10-23 08:12:01 +00:00
E1 Input: Move 'show e1_*' command to e1_input_vty.c
This commit is contained in:
@@ -114,6 +114,120 @@ static int e1inp_config_write(struct vty *vty)
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static void e1drv_dump_vty(struct vty *vty, struct e1inp_driver *drv)
|
||||
{
|
||||
vty_out(vty, "E1 Input Driver %s%s", drv->name, VTY_NEWLINE);
|
||||
}
|
||||
|
||||
DEFUN(show_e1drv,
|
||||
show_e1drv_cmd,
|
||||
"show e1_driver",
|
||||
SHOW_STR "Display information about available E1 drivers\n")
|
||||
{
|
||||
struct e1inp_driver *drv;
|
||||
|
||||
llist_for_each_entry(drv, &e1inp_driver_list, list)
|
||||
e1drv_dump_vty(vty, drv);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static void e1line_dump_vty(struct vty *vty, struct e1inp_line *line)
|
||||
{
|
||||
vty_out(vty, "E1 Line Number %u, Name %s, Driver %s%s",
|
||||
line->num, line->name ? line->name : "",
|
||||
line->driver->name, VTY_NEWLINE);
|
||||
}
|
||||
|
||||
DEFUN(show_e1line,
|
||||
show_e1line_cmd,
|
||||
"show e1_line [line_nr]",
|
||||
SHOW_STR "Display information about a E1 line\n"
|
||||
"E1 Line Number\n")
|
||||
{
|
||||
struct e1inp_line *line;
|
||||
|
||||
if (argc >= 1) {
|
||||
int num = atoi(argv[0]);
|
||||
llist_for_each_entry(line, &e1inp_line_list, list) {
|
||||
if (line->num == num) {
|
||||
e1line_dump_vty(vty, line);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
}
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
llist_for_each_entry(line, &e1inp_line_list, list)
|
||||
e1line_dump_vty(vty, line);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static void e1ts_dump_vty(struct vty *vty, struct e1inp_ts *ts)
|
||||
{
|
||||
if (ts->type == E1INP_TS_TYPE_NONE)
|
||||
return;
|
||||
vty_out(vty, "E1 Timeslot %2u of Line %u is Type %s%s",
|
||||
ts->num, ts->line->num, e1inp_tstype_name(ts->type),
|
||||
VTY_NEWLINE);
|
||||
}
|
||||
|
||||
DEFUN(show_e1ts,
|
||||
show_e1ts_cmd,
|
||||
"show e1_timeslot [line_nr] [ts_nr]",
|
||||
SHOW_STR "Display information about a E1 timeslot\n"
|
||||
"E1 Line Number\n" "E1 Timeslot Number\n")
|
||||
{
|
||||
struct e1inp_line *line = NULL;
|
||||
struct e1inp_ts *ts;
|
||||
int ts_nr;
|
||||
|
||||
if (argc == 0) {
|
||||
llist_for_each_entry(line, &e1inp_line_list, list) {
|
||||
for (ts_nr = 0; ts_nr < NUM_E1_TS; ts_nr++) {
|
||||
ts = &line->ts[ts_nr];
|
||||
e1ts_dump_vty(vty, ts);
|
||||
}
|
||||
}
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
if (argc >= 1) {
|
||||
int num = atoi(argv[0]);
|
||||
struct e1inp_line *l;
|
||||
llist_for_each_entry(l, &e1inp_line_list, list) {
|
||||
if (l->num == num) {
|
||||
line = l;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!line) {
|
||||
vty_out(vty, "E1 line %s is invalid%s",
|
||||
argv[0], VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
}
|
||||
if (argc >= 2) {
|
||||
ts_nr = atoi(argv[1]);
|
||||
if (ts_nr >= NUM_E1_TS) {
|
||||
vty_out(vty, "E1 timeslot %s is invalid%s",
|
||||
argv[1], VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
ts = &line->ts[ts_nr];
|
||||
e1ts_dump_vty(vty, ts);
|
||||
return CMD_SUCCESS;
|
||||
} else {
|
||||
for (ts_nr = 0; ts_nr < NUM_E1_TS; ts_nr++) {
|
||||
ts = &line->ts[ts_nr];
|
||||
e1ts_dump_vty(vty, ts);
|
||||
}
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
struct cmd_node e1inp_node = {
|
||||
E1INP_NODE,
|
||||
"%s(e1_input)#",
|
||||
@@ -127,5 +241,9 @@ int e1inp_vty_init(void)
|
||||
install_element(E1INP_NODE, &cfg_e1_line_driver_cmd);
|
||||
install_element(E1INP_NODE, &cfg_e1_line_name_cmd);
|
||||
|
||||
install_element_ve(&show_e1drv_cmd);
|
||||
install_element_ve(&show_e1line_cmd);
|
||||
install_element_ve(&show_e1ts_cmd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -975,119 +975,6 @@ DEFUN(show_lchan_summary,
|
||||
return lchan_summary(vty, argc, argv, lchan_dump_short_vty);
|
||||
}
|
||||
|
||||
static void e1drv_dump_vty(struct vty *vty, struct e1inp_driver *drv)
|
||||
{
|
||||
vty_out(vty, "E1 Input Driver %s%s", drv->name, VTY_NEWLINE);
|
||||
}
|
||||
|
||||
DEFUN(show_e1drv,
|
||||
show_e1drv_cmd,
|
||||
"show e1_driver",
|
||||
SHOW_STR "Display information about available E1 drivers\n")
|
||||
{
|
||||
struct e1inp_driver *drv;
|
||||
|
||||
llist_for_each_entry(drv, &e1inp_driver_list, list)
|
||||
e1drv_dump_vty(vty, drv);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static void e1line_dump_vty(struct vty *vty, struct e1inp_line *line)
|
||||
{
|
||||
vty_out(vty, "E1 Line Number %u, Name %s, Driver %s%s",
|
||||
line->num, line->name ? line->name : "",
|
||||
line->driver->name, VTY_NEWLINE);
|
||||
}
|
||||
|
||||
DEFUN(show_e1line,
|
||||
show_e1line_cmd,
|
||||
"show e1_line [line_nr]",
|
||||
SHOW_STR "Display information about a E1 line\n"
|
||||
"E1 Line Number\n")
|
||||
{
|
||||
struct e1inp_line *line;
|
||||
|
||||
if (argc >= 1) {
|
||||
int num = atoi(argv[0]);
|
||||
llist_for_each_entry(line, &e1inp_line_list, list) {
|
||||
if (line->num == num) {
|
||||
e1line_dump_vty(vty, line);
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
}
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
llist_for_each_entry(line, &e1inp_line_list, list)
|
||||
e1line_dump_vty(vty, line);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static void e1ts_dump_vty(struct vty *vty, struct e1inp_ts *ts)
|
||||
{
|
||||
if (ts->type == E1INP_TS_TYPE_NONE)
|
||||
return;
|
||||
vty_out(vty, "E1 Timeslot %2u of Line %u is Type %s%s",
|
||||
ts->num, ts->line->num, e1inp_tstype_name(ts->type),
|
||||
VTY_NEWLINE);
|
||||
}
|
||||
|
||||
DEFUN(show_e1ts,
|
||||
show_e1ts_cmd,
|
||||
"show e1_timeslot [line_nr] [ts_nr]",
|
||||
SHOW_STR "Display information about a E1 timeslot\n"
|
||||
"E1 Line Number\n" "E1 Timeslot Number\n")
|
||||
{
|
||||
struct e1inp_line *line = NULL;
|
||||
struct e1inp_ts *ts;
|
||||
int ts_nr;
|
||||
|
||||
if (argc == 0) {
|
||||
llist_for_each_entry(line, &e1inp_line_list, list) {
|
||||
for (ts_nr = 0; ts_nr < NUM_E1_TS; ts_nr++) {
|
||||
ts = &line->ts[ts_nr];
|
||||
e1ts_dump_vty(vty, ts);
|
||||
}
|
||||
}
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
if (argc >= 1) {
|
||||
int num = atoi(argv[0]);
|
||||
struct e1inp_line *l;
|
||||
llist_for_each_entry(l, &e1inp_line_list, list) {
|
||||
if (l->num == num) {
|
||||
line = l;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!line) {
|
||||
vty_out(vty, "E1 line %s is invalid%s",
|
||||
argv[0], VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
}
|
||||
if (argc >= 2) {
|
||||
ts_nr = atoi(argv[1]);
|
||||
if (ts_nr >= NUM_E1_TS) {
|
||||
vty_out(vty, "E1 timeslot %s is invalid%s",
|
||||
argv[1], VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
ts = &line->ts[ts_nr];
|
||||
e1ts_dump_vty(vty, ts);
|
||||
return CMD_SUCCESS;
|
||||
} else {
|
||||
for (ts_nr = 0; ts_nr < NUM_E1_TS; ts_nr++) {
|
||||
ts = &line->ts[ts_nr];
|
||||
e1ts_dump_vty(vty, ts);
|
||||
}
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static void paging_dump_vty(struct vty *vty, struct gsm_paging_request *pag)
|
||||
{
|
||||
vty_out(vty, "Paging on BTS %u%s", pag->bts->nr, VTY_NEWLINE);
|
||||
@@ -2678,10 +2565,6 @@ int bsc_vty_init(const struct log_info *cat)
|
||||
install_element_ve(&show_lchan_summary_cmd);
|
||||
install_element_ve(&logging_fltr_imsi_cmd);
|
||||
|
||||
install_element_ve(&show_e1drv_cmd);
|
||||
install_element_ve(&show_e1line_cmd);
|
||||
install_element_ve(&show_e1ts_cmd);
|
||||
|
||||
install_element_ve(&show_paging_cmd);
|
||||
|
||||
logging_vty_add_cmds(cat);
|
||||
|
Reference in New Issue
Block a user