package org.freertr.addr; import org.freertr.util.bits; /** * stores one ipx address * * @author matecsaba */ public class addrIpx extends addrType { /** * create instance */ public addrIpx() { } /** * size of address */ public final static int size = 10; /** * get size * * @return size */ public int getSize() { return size; } /** * get copy * * @return copy */ public addrIpx copyBytes() { addrIpx a = new addrIpx(); a.fromBuf(addr, 0); return a; } /** * convert to string * * @return string */ public String toString() { return bits.toHexB(addr[0]) + bits.toHexB(addr[1]) + bits.toHexB(addr[2]) + bits.toHexB(addr[3]) + "." + bits.toHexB(addr[4]) + bits.toHexB(addr[5]) + "." + bits.toHexB(addr[6]) + bits.toHexB(addr[7]) + "." + bits.toHexB(addr[8]) + bits.toHexB(addr[9]); } /** * from string * * @param s string * @return false on success, true on error */ public boolean fromString(String s) { s = s.replaceAll("\\.", ""); s = s.replaceAll("\\:", ""); s = s.replaceAll("\\-", ""); if (s.length() != (size * 2)) { return true; } for (int i = 0; i < size; i++) { try { addr[i] = (byte) Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16); } catch (Exception e) { return true; } } return false; } /** * get network part * * @return network */ public int getNet() { return bits.msbGetD(addr, 0); } /** * get mac part * * @return mac */ public addrMac getMac() { addrMac a = new addrMac(); a.fromBuf(addr, 4); return a; } /** * put network * * @param i network */ public void putNet(int i) { bits.msbPutD(addr, 0, i); } /** * put mac * * @param a mac */ public void putMac(addrMac a) { a.toBuffer(addr, 4); } }