diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-11-01 21:04:54 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-11-02 19:08:09 +0100 |
commit | bd7b3c5e45426efc79b4dd685d1e818de3550d0a (patch) | |
tree | 162eb7c8909e203ed766c784f95b1026a423c632 /openbsc/src/mgcp/mgcp_network.c | |
parent | e97155a2af793aa709f897e8766cccd20e86964c (diff) |
mgcp: Introduce trans_bts and send BTS packets from this port
Introduce the trans_bts. Right now only a port is allocated
and the packets from the BTS are sent from this socket.
Diffstat (limited to 'openbsc/src/mgcp/mgcp_network.c')
-rw-r--r-- | openbsc/src/mgcp/mgcp_network.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/openbsc/src/mgcp/mgcp_network.c b/openbsc/src/mgcp/mgcp_network.c index f78e42abb..ae0504ff9 100644 --- a/openbsc/src/mgcp/mgcp_network.c +++ b/openbsc/src/mgcp/mgcp_network.c @@ -191,8 +191,8 @@ static int send_transcoder(struct mgcp_endpoint *endp, int is_rtp, addr.sin_port = htons(port); rc = sendto(is_rtp ? - endp->bts_end.rtp.fd : - endp->bts_end.rtcp.fd, buf, len, 0, + endp->trans_bts.rtp.fd : + endp->trans_bts.rtcp.fd, buf, len, 0, (struct sockaddr *) &addr, sizeof(addr)); if (rc != len) @@ -543,7 +543,7 @@ int mgcp_bind_net_rtp_port(struct mgcp_endpoint *endp, int rtp_port) return bind_rtp(endp->cfg, &endp->net_end, ENDPOINT_NUMBER(endp)); } -int mgcp_bind_transcoder_rtp_port(struct mgcp_endpoint *endp, int rtp_port) +int mgcp_bind_trans_net_rtp_port(struct mgcp_endpoint *endp, int rtp_port) { if (endp->trans_net.rtp.fd != -1 || endp->trans_net.rtcp.fd != -1) { LOGP(DMGCP, LOGL_ERROR, "Previous net-port was still bound on %d\n", @@ -559,6 +559,22 @@ int mgcp_bind_transcoder_rtp_port(struct mgcp_endpoint *endp, int rtp_port) return bind_rtp(endp->cfg, &endp->trans_net, ENDPOINT_NUMBER(endp)); } +int mgcp_bind_trans_bts_rtp_port(struct mgcp_endpoint *endp, int rtp_port) +{ + if (endp->trans_bts.rtp.fd != -1 || endp->trans_bts.rtcp.fd != -1) { + LOGP(DMGCP, LOGL_ERROR, "Previous net-port was still bound on %d\n", + ENDPOINT_NUMBER(endp)); + mgcp_free_rtp_port(&endp->trans_bts); + } + + endp->trans_bts.local_port = rtp_port; + endp->trans_bts.rtp.cb = rtp_data_transcoder; + endp->trans_bts.rtp.data = endp; + endp->trans_bts.rtcp.data = endp; + endp->trans_bts.rtcp.cb = rtp_data_transcoder; + return bind_rtp(endp->cfg, &endp->trans_bts, ENDPOINT_NUMBER(endp)); +} + int mgcp_free_rtp_port(struct mgcp_rtp_end *end) { if (end->rtp.fd != -1) { |