[Icescan-cvs] IceScan icescan.cc,1.54,1.55
Status: Alpha
Brought to you by:
darkkey
From: yu l. <mc...@us...> - 2009-04-10 14:34:13
|
Update of /cvsroot/icescan/IceScan In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv8056 Modified Files: icescan.cc Log Message: Index: icescan.cc =================================================================== RCS file: /cvsroot/icescan/IceScan/icescan.cc,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** icescan.cc 10 Apr 2009 14:07:37 -0000 1.54 --- icescan.cc 10 Apr 2009 14:34:07 -0000 1.55 *************** *** 249,263 **** re.match(argv[i+1]); ! ! re.findReset(); ! char *port_s = new char[65536];//status of all ports(used or not) ! ! int port_low, port_up; ! int start_port = 65535, end_port = 0; ! while(re.findNext()){ var2 = ""; var = ""; ! re.group(1, var); if(re.groups() > 2) re.group(2,var2); --- 249,259 ---- re.match(argv[i+1]); ! re.findReset(); ! char *port_s=(char*)malloc(sizeof(char)*65536);//status of all ports(used or not) ! int port_low,port_up,port_min=70000,port_max=-1; while(re.findNext()){ var2 = ""; var = ""; ! re.group(1,var); if(re.groups() > 2) re.group(2,var2); *************** *** 268,312 **** sscanf(var.c_str(), "%d-%d", &port_low, &port_up); } ! ! start_port = MIN(start_port, port_low); ! end_port = MAX(end_port, port_up); ! ! DBGOUTPUT(port_low << " " << port_up); ! DBGOUTPUT(start_port << " " << end_port); ! if(MAX(port_low, port_up) > 65535 || MIN(port_low, port_up)< 0) invalid_command(argv[0], "Invalid port range definition format: port value should be between 0 - 65535.",""); ! for(int j = MIN(port_low, port_up); j <= MAX(port_low, port_up); j++) port_s[j] = 1;//mark the port used ! } ! ! int j,k; ! ! for(j = start_port; j <= end_port;){ ! DBGOUTPUT(j); ! ! for(; j <= end_port && !port_s[j]; j++) ! DBGOUTPUT(j); ! ; //skip unused ports ! ! if( j <= end_port){ //check whether out of boundary ! ! struct port_range pr_new; ! ! pr_new.lower_port=j; ! ! for( k = j; k <= end_port && port_s[k]; k++);//find all continuesly used ports ! ! pr_new.upper_port = k-1; //we don't need to check k here ! ! DBGOUTPUT(pr_new.lower_port << " " << pr_new.upper_port); ! ! j = k; ! ! ports.push_back(pr_new); ! } ! } ! ! delete[] port_s; i++; } --- 264,285 ---- sscanf(var.c_str(), "%d-%d", &port_low, &port_up); } ! if(MAX(port_low, port_up)>port_max)port_max=MAX(port_low, port_up); ! if(MIN(port_low, port_up)<port_min)port_min=MIN(port_low, port_up); if(MAX(port_low, port_up) > 65535 || MIN(port_low, port_up)< 0) invalid_command(argv[0], "Invalid port range definition format: port value should be between 0 - 65535.",""); ! for(int j = MIN(port_low, port_up);j <= MAX(port_low, port_up);j++) port_s[j] = 1;//mark the port used ! } ! int j; ! for(j = port_min;j <= port_max; ){ ! for(;j <= port_max && !port_s[j];j++);//skip unused ports ! if(j > port_max)continue;//check whether out of boundary ! struct port_range pr_new; ! pr_new.lower_port = j; ! for( ;j <= port_max && port_s[j];j++);//find all continuesly used ports ! pr_new.upper_port = j-1;//we don't need to check k here ! ports.push_back(pr_new); ! } ! free(port_s); i++; } |