env_set_destroy(aix_es);
}
#elif defined (_WIN32)
- {
- ASSERT(ifname != NULL);
-
- if (tt->options.msg_channel && tt->windows_driver == WINDOWS_DRIVER_WINTUN)
- {
- do_address_service(true, AF_INET, tt);
- do_dns_service(true, AF_INET, tt);
- }
- else
- {
- switch (tt->options.ip_win32_type)
- {
- case IPW32_SET_MANUAL:
- msg(M_INFO,
- "******** NOTE: Please manually set the IP/netmask of '%s' to %s/%s (if it is not already set)",
- ifname, ifconfig_local,
- print_in_addr_t(tt->adapter_netmask, 0, &gc));
- break;
+ ASSERT(ifname != NULL);
- case IPW32_SET_NETSH:
- netsh_ifconfig(&tt->options, ifname, tt->local,
- tt->adapter_netmask, NI_IP_NETMASK|NI_OPTIONS);
-
- break;
- }
- }
+ if (tt->options.ip_win32_type == IPW32_SET_MANUAL)
+ {
+ msg(M_INFO,
+ "******** NOTE: Please manually set the IP/netmask of '%s' to %s/%s (if it is not already set)",
+ ifname, ifconfig_local,
+ print_in_addr_t(tt->adapter_netmask, 0, &gc));
+ }
+ else if (tt->options.ip_win32_type == IPW32_SET_DHCP_MASQ || tt->options.ip_win32_type == IPW32_SET_ADAPTIVE)
+ {
+ /* Let the DHCP configure the interface. */
+ }
+ else if (tt->options.msg_channel)
+ {
+ do_address_service(true, AF_INET, tt);
+ do_dns_service(true, AF_INET, tt);
+ }
+ else if (tt->options.ip_win32_type == IPW32_SET_NETSH)
+ {
+ netsh_ifconfig(&tt->options, ifname, tt->local,
+ tt->adapter_netmask, NI_IP_NETMASK|NI_OPTIONS);
}
-
#else /* if defined(TARGET_LINUX) */
msg(M_FATAL, "Sorry, but I don't know how to do 'ifconfig' commands on this operating system. You should ifconfig your TUN/TAP device manually or use an --up script.");
#endif /* if defined(TARGET_LINUX) */
const DWORD index = tt->adapter_index;
/* flush arp cache */
- if (index != TUN_ADAPTER_INDEX_INVALID)
+ if (tt->windows_driver == WINDOWS_DRIVER_TAP_WINDOWS6
+ && index != TUN_ADAPTER_INDEX_INVALID)
{
DWORD status = -1;
bool dhcp_masq = false;
bool dhcp_masq_post = false;
- /* get driver version info */
- tuntap_get_version_info(tt);
+ if (tt->windows_driver == WINDOWS_DRIVER_TAP_WINDOWS6)
+ {
+ /* get driver version info */
+ tuntap_get_version_info(tt);
- /* get driver MTU */
- tuntap_get_mtu(tt);
+ /* get driver MTU */
+ tuntap_get_mtu(tt);
- /*
- * Preliminaries for setting TAP-Windows adapter TCP/IP
- * properties via --ip-win32 dynamic or --ip-win32 adaptive.
- */
- if (tt->did_ifconfig_setup)
- {
- tuntap_set_ip_props(tt, &dhcp_masq, &dhcp_masq_post);
- }
+ /*
+ * Preliminaries for setting TAP-Windows adapter TCP/IP
+ * properties via --ip-win32 dynamic or --ip-win32 adaptive.
+ */
+ if (tt->did_ifconfig_setup)
+ {
+ tuntap_set_ip_props(tt, &dhcp_masq, &dhcp_masq_post);
+ }
- /* set point-to-point mode if TUN device */
- if (tt->type == DEV_TYPE_TUN)
- {
- tuntap_set_ptp(tt);
- }
+ /* set point-to-point mode if TUN device */
+ if (tt->type == DEV_TYPE_TUN)
+ {
+ tuntap_set_ptp(tt);
+ }
- /* should we tell the TAP-Windows driver to masquerade as a DHCP server as a means
- * of setting the adapter address? */
- if (dhcp_masq)
- {
- tuntap_dhcp_mask(tt, device_guid);
- }
+ /* should we tell the TAP-Windows driver to masquerade as a DHCP server as a means
+ * of setting the adapter address? */
+ if (dhcp_masq)
+ {
+ tuntap_dhcp_mask(tt, device_guid);
+ }
- /* set driver media status to 'connected' */
- tuntap_set_connected(tt);
+ /* set driver media status to 'connected' */
+ tuntap_set_connected(tt);
+ }
/* possibly use IP Helper API to set IP address on adapter */
tuntap_set_ip_addr(tt, device_guid, dhcp_masq_post);
struct gc_arena gc = gc_new(); /* used also for device_guid allocation */
tun_open_device(tt, dev_node, &device_guid, &gc);
- if (tt->windows_driver == WINDOWS_DRIVER_TAP_WINDOWS6)
- {
- tuntap_post_open(tt, device_guid);
- }
+ tuntap_post_open(tt, device_guid);
gc_free(&gc);
netsh_delete_address_dns(tt, true, &gc);
}
}
-#if 1
- if (tt->windows_driver == WINDOWS_DRIVER_WINTUN)
+
+ if (tt->did_ifconfig_setup)
{
- if (tt->options.msg_channel)
+ if (tt->options.ip_win32_type == IPW32_SET_MANUAL)
+ {
+ /* We didn't do ifconfig. */
+ }
+ else if (tt->options.ip_win32_type == IPW32_SET_DHCP_MASQ || tt->options.ip_win32_type == IPW32_SET_ADAPTIVE)
+ {
+ /* We don't have to clean the configuration with DHCP. */
+ }
+ else if (tt->options.msg_channel)
{
- do_address_service(false, AF_INET, tt);
do_dns_service(false, AF_INET, tt);
+ do_address_service(false, AF_INET, tt);
}
- else
+ else if (tt->options.ip_win32_type == IPW32_SET_NETSH)
{
netsh_delete_address_dns(tt, false, &gc);
}
}
- else if (tt->ipapi_context_defined)
+
+ if (tt->ipapi_context_defined)
{
DWORD status;
if ((status = DeleteIPAddress(tt->ipapi_context)) != NO_ERROR)
strerror_win32(status, &gc));
}
}
-#endif /* if 1 */
dhcp_release(tt);