Package com.subgraph.orchid.data.exitpolicy

Source Code of com.subgraph.orchid.data.exitpolicy.Network

package com.subgraph.orchid.data.exitpolicy;

import com.subgraph.orchid.TorParsingException;
import com.subgraph.orchid.data.IPv4Address;

public class Network {
  public static final Network ALL_ADDRESSES = new Network(IPv4Address.createFromString("0.0.0.0"), 0, "*");
  public static Network createFromString(String networkString) {
    final String[] parts = networkString.split("/");
    final IPv4Address network = IPv4Address.createFromString(parts[0]);
    if(parts.length == 1)
      return new Network(network, 32, networkString);
   
    if(parts.length != 2)
      throw new TorParsingException("Invalid network CIDR notation: " + networkString);

    try {
      final int maskBits = Integer.parseInt(parts[1]);
      return new Network(network, maskBits, networkString);
    } catch(NumberFormatException e) {
      throw new TorParsingException("Invalid netblock mask bit value: " + parts[1]);
    }
  }
 
  private final IPv4Address network;
  private final int maskValue;
  private final String originalString;
 
  Network(IPv4Address network, int bits, String originalString) {
    this.network = network;
    this.maskValue = createMask(bits);
    this.originalString = originalString;
  }
 
  private static int createMask(int maskBits) {
    return maskBits == 0 ? 0 : (1 << 31) >> (maskBits - 1);
  }
 
  public boolean contains(IPv4Address address) {
    return (address.getAddressData() & maskValue) == (network.getAddressData() & maskValue);
  }
 
  public String toString() {
    return originalString;
  }

}
TOP

Related Classes of com.subgraph.orchid.data.exitpolicy.Network

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.