summaryrefslogtreecommitdiff
path: root/drivers/unix/socket_helpers.h
diff options
context:
space:
mode:
authorMax Hilbrunner <mhilbrunner@users.noreply.github.com>2018-06-05 12:54:39 +0200
committerGitHub <noreply@github.com>2018-06-05 12:54:39 +0200
commit6a69f92370ba82befdfdf3c2f798b6b2fd6df1fb (patch)
treef7618660828f86dc9ad4ba1204583df1570efb7c /drivers/unix/socket_helpers.h
parent36c70bbcd02c963f133ed4011006668a2f64197a (diff)
parent69817232ff5b363a9f98696548ecd9c99c7a80e2 (diff)
Merge pull request #19378 from Faless/udp_bcast
Set SO_BROADCAST socket option for UDP sockets.
Diffstat (limited to 'drivers/unix/socket_helpers.h')
-rw-r--r--drivers/unix/socket_helpers.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/unix/socket_helpers.h b/drivers/unix/socket_helpers.h
index 5ef9ad3088..5b42c13eae 100644
--- a/drivers/unix/socket_helpers.h
+++ b/drivers/unix/socket_helpers.h
@@ -124,6 +124,13 @@ static int _socket_create(IP::Type &p_type, int type, int protocol) {
WARN_PRINT("Unable to set/unset IPv4 address mapping over IPv6");
}
}
+ if (protocol == IPPROTO_UDP && p_type != IP::TYPE_IPV6) {
+ // Enable broadcasting for UDP sockets if it's not IPv6 only (IPv6 has no broadcast option).
+ int broadcast = 1;
+ if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, (char *)&broadcast, sizeof(broadcast)) != 0) {
+ WARN_PRINT("Error when enabling broadcasting");
+ }
+ }
return sockfd;
}