diff options
Diffstat (limited to 'src/vty_interface.c')
-rw-r--r-- | src/vty_interface.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/src/vty_interface.c b/src/vty_interface.c index 345c6c3..24e1e09 100644 --- a/src/vty_interface.c +++ b/src/vty_interface.c @@ -23,6 +23,7 @@ #include <mtp_pcap.h> #include <msc_connection.h> #include <sctp_m2ua.h> +#include <sccp_lite.h> #include <ss7_application.h> #include <ss7_vty.h> #include <cellmgr_debug.h> @@ -160,6 +161,7 @@ static void write_link(struct vty *vty, struct mtp_link *link) const char *name = link->name ? link->name : ""; struct mtp_udp_link *ulnk; struct mtp_m2ua_link *m2ua; + struct mtp_sccp_lite_link *lite; vty_out(vty, " link %d%s", link->nr, VTY_NEWLINE); vty_out(vty, " description %s%s", name, VTY_NEWLINE); @@ -187,6 +189,13 @@ static void write_link(struct vty *vty, struct mtp_link *link) vty_out(vty, " m2ua link-index %d%s", m2ua->link_index, VTY_NEWLINE); break; + case SS7_LTYPE_SCCP_LITE: + lite = (struct mtp_sccp_lite_link *) link->data; + vty_out(vty, " ss7-transport sccp-lite%s", VTY_NEWLINE); + if (lite->token) + vty_out(vty, " sccp-lite token %s%s", + lite->token, VTY_NEWLINE); + break; case SS7_LTYPE_NONE: break; } @@ -590,7 +599,7 @@ DEFUN(cfg_linkset_link, cfg_linkset_link_cmd, } DEFUN(cfg_link_ss7_transport, cfg_link_ss7_transport_cmd, - "ss7-transport (none|udp|m2ua)", + "ss7-transport (none|udp|m2ua|sccp-lite)", "SS7 transport for the link\n" "No transport\n" "MTP over UDP\n" "SCTP M2UA\n") { @@ -603,12 +612,19 @@ DEFUN(cfg_link_ss7_transport, cfg_link_ss7_transport_cmd, wanted = SS7_LTYPE_UDP; else if (strcmp("m2ua", argv[0]) == 0) wanted = SS7_LTYPE_M2UA; + else if (strcmp("sccp-lite", argv[0]) == 0) + wanted = SS7_LTYPE_SCCP_LITE; if (link->type != wanted && link->type != SS7_LTYPE_NONE) { vty_out(vty, "%%Can not change the type of a link.\n"); return CMD_WARNING; } + if (link->nr > 0 && wanted == SS7_LTYPE_SCCP_LITE) { + vty_out(vty, "%%Can only have SCCP-lite as 0.\n"); + return CMD_WARNING; + } + switch (wanted) { case SS7_LTYPE_UDP: link->data = mtp_udp_link_init(link); @@ -616,6 +632,9 @@ DEFUN(cfg_link_ss7_transport, cfg_link_ss7_transport_cmd, case SS7_LTYPE_M2UA: link->data = mtp_m2ua_link_init(link); break; + case SS7_LTYPE_SCCP_LITE: + link->data = mtp_sccp_lite_link_init(link); + break; case SS7_LTYPE_NONE: /* nothing */ break; @@ -752,6 +771,25 @@ DEFUN(cfg_link_m2ua_link_index, cfg_link_m2ua_link_index_cmd, return CMD_SUCCESS; } +DEFUN(cfg_link_sccp_lite_token, cfg_link_sccp_lite_token_cmd, + "sccp-lite token TOKEN", + "SCCP-lite/MAP-lite related\n" "Token for pseudo-auth\n" "Token\n") +{ + struct mtp_link *link = vty->index; + struct mtp_sccp_lite_link *lite; + + if (link->type != SS7_LTYPE_SCCP_LITE) { + vty_out(vty, "%%This only applies to SCCP-lite links.%s", VTY_NEWLINE); + return CMD_WARNING; + } + + lite = link->data; + if (lite->token) + talloc_free(lite->token); + lite->token = talloc_strdup(lite, argv[0]); + return CMD_SUCCESS; +} + DEFUN(cfg_ss7_msc, cfg_ss7_msc_cmd, "msc <0-100>", "MSC Connection\n" "MSC Number\n") @@ -1106,6 +1144,7 @@ void cell_vty_init(void) install_element(LINK_NODE, &cfg_link_udp_link_index_cmd); install_element(LINK_NODE, &cfg_link_m2ua_as_cmd); install_element(LINK_NODE, &cfg_link_m2ua_link_index_cmd); + install_element(LINK_NODE, &cfg_link_sccp_lite_token_cmd); install_element(SS7_NODE, &cfg_ss7_msc_cmd); install_node(&msc_node, config_write_msc); |