44 lines
976 B
C
44 lines
976 B
C
/*
|
|
* lw12.c
|
|
* Copyright (C) 2017 jpk <jpk@dwarf>
|
|
*
|
|
* Distributed under terms of the MIT license.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
#include <unistd.h>
|
|
|
|
#include "lw12.h"
|
|
|
|
|
|
int lw12_connect(int *sockfd, struct sockaddr_in *addr, uint16_t port,
|
|
char *hostname) {
|
|
if ((*sockfd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
|
|
perror("socket");
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
|
|
memset((char *)addr, 0, sizeof(struct sockaddr_in));
|
|
addr->sin_family = AF_INET;
|
|
addr->sin_port = htons(port);
|
|
inet_aton(hostname, &addr->sin_addr);
|
|
|
|
return *sockfd;
|
|
}
|
|
|
|
int lw12_sendcmd(int sockfd, struct sockaddr_in *addr, char *cmd) {
|
|
const socklen_t slen = sizeof(struct sockaddr_in);
|
|
|
|
if (sendto(sockfd, cmd, LW12_CMD_LENGTH, 0, (const struct sockaddr *)addr,
|
|
slen) == -1) {
|
|
perror("sendto");
|
|
close(sockfd);
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
|
|
return 0;
|
|
}
|