Search in sources :

Example 1 with ExcludeRange

use of org.opennms.netmgt.config.threshd.ExcludeRange in project opennms by OpenNMS.

the class ThreshdConfigManager method interfaceInPackage.

/**
 * This method is used to determine if the named interface is included in
 * the passed package definition. If the interface belongs to the package
 * then a value of true is returned. If the interface does not belong to the
 * package a false value is returned.
 *
 * <strong>Note: </strong>Evaluation of the interface against a package
 * filter will only work if the IP is already in the database.
 *
 * @param iface
 *            The interface to test against the package.
 * @param pkg
 *            The package to check for the inclusion of the interface.
 * @return True if the interface is included in the package, false
 *         otherwise.
 */
public synchronized boolean interfaceInPackage(String iface, org.opennms.netmgt.config.threshd.Package pkg) {
    final InetAddress ifaceAddr = addr(iface);
    boolean filterPassed = false;
    // get list of IPs in this package
    java.util.List<InetAddress> ipList = m_pkgIpMap.get(pkg);
    if (ipList != null && ipList.size() > 0) {
        filterPassed = ipList.contains(ifaceAddr);
    }
    LOG.debug("interfaceInPackage: Interface {} passed filter for package {}?: {}", filterPassed, iface, pkg.getName());
    if (!filterPassed)
        return false;
    // 
    // Ensure that the interface is in the specific list or
    // that it is in the include range and is not excluded
    // 
    boolean has_specific = false;
    boolean has_range_include = false;
    boolean has_range_exclude = false;
    has_range_include = pkg.getIncludeRanges().size() == 0 && pkg.getSpecifics().size() == 0;
    for (IncludeRange rng : pkg.getIncludeRanges()) {
        if (isInetAddressInRange(iface, rng.getBegin(), rng.getEnd())) {
            has_range_include = true;
            break;
        }
    }
    byte[] addr = toIpAddrBytes(iface);
    for (String spec : pkg.getSpecifics()) {
        byte[] speca = toIpAddrBytes(spec);
        if (new ByteArrayComparator().compare(speca, addr) == 0) {
            has_specific = true;
            break;
        }
    }
    final Iterator<String> eurl = pkg.getIncludeUrls().iterator();
    while (!has_specific && eurl.hasNext()) {
        has_specific = interfaceInUrl(iface, eurl.next());
    }
    for (ExcludeRange rng : pkg.getExcludeRanges()) {
        if (isInetAddressInRange(iface, rng.getBegin(), rng.getEnd())) {
            has_range_exclude = true;
            break;
        }
    }
    return has_specific || (has_range_include && !has_range_exclude);
}
Also used : IncludeRange(org.opennms.netmgt.config.threshd.IncludeRange) InetAddress(java.net.InetAddress) ByteArrayComparator(org.opennms.core.utils.ByteArrayComparator) ExcludeRange(org.opennms.netmgt.config.threshd.ExcludeRange)

Aggregations

InetAddress (java.net.InetAddress)1 ByteArrayComparator (org.opennms.core.utils.ByteArrayComparator)1 ExcludeRange (org.opennms.netmgt.config.threshd.ExcludeRange)1 IncludeRange (org.opennms.netmgt.config.threshd.IncludeRange)1