diff options
author | tlh20@elite.cl.cam.ac.uk <tlh20@elite.cl.cam.ac.uk> | 2003-05-06 09:36:15 +0000 |
---|---|---|
committer | tlh20@elite.cl.cam.ac.uk <tlh20@elite.cl.cam.ac.uk> | 2003-05-06 09:36:15 +0000 |
commit | fd347f1b55d1a77969f2624f0063152568dabab0 (patch) | |
tree | e90591937b99940e1237421f9a6e047d5dbca521 /tools/domctl/src/uk/ac/cam/cl/xeno/domctl/InetAddressPattern.java | |
parent | 5379a4b2d0213f3a323dc6c0340845b6353cd273 (diff) | |
download | xen-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.java | 60 |
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" : "") + "]"; + } +} |