mgcp_vty: add user attributes to configuration commands
To make clear which configuration changes (configure terminal)
apply when, add appropriate user attributes to VTY commands.
Change-Id: I2d9487801b3b78f94577264b56d217c926ef76a9
Related: SYS#4937, OS#1601
diff --git a/src/libosmo-mgcp/mgcp_vty.c b/src/libosmo-mgcp/mgcp_vty.c
index 440452f..74e8da0 100644
--- a/src/libosmo-mgcp/mgcp_vty.c
+++ b/src/libosmo-mgcp/mgcp_vty.c
@@ -42,6 +42,7 @@
#define RTP_KEEPALIVE_STR "Send dummy UDP packet to net RTP destination\n"
#define RTP_TS101318_RFC5993_CONV_STR "Convert GSM-HR from TS101318 to RFC5993 and vice versa\n"
+#define X(x) (1 << x)
static struct mgcp_config *g_cfg = NULL;
@@ -408,13 +409,14 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_local_ip,
- cfg_mgcp_local_ip_cmd,
- "local ip " VTY_IPV46_CMD,
- "Local options for the SDP record\n"
- IP_STR
- "IPv4 Address to use in SDP record\n"
- "IPv6 Address to use in SDP record\n")
+DEFUN_USRATTR(cfg_mgcp_local_ip,
+ cfg_mgcp_local_ip_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "local ip " VTY_IPV46_CMD,
+ "Local options for the SDP record\n"
+ IP_STR
+ "IPv4 Address to use in SDP record\n"
+ "IPv6 Address to use in SDP record\n")
{
osmo_talloc_replace_string(g_cfg, &g_cfg->local_ip, argv[0]);
return CMD_SUCCESS;
@@ -499,11 +501,12 @@
RTP_STR "Range of ports to use for the NET side\n"
RANGE_START_STR RANGE_END_STR)
-DEFUN(cfg_mgcp_rtp_bind_ip,
- cfg_mgcp_rtp_bind_ip_cmd,
- "rtp bind-ip A.B.C.D",
- RTP_STR "Bind endpoints facing the Network\n"
- "IPv4 Address to bind to\n")
+DEFUN_USRATTR(cfg_mgcp_rtp_bind_ip,
+ cfg_mgcp_rtp_bind_ip_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "rtp bind-ip A.B.C.D",
+ RTP_STR "Bind endpoints facing the Network\n"
+ "IPv4 Address to bind to\n")
{
osmo_talloc_replace_string(g_cfg, &g_cfg->net_ports.bind_addr_v4, argv[0]);
return CMD_SUCCESS;
@@ -513,11 +516,12 @@
"rtp net-bind-ip A.B.C.D",
RTP_STR "Bind endpoints facing the Network\n" "Address to bind to\n")
-DEFUN(cfg_mgcp_rtp_no_bind_ip,
- cfg_mgcp_rtp_no_bind_ip_cmd,
- "no rtp bind-ip",
- NO_STR RTP_STR "Bind endpoints facing the Network\n"
- "Address to bind to\n")
+DEFUN_USRATTR(cfg_mgcp_rtp_no_bind_ip,
+ cfg_mgcp_rtp_no_bind_ip_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp bind-ip",
+ NO_STR RTP_STR "Bind endpoints facing the Network\n"
+ "Address to bind to\n")
{
talloc_free(g_cfg->net_ports.bind_addr_v4);
g_cfg->net_ports.bind_addr_v4 = NULL;
@@ -529,50 +533,55 @@
NO_STR RTP_STR "Bind endpoints facing the Network\n"
"Address to bind to\n")
-DEFUN(cfg_mgcp_rtp_bind_ip_v6,
- cfg_mgcp_rtp_bind_ip_v6_cmd,
- "rtp bind-ip-v6 " VTY_IPV6_CMD,
- RTP_STR "Bind endpoints facing the Network\n"
- "IPv6 Address to bind to\n")
+DEFUN_USRATTR(cfg_mgcp_rtp_bind_ip_v6,
+ cfg_mgcp_rtp_bind_ip_v6_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "rtp bind-ip-v6 " VTY_IPV6_CMD,
+ RTP_STR "Bind endpoints facing the Network\n"
+ "IPv6 Address to bind to\n")
{
osmo_talloc_replace_string(g_cfg, &g_cfg->net_ports.bind_addr_v6, argv[0]);
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_rtp_no_bind_ip_v6,
-cfg_mgcp_rtp_no_bind_ip_v6_cmd,
-"no rtp bind-ip-v6",
-NO_STR RTP_STR "Bind endpoints facing the Network\n"
-"Address to bind to\n")
+DEFUN_USRATTR(cfg_mgcp_rtp_no_bind_ip_v6,
+ cfg_mgcp_rtp_no_bind_ip_v6_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp bind-ip-v6",
+ NO_STR RTP_STR "Bind endpoints facing the Network\n"
+ "Address to bind to\n")
{
talloc_free(g_cfg->net_ports.bind_addr_v6);
g_cfg->net_ports.bind_addr_v6 = NULL;
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_rtp_net_bind_ip_probing,
- cfg_mgcp_rtp_net_bind_ip_probing_cmd,
- "rtp ip-probing",
- RTP_STR "automatic rtp bind ip selection\n")
+DEFUN_USRATTR(cfg_mgcp_rtp_net_bind_ip_probing,
+ cfg_mgcp_rtp_net_bind_ip_probing_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "rtp ip-probing",
+ RTP_STR "automatic rtp bind ip selection\n")
{
g_cfg->net_ports.bind_addr_probe = true;
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_rtp_no_net_bind_ip_probing,
- cfg_mgcp_rtp_no_net_bind_ip_probing_cmd,
- "no rtp ip-probing",
- NO_STR RTP_STR "no automatic rtp bind ip selection\n")
+DEFUN_USRATTR(cfg_mgcp_rtp_no_net_bind_ip_probing,
+ cfg_mgcp_rtp_no_net_bind_ip_probing_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp ip-probing",
+ NO_STR RTP_STR "no automatic rtp bind ip selection\n")
{
g_cfg->net_ports.bind_addr_probe = false;
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_rtp_ip_dscp,
- cfg_mgcp_rtp_ip_dscp_cmd,
- "rtp ip-dscp <0-255>",
- RTP_STR
- "Apply IP_TOS to the audio stream (including Osmux)\n" "The DSCP value\n")
+DEFUN_USRATTR(cfg_mgcp_rtp_ip_dscp,
+ cfg_mgcp_rtp_ip_dscp_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "rtp ip-dscp <0-255>",
+ RTP_STR
+ "Apply IP_TOS to the audio stream (including Osmux)\n" "The DSCP value\n")
{
int dscp = atoi(argv[0]);
g_cfg->endp_dscp = dscp;
@@ -584,29 +593,32 @@
RTP_STR
"Apply IP_TOS to the audio stream\n" "The DSCP value\n")
#define FORCE_PTIME_STR "Force a fixed ptime for packets sent"
-DEFUN(cfg_mgcp_rtp_force_ptime,
- cfg_mgcp_rtp_force_ptime_cmd,
- "rtp force-ptime (10|20|40)",
- RTP_STR FORCE_PTIME_STR
- "The required ptime (packet duration) in ms\n" "10 ms\n20 ms\n40 ms\n")
+DEFUN_USRATTR(cfg_mgcp_rtp_force_ptime,
+ cfg_mgcp_rtp_force_ptime_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "rtp force-ptime (10|20|40)",
+ RTP_STR FORCE_PTIME_STR
+ "The required ptime (packet duration) in ms\n" "10 ms\n20 ms\n40 ms\n")
{
g_cfg->force_ptime = atoi(argv[0]);
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_no_rtp_force_ptime,
- cfg_mgcp_no_rtp_force_ptime_cmd,
- "no rtp force-ptime", NO_STR RTP_STR FORCE_PTIME_STR)
+DEFUN_USRATTR(cfg_mgcp_no_rtp_force_ptime,
+ cfg_mgcp_no_rtp_force_ptime_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp force-ptime", NO_STR RTP_STR FORCE_PTIME_STR)
{
g_cfg->force_ptime = 0;
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_sdp_fmtp_extra,
- cfg_mgcp_sdp_fmtp_extra_cmd,
- "sdp audio fmtp-extra .NAME",
- "Add extra fmtp for the SDP file\n" "Audio\n" "Fmtp-extra\n"
- "Extra Information\n")
+DEFUN_USRATTR(cfg_mgcp_sdp_fmtp_extra,
+ cfg_mgcp_sdp_fmtp_extra_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "sdp audio fmtp-extra .NAME",
+ "Add extra fmtp for the SDP file\n" "Audio\n" "Fmtp-extra\n"
+ "Extra Information\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -619,9 +631,10 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_allow_transcoding,
- cfg_mgcp_allow_transcoding_cmd,
- "allow-transcoding", "Allow transcoding\n")
+DEFUN_USRATTR(cfg_mgcp_allow_transcoding,
+ cfg_mgcp_allow_transcoding_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "allow-transcoding", "Allow transcoding\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -629,9 +642,10 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_no_allow_transcoding,
- cfg_mgcp_no_allow_transcoding_cmd,
- "no allow-transcoding", NO_STR "Allow transcoding\n")
+DEFUN_USRATTR(cfg_mgcp_no_allow_transcoding,
+ cfg_mgcp_no_allow_transcoding_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no allow-transcoding", NO_STR "Allow transcoding\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -666,10 +680,11 @@
"sdp audio payload name NAME",
SDP_STR AUDIO_STR AUDIO_STR "Name\n" "Payload name\n")
-DEFUN(cfg_mgcp_sdp_payload_send_ptime,
- cfg_mgcp_sdp_payload_send_ptime_cmd,
- "sdp audio-payload send-ptime",
- SDP_STR AUDIO_STR "Send SDP ptime (packet duration) attribute\n")
+DEFUN_USRATTR(cfg_mgcp_sdp_payload_send_ptime,
+ cfg_mgcp_sdp_payload_send_ptime_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "sdp audio-payload send-ptime",
+ SDP_STR AUDIO_STR "Send SDP ptime (packet duration) attribute\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -677,10 +692,11 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_no_sdp_payload_send_ptime,
- cfg_mgcp_no_sdp_payload_send_ptime_cmd,
- "no sdp audio-payload send-ptime",
- NO_STR SDP_STR AUDIO_STR "Send SDP ptime (packet duration) attribute\n")
+DEFUN_USRATTR(cfg_mgcp_no_sdp_payload_send_ptime,
+ cfg_mgcp_no_sdp_payload_send_ptime_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no sdp audio-payload send-ptime",
+ NO_STR SDP_STR AUDIO_STR "Send SDP ptime (packet duration) attribute\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -688,10 +704,11 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_sdp_payload_send_name,
- cfg_mgcp_sdp_payload_send_name_cmd,
- "sdp audio-payload send-name",
- SDP_STR AUDIO_STR "Send SDP rtpmap with the audio name\n")
+DEFUN_USRATTR(cfg_mgcp_sdp_payload_send_name,
+ cfg_mgcp_sdp_payload_send_name_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "sdp audio-payload send-name",
+ SDP_STR AUDIO_STR "Send SDP rtpmap with the audio name\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -699,10 +716,11 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_no_sdp_payload_send_name,
- cfg_mgcp_no_sdp_payload_send_name_cmd,
- "no sdp audio-payload send-name",
- NO_STR SDP_STR AUDIO_STR "Send SDP rtpmap with the audio name\n")
+DEFUN_USRATTR(cfg_mgcp_no_sdp_payload_send_name,
+ cfg_mgcp_no_sdp_payload_send_name_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no sdp audio-payload send-name",
+ NO_STR SDP_STR AUDIO_STR "Send SDP rtpmap with the audio name\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -718,11 +736,12 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_force_realloc,
- cfg_mgcp_force_realloc_cmd,
- "force-realloc (0|1)",
- "Force endpoint reallocation when the endpoint is still seized\n"
- "Don't force reallocation\n" "force reallocation\n")
+DEFUN_USRATTR(cfg_mgcp_force_realloc,
+ cfg_mgcp_force_realloc_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "force-realloc (0|1)",
+ "Force endpoint reallocation when the endpoint is still seized\n"
+ "Don't force reallocation\n" "force reallocation\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -730,11 +749,12 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_rtp_accept_all,
- cfg_mgcp_rtp_accept_all_cmd,
- "rtp-accept-all (0|1)",
- "Accept all RTP packets, even when the originating IP/Port does not match\n"
- "enable filter\n" "disable filter\n")
+DEFUN_ATTR(cfg_mgcp_rtp_accept_all,
+ cfg_mgcp_rtp_accept_all_cmd,
+ "rtp-accept-all (0|1)",
+ "Accept all RTP packets, even when the originating IP/Port does not match\n"
+ "enable filter\n" "disable filter\n",
+ CMD_ATTR_IMMEDIATE)
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -753,15 +773,21 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_omit_rtcp, cfg_mgcp_omit_rtcp_cmd, "rtcp-omit", RTCP_OMIT_STR)
+DEFUN_ATTR(cfg_mgcp_omit_rtcp,
+ cfg_mgcp_omit_rtcp_cmd,
+ "rtcp-omit", RTCP_OMIT_STR,
+ CMD_ATTR_IMMEDIATE)
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
trunk->omit_rtcp = 1;
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_no_omit_rtcp,
- cfg_mgcp_no_omit_rtcp_cmd, "no rtcp-omit", NO_STR RTCP_OMIT_STR)
+DEFUN_ATTR(cfg_mgcp_no_omit_rtcp,
+ cfg_mgcp_no_omit_rtcp_cmd,
+ "no rtcp-omit",
+ NO_STR RTCP_OMIT_STR,
+ CMD_ATTR_IMMEDIATE)
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -769,9 +795,10 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_patch_rtp_ssrc,
- cfg_mgcp_patch_rtp_ssrc_cmd,
- "rtp-patch ssrc", RTP_PATCH_STR "Force a fixed SSRC\n")
+DEFUN_USRATTR(cfg_mgcp_patch_rtp_ssrc,
+ cfg_mgcp_patch_rtp_ssrc_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "rtp-patch ssrc", RTP_PATCH_STR "Force a fixed SSRC\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -779,9 +806,10 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_no_patch_rtp_ssrc,
- cfg_mgcp_no_patch_rtp_ssrc_cmd,
- "no rtp-patch ssrc", NO_STR RTP_PATCH_STR "Force a fixed SSRC\n")
+DEFUN_USRATTR(cfg_mgcp_no_patch_rtp_ssrc,
+ cfg_mgcp_no_patch_rtp_ssrc_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp-patch ssrc", NO_STR RTP_PATCH_STR "Force a fixed SSRC\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -789,9 +817,10 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_patch_rtp_ts,
- cfg_mgcp_patch_rtp_ts_cmd,
- "rtp-patch timestamp", RTP_PATCH_STR "Adjust RTP timestamp\n")
+DEFUN_USRATTR(cfg_mgcp_patch_rtp_ts,
+ cfg_mgcp_patch_rtp_ts_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "rtp-patch timestamp", RTP_PATCH_STR "Adjust RTP timestamp\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -799,9 +828,10 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_no_patch_rtp_ts,
- cfg_mgcp_no_patch_rtp_ts_cmd,
- "no rtp-patch timestamp", NO_STR RTP_PATCH_STR "Adjust RTP timestamp\n")
+DEFUN_USRATTR(cfg_mgcp_no_patch_rtp_ts,
+ cfg_mgcp_no_patch_rtp_ts_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp-patch timestamp", NO_STR RTP_PATCH_STR "Adjust RTP timestamp\n")
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -809,9 +839,10 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_patch_rtp_rfc5993hr,
- cfg_mgcp_patch_rtp_rfc5993hr_cmd,
- "rtp-patch rfc5993hr", RTP_PATCH_STR RTP_TS101318_RFC5993_CONV_STR)
+DEFUN_USRATTR(cfg_mgcp_patch_rtp_rfc5993hr,
+ cfg_mgcp_patch_rtp_rfc5993hr_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "rtp-patch rfc5993hr", RTP_PATCH_STR RTP_TS101318_RFC5993_CONV_STR)
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -819,9 +850,10 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_no_patch_rtp_rfc5993hr,
- cfg_mgcp_no_patch_rtp_rfc5993hr_cmd,
- "no rtp-patch rfc5993hr", NO_STR RTP_PATCH_STR RTP_TS101318_RFC5993_CONV_STR)
+DEFUN_USRATTR(cfg_mgcp_no_patch_rtp_rfc5993hr,
+ cfg_mgcp_no_patch_rtp_rfc5993hr_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp-patch rfc5993hr", NO_STR RTP_PATCH_STR RTP_TS101318_RFC5993_CONV_STR)
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -829,8 +861,10 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_no_patch_rtp,
- cfg_mgcp_no_patch_rtp_cmd, "no rtp-patch", NO_STR RTP_PATCH_STR)
+DEFUN_USRATTR(cfg_mgcp_no_patch_rtp,
+ cfg_mgcp_no_patch_rtp_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp-patch", NO_STR RTP_PATCH_STR)
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -840,10 +874,11 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_rtp_keepalive,
- cfg_mgcp_rtp_keepalive_cmd,
- "rtp keep-alive <1-120>",
- RTP_STR RTP_KEEPALIVE_STR "Keep alive interval in secs\n")
+DEFUN_ATTR(cfg_mgcp_rtp_keepalive,
+ cfg_mgcp_rtp_keepalive_cmd,
+ "rtp keep-alive <1-120>",
+ RTP_STR RTP_KEEPALIVE_STR "Keep alive interval in secs\n",
+ CMD_ATTR_IMMEDIATE)
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -851,10 +886,11 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_rtp_keepalive_once,
- cfg_mgcp_rtp_keepalive_once_cmd,
- "rtp keep-alive once",
- RTP_STR RTP_KEEPALIVE_STR "Send dummy packet only once after CRCX/MDCX\n")
+DEFUN_ATTR(cfg_mgcp_rtp_keepalive_once,
+ cfg_mgcp_rtp_keepalive_once_cmd,
+ "rtp keep-alive once",
+ RTP_STR RTP_KEEPALIVE_STR "Send dummy packet only once after CRCX/MDCX\n",
+ CMD_ATTR_IMMEDIATE)
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -862,9 +898,10 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_mgcp_no_rtp_keepalive,
- cfg_mgcp_no_rtp_keepalive_cmd,
- "no rtp keep-alive", NO_STR RTP_STR RTP_KEEPALIVE_STR)
+DEFUN_ATTR(cfg_mgcp_no_rtp_keepalive,
+ cfg_mgcp_no_rtp_keepalive_cmd,
+ "no rtp keep-alive", NO_STR RTP_STR RTP_KEEPALIVE_STR,
+ CMD_ATTR_IMMEDIATE)
{
struct mgcp_trunk *trunk = mgcp_trunk_by_num(g_cfg, MGCP_TRUNK_VIRTUAL, MGCP_VIRT_TRUNK_ID);
OSMO_ASSERT(trunk);
@@ -969,11 +1006,12 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_sdp_fmtp_extra,
- cfg_trunk_sdp_fmtp_extra_cmd,
- "sdp audio fmtp-extra .NAME",
- "Add extra fmtp for the SDP file\n" "Audio\n" "Fmtp-extra\n"
- "Extra Information\n")
+DEFUN_USRATTR(cfg_trunk_sdp_fmtp_extra,
+ cfg_trunk_sdp_fmtp_extra_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "sdp audio fmtp-extra .NAME",
+ "Add extra fmtp for the SDP file\n" "Audio\n" "Fmtp-extra\n"
+ "Extra Information\n")
{
struct mgcp_trunk *trunk = vty->index;
char *txt = argv_concat(argv, argc, 0);
@@ -1017,117 +1055,134 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_sdp_payload_send_ptime,
- cfg_trunk_sdp_payload_send_ptime_cmd,
- "sdp audio-payload send-ptime",
- SDP_STR AUDIO_STR "Send SDP ptime (packet duration) attribute\n")
+DEFUN_USRATTR(cfg_trunk_sdp_payload_send_ptime,
+ cfg_trunk_sdp_payload_send_ptime_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "sdp audio-payload send-ptime",
+ SDP_STR AUDIO_STR "Send SDP ptime (packet duration) attribute\n")
{
struct mgcp_trunk *trunk = vty->index;
trunk->audio_send_ptime = 1;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_no_sdp_payload_send_ptime,
- cfg_trunk_no_sdp_payload_send_ptime_cmd,
- "no sdp audio-payload send-ptime",
- NO_STR SDP_STR AUDIO_STR "Send SDP ptime (packet duration) attribute\n")
+DEFUN_USRATTR(cfg_trunk_no_sdp_payload_send_ptime,
+ cfg_trunk_no_sdp_payload_send_ptime_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no sdp audio-payload send-ptime",
+ NO_STR SDP_STR AUDIO_STR "Send SDP ptime (packet duration) attribute\n")
{
struct mgcp_trunk *trunk = vty->index;
trunk->audio_send_ptime = 0;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_sdp_payload_send_name,
- cfg_trunk_sdp_payload_send_name_cmd,
- "sdp audio-payload send-name",
- SDP_STR AUDIO_STR "Send SDP rtpmap with the audio name\n")
+DEFUN_USRATTR(cfg_trunk_sdp_payload_send_name,
+ cfg_trunk_sdp_payload_send_name_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "sdp audio-payload send-name",
+ SDP_STR AUDIO_STR "Send SDP rtpmap with the audio name\n")
{
struct mgcp_trunk *trunk = vty->index;
trunk->audio_send_name = 1;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_no_sdp_payload_send_name,
- cfg_trunk_no_sdp_payload_send_name_cmd,
- "no sdp audio-payload send-name",
- NO_STR SDP_STR AUDIO_STR "Send SDP rtpmap with the audio name\n")
+DEFUN_USRATTR(cfg_trunk_no_sdp_payload_send_name,
+ cfg_trunk_no_sdp_payload_send_name_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no sdp audio-payload send-name",
+ NO_STR SDP_STR AUDIO_STR "Send SDP rtpmap with the audio name\n")
{
struct mgcp_trunk *trunk = vty->index;
trunk->audio_send_name = 0;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_omit_rtcp, cfg_trunk_omit_rtcp_cmd, "rtcp-omit", RTCP_OMIT_STR)
+DEFUN_ATTR(cfg_trunk_omit_rtcp,
+ cfg_trunk_omit_rtcp_cmd,
+ "rtcp-omit", RTCP_OMIT_STR,
+ CMD_ATTR_IMMEDIATE)
{
struct mgcp_trunk *trunk = vty->index;
trunk->omit_rtcp = 1;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_no_omit_rtcp,
- cfg_trunk_no_omit_rtcp_cmd, "no rtcp-omit", NO_STR RTCP_OMIT_STR)
+DEFUN_ATTR(cfg_trunk_no_omit_rtcp,
+ cfg_trunk_no_omit_rtcp_cmd,
+ "no rtcp-omit", NO_STR RTCP_OMIT_STR,
+ CMD_ATTR_IMMEDIATE)
{
struct mgcp_trunk *trunk = vty->index;
trunk->omit_rtcp = 0;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_patch_rtp_ssrc,
- cfg_trunk_patch_rtp_ssrc_cmd,
- "rtp-patch ssrc", RTP_PATCH_STR "Force a fixed SSRC\n")
+DEFUN_USRATTR(cfg_trunk_patch_rtp_ssrc,
+ cfg_trunk_patch_rtp_ssrc_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "rtp-patch ssrc", RTP_PATCH_STR "Force a fixed SSRC\n")
{
struct mgcp_trunk *trunk = vty->index;
trunk->force_constant_ssrc = 1;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_no_patch_rtp_ssrc,
- cfg_trunk_no_patch_rtp_ssrc_cmd,
- "no rtp-patch ssrc", NO_STR RTP_PATCH_STR "Force a fixed SSRC\n")
+DEFUN_USRATTR(cfg_trunk_no_patch_rtp_ssrc,
+ cfg_trunk_no_patch_rtp_ssrc_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp-patch ssrc", NO_STR RTP_PATCH_STR "Force a fixed SSRC\n")
{
struct mgcp_trunk *trunk = vty->index;
trunk->force_constant_ssrc = 0;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_patch_rtp_ts,
- cfg_trunk_patch_rtp_ts_cmd,
- "rtp-patch timestamp", RTP_PATCH_STR "Adjust RTP timestamp\n")
+DEFUN_USRATTR(cfg_trunk_patch_rtp_ts,
+ cfg_trunk_patch_rtp_ts_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "rtp-patch timestamp", RTP_PATCH_STR "Adjust RTP timestamp\n")
{
struct mgcp_trunk *trunk = vty->index;
trunk->force_aligned_timing = 1;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_no_patch_rtp_ts,
- cfg_trunk_no_patch_rtp_ts_cmd,
- "no rtp-patch timestamp", NO_STR RTP_PATCH_STR "Adjust RTP timestamp\n")
+DEFUN_USRATTR(cfg_trunk_no_patch_rtp_ts,
+ cfg_trunk_no_patch_rtp_ts_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp-patch timestamp", NO_STR RTP_PATCH_STR "Adjust RTP timestamp\n")
{
struct mgcp_trunk *trunk = vty->index;
trunk->force_aligned_timing = 0;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_patch_rtp_rfc5993hr,
- cfg_trunk_patch_rtp_rfc5993hr_cmd,
- "rtp-patch rfc5993hr", RTP_PATCH_STR RTP_TS101318_RFC5993_CONV_STR)
+DEFUN_USRATTR(cfg_trunk_patch_rtp_rfc5993hr,
+ cfg_trunk_patch_rtp_rfc5993hr_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "rtp-patch rfc5993hr", RTP_PATCH_STR RTP_TS101318_RFC5993_CONV_STR)
{
struct mgcp_trunk *trunk = vty->index;
trunk->rfc5993_hr_convert = true;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_no_patch_rtp_rfc5993hr,
- cfg_trunk_no_patch_rtp_rfc5993hr_cmd,
- "no rtp-patch rfc5993hr", NO_STR RTP_PATCH_STR RTP_TS101318_RFC5993_CONV_STR)
+DEFUN_USRATTR(cfg_trunk_no_patch_rtp_rfc5993hr,
+ cfg_trunk_no_patch_rtp_rfc5993hr_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp-patch rfc5993hr", NO_STR RTP_PATCH_STR RTP_TS101318_RFC5993_CONV_STR)
{
struct mgcp_trunk *trunk = vty->index;
trunk->rfc5993_hr_convert = false;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_no_patch_rtp,
- cfg_trunk_no_patch_rtp_cmd, "no rtp-patch", NO_STR RTP_PATCH_STR)
+DEFUN_USRATTR(cfg_trunk_no_patch_rtp,
+ cfg_trunk_no_patch_rtp_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no rtp-patch", NO_STR RTP_PATCH_STR)
{
struct mgcp_trunk *trunk = vty->index;
trunk->force_constant_ssrc = 0;
@@ -1136,47 +1191,52 @@
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_rtp_keepalive,
- cfg_trunk_rtp_keepalive_cmd,
- "rtp keep-alive <1-120>",
- RTP_STR RTP_KEEPALIVE_STR "Keep-alive interval in secs\n")
+DEFUN_ATTR(cfg_trunk_rtp_keepalive,
+ cfg_trunk_rtp_keepalive_cmd,
+ "rtp keep-alive <1-120>",
+ RTP_STR RTP_KEEPALIVE_STR "Keep-alive interval in secs\n",
+ CMD_ATTR_IMMEDIATE)
{
struct mgcp_trunk *trunk = vty->index;
mgcp_trunk_set_keepalive(trunk, atoi(argv[0]));
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_rtp_keepalive_once,
- cfg_trunk_rtp_keepalive_once_cmd,
- "rtp keep-alive once",
- RTP_STR RTP_KEEPALIVE_STR "Send dummy packet only once after CRCX/MDCX\n")
+DEFUN_ATTR(cfg_trunk_rtp_keepalive_once,
+ cfg_trunk_rtp_keepalive_once_cmd,
+ "rtp keep-alive once",
+ RTP_STR RTP_KEEPALIVE_STR "Send dummy packet only once after CRCX/MDCX\n",
+ CMD_ATTR_IMMEDIATE)
{
struct mgcp_trunk *trunk = vty->index;
mgcp_trunk_set_keepalive(trunk, MGCP_KEEPALIVE_ONCE);
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_no_rtp_keepalive,
- cfg_trunk_no_rtp_keepalive_cmd,
- "no rtp keep-alive", NO_STR RTP_STR RTP_KEEPALIVE_STR)
+DEFUN_ATTR(cfg_trunk_no_rtp_keepalive,
+ cfg_trunk_no_rtp_keepalive_cmd,
+ "no rtp keep-alive", NO_STR RTP_STR RTP_KEEPALIVE_STR,
+ CMD_ATTR_IMMEDIATE)
{
struct mgcp_trunk *trunk = vty->index;
mgcp_trunk_set_keepalive(trunk, 0);
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_allow_transcoding,
- cfg_trunk_allow_transcoding_cmd,
- "allow-transcoding", "Allow transcoding\n")
+DEFUN_USRATTR(cfg_trunk_allow_transcoding,
+ cfg_trunk_allow_transcoding_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "allow-transcoding", "Allow transcoding\n")
{
struct mgcp_trunk *trunk = vty->index;
trunk->no_audio_transcoding = 0;
return CMD_SUCCESS;
}
-DEFUN(cfg_trunk_no_allow_transcoding,
- cfg_trunk_no_allow_transcoding_cmd,
- "no allow-transcoding", NO_STR "Allow transcoding\n")
+DEFUN_USRATTR(cfg_trunk_no_allow_transcoding,
+ cfg_trunk_no_allow_transcoding_cmd,
+ X(MGW_CMD_ATTR_NEWCONN),
+ "no allow-transcoding", NO_STR "Allow transcoding\n")
{
struct mgcp_trunk *trunk = vty->index;
trunk->no_audio_transcoding = 1;