/*
* JLibs: Common Utilities for Java
* Copyright (C) 2009 Santhosh Kumar T <santhosh.tekuri@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package jlibs.nio.util;
import java.net.InetAddress;
/**
* @author Santhosh Kumar Tekuri
*/
public abstract class IPPattern{
public final String pattern;
protected byte[] mask;
protected byte[] result;
protected IPPattern(String pattern){
this.pattern = pattern;
}
public boolean matches(InetAddress address){
byte[] bytes = address.getAddress();
if(bytes==null || bytes.length!=mask.length)
return false;
for(int i=0; i<mask.length; ++i){
if((bytes[i]&mask[i])!=result[i])
return false;
}
return true;
}
public static int intBitMask(int low, int high){
assert low >= 0;
assert low <= high;
assert high < 32;
return (high == 31 ? 0 : (1 << high + 1)) - (1 << low);
}
@Override
public String toString(){
return getClass().getSimpleName()+"["+pattern+"]";
}
}