Creates data ports now.

FossilOrigin-Name: 1538ce3f4d795558870b39afdb406f1dadd2014e03a58147b68dd88a8cbc53d4
This commit is contained in:
7u83@mail.ru 2016-03-20 14:04:00 +00:00
parent 78752783a8
commit 6a4965ebe1
1 changed files with 35 additions and 3 deletions

View File

@ -300,7 +300,7 @@ int socklist_add_multicast(const char *addr, const char *port, int ac_proto)
int rfd = find_reply_socket(sa, 0);
socklist[socklist_len].sockfd = sockfd;
socklist[socklist_len].reply_sockfd = rfd;
// socklist[socklist_len].reply_sockfd = rfd;
socklist[socklist_len].type = SOCKLIST_BCASTMCAST_SOCKET;
socklist[socklist_len].family = sa->sa_family;
socklist[socklist_len].ac_proto = ac_proto;
@ -365,6 +365,7 @@ int socklist_add_unicast(const char *addr, const char *port, int ac_proto)
continue;
}
/* Bind the control port */
struct sockaddr *sa = res->ai_addr;
int sockfd = socket(res->ai_addr->sa_family, SOCK_DGRAM, 0);
/* create socket */
@ -384,12 +385,16 @@ int socklist_add_unicast(const char *addr, const char *port, int ac_proto)
socklist[socklist_len].sockfd = sockfd;
socklist[socklist_len].reply_sockfd = sockfd;
// socklist[socklist_len].reply_sockfd = sockfd;
socklist[socklist_len].family = sa->sa_family;
socklist[socklist_len].type = SOCKLIST_UNICAST_SOCKET;
socklist[socklist_len].ac_proto = ac_proto;
if (res->ai_addr->sa_family == AF_INET) {
memcpy(&socklist[socklist_len].netmask, &netmask,
sock_addrlen(&netmask));
@ -402,6 +407,33 @@ int socklist_add_unicast(const char *addr, const char *port, int ac_proto)
cw_log(LOG_INFO, "Bound to: [%s]:%s (%i) on interface %s", addr,
port, sockfd, ifname);
}
/* Bind the data port */
sa = res->ai_addr;
/* XXX data port is currently hard coded */
sock_setport(sa,5247);
sockfd = socket(res->ai_addr->sa_family, SOCK_DGRAM, 0);
/* create socket */
if (sockfd == -1) {
cw_log(LOG_ERR, "Can't create unicast socket: %s",
strerror(errno));
continue;
}
/* bind address */
if (bind(sockfd, sa, sock_addrlen(sa)) < 0) {
close(sockfd);
cw_log(LOG_ERR, "Can't bind unicast socket %s: %s", addr,
strerror(errno));
continue;
}
socklist[socklist_len].data_sockfd = sockfd;
socklist_len++;
}
@ -468,7 +500,7 @@ int socklist_add_broadcast(const char *addr, const char *port, int ac_proto)
int rfd = find_reply_socket(sa, 1);
socklist[socklist_len].sockfd = sockfd;
socklist[socklist_len].reply_sockfd = rfd;
// socklist[socklist_len].reply_sockfd = rfd;
socklist[socklist_len].type = SOCKLIST_BCASTMCAST_SOCKET;
socklist[socklist_len].family = sa->sa_family;
socklist[socklist_len].ac_proto = ac_proto;