X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fsal%2Fapi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Futils%2FNetUtils.java;h=a3f21cff3eb50ad3d062b1c381a79abf35b81f2e;hp=6a3a42fbb9ba52b5414937027d53788ed5058c9e;hb=7b8542bde88493834288782e7280c0fe72f3763b;hpb=d4b6addab23cf24f20cd7969a7f1d800fda2bac1 diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NetUtils.java b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NetUtils.java index 6a3a42fbb9..a3f21cff3e 100644 --- a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NetUtils.java +++ b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/utils/NetUtils.java @@ -59,20 +59,46 @@ public abstract class NetUtils { } /** - * Converts a long to 6 bytes array for mac addresses - * @param addr - * @return + * Converts a 6 bytes array into a long number MAC addresses. + * + * @param ba + * The 6 bytes long byte array. + * @return The long number. + * Zero is returned if {@code ba} is {@code null} or + * the length of it is not six. */ + public static long byteArray6ToLong(byte[] ba) { + if (ba == null || ba.length != MACAddrLengthInBytes) { + return 0L; + } + long num = 0L; + int i = 0; + do { + num <<= NumBitsInAByte; + num |= 0xff & ba[i]; + i++; + } while (i < MACAddrLengthInBytes); + return num; + } + /** + * Converts a long number to a 6 bytes array for MAC addresses. + * + * @param addr + * The long number. + * @return The byte array. + */ public static byte[] longToByteArray6(long addr){ - byte[] mac = new byte[6]; - for(int i = 0; i < 6; i++){ - mac[i] = (byte) (addr >> (i*8)); - } + byte[] mac = new byte[MACAddrLengthInBytes]; + int i = MACAddrLengthInBytes - 1; + do { + mac[i] = (byte) addr; + addr >>>= NumBitsInAByte; + i--; + } while (i >= 0); return mac; } - /** * Converts an integer number into a 4 bytes array *