From 9be675ea52c2da4b7e2de3339e3d600efc8a853b Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Wed, 21 Jan 2015 11:39:47 +0100 Subject: [PATCH] mgcp: Honor the rtp IP_TOS settings for Osmux Honor the IP_TOS settings for Osmux as well. Re-use the RTP setting as it makes sense to classify the audio packets the same way. Fixes: OW#1369 --- openbsc/include/openbsc/mgcp_internal.h | 2 ++ openbsc/src/libmgcp/mgcp_network.c | 6 +++--- openbsc/src/libmgcp/mgcp_osmux.c | 1 + openbsc/src/libmgcp/mgcp_vty.c | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/openbsc/include/openbsc/mgcp_internal.h b/openbsc/include/openbsc/mgcp_internal.h index 434b46c1f..6778064b3 100644 --- a/openbsc/include/openbsc/mgcp_internal.h +++ b/openbsc/include/openbsc/mgcp_internal.h @@ -253,6 +253,8 @@ void mgcp_rtp_annex_count(struct mgcp_endpoint *endp, struct mgcp_rtp_state *sta const uint16_t seq, const int32_t transit, const uint32_t ssrc); +int mgcp_set_ip_tos(int fd, int tos); + enum { MGCP_DEST_NET = 0, MGCP_DEST_BTS, diff --git a/openbsc/src/libmgcp/mgcp_network.c b/openbsc/src/libmgcp/mgcp_network.c index 37fc59aec..c3f43dd39 100644 --- a/openbsc/src/libmgcp/mgcp_network.c +++ b/openbsc/src/libmgcp/mgcp_network.c @@ -901,7 +901,7 @@ int mgcp_create_bind(const char *source_addr, struct osmo_fd *fd, int port) return 0; } -static int set_ip_tos(int fd, int tos) +int mgcp_set_ip_tos(int fd, int tos) { int ret; ret = setsockopt(fd, IPPROTO_IP, IP_TOS, @@ -925,8 +925,8 @@ static int bind_rtp(struct mgcp_config *cfg, struct mgcp_rtp_end *rtp_end, int e goto cleanup1; } - set_ip_tos(rtp_end->rtp.fd, cfg->endp_dscp); - set_ip_tos(rtp_end->rtcp.fd, cfg->endp_dscp); + mgcp_set_ip_tos(rtp_end->rtp.fd, cfg->endp_dscp); + mgcp_set_ip_tos(rtp_end->rtcp.fd, cfg->endp_dscp); rtp_end->rtp.when = BSC_FD_READ; if (osmo_fd_register(&rtp_end->rtp) != 0) { diff --git a/openbsc/src/libmgcp/mgcp_osmux.c b/openbsc/src/libmgcp/mgcp_osmux.c index d5e671d06..7f61173a1 100644 --- a/openbsc/src/libmgcp/mgcp_osmux.c +++ b/openbsc/src/libmgcp/mgcp_osmux.c @@ -420,6 +420,7 @@ int osmux_init(int role, struct mgcp_config *cfg) LOGP(DMGCP, LOGL_ERROR, "cannot bind OSMUX socket\n"); return ret; } + mgcp_set_ip_tos(osmux_fd.fd, cfg->endp_dscp); osmux_fd.when |= BSC_FD_READ; ret = osmo_fd_register(&osmux_fd); diff --git a/openbsc/src/libmgcp/mgcp_vty.c b/openbsc/src/libmgcp/mgcp_vty.c index 5124ca670..3d99c83b7 100644 --- a/openbsc/src/libmgcp/mgcp_vty.c +++ b/openbsc/src/libmgcp/mgcp_vty.c @@ -378,7 +378,7 @@ 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\n" "The DSCP value\n") + "Apply IP_TOS to the audio stream (including Osmux)\n" "The DSCP value\n") { int dscp = atoi(argv[0]); g_cfg->endp_dscp = dscp;