X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fsrc%2Fchbind.c;h=285fe1c2c3e9b798826ad61f05d673403e8f6887;hb=a917f24ef7b003dcef54a3db2644cf9cb4bc2db2;hp=21981ce1e94f9358cbf8fe083511b649618b0107;hpb=db50e38ac7dba2609f956a919f132cf446f9464f;p=util-vserver.git diff --git a/util-vserver/src/chbind.c b/util-vserver/src/chbind.c index 21981ce..285fe1c 100644 --- a/util-vserver/src/chbind.c +++ b/util-vserver/src/chbind.c @@ -38,6 +38,7 @@ #include #include +#define ENSC_WRAPPERS_PREFIX "chbind: " #define ENSC_WRAPPERS_IO 1 #define ENSC_WRAPPERS_UNISTD 1 #include "wrappers.h" @@ -238,10 +239,11 @@ readBcast(char const *str, uint32_t *bcast) int main (int argc, char *argv[]) { - bool is_silent = false; - struct vc_ip_mask_pair ips[16]; + size_t const nb_ipv4root = vc_get_nb_ipv4root(); + bool is_silent = false; + struct vc_ip_mask_pair ips[nb_ipv4root]; size_t nbaddrs = 0; - uint32_t bcast = 0xffffffff; + uint32_t bcast = 0xffffffff; while (1) { int c = getopt_long(argc, argv, "+", CMDLINE_OPTIONS, 0); @@ -253,7 +255,7 @@ int main (int argc, char *argv[]) case CMD_SILENT : is_silent = true; break; case CMD_BCAST : readBcast(optarg, &bcast); break; case CMD_IP : - if (nbaddrs>=16) { + if (nbaddrs>=nb_ipv4root) { WRITE_MSG(2, "Too many IP numbers, max 16\n"); exit(wrapper_exit_code); } @@ -276,7 +278,7 @@ int main (int argc, char *argv[]) if (vc_set_ipv4root(bcast,nbaddrs,ips)!=0) { - perror("vc_set_ipv4root()"); + perror("chbind: vc_set_ipv4root()"); exit(wrapper_exit_code); } @@ -315,8 +317,12 @@ void test() readIP("localhost", &ip, &bcast); assert(ip.ip==ntohl(0x7f000001) && ip.mask==ntohl(0xffffff00) && bcast==0); - - readIP("lo", &ip, &bcast); - assert(ip.ip==ntohl(0x7f000001) && ip.mask==ntohl(0xff000000) && bcast==ntohl(0x7fffffff)); + +#if 0 + if (ifconfig_getaddr("lo", &tmp, &tmp, &tmp)!=-1) { + readIP("lo", &ip, &bcast); + assert(ip.ip==ntohl(0x7f000001) && ip.mask==ntohl(0xff000000) && bcast==ntohl(0x7fffffff)); + } +#endif } #endif