Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/12/15 15:35:16 (9 years ago)
Author:
mkommend
Message:

#2276: Merged trunk changes into dataset refactoring branch.

Location:
branches/HeuristicLab.DatasetRefactor/sources
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.DatasetRefactor/sources

  • branches/HeuristicLab.DatasetRefactor/sources/HeuristicLab.Clients.Hive.Slave/3.3/Manager/ConfigManager.cs

    r12247 r12438  
    3737    private const string vmwareNameString = "VMware";
    3838    private const string virtualboxNameString = "VirtualBox";
    39     private const int macLength = 12;
     39    private const int macLength = 6;
     40    private const int macLongLength = 8;
    4041
    4142    public static ConfigManager Instance {
     
    196197      }
    197198
    198       string addr = validNic.GetPhysicalAddress().ToString();
    199       if (addr.Length != macLength) {
    200         throw new Exception("Error generating slave UID: MAC address has to have " + macLength + " digits. Actual MAC address is: " + addr);
    201       }
    202 
    203       byte[] b = new byte[8];
    204       int j = 2;
    205       for (int i = 0; i < macLength; i += 2) {
    206         b[j++] = (byte)((ParseNybble(addr[i]) << 4) | ParseNybble(addr[i + 1]));
    207       }
     199      byte[] addr = validNic.GetPhysicalAddress().GetAddressBytes();
     200      if (addr.Length < macLength || addr.Length > macLongLength) {
     201        throw new ArgumentException(string.Format("Error generating slave UID: MAC address has to have a length between {0} and {1} bytes. Actual MAC address is: {2}",
     202              macLength, macLongLength, addr));
     203      }
     204
     205      if (addr.Length < macLongLength) {
     206        byte[] b = new byte[8];
     207        Array.Copy(addr, 0, b, 2, addr.Length);
     208        addr = b;
     209      }
     210
    208211      // also get machine name and save it to the first 4 bytes               
    209       Guid guid = new Guid(Environment.MachineName.GetHashCode(), 0, 0, b);
     212      Guid guid = new Guid(Environment.MachineName.GetHashCode(), 0, 0, addr);
    210213      return guid;
    211     }
    212 
    213     /// <summary>
    214     /// return numeric value of a single hex-char
    215     /// (see: http://stackoverflow.com/questions/854012/how-to-convert-hex-to-a-byte-array)
    216     /// </summary>   
    217     static int ParseNybble(char c) {
    218       if (c >= '0' && c <= '9') {
    219         return c - '0';
    220       }
    221       if (c >= 'A' && c <= 'F') {
    222         return c - 'A' + 10;
    223       }
    224       if (c >= 'a' && c <= 'f') {
    225         return c - 'a' + 10;
    226       }
    227       throw new ArgumentException("Invalid hex digit: " + c);
    228214    }
    229215
Note: See TracChangeset for help on using the changeset viewer.