|
|
@@ -69,6 +69,7 @@
|
|
|
#include "wthread.h"
|
|
|
|
|
|
#include "crypto.h"
|
|
|
+#include "util.h"
|
|
|
|
|
|
#ifdef HAVE_LIBNSS
|
|
|
#include <nss.h>
|
|
|
@@ -961,10 +962,8 @@ static inline void ucast_sendmsg (
|
|
|
res = sendmsg (instance->totemudp_sockets.mcast_send, &msg_ucast,
|
|
|
MSG_NOSIGNAL);
|
|
|
if (res < 0) {
|
|
|
- char error_str[100];
|
|
|
- strerror_r (errno, error_str, sizeof(error_str));
|
|
|
- log_printf (instance->totemudp_log_level_debug,
|
|
|
- "sendmsg(ucast) failed (non-critical): %s\n", error_str);
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_debug,
|
|
|
+ "sendmsg(ucast) failed (non-critical)");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1046,10 +1045,8 @@ static inline void mcast_sendmsg (
|
|
|
res = sendmsg (instance->totemudp_sockets.mcast_send, &msg_mcast,
|
|
|
MSG_NOSIGNAL);
|
|
|
if (res < 0) {
|
|
|
- char error_str[100];
|
|
|
- strerror_r (errno, error_str, sizeof(error_str));
|
|
|
- log_printf (instance->totemudp_log_level_debug,
|
|
|
- "sendmsg(mcast) failed (non-critical): %s\n", error_str);
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_debug,
|
|
|
+ "sendmsg(mcast) failed (non-critical)");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1126,10 +1123,8 @@ static void totemudp_mcast_worker_fn (void *thread_state, void *work_item_in)
|
|
|
res = sendmsg (instance->totemudp_sockets.mcast_send, &msg_mcast,
|
|
|
MSG_NOSIGNAL);
|
|
|
if (res < 0) {
|
|
|
- char error_str[100];
|
|
|
- strerror_r (errno, error_str, sizeof(error_str));
|
|
|
- log_printf (instance->totemudp_log_level_debug,
|
|
|
- "sendmsg(mcast) failed (non-critical): %s\n", error_str);
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_debug,
|
|
|
+ "sendmsg(mcast) failed (non-critical)");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1399,12 +1394,9 @@ static void totemudp_traffic_control_set(struct totemudp_instance *instance, int
|
|
|
{
|
|
|
#ifdef SO_PRIORITY
|
|
|
int prio = 6; /* TC_PRIO_INTERACTIVE */
|
|
|
- char error_str[100];
|
|
|
|
|
|
if (setsockopt(sock, SOL_SOCKET, SO_PRIORITY, &prio, sizeof(int))) {
|
|
|
- strerror_r (errno, error_str, 100);
|
|
|
- log_printf (instance->totemudp_log_level_warning,
|
|
|
- "Could not set traffic priority. (%s)\n", error_str);
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning, "Could not set traffic priority");
|
|
|
}
|
|
|
#endif
|
|
|
}
|
|
|
@@ -1436,17 +1428,16 @@ static int totemudp_build_sockets_ip (
|
|
|
*/
|
|
|
sockets->mcast_recv = socket (bindnet_address->family, SOCK_DGRAM, 0);
|
|
|
if (sockets->mcast_recv == -1) {
|
|
|
- perror ("socket");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "socket() failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
totemip_nosigpipe (sockets->mcast_recv);
|
|
|
res = fcntl (sockets->mcast_recv, F_SETFL, O_NONBLOCK);
|
|
|
if (res == -1) {
|
|
|
- char error_str[100];
|
|
|
- strerror_r (errno, error_str, 100);
|
|
|
- log_printf (instance->totemudp_log_level_warning,
|
|
|
- "Could not set non-blocking operation on multicast socket: %s\n", error_str);
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "Could not set non-blocking operation on multicast socket");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -1455,7 +1446,8 @@ static int totemudp_build_sockets_ip (
|
|
|
*/
|
|
|
flag = 1;
|
|
|
if ( setsockopt(sockets->mcast_recv, SOL_SOCKET, SO_REUSEADDR, (char *)&flag, sizeof (flag)) < 0) {
|
|
|
- perror("setsockopt reuseaddr");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "setsockopt(SO_REUSEADDR) failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -1466,7 +1458,8 @@ static int totemudp_build_sockets_ip (
|
|
|
instance->totem_interface->ip_port, &sockaddr, &addrlen);
|
|
|
res = bind (sockets->mcast_recv, (struct sockaddr *)&sockaddr, addrlen);
|
|
|
if (res == -1) {
|
|
|
- perror ("bind mcast recv socket failed");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "Unable to bind the socket to receive multicast packets");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -1475,17 +1468,16 @@ static int totemudp_build_sockets_ip (
|
|
|
*/
|
|
|
sockets->mcast_send = socket (bindnet_address->family, SOCK_DGRAM, 0);
|
|
|
if (sockets->mcast_send == -1) {
|
|
|
- perror ("socket");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "socket() failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
totemip_nosigpipe (sockets->mcast_send);
|
|
|
res = fcntl (sockets->mcast_send, F_SETFL, O_NONBLOCK);
|
|
|
if (res == -1) {
|
|
|
- char error_str[100];
|
|
|
- strerror_r (errno, error_str, 100);
|
|
|
- log_printf (instance->totemudp_log_level_warning,
|
|
|
- "Could not set non-blocking operation on multicast socket: %s\n", error_str);
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "Could not set non-blocking operation on multicast socket");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -1494,7 +1486,8 @@ static int totemudp_build_sockets_ip (
|
|
|
*/
|
|
|
flag = 1;
|
|
|
if ( setsockopt(sockets->mcast_send, SOL_SOCKET, SO_REUSEADDR, (char *)&flag, sizeof (flag)) < 0) {
|
|
|
- perror("setsockopt reuseaddr");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "setsockopt(SO_REUSEADDR) failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -1502,7 +1495,8 @@ static int totemudp_build_sockets_ip (
|
|
|
&sockaddr, &addrlen);
|
|
|
res = bind (sockets->mcast_send, (struct sockaddr *)&sockaddr, addrlen);
|
|
|
if (res == -1) {
|
|
|
- perror ("bind mcast send socket failed");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "Unable to bind the socket to send multicast packets");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -1511,17 +1505,16 @@ static int totemudp_build_sockets_ip (
|
|
|
*/
|
|
|
sockets->token = socket (bindnet_address->family, SOCK_DGRAM, 0);
|
|
|
if (sockets->token == -1) {
|
|
|
- perror ("socket2");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "socket() failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
totemip_nosigpipe (sockets->token);
|
|
|
res = fcntl (sockets->token, F_SETFL, O_NONBLOCK);
|
|
|
if (res == -1) {
|
|
|
- char error_str[100];
|
|
|
- strerror_r (errno, error_str, 100);
|
|
|
- log_printf (instance->totemudp_log_level_warning,
|
|
|
- "Could not set non-blocking operation on token socket: %s\n", error_str);
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "Could not set non-blocking operation on token socket");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -1530,7 +1523,8 @@ static int totemudp_build_sockets_ip (
|
|
|
*/
|
|
|
flag = 1;
|
|
|
if ( setsockopt(sockets->token, SOL_SOCKET, SO_REUSEADDR, (char *)&flag, sizeof (flag)) < 0) {
|
|
|
- perror("setsockopt reuseaddr");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "setsockopt(SO_REUSEADDR) failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -1541,7 +1535,8 @@ static int totemudp_build_sockets_ip (
|
|
|
totemip_totemip_to_sockaddr_convert(bound_to, instance->totem_interface->ip_port, &sockaddr, &addrlen);
|
|
|
res = bind (sockets->token, (struct sockaddr *)&sockaddr, addrlen);
|
|
|
if (res == -1) {
|
|
|
- perror ("bind token socket failed");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "Unable to bind UDP unicast socket");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -1576,12 +1571,14 @@ static int totemudp_build_sockets_ip (
|
|
|
|
|
|
if ((setsockopt(sockets->mcast_recv, SOL_SOCKET,
|
|
|
SO_BROADCAST, &broadcast, sizeof (broadcast))) == -1) {
|
|
|
- perror("setting broadcast option");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "setting broadcast option failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
if ((setsockopt(sockets->mcast_send, SOL_SOCKET,
|
|
|
SO_BROADCAST, &broadcast, sizeof (broadcast))) == -1) {
|
|
|
- perror("setting broadcast option");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "setting broadcast option failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
} else {
|
|
|
@@ -1593,7 +1590,8 @@ static int totemudp_build_sockets_ip (
|
|
|
res = setsockopt (sockets->mcast_recv, IPPROTO_IP, IP_ADD_MEMBERSHIP,
|
|
|
&mreq, sizeof (mreq));
|
|
|
if (res == -1) {
|
|
|
- perror ("join ipv4 multicast group failed");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "join ipv4 multicast group failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
break;
|
|
|
@@ -1605,7 +1603,8 @@ static int totemudp_build_sockets_ip (
|
|
|
res = setsockopt (sockets->mcast_recv, IPPROTO_IPV6, IPV6_JOIN_GROUP,
|
|
|
&mreq6, sizeof (mreq6));
|
|
|
if (res == -1) {
|
|
|
- perror ("join ipv6 multicast group failed");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "join ipv6 multicast group failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
break;
|
|
|
@@ -1627,7 +1626,8 @@ static int totemudp_build_sockets_ip (
|
|
|
&flag, sizeof (flag));
|
|
|
}
|
|
|
if (res == -1) {
|
|
|
- perror ("turn off loopback");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "Unable to turn on multicast loopback");
|
|
|
return (-1);
|
|
|
}
|
|
|
|
|
|
@@ -1639,14 +1639,16 @@ static int totemudp_build_sockets_ip (
|
|
|
res = setsockopt (sockets->mcast_send, IPPROTO_IPV6, IPV6_MULTICAST_HOPS,
|
|
|
&flag, sizeof (flag));
|
|
|
if (res == -1) {
|
|
|
- perror ("set mcast v6 TTL");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "set mcast v6 TTL failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
} else {
|
|
|
res = setsockopt(sockets->mcast_send, IPPROTO_IP, IP_MULTICAST_TTL,
|
|
|
&flag, sizeof(flag));
|
|
|
if (res == -1) {
|
|
|
- perror ("set mcast v4 TTL");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "set mcast v4 TTL failed");
|
|
|
return (-1);
|
|
|
}
|
|
|
}
|
|
|
@@ -1658,24 +1660,28 @@ static int totemudp_build_sockets_ip (
|
|
|
case AF_INET:
|
|
|
if (setsockopt (sockets->mcast_send, IPPROTO_IP, IP_MULTICAST_IF,
|
|
|
&boundto_sin->sin_addr, sizeof (boundto_sin->sin_addr)) < 0) {
|
|
|
- perror ("cannot select interface");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "cannot select interface for multicast packets (send)");
|
|
|
return (-1);
|
|
|
}
|
|
|
if (setsockopt (sockets->mcast_recv, IPPROTO_IP, IP_MULTICAST_IF,
|
|
|
&boundto_sin->sin_addr, sizeof (boundto_sin->sin_addr)) < 0) {
|
|
|
- perror ("cannot select interface");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "cannot select interface for multicast packets (recv)");
|
|
|
return (-1);
|
|
|
}
|
|
|
break;
|
|
|
case AF_INET6:
|
|
|
if (setsockopt (sockets->mcast_send, IPPROTO_IPV6, IPV6_MULTICAST_IF,
|
|
|
&interface_num, sizeof (interface_num)) < 0) {
|
|
|
- perror ("cannot select interface");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "cannot select interface for multicast packets (send v6)");
|
|
|
return (-1);
|
|
|
}
|
|
|
if (setsockopt (sockets->mcast_recv, IPPROTO_IPV6, IPV6_MULTICAST_IF,
|
|
|
&interface_num, sizeof (interface_num)) < 0) {
|
|
|
- perror ("cannot select interface");
|
|
|
+ LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
|
|
|
+ "cannot select interface for multicast packets (recv v6)");
|
|
|
return (-1);
|
|
|
}
|
|
|
break;
|