To avoid casting use two constants: 1. IPV4_NETMASK_HOST 2. dwMINUS_ONE Signed-off-by: Alon Bar-Lev <alon.bar...@gmail.com> --- src/openvpn/basic.h | 6 ++++++ src/openvpn/mroute.c | 2 +- src/openvpn/pf.c | 2 +- src/openvpn/route.c | 44 ++++++++++++++++++++++---------------------- src/openvpn/route.h | 2 +- src/openvpn/tun.c | 42 +++++++++++++++++++++--------------------- 6 files changed, 52 insertions(+), 46 deletions(-)
diff --git a/src/openvpn/basic.h b/src/openvpn/basic.h index 88539e2..561c513 100644 --- a/src/openvpn/basic.h +++ b/src/openvpn/basic.h @@ -46,4 +46,10 @@ /* clear an object */ #define CLEAR(x) memset(&(x), 0, sizeof(x)) +#define IPV4_NETMASK_HOST 0xffffffffU + +#ifdef WIN32 +#define dwMINUS_ONE ((DWORD)-1) +#endif + #endif diff --git a/src/openvpn/mroute.c b/src/openvpn/mroute.c index 5b53571..aecb702 100644 --- a/src/openvpn/mroute.c +++ b/src/openvpn/mroute.c @@ -342,7 +342,7 @@ mroute_addr_mask_host_bits (struct mroute_addr *ma) if ( bits_to_clear >= 8 ) { ma->addr[byte--] = 0; bits_to_clear -= 8; } else - { ma->addr[byte--] &= (~0 << bits_to_clear); bits_to_clear = 0; } + { ma->addr[byte--] &= (IPV4_NETMASK_HOST << bits_to_clear); bits_to_clear = 0; } } ASSERT( bits_to_clear == 0 ); } diff --git a/src/openvpn/pf.c b/src/openvpn/pf.c index 7ed1e70..3c46801 100644 --- a/src/openvpn/pf.c +++ b/src/openvpn/pf.c @@ -125,7 +125,7 @@ add_subnet (const char *line, const char *prefix, const int line_num, struct pf_ { /* match special "unknown" tag for addresses unrecognized by mroute */ network.s_addr = htonl(0); - netmask = ~0; + netmask = IPV4_NETMASK_HOST; } { diff --git a/src/openvpn/route.c b/src/openvpn/route.c index bf7af63..05ea57f 100644 --- a/src/openvpn/route.c +++ b/src/openvpn/route.c @@ -268,7 +268,7 @@ init_route (struct route *r, const struct route_option *ro, const struct route_list *rl) { - const in_addr_t default_netmask = ~0; + const in_addr_t default_netmask = IPV4_NETMASK_HOST; bool status; CLEAR (*r); @@ -797,7 +797,7 @@ add_bypass_routes (struct route_bypass *rb, { if (rb->bypass[i]) add_route3 (rb->bypass[i], - ~0, + IPV4_NETMASK_HOST, gateway, tt, flags | ROUTE_REF_GW, @@ -819,7 +819,7 @@ del_bypass_routes (struct route_bypass *rb, { if (rb->bypass[i]) del_route3 (rb->bypass[i], - ~0, + IPV4_NETMASK_HOST, gateway, tt, flags | ROUTE_REF_GW, @@ -870,7 +870,7 @@ redirect_default_route_to_vpn (struct route_list *rl, const struct tuntap *tt, u * adding this special /32 route */ if (rl->spec.remote_host != IPV4_INVALID_ADDR) { add_route3 (rl->spec.remote_host, - ~0, + IPV4_NETMASK_HOST, rl->rgi.gateway.addr, tt, flags | ROUTE_REF_GW, @@ -944,7 +944,7 @@ undo_redirect_default_route_to_vpn (struct route_list *rl, const struct tuntap * if (rl->iflags & RL_DID_LOCAL) { del_route3 (rl->spec.remote_host, - ~0, + IPV4_NETMASK_HOST, rl->rgi.gateway.addr, tt, flags | ROUTE_REF_GW, @@ -1342,7 +1342,7 @@ add_route (struct route *r, #elif defined (WIN32) { - DWORD ai = ~0; + DWORD ai = dwMINUS_ONE; argv_printf (&argv, "%s%sc ADD %s MASK %s %s", get_win_sys_path(), WIN_ROUTE_PATH_SUFFIX, @@ -1367,7 +1367,7 @@ add_route (struct route *r, else if ((flags & ROUTE_METHOD_MASK) == ROUTE_METHOD_EXE) { netcmd_semaphore_lock (); - status = openvpn_execve_check (&argv, es, 0, "ERROR: Windows route add command failed"); + status = openvpn_execve_check (&argv, es, 0, "ERROR: Windows route add command f(DWORD)ailed"); netcmd_semaphore_release (); } else if ((flags & ROUTE_METHOD_MASK) == ROUTE_METHOD_ADAPTIVE) @@ -1530,7 +1530,7 @@ print_in6_addr_netbits_only( struct in6_addr network_copy, int netbits, if ( bits_to_clear >= 8 ) { network_copy.s6_addr[byte--] = 0; bits_to_clear -= 8; } else - { network_copy.s6_addr[byte--] &= (~0 << bits_to_clear); bits_to_clear = 0; } + { network_copy.s6_addr[byte--] &= (IPV4_NETMASK_HOST << bits_to_clear); bits_to_clear = 0; } } return print_in6_addr( network_copy, 0, gc); @@ -2098,7 +2098,7 @@ static const MIB_IPFORWARDROW * get_default_gateway_row (const MIB_IPFORWARDTABLE *routes) { struct gc_arena gc = gc_new (); - DWORD lowest_metric = ~0; + DWORD lowest_metric = dwMINUS_ONE; const MIB_IPFORWARDROW *ret = NULL; int i; int best = -1; @@ -2155,7 +2155,7 @@ get_default_gateway (struct route_gateway_info *rgi) { rgi->flags |= RGI_ADDR_DEFINED; a_index = adapter_index_of_ip (adapters, rgi->gateway.addr, NULL, &rgi->gateway.netmask); - if (a_index != ~0) + if (a_index != dwMINUS_ONE) { rgi->adapter_index = a_index; rgi->flags |= (RGI_IFACE_DEFINED|RGI_NETMASK_DEFINED); @@ -2176,7 +2176,7 @@ static DWORD windows_route_find_if_index (const struct route *r, const struct tuntap *tt) { struct gc_arena gc = gc_new (); - DWORD ret = ~0; + DWORD ret = dwMINUS_ONE; int count = 0; const IP_ADAPTER_INFO *adapters = get_adapter_info_list (&gc); const IP_ADAPTER_INFO *tun_adapter = get_tun_adapter (tt, adapters); @@ -2198,14 +2198,14 @@ windows_route_find_if_index (const struct route *r, const struct tuntap *tt) { msg (M_WARN, "Warning: route gateway is not reachable on any active network adapters: %s", print_in_addr_t (r->gateway, 0, &gc)); - ret = ~0; + ret = dwMINUS_ONE; } else if (count > 1) { msg (M_WARN, "Warning: route gateway is ambiguous: %s (%d matches)", print_in_addr_t (r->gateway, 0, &gc), count); - ret = ~0; + ret = dwMINUS_ONE; } dmsg (D_ROUTE_DEBUG, "DEBUG: route find if: on_tun=%d count=%d index=%d", @@ -2223,9 +2223,9 @@ add_route_ipapi (const struct route *r, const struct tuntap *tt, DWORD adapter_i struct gc_arena gc = gc_new (); bool ret = false; DWORD status; - const DWORD if_index = (adapter_index == ~0) ? windows_route_find_if_index (r, tt) : adapter_index; + const DWORD if_index = (adapter_index == dwMINUS_ONE) ? windows_route_find_if_index (r, tt) : adapter_index; - if (if_index != ~0) + if (if_index != dwMINUS_ONE) { MIB_IPFORWARDROW fr; CLEAR (fr); @@ -2239,10 +2239,10 @@ add_route_ipapi (const struct route *r, const struct tuntap *tt, DWORD adapter_i fr.dwForwardAge = 0; fr.dwForwardNextHopAS = 0; fr.dwForwardMetric1 = (r->flags & RT_METRIC_DEFINED) ? r->metric : 1; - fr.dwForwardMetric2 = ~0; - fr.dwForwardMetric3 = ~0; - fr.dwForwardMetric4 = ~0; - fr.dwForwardMetric5 = ~0; + fr.dwForwardMetric2 = dwMINUS_ONE; + fr.dwForwardMetric3 = dwMINUS_ONE; + fr.dwForwardMetric4 = dwMINUS_ONE; + fr.dwForwardMetric5 = dwMINUS_ONE; if ((r->network & r->netmask) != r->network) msg (M_WARN, "Warning: address %s is not a network address in relation to netmask %s", @@ -2299,7 +2299,7 @@ del_route_ipapi (const struct route *r, const struct tuntap *tt) DWORD status; const DWORD if_index = windows_route_find_if_index (r, tt); - if (if_index != ~0) + if (if_index != dwMINUS_ONE) { MIB_IPFORWARDROW fr; CLEAR (fr); @@ -2386,7 +2386,7 @@ get_default_gateway (struct route_gateway_info *rgi) { char line[256]; int count = 0; - unsigned int lowest_metric = ~0; + unsigned int lowest_metric = (unsigned int)-1; in_addr_t best_gw = 0; bool found = false; while (fgets (line, sizeof (line), fp) != NULL) @@ -3125,7 +3125,7 @@ netmask_to_netbits (const in_addr_t network, const in_addr_t netmask, int *netbi static void add_host_route_if_nonlocal (struct route_bypass *rb, const in_addr_t addr) { - if (test_local_addr(addr, NULL) == TLA_NONLOCAL && addr != 0 && addr != ~0) + if (test_local_addr(addr, NULL) == TLA_NONLOCAL && addr != 0 && addr != IPV4_NETMASK_HOST) add_bypass_address (rb, addr); } diff --git a/src/openvpn/route.h b/src/openvpn/route.h index 25ecaee..c0f5f57 100644 --- a/src/openvpn/route.h +++ b/src/openvpn/route.h @@ -317,7 +317,7 @@ netbits_to_netmask (const int netbits) const int addrlen = sizeof (in_addr_t) * 8; in_addr_t mask = 0; if (netbits > 0 && netbits <= addrlen) - mask = ~0 << (addrlen-netbits); + mask = IPV4_NETMASK_HOST << (addrlen-netbits); return mask; } diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c index e6a7bc8..8531175 100644 --- a/src/openvpn/tun.c +++ b/src/openvpn/tun.c @@ -489,7 +489,7 @@ init_tun (const char *dev, /* --dev option */ if (tt->type == DEV_TYPE_TAP || (tt->type == DEV_TYPE_TUN && tt->topology == TOP_SUBNET)) check_subnet_conflict (tt->local, tt->remote_netmask, "TUN/TAP adapter"); else if (tt->type == DEV_TYPE_TUN) - check_subnet_conflict (tt->local, ~0, "TUN/TAP adapter"); + check_subnet_conflict (tt->local, IPV4_NETMASK_HOST, "TUN/TAP adapter"); } /* @@ -579,7 +579,7 @@ init_tun_post (struct tuntap *tt, overlapped_io_init (&tt->writes, frame, TRUE, true); tt->rw_handle.read = tt->reads.overlapped.hEvent; tt->rw_handle.write = tt->writes.overlapped.hEvent; - tt->adapter_index = ~0; + tt->adapter_index = dwMINUS_ONE; #endif } @@ -3250,7 +3250,7 @@ get_per_adapter_info (const DWORD index, struct gc_arena *gc) IP_PER_ADAPTER_INFO *pi = NULL; DWORD status; - if (index != ~0) + if (index != dwMINUS_ONE) { if ((status = GetPerAdapterInfo (index, NULL, &size)) != ERROR_BUFFER_OVERFLOW) { @@ -3327,7 +3327,7 @@ get_interface_info (DWORD index, struct gc_arena *gc) const IP_ADAPTER_INFO * get_adapter (const IP_ADAPTER_INFO *ai, DWORD index) { - if (ai && index != (DWORD)~0) + if (ai && index != dwMINUS_ONE) { const IP_ADAPTER_INFO *a; @@ -3504,7 +3504,7 @@ adapter_index_of_ip (const IP_ADAPTER_INFO *list, in_addr_t *netmask) { struct gc_arena gc = gc_new (); - DWORD ret = ~0; + DWORD ret = dwMINUS_ONE; in_addr_t highest_netmask = 0; bool first = true; @@ -3540,7 +3540,7 @@ adapter_index_of_ip (const IP_ADAPTER_INFO *list, (int)ret, count ? *count : -1); - if (ret == ~0 && count) + if (ret == dwMINUS_ONE && count) *count = 0; if (netmask) @@ -3564,7 +3564,7 @@ dhcp_status (DWORD index) { struct gc_arena gc = gc_new (); int ret = DHCP_STATUS_UNDEF; - if (index != ~0) + if (index != dwMINUS_ONE) { const IP_ADAPTER_INFO *ai = get_adapter_info (index, &gc); @@ -3627,22 +3627,22 @@ static DWORD get_adapter_index_method_1 (const char *guid) { struct gc_arena gc = gc_new (); - ULONG index = ~0; + ULONG index = (ULONG)-1L; DWORD status; wchar_t wbuf[256]; _snwprintf (wbuf, SIZE (wbuf), L"\\DEVICE\\TCPIP_%S", guid); wbuf [SIZE(wbuf) - 1] = 0; if ((status = GetAdapterIndex (wbuf, &index)) != NO_ERROR) - index = ~0; + index = (ULONG)-1L; gc_free (&gc); - return index; + return (DWORD)index; } static DWORD get_adapter_index_method_2 (const char *guid) { struct gc_arena gc = gc_new (); - DWORD index = ~0; + DWORD index = dwMINUS_ONE; const IP_ADAPTER_INFO *list = get_adapter_info_list (&gc); @@ -3665,9 +3665,9 @@ get_adapter_index (const char *guid) { DWORD index; index = get_adapter_index_method_1 (guid); - if (index == ~0) + if (index == dwMINUS_ONE) index = get_adapter_index_method_2 (guid); - if (index == ~0) + if (index == dwMINUS_ONE) msg (M_INFO, "NOTE: could not get adapter index for %s", guid); return index; } @@ -3678,18 +3678,18 @@ get_adapter_index_flexible (const char *name) /* actual name or GUID */ struct gc_arena gc = gc_new (); DWORD index; index = get_adapter_index_method_1 (name); - if (index == ~0) + if (index == dwMINUS_ONE) index = get_adapter_index_method_2 (name); - if (index == ~0) + if (index == dwMINUS_ONE) { const struct tap_reg *tap_reg = get_tap_reg (&gc); const struct panel_reg *panel_reg = get_panel_reg (&gc); const char *guid = name_to_guid (name, tap_reg, panel_reg); index = get_adapter_index_method_1 (guid); - if (index == ~0) + if (index == dwMINUS_ONE) index = get_adapter_index_method_2 (guid); } - if (index == ~0) + if (index == dwMINUS_ONE) msg (M_INFO, "NOTE: could not get adapter index for name/GUID '%s'", name); gc_free (&gc); return index; @@ -3920,7 +3920,7 @@ dhcp_release_by_adapter_index(const DWORD adapter_index) static bool dhcp_release (const struct tuntap *tt) { - if (tt && tt->options.ip_win32_type == IPW32_SET_DHCP_MASQ && tt->adapter_index != ~0) + if (tt && tt->options.ip_win32_type == IPW32_SET_DHCP_MASQ && tt->adapter_index != dwMINUS_ONE) return dhcp_release_by_adapter_index (tt->adapter_index); else return false; @@ -3953,7 +3953,7 @@ dhcp_renew_by_adapter_index (const DWORD adapter_index) static bool dhcp_renew (const struct tuntap *tt) { - if (tt && tt->options.ip_win32_type == IPW32_SET_DHCP_MASQ && tt->adapter_index != ~0) + if (tt && tt->options.ip_win32_type == IPW32_SET_DHCP_MASQ && tt->adapter_index != dwMINUS_ONE) return dhcp_renew_by_adapter_index (tt->adapter_index); else return false; @@ -4838,7 +4838,7 @@ open_tun (const char *dev, const char *dev_type, const char *dev_node, struct tu const DWORD index = tt->adapter_index; /* flush arp cache */ - if (index != (DWORD)~0) + if (index != dwMINUS_ONE) { DWORD status; @@ -4880,7 +4880,7 @@ open_tun (const char *dev, const char *dev_type, const char *dev_node, struct tu const char *error_suffix = "I am having trouble using the Windows 'IP helper API' to automatically set the IP address -- consider using other --ip-win32 methods (not 'ipapi')"; /* couldn't get adapter index */ - if (index == (DWORD)~0) + if (index == dwMINUS_ONE) { msg (M_FATAL, "ERROR: unable to get adapter index for interface %s -- %s", device_guid, -- 1.7.3.4