1 #define _POSIX_SOURCE 1
2 #define _XOPEN_SOURCE 500
10 #include <sys/socket.h>
19 int usage(const char *cmd, int st);
20 int try_connecting(struct addrinfo *address);
21 int generate_condor_variables(int sock);
23 int main(int argc, char **argv) {
26 struct addrinfo hints;
27 struct addrinfo *address = 0;
31 char *hostname = NULL;
35 { "host", required_argument, 0, 'h' },
36 { "port", required_argument, 0, 'p' },
40 memset(&hints, 0, sizeof(struct addrinfo));
41 hints.ai_family = AF_INET;
42 hints.ai_socktype = SOCK_STREAM;
45 return usage(argv[0], -1);
47 while ((c = getopt_long(argc, argv, "h:p:", ol, &optidx)) != -1)
52 hostname = strdup(optarg);
56 port = strdup(optarg);
60 fprintf(stderr, "bad option: %c\n", c);
65 rv = getaddrinfo(hostname, port, &hints, &address);
67 fprintf(stderr, "Error looking up hostname, %d\n", errno);
71 sock = try_connecting(address);
73 fprintf(stderr, "Unable to connect");
77 /* now that we have a connection */
78 if (address != NULL) {
79 freeaddrinfo(address);
82 if (generate_condor_variables(sock) == -1) {
88 int usage(const char *cmd, int st)
90 fprintf(stderr, "usage:\n %s [options]\n\n", cmd);
91 fprintf(stderr, "\t-h, --host\tHostname to connect to\n");
92 fprintf(stderr, "\t-p, --port\tPort to connect to\n");
93 fprintf(stderr, "\n");
97 int try_connecting(struct addrinfo *address)
101 struct addrinfo *addr_ptr = 0;
103 for (addr_ptr = address; addr_ptr != NULL; addr_ptr = addr_ptr->ai_next) {
104 sock = socket(addr_ptr->ai_family,
105 addr_ptr->ai_socktype,
106 addr_ptr->ai_protocol);
111 rv = connect(sock, addr_ptr->ai_addr, addr_ptr->ai_addrlen);
113 /* we connected to something, return it */
121 int generate_condor_variables(int sock)
127 memset(buf, 0, BUF_SIZE);
128 nread = read(sock, buf, BUF_SIZE-1);
130 fprintf(stderr, "read error");
133 rv = fprintf(stdout, "castor_load = %s", buf);
137 rv = fprintf(stdout, "--\n");