942
943
res = sendmsg (instance->token_socket, &msg_ucast, MSG_NOSIGNAL);
945
strerror_r (errno, error_str, sizeof(error_str));
946
log_printf (instance->totemudpu_log_level_debug,
947
"sendmsg(ucast) failed (non-critical): %s\n", error_str);
945
LOGSYS_PERROR (errno, instance->totemudpu_log_level_debug,
946
"sendmsg(ucast) failed (non-critical)");
1035
1034
res = sendmsg (member->fd, &msg_mcast, MSG_NOSIGNAL);
1037
char error_str[100];
1038
strerror_r (errno, error_str, sizeof(error_str));
1039
log_printf (instance->totemudpu_log_level_debug,
1040
"sendmsg(mcast) failed (non-critical): %s\n", error_str);
1036
LOGSYS_PERROR (errno, instance->totemudpu_log_level_debug,
1037
"sendmsg(mcast) failed (non-critical)");
1284
1281
#ifdef SO_PRIORITY
1285
1282
int prio = 6; /* TC_PRIO_INTERACTIVE */
1286
char error_str[100];
1288
1284
if (setsockopt(sock, SOL_SOCKET, SO_PRIORITY, &prio, sizeof(int))) {
1289
strerror_r (errno, error_str, 100);
1290
log_printf (instance->totemudpu_log_level_warning,
1291
"Could not set traffic priority. (%s)\n", error_str);
1285
LOGSYS_PERROR (errno, instance->totemudpu_log_level_warning,
1286
"Could not set traffic priority");
1311
1306
instance->token_socket = socket (bindnet_address->family, SOCK_DGRAM, 0);
1312
1307
if (instance->token_socket == -1) {
1308
LOGSYS_PERROR (errno, instance->totemudpu_log_level_warning,
1317
1313
totemip_nosigpipe (instance->token_socket);
1318
1314
res = fcntl (instance->token_socket, F_SETFL, O_NONBLOCK);
1319
1315
if (res == -1) {
1320
char error_str[100];
1321
strerror_r (errno, error_str, 100);
1322
log_printf (instance->totemudpu_log_level_warning,
1323
"Could not set non-blocking operation on token socket: %s\n", error_str);
1316
LOGSYS_PERROR (errno, instance->totemudpu_log_level_warning,
1317
"Could not set non-blocking operation on token socket");
1331
// if ( setsockopt(instance->token_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&flag, sizeof (flag)) < 0) {
1332
// perror("setsockopt reuseaddr");
1337
1322
* Bind to unicast socket used for token send/receives
1338
1323
* This has the side effect of binding to the correct interface
1340
1325
totemip_totemip_to_sockaddr_convert(bound_to, instance->totem_interface->ip_port, &sockaddr, &addrlen);
1341
1326
res = bind (instance->token_socket, (struct sockaddr *)&sockaddr, addrlen);
1342
1327
if (res == -1) {
1343
perror ("bind token socket failed");
1328
LOGSYS_PERROR (errno, instance->totemudpu_log_level_warning,
1329
"bind token socket failed");
1352
1338
res = setsockopt (instance->token_socket, SOL_SOCKET, SO_RCVBUF,
1353
1339
&recvbuf_size, optlen);
1354
1340
if (res == -1) {
1355
char error_str[100];
1356
strerror_r (errno, error_str, 100);
1357
log_printf (instance->totemudpu_log_level_notice,
1358
"Could not set recvbuf size %s\n", error_str);
1341
LOGSYS_PERROR (errno, instance->totemudpu_log_level_notice,
1342
"Could not set recvbuf size");
1680
1663
memcpy (&new_member->member, member, sizeof (struct totem_ip_address));
1681
1664
new_member->fd = socket (member->family, SOCK_DGRAM, 0);
1682
1665
if (new_member->fd == -1) {
1683
strerror_r (errno, error_str, 100);
1684
log_printf (instance->totemudpu_log_level_warning,
1685
"Could not create socket for new member: %s\n", error_str);
1666
LOGSYS_PERROR (errno, instance->totemudpu_log_level_warning,
1667
"Could not create socket for new member");
1688
1670
totemip_nosigpipe (new_member->fd);
1689
1671
res = fcntl (new_member->fd, F_SETFL, O_NONBLOCK);
1690
1672
if (res == -1) {
1691
strerror_r (errno, error_str, 100);
1692
log_printf (instance->totemudpu_log_level_warning,
1693
"Could not set non-blocking operation on token socket: %s\n", error_str);
1673
LOGSYS_PERROR (errno, instance->totemudpu_log_level_warning,
1674
"Could not set non-blocking operation on token socket");
1702
1683
res = setsockopt (new_member->fd, SOL_SOCKET, SO_SNDBUF,
1703
1684
&sendbuf_size, optlen);
1704
1685
if (res == -1) {
1705
strerror_r (errno, error_str, 100);
1706
log_printf (instance->totemudpu_log_level_notice,
1707
"Could not set sendbuf size %s\n", error_str);
1686
LOGSYS_PERROR (errno, instance->totemudpu_log_level_notice,
1687
"Could not set sendbuf size");