- /* check the IP address (range) */
- if ((ifinfo.addr.s_addr &
- hp->interface_pair->interface_mask.s_addr) !=
- hp->interface_pair->interface_address.s_addr) {
+ /* check the IP addresses (range) */
+ if (!(
+ /* check remote IP address */
+ ((ifinfo.dstaddr.s_addr != 0) &&
+ (ifinfo.dstaddr.s_addr &
+ hp->interface_pair->interface_mask.s_addr) ==
+ hp->interface_pair->interface_address.s_addr)
+ ||
+ /* check local IP address */
+ ((ifinfo.addr.s_addr &
+ hp->interface_pair->interface_mask.s_addr) ==
+ hp->interface_pair->interface_address.s_addr)
+ ) )
+ {