路由器设置ip地址,subnet mask,dhcpstart,dhcpend时,后台应该如何判断:
//get data
ipstart=websGetVar(wp, T("start"), T(""));
ipend=websGetVar(wp, T("end"), T(""));
ip = websGetVar(wp, T("lanIp"), T(""));
nm = websGetVar(wp, T("lanNetmask"), T(""));
sscanf(ipend, "%d.%d.%d.%d", &e1, &e2, &e3, &e4);
sscanf(ip, "%d.%d.%d.%d", &ip1, &ip2, &ip3, &ip4);
sscanf(nm, "%d.%d.%d.%d", &m1, &m2, &m3, &m4);
s1 = (ip1&m1) | (s1&~m1);
s2 = (ip2&m2) | (s2&~m2);
s3 = (ip3&m3) | (s3&~m3);
s4 = (ip4&m4) | (s4&~m4);
e1 = (ip1&m1) | (e1&~m1);
e2 = (ip2&m2) | (e2&~m2);
e3 = (ip3&m3) | (e3&~m3);
e4 = (ip4&m4) | (e4&~m4);
//假如主机ip在subnet mask之外,dhcpstart,dhcpend就得重新定义
if (ip4 > (255 - m4)) {
s4 = 1;
e4 = 255 - m4;
}
snprintf(dhcp_start,sizeof(dhcp_start),"%d.%d.%d.%d",s1,s2,s3,s4);
snprintf(dhcp_end,sizeof(dhcp_end),"%d.%d.%d.%d",e1,e2,e3,e4);