+static int
+raop_rtp_parse_remote(raop_rtp_t *raop_rtp, const char *remote)
+{
+ char *original;
+ char *current;
+ char *tmpstr;
+ int family;
+ int ret;
+
+ assert(raop_rtp);
+
+ current = original = strdup(remote);
+ if (!original) {
+ return -1;
+ }
+ tmpstr = utils_strsep(¤t, " ");
+ if (strcmp(tmpstr, "IN")) {
+ free(original);
+ return -1;
+ }
+ tmpstr = utils_strsep(¤t, " ");
+ if (!strcmp(tmpstr, "IP4") && current) {
+ family = AF_INET;
+ } else if (!strcmp(tmpstr, "IP6") && current) {
+ family = AF_INET6;
+ } else {
+ free(original);
+ return -1;
+ }
+ ret = netutils_parse_address(family, current,
+ &raop_rtp->remote_saddr,
+ sizeof(raop_rtp->remote_saddr));
+ if (ret < 0) {
+ free(original);
+ return -1;
+ }
+ raop_rtp->remote_saddr_len = ret;
+ free(original);
+ return 0;
+}
+