#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <linux/if.h>
#include <linux/if_packet.h>
#include <linux/if_ether.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#ifndef __linux__
#pragma pack(push, 1)
#endif
struct ether_header
{
uint8_t ether_dhost[6]; /* destination eth addr */
uint8_t ether_shost[6]; /* source ether addr */
uint16_t ether_type; /* packet type ID field */
}
#ifndef __linux__
;
#pragma pack(pop)
#else
__attribute__ ((__packed__));
#endif
int send_wol(const char *interface, unsigned char *buf, int len);
void make_wol_packet(char *buf, const char *dstmac);
void make_ether_packet(char *buf, const char *dstmac);