diff options
Diffstat (limited to 'src/lib/dlt_client.c')
-rw-r--r-- | src/lib/dlt_client.c | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/src/lib/dlt_client.c b/src/lib/dlt_client.c index c032fd4..af380e4 100644 --- a/src/lib/dlt_client.c +++ b/src/lib/dlt_client.c @@ -428,27 +428,32 @@ DltReturnValue dlt_client_connect(DltClient *client, int verbose) return DLT_RETURN_ERROR; } - mreq.imr_multiaddr.s_addr = inet_addr(client->servIP); - if (mreq.imr_multiaddr.s_addr == (in_addr_t)-1) - { - dlt_vlog(LOG_ERR, - "%s: ERROR: server address not not valid %s\n", - __func__, - client->servIP); + char delimiter[] = ","; + char* servIP = strtok(client->servIP, delimiter); - return DLT_RETURN_ERROR; - } + while(servIP != NULL) { + mreq.imr_multiaddr.s_addr = inet_addr(servIP); + if (mreq.imr_multiaddr.s_addr == (in_addr_t)-1) + { + dlt_vlog(LOG_ERR, + "%s: ERROR: server address not not valid %s\n", + __func__, + servIP); - if (setsockopt(client->sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&mreq, sizeof(mreq)) < 0) - { - dlt_vlog(LOG_ERR, - "%s: ERROR: setsockopt add membership failed: %s\n", - __func__, - strerror(errno)); + return DLT_RETURN_ERROR; + } - return DLT_RETURN_ERROR; - } + if (setsockopt(client->sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&mreq, sizeof(mreq)) < 0) + { + dlt_vlog(LOG_ERR, + "%s: ERROR: setsockopt add membership failed: %s\n", + __func__, + strerror(errno)); + return DLT_RETURN_ERROR; + } + servIP = strtok(NULL, delimiter); + } receiver_type = DLT_RECEIVE_UDP_SOCKET; break; |