changes to build script to increase java heap memory
[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 #include <sys/ioctl.h>
10 #include <net/if.h>
11
12 #define LISTEN_PORT 2156
13
14 unsigned int iptoMid(char *addr) {
15         ip_t i;
16         unsigned int mid;
17
18         sscanf(addr, "%d.%d.%d.%d", &i.a, &i.b, &i.c, &i.d);
19         mid = (i.a << 24) | (i.b << 16) | (i.c << 8) | i.d;
20         fflush(stdout);
21         return mid;
22 }
23
24 void midtoIP(unsigned int mid, char *ptr) {
25         ip_t i;
26
27         i.a = (mid & 0xff000000) >> 24;
28         i.b = (mid & 0x00ff0000) >> 16;
29         i.c = (mid & 0x0000ff00) >> 8;
30         i.d = mid & 0x000000ff;
31         sprintf(ptr, "%d.%d.%d.%d", i.a, i.b, i.c, i.d);
32 #ifdef DEBUG
33         printf("DEBUG-> midtoIP() mid = %d.%d.%d.%d\n", i.a, i.b, i.c, i.d);
34 #endif
35         return;
36 }
37
38 int checkServer(int mid, char *machineip) {
39         int tmpsd;
40         struct sockaddr_in serv_addr;
41         char m[20];
42
43         strncpy(m, machineip, strlen(machineip));
44         // Foreach machine you want to transact with
45         // check if its up and running
46         if ((tmpsd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
47                 perror("");
48                 return(-1);
49         }
50         bzero((char*) &serv_addr, sizeof(serv_addr));
51         serv_addr.sin_family = AF_INET;
52         serv_addr.sin_port = htons(LISTEN_PORT);
53         midtoIP(mid, m);
54         m[15] = '\0';
55         serv_addr.sin_addr.s_addr = inet_addr(m);
56         while (connect(tmpsd, (struct sockaddr *) &serv_addr, sizeof(struct sockaddr)) < 0) {
57                 sleep(1);
58         }
59         close(tmpsd);
60         return 0;
61 }
62
63 unsigned int getMyIpAddr(const char *interfaceStr)
64 {       
65         int sock;
66         struct ifreq interfaceInfo;
67         struct sockaddr_in *myAddr = (struct sockaddr_in *)&interfaceInfo.ifr_addr;
68
69         memset(&interfaceInfo, 0, sizeof(struct ifreq));
70
71         if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
72         {
73                 perror("getMyIpAddr():socket()");
74                 return 1;
75         }
76
77         strcpy(interfaceInfo.ifr_name, interfaceStr);
78         myAddr->sin_family = AF_INET;
79         
80         if(ioctl(sock, SIOCGIFADDR, &interfaceInfo) != 0)
81         {
82                 perror("getMyIpAddr():ioctl()");
83                 return 1;
84         }
85
86         close(sock);
87
88         return ntohl(myAddr->sin_addr.s_addr);
89 }
90
91 /*
92 main() {
93         unsigned int mid;
94         ip_t i;
95         char ip[16];
96
97         memset(ip, 0, 16);
98         mid = iptoMid("192.10.0.1");
99         printf("mid = %x\n", mid);
100         midtoIP(mid, ip);
101         ip[15] = '\0';
102         printf("%s\n",ip);
103 }
104 */