Browse Source

Set SO_BROADCAST socket option for UDP sockets.

Fabio Alessandrelli 7 years ago
parent
commit
69817232ff
1 changed files with 7 additions and 0 deletions
  1. 7 0
      drivers/unix/socket_helpers.h

+ 7 - 0
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");
 			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;
 	return sockfd;
 }
 }