aboutsummaryrefslogtreecommitdiffstats
path: root/tools/domctl/src/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.java
diff options
context:
space:
mode:
authortlh20@elite.cl.cam.ac.uk <tlh20@elite.cl.cam.ac.uk>2003-05-06 09:36:15 +0000
committertlh20@elite.cl.cam.ac.uk <tlh20@elite.cl.cam.ac.uk>2003-05-06 09:36:15 +0000
commitfd347f1b55d1a77969f2624f0063152568dabab0 (patch)
treee90591937b99940e1237421f9a6e047d5dbca521 /tools/domctl/src/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.java
parent5379a4b2d0213f3a323dc6c0340845b6353cd273 (diff)
downloadxen-fd347f1b55d1a77969f2624f0063152568dabab0.tar.gz
xen-fd347f1b55d1a77969f2624f0063152568dabab0.tar.bz2
xen-fd347f1b55d1a77969f2624f0063152568dabab0.zip
bitkeeper revision 1.206 (3eb7820fjxOimwW6NMSeo6KyAdqZUQ)
Many files: new file domctl, xi_ tools, updated domain builder, /proc/xeno/domains
Diffstat (limited to 'tools/domctl/src/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.java')
-rw-r--r--tools/domctl/src/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/tools/domctl/src/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.java b/tools/domctl/src/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.java
new file mode 100644
index 0000000000..5786edde71
--- /dev/null
+++ b/tools/domctl/src/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.java
@@ -0,0 +1,60 @@
+package uk.ac.cam.cl.xeno.domctl;
+
+import java.net.*;
+
+public class InetAddressPattern
+{
+ InetAddress base;
+ boolean addDom;
+
+ static InetAddressPattern parse (String t)
+ {
+ InetAddressPattern result = new InetAddressPattern ();
+ char[] ca = t.toCharArray ();
+ int idx = 0;
+ int len = ca.length;
+
+ try {
+ if (len == 0) {
+ result.base = null;
+ result.addDom = false;
+ } else if (ca[len - 1] == '+') {
+ result.base = InetAddress.getByName(t.substring(0, len - 1));
+ result.addDom = true;
+ } else {
+ result.base = InetAddress.getByName(t);
+ result.addDom = false;
+ }
+ } catch (UnknownHostException uhe) {
+ result.base = null;
+ result.addDom = false;
+ }
+
+ return result;
+ }
+
+ public String resolve (int domain_id) {
+ byte b[] = base.getAddress ();
+ if (addDom) {
+ if (((int)b[3]) + domain_id > 255) {
+ if (((int)b[2]) + domain_id > 255) {
+ if (((int)b[1]) + domain_id > 255) {
+ b[0] ++;
+ }
+ b[1] ++;
+ }
+ b[2] ++;
+ }
+ b[3] += domain_id;
+ }
+ return "" +
+ (b[0] + (b[0] < 0 ? 256 : 0)) + "." +
+ (b[1] + (b[1] < 0 ? 256 : 0)) + "." +
+ (b[2] + (b[2] < 0 ? 256 : 0)) + "." +
+ (b[3] + (b[3] < 0 ? 256 : 0));
+ }
+
+ public String toString () {
+ return "[" + base + (addDom ? "+dom_id" : "") + "]";
+ }
+}