summaryrefslogtreecommitdiffstats
path: root/src/wol.c
diff options
context:
space:
mode:
authorOpenGnSys Support Team <soporte-og@soleta.eu>2020-08-06 13:36:47 +0200
committerOpenGnSys Support Team <soporte-og@soleta.eu>2020-08-06 13:39:46 +0200
commit060e31cb53386282f1995937c18fe39855865046 (patch)
tree7fd99b05a839fcd31a9bbce4deda5ad7ceb504b0 /src/wol.c
parent1855b68af3ee365f871090c840f728691dd687de (diff)
#990 add wol_socket_open()
Add wol_socket_open() to initialize the WoL socket
Diffstat (limited to 'src/wol.c')
-rw-r--r--src/wol.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/wol.c b/src/wol.c
index 79bfaa3..40a390c 100644
--- a/src/wol.c
+++ b/src/wol.c
@@ -20,6 +20,26 @@
#include "wol.h"
#include "ogAdmServer.h"
+int wol_socket_open(void)
+{
+ unsigned int on = 1;
+ int ret, s;
+
+ s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ if (s < 0) {
+ syslog(LOG_ERR, "cannot create socket for magic packet\n");
+ return -1;
+ }
+ ret = setsockopt(s, SOL_SOCKET, SO_BROADCAST, (unsigned int *) &on,
+ sizeof(on));
+ if (ret < 0) {
+ syslog(LOG_ERR, "cannot set broadcast socket\n");
+ return -1;
+ }
+
+ return s;
+}
+
bool wake_up_send(int sd, struct sockaddr_in *client,
const struct wol_msg *msg, const struct in_addr *addr)
{