#include "mnic.h"

void send_alarm(D5000_NIC_ALARM *mesg, int socket_port, char *ipv4)
{
	int bytes;
	int sock_sd;
	int val;
	char error_str[200];
	struct sockaddr_in recever;
	socklen_t sock_len;

	if((sock_sd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1){
		snprintf(error_str, sizeof(error_str), "EMERG: socket(): %s\n", strerror(errno));
                record_log(error_str);
		return;
	}
	val=1;
	if ((setsockopt(sock_sd, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val))) == -1) {
		snprintf(error_str, sizeof(error_str), "EMERG: setsockopt(): %s\n", strerror(errno));
                record_log(error_str);
		return;
	}
	/* init socket*/
	recever.sin_family = AF_INET;
	recever.sin_port   = htons(socket_port);
	inet_pton(AF_INET, ipv4, &recever.sin_addr);
	sock_len = sizeof(recever);
	/* send alarm*/
	if((bytes = sendto(sock_sd, mesg, sizeof(D5000_NIC_ALARM), 0, (const struct sockaddr *)&recever, sock_len)) < 1){
		snprintf(error_str, sizeof(error_str), "EMERG: sendto(): %s\n", strerror(errno));
                record_log(error_str);
		return;
	}
	//snprintf(error_str, sizeof(error_str),  "NOTICE: Alarm information has already send!\n");
	//record_log(error_str);
	close(sock_sd);
}
