add more comments
[IRC.git] / Robust / src / Runtime / DSTM / interface / ip.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include "ip.h"
4 #include <sys/types.h>
5 #include <sys/socket.h>
6 #include <netdb.h>
7 #include <netinet/in.h>
8 #include <string.h>
9
10 #define LISTEN_PORT 2156
11
12 unsigned int iptoMid(char *addr) {
13         ip_t i;
14         unsigned int mid;
15
16         sscanf(addr, "%d.%d.%d.%d", &i.a, &i.b, &i.c, &i.d);
17         mid = (i.a << 24) | (i.b << 16) | (i.c << 8) | i.d;
18         fflush(stdout);
19         return mid;
20 }
21
22 void midtoIP(unsigned int mid, char *ptr) {
23         ip_t i;
24
25         i.a = (mid & 0xff000000) >> 24;
26         i.b = (mid & 0x00ff0000) >> 16;
27         i.c = (mid & 0x0000ff00) >> 8;
28         i.d = mid & 0x000000ff;
29         sprintf(ptr, "%d.%d.%d.%d", i.a, i.b, i.c, i.d);
30         return;
31 }
32
33 int checkServer(int mid, char *machineip) {
34         int tmpsd;
35         struct sockaddr_in serv_addr;
36         char m[20];
37
38         strncpy(m, machineip, strlen(machineip));
39         // Foreach machine you want to transact with
40         // check if its up and running
41         if ((tmpsd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
42                 perror("");
43                 return(-1);
44         }
45         bzero((char*) &serv_addr, sizeof(serv_addr));
46         serv_addr.sin_family = AF_INET;
47         serv_addr.sin_port = htons(LISTEN_PORT);
48         midtoIP(mid, m);
49         m[15] = '\0';
50         serv_addr.sin_addr.s_addr = inet_addr(m);
51         while (connect(tmpsd, (struct sockaddr *) &serv_addr, sizeof(struct sockaddr)) < 0) {
52                 sleep(1);
53         }
54         close(tmpsd);
55         return 0;
56 }
57 /*
58 main() {
59         unsigned int mid;
60         ip_t i;
61         char ip[16];
62
63         memset(ip, 0, 16);
64         mid = iptoMid("192.10.0.1");
65         printf("mid = %x\n", mid);
66         midtoIP(mid, ip);
67         ip[15] = '\0';
68         printf("%s\n",ip);
69 }
70 */