aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmgcp/mgcp_protocol.c
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2014-01-16 16:50:40 +0100
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-01-20 08:27:03 +0100
commite35fd1369762b4b59e2673275836869df379f2b6 (patch)
treeaf0ebfdc914789c6024acf2defa1423d1b82badd /openbsc/src/libmgcp/mgcp_protocol.c
parent8857c90e3609c88a3d384e64633258d4d7463f93 (diff)
mgcp: Synchronize conn mode bits and output enabled flags
This patch changes implementation and the mgcp_connection_mode enum in a way that net_end.output_enabled (bts_end.output_enabled) flag always matches the MGCP_CONN_SEND_ONLY (MGCP_CONN_RECV_ONLY) bit of conn_mode. Based on this, the conn_mode bits are then used instead of the output_enabled fields within mgcp_protocol.c. Sponsored-by: On-Waves ehf
Diffstat (limited to 'openbsc/src/libmgcp/mgcp_protocol.c')
-rw-r--r--openbsc/src/libmgcp/mgcp_protocol.c31
1 files changed, 7 insertions, 24 deletions
diff --git a/openbsc/src/libmgcp/mgcp_protocol.c b/openbsc/src/libmgcp/mgcp_protocol.c
index 9055bdbb1..5c88c9dd3 100644
--- a/openbsc/src/libmgcp/mgcp_protocol.c
+++ b/openbsc/src/libmgcp/mgcp_protocol.c
@@ -504,28 +504,10 @@ static int parse_conn_mode(const char *msg, struct mgcp_endpoint *endp)
ret = -1;
}
- switch (endp->conn_mode) {
- case MGCP_CONN_NONE:
- endp->net_end.output_enabled = 0;
- endp->bts_end.output_enabled = 0;
- break;
-
- case MGCP_CONN_RECV_ONLY:
- endp->net_end.output_enabled = 0;
- endp->bts_end.output_enabled = 1;
- break;
-
- case MGCP_CONN_SEND_ONLY:
- endp->net_end.output_enabled = 1;
- endp->bts_end.output_enabled = 0;
- break;
-
- default:
- endp->net_end.output_enabled = 1;
- endp->bts_end.output_enabled = 1;
- break;
- }
-
+ endp->net_end.output_enabled =
+ endp->conn_mode & MGCP_CONN_SEND_ONLY ? 1 : 0;
+ endp->bts_end.output_enabled =
+ endp->conn_mode & MGCP_CONN_RECV_ONLY ? 1 : 0;
return ret;
}
@@ -877,7 +859,7 @@ mgcp_header_done:
if (p->cfg->change_cb)
p->cfg->change_cb(tcfg, ENDPOINT_NUMBER(endp), MGCP_ENDP_CRCX);
- if (endp->bts_end.output_enabled && tcfg->keepalive_interval != 0)
+ if (endp->conn_mode & MGCP_CONN_RECV_ONLY && tcfg->keepalive_interval != 0)
mgcp_send_dummy(endp);
create_transcoder(endp);
@@ -979,7 +961,8 @@ static struct msgb *handle_modify_con(struct mgcp_parse_data *p)
if (p->cfg->change_cb)
p->cfg->change_cb(endp->tcfg, ENDPOINT_NUMBER(endp), MGCP_ENDP_MDCX);
- if (endp->bts_end.output_enabled && endp->tcfg->keepalive_interval != 0)
+ if (endp->conn_mode & MGCP_CONN_RECV_ONLY &&
+ endp->tcfg->keepalive_interval != 0)
mgcp_send_dummy(endp);
if (silent)