mirror of
https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw.git
synced 2025-10-23 16:14:03 +00:00
mgcp: Be more strict on the source addr/source port of the bts
Once we have discovered the bts we will not accept data from anything else. The call will drop if the BTS is changing the ip address of the nat anyway.
This commit is contained in:
@@ -285,6 +285,21 @@ static int rtp_data_bts(struct bsc_fd *fd, unsigned int what)
|
|||||||
inet_ntoa(addr.sin_addr));
|
inet_ntoa(addr.sin_addr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (memcmp(&endp->bts_end.addr, &addr.sin_addr, sizeof(addr.sin_addr)) != 0) {
|
||||||
|
LOGP(DMGCP, LOGL_ERROR,
|
||||||
|
"Data from wrong bts %s on 0x%x\n",
|
||||||
|
inet_ntoa(addr.sin_addr), ENDPOINT_NUMBER(endp));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (endp->bts_end.rtp_port != addr.sin_port &&
|
||||||
|
endp->bts_end.rtcp_port != addr.sin_port) {
|
||||||
|
LOGP(DMGCP, LOGL_ERROR,
|
||||||
|
"Data from wrong bts source port %d on 0x%x\n",
|
||||||
|
ntohs(addr.sin_port), ENDPOINT_NUMBER(endp));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/* throw away the dummy message */
|
/* throw away the dummy message */
|
||||||
if (rc == 1 && buf[0] == DUMMY_LOAD) {
|
if (rc == 1 && buf[0] == DUMMY_LOAD) {
|
||||||
LOGP(DMGCP, LOGL_NOTICE, "Filtered dummy from bts on 0x%x\n",
|
LOGP(DMGCP, LOGL_NOTICE, "Filtered dummy from bts on 0x%x\n",
|
||||||
|
Reference in New Issue
Block a user