--- ./torque-3.0.5/src/scheduler.cc/pbs_sched.c 2010-12-06 23:44:13.000000000 +0100 +++ ./torque-3.0.5_new/src/scheduler.cc/pbs_sched.c 2012-08-01 11:35:37.943192498 +0200 @@ -99,6 +99,8 @@ #include #include #include +#include +#include #include #include @@ -995,6 +997,26 @@ die(0); } + // If TRQ_IFNAME is set in torque.cfg then listen to it + char *if_name = trq_get_if_name(); + if(if_name) + { + struct ifreq ifr; + strncpy(ifr.ifr_name, if_name, strlen(if_name) + 1); + if(ioctl(server_sock, SIOCGIFADDR, &ifr) < 0) + { + fprintf(stderr, "can not resolve the network interface: %s\n", if_name); + } + else + { + struct in_addr *if_addr = &((struct sockaddr_in*)&ifr.ifr_addr)->sin_addr; + char *if_addr_str = inet_ntoa(*if_addr); + strncpy(host, if_addr_str, strlen(if_addr_str) + 1); + memcpy(hp->h_addr, if_addr, sizeof(struct in_addr)); + } + free(if_name); + } + if (setsockopt(server_sock, SOL_SOCKET, SO_REUSEADDR, (char *)&t, sizeof(t)) == -1) {