fix app
[ana-net.git] / opt / pflana.c
blobf5e8b85a7de925e74cf7fe45d0fa1422201bfbc7
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <signal.h>
4 #include <stdlib.h>
5 #include <string.h>
6 #include <ctype.h>
7 #include <sys/socket.h>
9 #define AF_LANA 27
11 static sig_atomic_t sigint = 0;
13 static void intr(int sig)
15 sigint = 1;
18 static inline void register_signal(int signal, void (*handler)(int))
20 sigset_t block_mask;
21 struct sigaction saction;
23 sigfillset(&block_mask);
24 saction.sa_handler = handler;
25 saction.sa_mask = block_mask;
26 saction.sa_flags = SA_RESTART;
28 sigaction(signal, &saction, NULL);
31 int main(void)
33 int sock;
34 char buff[256];
35 struct iovec iov[1];
36 struct msghdr msg;
38 register_signal(SIGINT, intr);
39 sock = socket(AF_LANA, SOCK_DGRAM, 0);
40 if (sock < 0) {
41 perror("socket");
42 return 0;
45 memset(&msg, 0, sizeof(msg));
46 memset(iov, 0, sizeof(iov));
47 iov[0].iov_base = buff;
48 iov[0].iov_len = sizeof(buff);
49 msg.msg_iov = iov;
50 msg.msg_iovlen = 1;
52 printf("Worked! Abort with ^C\n");
53 while (!sigint) {
54 // int ret = recvmsg(sock, &msg, 0);
55 int ret = recv(sock, buff, sizeof(buff), 0);
56 if (ret < 0) {
57 perror("recvmsg");
58 sleep(1);
59 continue;
60 } else {
61 char *ptr = (char *) iov[0].iov_base;
62 size_t len = iov[0].iov_len;
63 printf("msg received:\n");
64 for (; len-- > 0; ptr++)
65 printf("0x%x ", *ptr);
66 printf("\n\n");
67 // memset(iov[0].iov_base, 0, iov[0].iov_len);
68 memset(buff, 0, sizeof(buff));
72 close(sock);
73 return 0;