mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04:00
modules: prefix network-utils methods with pw_net
This commit is contained in:
parent
4888b35284
commit
c0966f026a
9 changed files with 44 additions and 46 deletions
|
|
@ -927,7 +927,7 @@ static int send_follower_available(struct impl *impl)
|
||||||
|
|
||||||
pw_loop_update_io(impl->main_loop, impl->setup_socket, SPA_IO_IN);
|
pw_loop_update_io(impl->main_loop, impl->setup_socket, SPA_IO_IN);
|
||||||
|
|
||||||
pw_log_info("sending AVAILABLE to %s", get_ip_fmt(&impl->dst_addr, buffer, sizeof(buffer)));
|
pw_log_info("sending AVAILABLE to %s", pw_net_get_ip_fmt(&impl->dst_addr, buffer, sizeof(buffer)));
|
||||||
|
|
||||||
client_name = pw_properties_get(impl->props, "netjack2.client-name");
|
client_name = pw_properties_get(impl->props, "netjack2.client-name");
|
||||||
if (client_name == NULL)
|
if (client_name == NULL)
|
||||||
|
|
@ -964,11 +964,11 @@ static int create_netjack2_socket(struct impl *impl)
|
||||||
port = DEFAULT_NET_PORT;
|
port = DEFAULT_NET_PORT;
|
||||||
if ((str = pw_properties_get(impl->props, "net.ip")) == NULL)
|
if ((str = pw_properties_get(impl->props, "net.ip")) == NULL)
|
||||||
str = DEFAULT_NET_IP;
|
str = DEFAULT_NET_IP;
|
||||||
if ((res = parse_address(str, port, &impl->dst_addr, &impl->dst_len)) < 0) {
|
if ((res = pw_net_parse_address(str, port, &impl->dst_addr, &impl->dst_len)) < 0) {
|
||||||
pw_log_error("invalid net.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid net.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if ((res = parse_address("0.0.0.0", 0, &impl->src_addr, &impl->src_len)) < 0) {
|
if ((res = pw_net_parse_address("0.0.0.0", 0, &impl->src_addr, &impl->src_len)) < 0) {
|
||||||
pw_log_error("invalid source.ip: %s", spa_strerror(res));
|
pw_log_error("invalid source.ip: %s", spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1006,7 +1006,8 @@ static int handle_follower_available(struct impl *impl, struct nj2_session_param
|
||||||
|
|
||||||
nj2_session_params_hton(params, &peer->params);
|
nj2_session_params_hton(params, &peer->params);
|
||||||
params->packet_id = htonl(NJ2_ID_FOLLOWER_SETUP);
|
params->packet_id = htonl(NJ2_ID_FOLLOWER_SETUP);
|
||||||
pw_log_info("sending follower setup to %s", get_ip_fmt(addr, buffer, sizeof(buffer)));
|
pw_log_info("sending follower setup to %s",
|
||||||
|
pw_net_get_ip_fmt(addr, buffer, sizeof(buffer)));
|
||||||
nj2_dump_session_params(params);
|
nj2_dump_session_params(params);
|
||||||
send(follower->socket->fd, params, sizeof(*params), 0);
|
send(follower->socket->fd, params, sizeof(*params), 0);
|
||||||
|
|
||||||
|
|
@ -1079,7 +1080,7 @@ static int create_netjack2_socket(struct impl *impl)
|
||||||
if ((str = pw_properties_get(impl->props, "net.ip")) == NULL)
|
if ((str = pw_properties_get(impl->props, "net.ip")) == NULL)
|
||||||
str = DEFAULT_NET_IP;
|
str = DEFAULT_NET_IP;
|
||||||
|
|
||||||
if ((res = parse_address(str, port, &impl->src_addr, &impl->src_len)) < 0) {
|
if ((res = pw_net_parse_address(str, port, &impl->src_addr, &impl->src_len)) < 0) {
|
||||||
pw_log_error("invalid net.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid net.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
@ -1105,7 +1106,7 @@ static int create_netjack2_socket(struct impl *impl)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
pw_log_info("listening for AVAILABLE on %s",
|
pw_log_info("listening for AVAILABLE on %s",
|
||||||
get_ip_fmt(&impl->src_addr, buffer, sizeof(buffer)));
|
pw_net_get_ip_fmt(&impl->src_addr, buffer, sizeof(buffer)));
|
||||||
return 0;
|
return 0;
|
||||||
out:
|
out:
|
||||||
return res;
|
return res;
|
||||||
|
|
|
||||||
|
|
@ -476,7 +476,7 @@ static int make_recv_socket(struct sockaddr_storage *sa, socklen_t salen,
|
||||||
memset(&mr4, 0, sizeof(mr4));
|
memset(&mr4, 0, sizeof(mr4));
|
||||||
mr4.imr_multiaddr = sa4->sin_addr;
|
mr4.imr_multiaddr = sa4->sin_addr;
|
||||||
mr4.imr_ifindex = req.ifr_ifindex;
|
mr4.imr_ifindex = req.ifr_ifindex;
|
||||||
get_ip(sa, addr, sizeof(addr), NULL, NULL);
|
pw_net_get_ip(sa, addr, sizeof(addr), NULL, NULL);
|
||||||
pw_log_info("join IPv4 group: %s iface:%d", addr, req.ifr_ifindex);
|
pw_log_info("join IPv4 group: %s iface:%d", addr, req.ifr_ifindex);
|
||||||
res = setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mr4, sizeof(mr4));
|
res = setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mr4, sizeof(mr4));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -489,7 +489,7 @@ static int make_recv_socket(struct sockaddr_storage *sa, socklen_t salen,
|
||||||
memset(&mr6, 0, sizeof(mr6));
|
memset(&mr6, 0, sizeof(mr6));
|
||||||
mr6.ipv6mr_multiaddr = sa6->sin6_addr;
|
mr6.ipv6mr_multiaddr = sa6->sin6_addr;
|
||||||
mr6.ipv6mr_interface = req.ifr_ifindex;
|
mr6.ipv6mr_interface = req.ifr_ifindex;
|
||||||
get_ip(sa, addr, sizeof(addr), NULL, NULL);
|
pw_net_get_ip(sa, addr, sizeof(addr), NULL, NULL);
|
||||||
pw_log_info("join IPv6 group: %s iface:%d", addr, req.ifr_ifindex);
|
pw_log_info("join IPv6 group: %s iface:%d", addr, req.ifr_ifindex);
|
||||||
res = setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mr6, sizeof(mr6));
|
res = setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mr6, sizeof(mr6));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -653,7 +653,7 @@ static int send_sap(struct impl *impl, struct session *sess, bool bye)
|
||||||
iov[0].iov_base = &header;
|
iov[0].iov_base = &header;
|
||||||
iov[0].iov_len = sizeof(header);
|
iov[0].iov_len = sizeof(header);
|
||||||
|
|
||||||
if ((res = get_ip(&impl->src_addr, src_addr, sizeof(src_addr), &src_ip4, NULL)) < 0)
|
if ((res = pw_net_get_ip(&impl->src_addr, src_addr, sizeof(src_addr), &src_ip4, NULL)) < 0)
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
if (src_ip4) {
|
if (src_ip4) {
|
||||||
|
|
@ -667,7 +667,7 @@ static int send_sap(struct impl *impl, struct session *sess, bool bye)
|
||||||
iov[2].iov_base = SAP_MIME_TYPE;
|
iov[2].iov_base = SAP_MIME_TYPE;
|
||||||
iov[2].iov_len = sizeof(SAP_MIME_TYPE);
|
iov[2].iov_len = sizeof(SAP_MIME_TYPE);
|
||||||
|
|
||||||
if ((res = get_ip(&sdp->dst_addr, dst_addr, sizeof(dst_addr), &dst_ip4, NULL)) < 0)
|
if ((res = pw_net_get_ip(&sdp->dst_addr, dst_addr, sizeof(dst_addr), &dst_ip4, NULL)) < 0)
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
if ((user_name = pw_get_user_name()) == NULL)
|
if ((user_name = pw_get_user_name()) == NULL)
|
||||||
|
|
@ -864,7 +864,7 @@ static struct session *session_new_announce(struct impl *impl, struct node *node
|
||||||
|
|
||||||
if ((str = pw_properties_get(props, "rtp.destination.ip")) == NULL)
|
if ((str = pw_properties_get(props, "rtp.destination.ip")) == NULL)
|
||||||
goto error_free;
|
goto error_free;
|
||||||
if ((res = parse_address(str, sdp->dst_port, &sdp->dst_addr, &sdp->dst_len)) < 0) {
|
if ((res = pw_net_parse_address(str, sdp->dst_port, &sdp->dst_addr, &sdp->dst_len)) < 0) {
|
||||||
pw_log_error("invalid destination.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid destination.ip %s: %s", str, spa_strerror(res));
|
||||||
goto error_free;
|
goto error_free;
|
||||||
}
|
}
|
||||||
|
|
@ -1107,7 +1107,7 @@ static struct session *session_new(struct impl *impl, struct sdp_info *info)
|
||||||
pw_properties_set(props, PW_KEY_MEDIA_NAME, "RTP Stream");
|
pw_properties_set(props, PW_KEY_MEDIA_NAME, "RTP Stream");
|
||||||
}
|
}
|
||||||
|
|
||||||
get_ip(&info->dst_addr, dst_addr, sizeof(dst_addr), NULL, NULL);
|
pw_net_get_ip(&info->dst_addr, dst_addr, sizeof(dst_addr), NULL, NULL);
|
||||||
pw_properties_setf(props, "rtp.destination.ip", "%s", dst_addr);
|
pw_properties_setf(props, "rtp.destination.ip", "%s", dst_addr);
|
||||||
pw_properties_setf(props, "rtp.destination.port", "%u", info->dst_port);
|
pw_properties_setf(props, "rtp.destination.port", "%u", info->dst_port);
|
||||||
pw_properties_setf(props, "rtp.payload", "%u", info->payload);
|
pw_properties_setf(props, "rtp.payload", "%u", info->payload);
|
||||||
|
|
@ -1477,7 +1477,7 @@ static int start_sap(struct impl *impl)
|
||||||
if ((fd = make_recv_socket(&impl->sap_addr, impl->sap_len, impl->ifname)) < 0)
|
if ((fd = make_recv_socket(&impl->sap_addr, impl->sap_len, impl->ifname)) < 0)
|
||||||
return fd;
|
return fd;
|
||||||
|
|
||||||
get_ip(&impl->sap_addr, addr, sizeof(addr), NULL, NULL);
|
pw_net_get_ip(&impl->sap_addr, addr, sizeof(addr), NULL, NULL);
|
||||||
pw_log_info("starting SAP listener on %s", addr);
|
pw_log_info("starting SAP listener on %s", addr);
|
||||||
impl->sap_source = pw_loop_add_io(impl->loop, fd,
|
impl->sap_source = pw_loop_add_io(impl->loop, fd,
|
||||||
SPA_IO_IN, true, on_sap_io, impl);
|
SPA_IO_IN, true, on_sap_io, impl);
|
||||||
|
|
@ -1709,7 +1709,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
if ((str = pw_properties_get(props, "sap.ip")) == NULL)
|
if ((str = pw_properties_get(props, "sap.ip")) == NULL)
|
||||||
str = DEFAULT_SAP_IP;
|
str = DEFAULT_SAP_IP;
|
||||||
port = pw_properties_get_uint32(props, "sap.port", DEFAULT_SAP_PORT);
|
port = pw_properties_get_uint32(props, "sap.port", DEFAULT_SAP_PORT);
|
||||||
if ((res = parse_address(str, port, &impl->sap_addr, &impl->sap_len)) < 0) {
|
if ((res = pw_net_parse_address(str, port, &impl->sap_addr, &impl->sap_len)) < 0) {
|
||||||
pw_log_error("invalid sap.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid sap.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
@ -1742,7 +1742,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
str = impl->sap_addr.ss_family == AF_INET ?
|
str = impl->sap_addr.ss_family == AF_INET ?
|
||||||
DEFAULT_SOURCE_IP : DEFAULT_SOURCE_IP6;
|
DEFAULT_SOURCE_IP : DEFAULT_SOURCE_IP6;
|
||||||
}
|
}
|
||||||
if ((res = parse_address(str, 0, &impl->src_addr, &impl->src_len)) < 0) {
|
if ((res = pw_net_parse_address(str, 0, &impl->src_addr, &impl->src_len)) < 0) {
|
||||||
pw_log_error("invalid source.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid source.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -715,7 +715,7 @@ static void parse_apple_midi_cmd_in(struct impl *impl, bool ctrl, uint8_t *buffe
|
||||||
initiator = ntohl(hdr->initiator);
|
initiator = ntohl(hdr->initiator);
|
||||||
ssrc = ntohl(hdr->ssrc);
|
ssrc = ntohl(hdr->ssrc);
|
||||||
|
|
||||||
get_ip(sa, addr, sizeof(addr), NULL, &port);
|
pw_net_get_ip(sa, addr, sizeof(addr), NULL, &port);
|
||||||
pw_log_info("IN from %s:%d %s ssrc:%08x initiator:%08x",
|
pw_log_info("IN from %s:%d %s ssrc:%08x initiator:%08x",
|
||||||
addr, port, hdr->name, ssrc, initiator);
|
addr, port, hdr->name, ssrc, initiator);
|
||||||
|
|
||||||
|
|
@ -1405,10 +1405,10 @@ static struct service *make_service(struct impl *impl, const struct service_info
|
||||||
}
|
}
|
||||||
s->sess = sess;
|
s->sess = sess;
|
||||||
|
|
||||||
if ((res = parse_address(at, s->info.port, &sess->ctrl_addr, &sess->ctrl_len)) < 0) {
|
if ((res = pw_net_parse_address(at, s->info.port, &sess->ctrl_addr, &sess->ctrl_len)) < 0) {
|
||||||
pw_log_error("invalid address %s: %s", at, spa_strerror(res));
|
pw_log_error("invalid address %s: %s", at, spa_strerror(res));
|
||||||
}
|
}
|
||||||
if ((res = parse_address(at, s->info.port+1, &sess->data_addr, &sess->data_len)) < 0) {
|
if ((res = pw_net_parse_address(at, s->info.port+1, &sess->data_addr, &sess->data_len)) < 0) {
|
||||||
pw_log_error("invalid address %s: %s", at, spa_strerror(res));
|
pw_log_error("invalid address %s: %s", at, spa_strerror(res));
|
||||||
}
|
}
|
||||||
return s;
|
return s;
|
||||||
|
|
@ -1748,11 +1748,11 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
|
|
||||||
impl->ctrl_port = port;
|
impl->ctrl_port = port;
|
||||||
|
|
||||||
if ((res = parse_address(str, port, &impl->ctrl_addr, &impl->ctrl_len)) < 0) {
|
if ((res = pw_net_parse_address(str, port, &impl->ctrl_addr, &impl->ctrl_len)) < 0) {
|
||||||
pw_log_error("invalid control.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid control.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if ((res = parse_address(str, port ? port+1 : 0, &impl->data_addr, &impl->data_len)) < 0) {
|
if ((res = pw_net_parse_address(str, port ? port+1 : 0, &impl->data_addr, &impl->data_len)) < 0) {
|
||||||
pw_log_error("invalid data.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid data.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -350,7 +350,7 @@ static void stream_props_changed(struct impl *impl, uint32_t id, const struct sp
|
||||||
pw_log_info("key '%s', value '%s'", key, value);
|
pw_log_info("key '%s', value '%s'", key, value);
|
||||||
if (!spa_streq(key, "destination.ip"))
|
if (!spa_streq(key, "destination.ip"))
|
||||||
continue;
|
continue;
|
||||||
if (parse_address(value, impl->dst_port, &impl->dst_addr,
|
if (pw_net_parse_address(value, impl->dst_port, &impl->dst_addr,
|
||||||
&impl->dst_len) < 0) {
|
&impl->dst_len) < 0) {
|
||||||
pw_log_error("invalid destination.ip: '%s'", value);
|
pw_log_error("invalid destination.ip: '%s'", value);
|
||||||
break;
|
break;
|
||||||
|
|
@ -536,14 +536,14 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
impl->dst_port = pw_properties_get_uint32(props, "destination.port", impl->dst_port);
|
impl->dst_port = pw_properties_get_uint32(props, "destination.port", impl->dst_port);
|
||||||
if ((str = pw_properties_get(props, "destination.ip")) == NULL)
|
if ((str = pw_properties_get(props, "destination.ip")) == NULL)
|
||||||
str = DEFAULT_DESTINATION_IP;
|
str = DEFAULT_DESTINATION_IP;
|
||||||
if ((res = parse_address(str, impl->dst_port, &impl->dst_addr, &impl->dst_len)) < 0) {
|
if ((res = pw_net_parse_address(str, impl->dst_port, &impl->dst_addr, &impl->dst_len)) < 0) {
|
||||||
pw_log_error("invalid destination.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid destination.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if ((str = pw_properties_get(props, "source.ip")) == NULL)
|
if ((str = pw_properties_get(props, "source.ip")) == NULL)
|
||||||
str = impl->dst_addr.ss_family == AF_INET ?
|
str = impl->dst_addr.ss_family == AF_INET ?
|
||||||
DEFAULT_SOURCE_IP : DEFAULT_SOURCE_IP6;
|
DEFAULT_SOURCE_IP : DEFAULT_SOURCE_IP6;
|
||||||
if ((res = parse_address(str, 0, &impl->src_addr, &impl->src_len)) < 0) {
|
if ((res = pw_net_parse_address(str, 0, &impl->src_addr, &impl->src_len)) < 0) {
|
||||||
pw_log_error("invalid source.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid source.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
@ -557,9 +557,9 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
ts_offset = pw_rand32();
|
ts_offset = pw_rand32();
|
||||||
pw_properties_setf(stream_props, "rtp.sender-ts-offset", "%u", (uint32_t)ts_offset);
|
pw_properties_setf(stream_props, "rtp.sender-ts-offset", "%u", (uint32_t)ts_offset);
|
||||||
|
|
||||||
get_ip(&impl->src_addr, addr, sizeof(addr), NULL, NULL);
|
pw_net_get_ip(&impl->src_addr, addr, sizeof(addr), NULL, NULL);
|
||||||
pw_properties_set(stream_props, "rtp.source.ip", addr);
|
pw_properties_set(stream_props, "rtp.source.ip", addr);
|
||||||
get_ip(&impl->dst_addr, addr, sizeof(addr), NULL, NULL);
|
pw_net_get_ip(&impl->dst_addr, addr, sizeof(addr), NULL, NULL);
|
||||||
pw_properties_set(stream_props, "rtp.destination.ip", addr);
|
pw_properties_set(stream_props, "rtp.destination.ip", addr);
|
||||||
pw_properties_setf(stream_props, "rtp.destination.port", "%u", impl->dst_port);
|
pw_properties_setf(stream_props, "rtp.destination.port", "%u", impl->dst_port);
|
||||||
pw_properties_setf(stream_props, "rtp.ttl", "%u", impl->ttl);
|
pw_properties_setf(stream_props, "rtp.ttl", "%u", impl->ttl);
|
||||||
|
|
|
||||||
|
|
@ -240,7 +240,7 @@ static int make_socket(const struct sockaddr* sa, socklen_t salen, char *ifname)
|
||||||
memset(&mr4, 0, sizeof(mr4));
|
memset(&mr4, 0, sizeof(mr4));
|
||||||
mr4.imr_multiaddr = sa4->sin_addr;
|
mr4.imr_multiaddr = sa4->sin_addr;
|
||||||
mr4.imr_ifindex = req.ifr_ifindex;
|
mr4.imr_ifindex = req.ifr_ifindex;
|
||||||
get_ip((struct sockaddr_storage*)sa, addr, sizeof(addr), NULL, NULL);
|
pw_net_get_ip((struct sockaddr_storage*)sa, addr, sizeof(addr), NULL, NULL);
|
||||||
pw_log_info("join IPv4 group: %s", addr);
|
pw_log_info("join IPv4 group: %s", addr);
|
||||||
res = setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mr4, sizeof(mr4));
|
res = setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mr4, sizeof(mr4));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -257,7 +257,7 @@ static int make_socket(const struct sockaddr* sa, socklen_t salen, char *ifname)
|
||||||
memset(&mr6, 0, sizeof(mr6));
|
memset(&mr6, 0, sizeof(mr6));
|
||||||
mr6.ipv6mr_multiaddr = sa6->sin6_addr;
|
mr6.ipv6mr_multiaddr = sa6->sin6_addr;
|
||||||
mr6.ipv6mr_interface = req.ifr_ifindex;
|
mr6.ipv6mr_interface = req.ifr_ifindex;
|
||||||
get_ip((struct sockaddr_storage*)sa, addr, sizeof(addr), NULL, NULL);
|
pw_net_get_ip((struct sockaddr_storage*)sa, addr, sizeof(addr), NULL, NULL);
|
||||||
pw_log_info("join IPv6 group: %s", addr);
|
pw_log_info("join IPv6 group: %s", addr);
|
||||||
res = setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mr6, sizeof(mr6));
|
res = setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mr6, sizeof(mr6));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -385,7 +385,7 @@ static void stream_props_changed(struct impl *impl, uint32_t id, const struct sp
|
||||||
pw_log_info("key '%s', value '%s'", key, value);
|
pw_log_info("key '%s', value '%s'", key, value);
|
||||||
if (!spa_streq(key, "source.ip"))
|
if (!spa_streq(key, "source.ip"))
|
||||||
continue;
|
continue;
|
||||||
if (parse_address(value, impl->src_port, &impl->src_addr,
|
if (pw_net_parse_address(value, impl->src_port, &impl->src_addr,
|
||||||
&impl->src_len) < 0) {
|
&impl->src_len) < 0) {
|
||||||
pw_log_error("invalid source.ip: '%s'", value);
|
pw_log_error("invalid source.ip: '%s'", value);
|
||||||
break;
|
break;
|
||||||
|
|
@ -581,11 +581,11 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
}
|
}
|
||||||
if ((str = pw_properties_get(props, "source.ip")) == NULL)
|
if ((str = pw_properties_get(props, "source.ip")) == NULL)
|
||||||
str = DEFAULT_SOURCE_IP;
|
str = DEFAULT_SOURCE_IP;
|
||||||
if ((res = parse_address(str, impl->src_port, &impl->src_addr, &impl->src_len)) < 0) {
|
if ((res = pw_net_parse_address(str, impl->src_port, &impl->src_addr, &impl->src_len)) < 0) {
|
||||||
pw_log_error("invalid source.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid source.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
get_ip(&impl->src_addr, addr, sizeof(addr), NULL, NULL);
|
pw_net_get_ip(&impl->src_addr, addr, sizeof(addr), NULL, NULL);
|
||||||
pw_properties_set(stream_props, "rtp.source.ip", addr);
|
pw_properties_set(stream_props, "rtp.source.ip", addr);
|
||||||
pw_properties_setf(stream_props, "rtp.source.port", "%u", impl->src_port);
|
pw_properties_setf(stream_props, "rtp.source.port", "%u", impl->src_port);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -489,7 +489,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
}
|
}
|
||||||
if ((str = pw_properties_get(props, "source.ip")) == NULL)
|
if ((str = pw_properties_get(props, "source.ip")) == NULL)
|
||||||
str = DEFAULT_SOURCE_IP;
|
str = DEFAULT_SOURCE_IP;
|
||||||
if ((res = parse_address(str, impl->src_port, &impl->src_addr, &impl->src_len)) < 0) {
|
if ((res = pw_net_parse_address(str, impl->src_port, &impl->src_addr, &impl->src_len)) < 0) {
|
||||||
pw_log_error("invalid source.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid source.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -428,7 +428,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
|
|
||||||
if ((str = pw_properties_get(props, "source.ip")) == NULL)
|
if ((str = pw_properties_get(props, "source.ip")) == NULL)
|
||||||
str = DEFAULT_SOURCE_IP;
|
str = DEFAULT_SOURCE_IP;
|
||||||
if ((res = parse_address(str, 0, &impl->src_addr, &impl->src_len)) < 0) {
|
if ((res = pw_net_parse_address(str, 0, &impl->src_addr, &impl->src_len)) < 0) {
|
||||||
pw_log_error("invalid source.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid source.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
@ -436,7 +436,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
impl->dst_port = pw_properties_get_uint32(props, "destination.port", DEFAULT_PORT);
|
impl->dst_port = pw_properties_get_uint32(props, "destination.port", DEFAULT_PORT);
|
||||||
if ((str = pw_properties_get(props, "destination.ip")) == NULL)
|
if ((str = pw_properties_get(props, "destination.ip")) == NULL)
|
||||||
str = DEFAULT_DESTINATION_IP;
|
str = DEFAULT_DESTINATION_IP;
|
||||||
if ((res = parse_address(str, impl->dst_port, &impl->dst_addr, &impl->dst_len)) < 0) {
|
if ((res = pw_net_parse_address(str, impl->dst_port, &impl->dst_addr, &impl->dst_len)) < 0) {
|
||||||
pw_log_error("invalid destination.ip %s: %s", str, spa_strerror(res));
|
pw_log_error("invalid destination.ip %s: %s", str, spa_strerror(res));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
@ -445,9 +445,9 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
|
||||||
impl->mcast_loop = pw_properties_get_bool(props, "net.loop", DEFAULT_LOOP);
|
impl->mcast_loop = pw_properties_get_bool(props, "net.loop", DEFAULT_LOOP);
|
||||||
impl->dscp = pw_properties_get_uint32(props, "net.dscp", DEFAULT_DSCP);
|
impl->dscp = pw_properties_get_uint32(props, "net.dscp", DEFAULT_DSCP);
|
||||||
|
|
||||||
get_ip(&impl->src_addr, addr, sizeof(addr), NULL, NULL);
|
pw_net_get_ip(&impl->src_addr, addr, sizeof(addr), NULL, NULL);
|
||||||
pw_properties_set(stream_props, "vban.source.ip", addr);
|
pw_properties_set(stream_props, "vban.source.ip", addr);
|
||||||
get_ip(&impl->dst_addr, addr, sizeof(addr), NULL, NULL);
|
pw_net_get_ip(&impl->dst_addr, addr, sizeof(addr), NULL, NULL);
|
||||||
pw_properties_set(stream_props, "vban.destination.ip", addr);
|
pw_properties_set(stream_props, "vban.destination.ip", addr);
|
||||||
pw_properties_setf(stream_props, "vban.destination.port", "%u", impl->dst_port);
|
pw_properties_setf(stream_props, "vban.destination.port", "%u", impl->dst_port);
|
||||||
pw_properties_setf(stream_props, "vban.ttl", "%u", impl->ttl);
|
pw_properties_setf(stream_props, "vban.ttl", "%u", impl->ttl);
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
#include <net/if.h>
|
#include <net/if.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
static int parse_address(const char *address, uint16_t port,
|
static int pw_net_parse_address(const char *address, uint16_t port,
|
||||||
struct sockaddr_storage *addr, socklen_t *len)
|
struct sockaddr_storage *addr, socklen_t *len)
|
||||||
{
|
{
|
||||||
struct addrinfo hints;
|
struct addrinfo hints;
|
||||||
|
|
@ -25,9 +25,8 @@ static int parse_address(const char *address, uint16_t port,
|
||||||
|
|
||||||
res = getaddrinfo(address, port_str, &hints, &result);
|
res = getaddrinfo(address, port_str, &hints, &result);
|
||||||
|
|
||||||
if (res != 0) {
|
if (res != 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
|
||||||
|
|
||||||
for (rp = result; rp != NULL; rp = rp->ai_next) {
|
for (rp = result; rp != NULL; rp = rp->ai_next) {
|
||||||
memcpy(addr, rp->ai_addr, rp->ai_addrlen);
|
memcpy(addr, rp->ai_addr, rp->ai_addrlen);
|
||||||
|
|
@ -39,7 +38,7 @@ static int parse_address(const char *address, uint16_t port,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int get_ip(const struct sockaddr_storage *sa, char *ip, size_t len, bool *ip4, uint16_t *port)
|
static int pw_net_get_ip(const struct sockaddr_storage *sa, char *ip, size_t len, bool *ip4, uint16_t *port)
|
||||||
{
|
{
|
||||||
if (sa->ss_family == AF_INET) {
|
if (sa->ss_family == AF_INET) {
|
||||||
struct sockaddr_in *in = (struct sockaddr_in*)sa;
|
struct sockaddr_in *in = (struct sockaddr_in*)sa;
|
||||||
|
|
@ -51,16 +50,15 @@ static int get_ip(const struct sockaddr_storage *sa, char *ip, size_t len, bool
|
||||||
inet_ntop(sa->ss_family, &in->sin6_addr, ip, len);
|
inet_ntop(sa->ss_family, &in->sin6_addr, ip, len);
|
||||||
if (port)
|
if (port)
|
||||||
*port = ntohs(in->sin6_port);
|
*port = ntohs(in->sin6_port);
|
||||||
if (in->sin6_scope_id == 0 || len <= 1) {
|
if (in->sin6_scope_id == 0 || len <= 1)
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
|
||||||
size_t curlen = strlen(ip);
|
size_t curlen = strlen(ip);
|
||||||
if (len-(curlen+1) >= IFNAMSIZ) {
|
if (len-(curlen+1) >= IFNAMSIZ) {
|
||||||
ip += curlen+1;
|
ip += curlen+1;
|
||||||
ip[-1] = '%';
|
ip[-1] = '%';
|
||||||
if (if_indextoname(in->sin6_scope_id, ip) == NULL) {
|
if (if_indextoname(in->sin6_scope_id, ip) == NULL)
|
||||||
ip[-1] = 0;
|
ip[-1] = 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
@ -70,11 +68,10 @@ finish:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline char *get_ip_fmt(const struct sockaddr_storage *sa, char *ip, size_t len)
|
static inline char *pw_net_get_ip_fmt(const struct sockaddr_storage *sa, char *ip, size_t len)
|
||||||
{
|
{
|
||||||
if (get_ip(sa, ip, len, NULL, NULL) != 0) {
|
if (pw_net_get_ip(sa, ip, len, NULL, NULL) != 0)
|
||||||
snprintf(ip, len, "invalid ip");
|
snprintf(ip, len, "invalid ip");
|
||||||
}
|
|
||||||
return ip;
|
return ip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue