aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2021-12-29 12:04:53 +0100
committerAndreas Eversberg <jolly@eversberg.eu>2021-12-30 23:34:42 +0100
commit2ddf33837e65cf881b23a559941b74c3bab52d83 (patch)
tree8ef5311643c44bfa9a1a5ecca30dc80700f3132b /src
parente4c2e514d106a1c30ab2c7c2a6e8c93d1ba22bd0 (diff)
Osmo-CC: Correctly bind to local IP address, rather than any IP
Diffstat (limited to 'src')
-rw-r--r--src/libosmocc/rtp.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libosmocc/rtp.c b/src/libosmocc/rtp.c
index afaf22d..3363372 100644
--- a/src/libosmocc/rtp.c
+++ b/src/libosmocc/rtp.c
@@ -182,7 +182,12 @@ int osmo_cc_rtp_open(osmo_cc_session_media_t *media)
memset(&sa, 0, sizeof(sa));
sa4 = (struct sockaddr_in *)&sa;
sa4->sin_family = domain;
- sa4->sin_addr.s_addr = INADDR_ANY;
+ rc = inet_pton(AF_INET, media->connection_data_local.address, &sa4->sin_addr);
+ if (rc < 1) {
+pton_error:
+ PDEBUG(DCC, DEBUG_NOTICE, "Cannot bind to address '%s'.\n", media->connection_data_local.address);
+ return -EINVAL;
+ }
sport = &sa4->sin_port;
slen = sizeof(*sa4);
break;
@@ -191,7 +196,9 @@ int osmo_cc_rtp_open(osmo_cc_session_media_t *media)
memset(&sa, 0, sizeof(sa));
sa6 = (struct sockaddr_in6 *)&sa;
sa6->sin6_family = domain;
- sa6->sin6_addr = in6addr_any;
+ rc = inet_pton(AF_INET6, media->connection_data_local.address, &sa6->sin6_addr);
+ if (rc < 1)
+ goto pton_error;
sport = &sa6->sin6_port;
slen = sizeof(*sa6);
break;