aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Smith <osmith@sysmocom.de>2020-03-06 11:28:40 +0100
committerOliver Smith <osmith@sysmocom.de>2020-03-06 15:21:44 +0100
commitf38c6b35d58411309f9449eb7c844081a5981c1f (patch)
tree0f9db864229f57bb8c437d28af2d8ce47cd70ae6
parentff5537de5011e7847f844ac738246829deee2064 (diff)
rsl: make IP DSCP configurableosmith/virt-voice
-rw-r--r--include/osmo-bts/gsm_data_shared.h1
-rw-r--r--src/common/rsl.c5
-rw-r--r--src/common/vty.c16
3 files changed, 21 insertions, 1 deletions
diff --git a/include/osmo-bts/gsm_data_shared.h b/include/osmo-bts/gsm_data_shared.h
index e0d70b0b..33166700 100644
--- a/include/osmo-bts/gsm_data_shared.h
+++ b/include/osmo-bts/gsm_data_shared.h
@@ -741,6 +741,7 @@ struct gsm_bts {
uint16_t rtp_port_range_start;
uint16_t rtp_port_range_end;
uint16_t rtp_port_range_next;
+ int rtp_ip_dscp;
struct {
uint8_t ciphers; /* flags A5/1==0x1, A5/2==0x2, A5/3==0x4 */
diff --git a/src/common/rsl.c b/src/common/rsl.c
index 10fb95e9..6140a143 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -2009,8 +2009,11 @@ static int bind_rtp(struct gsm_bts *bts, struct osmo_rtp_socket *rs, const char
bts->rtp_port_range_next += 2;
- if (rc == 0)
+ if (rc == 0) {
+ if (osmo_rtp_socket_set_dscp(rs, bts->rtp_ip_dscp))
+ LOGP(DRSL, LOGL_ERROR, "failed to set DSCP=%i\n", bts->rtp_ip_dscp);
return 0;
+ }
}
return -1;
diff --git a/src/common/vty.c b/src/common/vty.c
index c03f0d42..68b65f4d 100644
--- a/src/common/vty.c
+++ b/src/common/vty.c
@@ -237,6 +237,8 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts)
vty_out(vty, "%s", VTY_NEWLINE);
vty_out(vty, " rtp port-range %u %u%s", bts->rtp_port_range_start,
bts->rtp_port_range_end, VTY_NEWLINE);
+ if (bts->rtp_ip_dscp)
+ vty_out(vty, " rtp ip-dscp %i%s", bts->rtp_ip_dscp, VTY_NEWLINE);
vty_out(vty, " paging queue-size %u%s", paging_get_queue_max(bts->paging_state),
VTY_NEWLINE);
vty_out(vty, " paging lifetime %u%s", paging_get_lifetime(bts->paging_state),
@@ -501,6 +503,19 @@ DEFUN(cfg_bts_rtp_port_range,
return CMD_SUCCESS;
}
+DEFUN(cfg_bts_rtp_ip_dscp,
+ cfg_bts_rtp_ip_dscp_cmd,
+ "rtp ip-dscp <0-255>",
+ RTP_STR "Apply IP_TOS to the audio stream\n" "The DSCP value\n")
+{
+ struct gsm_bts *bts = vty->index;
+ int dscp = atoi(argv[0]);
+
+ bts->rtp_ip_dscp = dscp;
+
+ return CMD_SUCCESS;
+}
+
#define PAG_STR "Paging related parameters\n"
DEFUN(cfg_bts_paging_queue_size,
@@ -1665,6 +1680,7 @@ int bts_vty_init(struct gsm_bts *bts)
install_element(BTS_NODE, &cfg_bts_rtp_bind_ip_cmd);
install_element(BTS_NODE, &cfg_bts_rtp_jitbuf_cmd);
install_element(BTS_NODE, &cfg_bts_rtp_port_range_cmd);
+ install_element(BTS_NODE, &cfg_bts_rtp_ip_dscp_cmd);
install_element(BTS_NODE, &cfg_bts_band_cmd);
install_element(BTS_NODE, &cfg_description_cmd);
install_element(BTS_NODE, &cfg_no_description_cmd);