41 lines
737 B
C
41 lines
737 B
C
//
|
|
// Neal Probert
|
|
//
|
|
|
|
#include "netlib.h"
|
|
|
|
int udp_broadcast( const char *host, const char *service, struct sockaddr_storage *sa, socklen_t *len )
|
|
{
|
|
/* socket stuff */
|
|
int sock, family; /* tcp socket */
|
|
|
|
if ( !host )
|
|
host = "255.255.255.255";
|
|
|
|
// host
|
|
family = ip_host2addr( host, service, sa, len );
|
|
|
|
if ( family != AF_INET )
|
|
{
|
|
log_error(host);
|
|
return -1;
|
|
}
|
|
|
|
/* plug me into a socket */
|
|
if ( (sock = socket( family, SOCK_DGRAM, 0)) < 0 )
|
|
{
|
|
log_error("dgram_socket");
|
|
return -1;
|
|
}
|
|
|
|
// ipv4 uses classic broadcast
|
|
u_int i = 1;
|
|
if ( setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &i, sizeof(i)) != 0 )
|
|
{
|
|
log_error("so_broadcast");
|
|
return -1;
|
|
}
|
|
|
|
return sock;
|
|
}
|