// [OK] button void NmEditVhOptionOnOk(HWND hWnd, SM_HUB *r) { VH_OPTION t; // Validate arguments if (hWnd == NULL || r == NULL) { return; } NmEditVhOptionFormToVH(hWnd, &t); StrCpy(t.HubName, sizeof(t.HubName), r->HubName); if (CALL(hWnd, ScSetSecureNATOption(r->Rpc, &t))) { EndDialog(hWnd, true); } }
void NmEditVhOptionUpdate(HWND hWnd, SM_HUB *r) { VH_OPTION t; bool ok = true; // Validate arguments if (hWnd == NULL || r == NULL) { return; } NmEditVhOptionFormToVH(hWnd, &t); if (IsZero(t.MacAddress, 6)) { ok = false; } if (IPToUINT(&t.Ip) == 0 || IPToUINT(&t.Mask) == 0) { ok = false; } if (IpIsFilled(hWnd, E_IP) == false || IpIsFilled(hWnd, E_MASK) == false) { ok = false; } if (IsHostIPAddress4(&t.Ip) == false || IsSubnetMask4(&t.Mask) == false) { ok = false; } if (t.UseNat) { if (t.Mtu < 64 || t.Mtu > 1500) { ok = false; } if (t.NatTcpTimeout < (NAT_TCP_MIN_TIMEOUT / 1000) || t.NatTcpTimeout > (NAT_TCP_MAX_TIMEOUT / 1000)) { ok = false; } if (t.NatUdpTimeout < (NAT_UDP_MIN_TIMEOUT / 1000) || t.NatUdpTimeout > (NAT_UDP_MAX_TIMEOUT / 1000)) { ok = false; } } if (t.UseDhcp) { if (IpIsFilled(hWnd, E_DHCP_START) == false || IpIsFilled(hWnd, E_DHCP_END) == false || IpIsFilled(hWnd, E_DHCP_MASK) == false) { ok = false; } if (IpGetFilledNum(hWnd, E_GATEWAY) != 0 && IpGetFilledNum(hWnd, E_GATEWAY) != 4) { ok = false; } if (IpGetFilledNum(hWnd, E_DNS) != 0 && IpGetFilledNum(hWnd, E_DNS) != 4) { ok = false; } if (IpGetFilledNum(hWnd, E_DNS2) != 0 && IpGetFilledNum(hWnd, E_DNS2) != 4) { ok = false; } if (IPToUINT(&t.DhcpLeaseIPStart) == 0 || IPToUINT(&t.DhcpLeaseIPEnd) == 0 || IPToUINT(&t.DhcpSubnetMask) == 0) { ok = false; } if (t.DhcpExpireTimeSpan < 15) { ok = false; } if (Endian32(IPToUINT(&t.DhcpLeaseIPStart)) > Endian32(IPToUINT(&t.DhcpLeaseIPEnd))) { ok = false; } if (IsHostIPAddress4(&t.DhcpLeaseIPStart) == false || IsHostIPAddress4(&t.DhcpLeaseIPEnd) == false) { ok = false; } if (IsSubnetMask4(&t.DhcpSubnetMask) == false) { ok = false; } } SetEnable(hWnd, E_MTU, t.UseNat); SetEnable(hWnd, E_TCP, t.UseNat); SetEnable(hWnd, E_UDP, t.UseNat); SetEnable(hWnd, E_DHCP_START, t.UseDhcp); SetEnable(hWnd, E_DHCP_END, t.UseDhcp); SetEnable(hWnd, E_DHCP_MASK, t.UseDhcp); SetEnable(hWnd, E_EXPIRES, t.UseDhcp); SetEnable(hWnd, E_GATEWAY, t.UseDhcp); SetEnable(hWnd, E_DNS, t.UseDhcp); SetEnable(hWnd, E_DNS2, t.UseDhcp); SetEnable(hWnd, E_DOMAIN, t.UseDhcp); SetEnable(hWnd, IDOK, ok); }