/// <summary>
 /// Add IP address range.
 /// </summary>
 /// <param name="remote">True to specify remote, false for local.</param>
 /// <param name="low_address">The low IP address.</param>
 /// <param name="high_address">The high IP address.</param>
 public void AddIpRange(bool remote, IPAddress low_address, IPAddress high_address)
 {
     AddConditionRange(remote ? FirewallConditionGuids.FWPM_CONDITION_IP_REMOTE_ADDRESS : FirewallConditionGuids.FWPM_CONDITION_IP_LOCAL_ADDRESS,
                       FirewallValue.FromIpAddress(low_address), FirewallValue.FromIpAddress(high_address));
 }
 /// <summary>
 /// Add IP address.
 /// </summary>
 /// <param name="match_type">The match type for the condition.</param>
 /// <param name="remote">True to specify remote, false for local.</param>
 /// <param name="address">The low IP address.</param>
 public void AddIpAddress(FirewallMatchType match_type, bool remote, IPAddress address)
 {
     AddCondition(match_type, remote ? FirewallConditionGuids.FWPM_CONDITION_IP_REMOTE_ADDRESS : FirewallConditionGuids.FWPM_CONDITION_IP_LOCAL_ADDRESS,
                  FirewallValue.FromIpAddress(address));
 }