Skip to content

Commit

Permalink
[transports] add logging around setsockopts that have specific per di…
Browse files Browse the repository at this point in the history
…stro/include requirements

this is helpful to determine if a given option has been built-in and/or activated
properly

Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com>
  • Loading branch information
fabbione committed Nov 28, 2017
1 parent a17516d commit 29e395d
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 5 deletions.
44 changes: 40 additions & 4 deletions libknet/transport_common.c
Expand Up @@ -148,8 +148,9 @@ int _configure_common_socket(knet_handle_t knet_h, int sock, uint64_t flags, con
goto exit_error;
}

#ifdef SO_PRIORITY
if (flags & KNET_LINK_FLAG_TRAFFICHIPRIO) {
#ifdef KNET_LINUX
#ifdef SO_PRIORITY
value = 6; /* TC_PRIO_INTERACTIVE */
if (setsockopt(sock, SOL_SOCKET, SO_PRIORITY, &value, sizeof(value)) < 0) {
savederrno = errno;
Expand All @@ -158,10 +159,12 @@ int _configure_common_socket(knet_handle_t knet_h, int sock, uint64_t flags, con
type, strerror(savederrno));
goto exit_error;
}
}
log_debug(knet_h, KNET_SUB_TRANSPORT, "TC_PRIO_INTERACTIVE enabled on socket: %i", sock);
#else
log_debug(knet_h, KNET_SUB_TRANSPORT, "TC_PRIO_INTERACTIVE not available in this build/platform");
#endif
#endif
#if defined(IP_TOS) && defined(IPTOS_LOWDELAY)
if (flags & KNET_LINK_FLAG_TRAFFICHIPRIO) {
value = IPTOS_LOWDELAY;
if (setsockopt(sock, IPPROTO_IP, IP_TOS, &value, sizeof(value)) < 0) {
savederrno = errno;
Expand All @@ -170,8 +173,11 @@ int _configure_common_socket(knet_handle_t knet_h, int sock, uint64_t flags, con
type, strerror(savederrno));
goto exit_error;
}
}
log_debug(knet_h, KNET_SUB_TRANSPORT, "IPTOS_LOWDELAY enabled on socket: %i", sock);
#else
log_debug(knet_h, KNET_SUB_TRANSPORT, "IPTOS_LOWDELAY not available in this build/platform");
#endif
}

exit_error:
errno = savederrno;
Expand All @@ -189,6 +195,7 @@ int _configure_transport_socket(knet_handle_t knet_h, int sock, struct sockaddr_
goto exit_error;
}

#ifdef KNET_LINUX
#ifdef IP_FREEBIND
value = 1;
if (setsockopt(sock, SOL_IP, IP_FREEBIND, &value, sizeof(value)) <0) {
Expand All @@ -198,7 +205,12 @@ int _configure_transport_socket(knet_handle_t knet_h, int sock, struct sockaddr_
type, strerror(savederrno));
goto exit_error;
}
log_debug(knet_h, KNET_SUB_TRANSPORT, "FREEBIND enabled on socket: %i", sock);
#else
log_debug(knet_h, KNET_SUB_TRANSPORT, "FREEBIND not available in this build/platform");
#endif
#endif
#ifdef KNET_BSD
#ifdef IP_BINDANY /* BSD */
value = 1;
if (setsockopt(sock, IPPROTO_IP, IP_BINDANY, &value, sizeof(value)) <0) {
Expand All @@ -208,6 +220,10 @@ int _configure_transport_socket(knet_handle_t knet_h, int sock, struct sockaddr_
type, strerror(savederrno));
goto exit_error;
}
log_debug(knet_h, KNET_SUB_TRANSPORT, "BINDANY enabled on socket: %i", sock);
#else
log_debug(knet_h, KNET_SUB_TRANSPORT, "BINDANY not available in this build/platform");
#endif
#endif

if (address->ss_family == AF_INET6) {
Expand All @@ -221,6 +237,7 @@ int _configure_transport_socket(knet_handle_t knet_h, int sock, struct sockaddr_
goto exit_error;

}
#ifdef KNET_LINUX
#ifdef IPV6_MTU_DISCOVER
value = IPV6_PMTUDISC_PROBE;
if (setsockopt(sock, SOL_IPV6, IPV6_MTU_DISCOVER, &value, sizeof(value)) <0) {
Expand All @@ -230,7 +247,12 @@ int _configure_transport_socket(knet_handle_t knet_h, int sock, struct sockaddr_
type, strerror(savederrno));
goto exit_error;
}
log_debug(knet_h, KNET_SUB_TRANSPORT, "IPV6_MTU_DISCOVER enabled on socket: %i", sock);
#else
log_debug(knet_h, KNET_SUB_TRANSPORT, "IPV6_MTU_DISCOVER not available in this build/platform");
#endif
#endif
#ifdef IPV6_DONTFRAG
value = 1;
if (setsockopt(sock, IPPROTO_IPV6, IPV6_DONTFRAG, &value, sizeof(value)) <0) {
savederrno = errno;
Expand All @@ -239,8 +261,12 @@ int _configure_transport_socket(knet_handle_t knet_h, int sock, struct sockaddr_
type, strerror(savederrno));
goto exit_error;
}
log_debug(knet_h, KNET_SUB_TRANSPORT, "IPV6_DONTFRAG enabled on socket: %i", sock);
#else
log_debug(knet_h, KNET_SUB_TRANSPORT, "IPV6_DONTFRAG not available in this build/platform");
#endif
} else {
#ifdef KNET_LINUX
#ifdef IP_MTU_DISCOVER
value = IP_PMTUDISC_PROBE;
if (setsockopt(sock, SOL_IP, IP_MTU_DISCOVER, &value, sizeof(value)) <0) {
Expand All @@ -250,7 +276,13 @@ int _configure_transport_socket(knet_handle_t knet_h, int sock, struct sockaddr_
type, strerror(savederrno));
goto exit_error;
}
log_debug(knet_h, KNET_SUB_TRANSPORT, "PMTUDISC enabled on socket: %i", sock);
#else
log_debug(knet_h, KNET_SUB_TRANSPORT, "PMTUDISC not available in this build/platform");
#endif
#endif
#ifdef KNET_BSD
#ifdef IP_DONTFRAG
value = 1;
if (setsockopt(sock, IPPROTO_IP, IP_DONTFRAG, &value, sizeof(value)) <0) {
savederrno = errno;
Expand All @@ -259,6 +291,10 @@ int _configure_transport_socket(knet_handle_t knet_h, int sock, struct sockaddr_
type, strerror(savederrno));
goto exit_error;
}
log_debug(knet_h, KNET_SUB_TRANSPORT, "DONTFRAG enabled on socket: %i", sock);
#else
log_debug(knet_h, KNET_SUB_TRANSPORT, "DONTFRAG not available in this build/platform");
#endif
#endif
}

Expand Down
8 changes: 7 additions & 1 deletion libknet/transport_udp.c
Expand Up @@ -76,7 +76,7 @@ int udp_transport_link_set_config(knet_handle_t knet_h, struct knet_link *kn_lin
if (sock < 0) {
savederrno = errno;
err = -1;
log_err(knet_h, KNET_SUB_LISTENER, "Unable to create listener socket: %s",
log_err(knet_h, KNET_SUB_TRANSP_UDP, "Unable to create listener socket: %s",
strerror(savederrno));
goto exit_error;
}
Expand All @@ -97,7 +97,10 @@ int udp_transport_link_set_config(knet_handle_t knet_h, struct knet_link *kn_lin
strerror(savederrno));
goto exit_error;
}
log_debug(knet_h, KNET_SUB_TRANSP_UDP, "IP_RECVERR enabled on socket: %i", sock);
}
#else
log_debug(knet_h, KNET_SUB_TRANSP_UDP, "IP_RECVERR not available in this build/platform");
#endif
#ifdef IPV6_RECVERR
if (kn_link->src_addr.ss_family == AF_INET6) {
Expand All @@ -109,7 +112,10 @@ int udp_transport_link_set_config(knet_handle_t knet_h, struct knet_link *kn_lin
strerror(savederrno));
goto exit_error;
}
log_debug(knet_h, KNET_SUB_TRANSP_UDP, "IPV6_RECVERR enabled on socket: %i", sock);
}
#else
log_debug(knet_h, KNET_SUB_TRANSP_UDP, "IPV6_RECVERR not available in this build/platform");
#endif

if (bind(sock, (struct sockaddr *)&kn_link->src_addr, sockaddr_len(&kn_link->src_addr))) {
Expand Down

0 comments on commit 29e395d

Please sign in to comment.