diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2021-12-29 12:04:53 +0100 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2021-12-30 23:34:42 +0100 |
commit | 2ddf33837e65cf881b23a559941b74c3bab52d83 (patch) | |
tree | 8ef5311643c44bfa9a1a5ecca30dc80700f3132b /src | |
parent | e4c2e514d106a1c30ab2c7c2a6e8c93d1ba22bd0 (diff) |
Osmo-CC: Correctly bind to local IP address, rather than any IP
Diffstat (limited to 'src')
-rw-r--r-- | src/libosmocc/rtp.c | 11 |
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; |