applying patch proposed by Thomas Dreibholz for building on recent fedoras
[vsys-scripts.git] / root-context / fd_bind53.c
1 #include <sys/types.h>
2 #include <netinet/in.h>
3 #include <sys/socket.h>
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <string.h>
7 #include <errno.h>
8 #include "fdpass.h"
9
10 int 
11 main(int argc, char *argv[]) 
12 {
13     int control_channel_fd, magic_socket;
14     struct sockaddr_in my_addr;
15     
16     if (argc < 3) {
17         printf("This script is called by vsys.\n");
18         exit(1);
19     }
20
21     sscanf(argv[2],"%d", &control_channel_fd);
22
23     magic_socket = socket(AF_INET, SOCK_DGRAM, 0);
24
25     if (magic_socket == -1) {
26       fprintf(stderr, "Error creating socket: %d\n", errno);
27       exit(1);
28     }
29     
30     memset((void *) &my_addr, 0, sizeof(my_addr));
31     my_addr.sin_family = AF_INET;
32     my_addr.sin_port = htons(53);
33     my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
34     if (bind(magic_socket, (struct sockaddr *) &my_addr, sizeof(my_addr))==-1) {
35         printf("Could not bind to port 53");
36         exit(1);
37     }
38
39     send_fd(control_channel_fd, magic_socket);
40 }