public PublicIp(IPAddressVO addr, VlanVO vlan, long macAddress) { _addr = addr; _vlan = vlan; this.macAddress = NetUtils.long2Mac(macAddress); }
@Override public String[] getNextAvailableMacAddressPair(long id, long mask) { SequenceFetcher fetch = SequenceFetcher.getInstance(); long seq = fetch.getNextSequence(Long.class, _tgMacAddress, id); seq = seq | _prefix | ((id & 0x7f) << 32); seq |= mask; seq |= ((_rand.nextInt(Short.MAX_VALUE) << 16) & 0x00000000ffff0000l); String[] pair = new String[2]; pair[0] = NetUtils.long2Mac(seq); pair[1] = NetUtils.long2Mac(seq | 0x1l << 39); return pair; }
@Override public String[] getNextAvailableMacAddressPair(long id, long mask) { SequenceFetcher fetch = SequenceFetcher.getInstance(); long seq = fetch.getNextSequence(Long.class, _tgMacAddress, id); seq = seq | _prefix | ((id & 0x7f) << 32); seq |= mask; seq |= ((_rand.nextInt(Short.MAX_VALUE) << 16) & 0x00000000ffff0000l); String[] pair = new String[2]; pair[0] = NetUtils.long2Mac(seq); pair[1] = NetUtils.long2Mac(seq | 0x1l << 39); return pair; }
public Ip4Address(long addr, long mac) { _addr = NetUtils.long2Ip(addr); _mac = NetUtils.long2Mac(mac); }
public static String generateMacOnIncrease(final String baseMac, final long l) { long mac = mac2Long(baseMac); if (l > 0xFFFFl) { return null; } mac = mac + (l << 24); mac = mac & 0x06FFFFFFFFFFl; return long2Mac(mac); }
public static String standardizeMacAddress(final String macAddr) { if (!isValidMac(macAddr)) { return null; } String norm = macAddr.replace('.', ':'); norm = norm.replace('-', ':'); return long2Mac(mac2Long(norm)); }
@Override public String getNextAvailableMacAddress(final long networkConfigId, Integer zoneMacIdentifier) { final SequenceFetcher fetch = SequenceFetcher.getInstance(); long seq = fetch.getNextSequence(Long.class, _tgMacAddress, networkConfigId); if(zoneMacIdentifier != null && zoneMacIdentifier.intValue() != 0 ){ seq = seq | _prefix << 40 | (long)zoneMacIdentifier << 32 | networkConfigId << 16 & 0x00000000ffff0000l; } else { seq = seq | _prefix << 40 | _rand.nextInt(Short.MAX_VALUE) << 16 & 0x00000000ffff0000l; } return NetUtils.long2Mac(seq); }
@Test public void testLong2Mac() { assertEquals("00:00:00:00:00:00", NetUtils.long2Mac(0l)); assertEquals("00:00:00:00:00:01", NetUtils.long2Mac(1l)); assertEquals("00:00:00:00:00:ff", NetUtils.long2Mac(0xFFl)); assertEquals("00:00:00:00:ff:aa", NetUtils.long2Mac(0xFFAAl)); assertEquals("00:00:00:11:ff:aa", NetUtils.long2Mac(0x11FFAAl)); assertEquals("00:00:12:34:56:78", NetUtils.long2Mac(0x12345678l)); assertEquals("00:12:34:56:78:9a", NetUtils.long2Mac(0x123456789Al)); assertEquals("12:34:56:78:9a:bc", NetUtils.long2Mac(0x123456789ABCl)); }
public static String generateMacOnIncrease(final String baseMac, final long l) { long mac = mac2Long(baseMac); if (l > 0xFFFFl) { return null; } mac = mac + (l << 24); mac = mac & 0x06FFFFFFFFFFl; return long2Mac(mac); }
public Ip4Address(final long addr, final long mac) { _addr = NetUtils.long2Ip(addr); _mac = NetUtils.long2Mac(mac); }
public static String standardizeMacAddress(final String macAddr) { if (!isValidMac(macAddr)) { return null; } String norm = macAddr.replace('.', ':'); norm = norm.replace('-', ':'); return long2Mac(mac2Long(norm)); }
@Override public void reserve(NicProfile nic, Network network, VirtualMachineProfile vm, DeployDestination dest, ReservationContext context) throws InsufficientVirtualNetworkCapacityException, InsufficientAddressCapacityException { if (!_sNwMgr.isStorageIpRangeAvailable(dest.getDataCenter().getId())) { super.reserve(nic, network, vm, dest, context); return; } Pod pod = dest.getPod(); Integer vlan = null; StorageNetworkIpAddressVO ip = _sNwMgr.acquireIpAddress(pod.getId()); if (ip == null) { throw new InsufficientAddressCapacityException("Unable to get a storage network ip address", Pod.class, pod.getId()); } vlan = ip.getVlan(); nic.setIPv4Address(ip.getIpAddress()); nic.setMacAddress(NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(ip.getMac(), NetworkModel.MACIdentifier.value()))); nic.setFormat(AddressFormat.Ip4); nic.setIPv4Netmask(ip.getNetmask()); nic.setBroadcastType(BroadcastDomainType.Storage); nic.setIPv4Gateway(ip.getGateway()); if (vlan != null) { nic.setBroadcastUri(BroadcastDomainType.Storage.toUri(vlan)); } else { nic.setBroadcastUri(null); } nic.setIsolationUri(null); s_logger.debug("Allocated a storage nic " + nic + " for " + vm); }
@Override public void reserve(NicProfile nic, Network config, VirtualMachineProfile vm, DeployDestination dest, ReservationContext context) throws InsufficientVirtualNetworkCapacityException, InsufficientAddressCapacityException { Pod pod = dest.getPod(); boolean forSystemVms = vm.getType().equals(VirtualMachine.Type.ConsoleProxy) || vm.getType().equals(VirtualMachine.Type.SecondaryStorageVm); PrivateAllocationData result = _dcDao.allocatePrivateIpAddress(dest.getDataCenter().getId(), dest.getPod().getId(), nic.getId(), context.getReservationId(), forSystemVms); if (result == null) { throw new InsufficientAddressCapacityException("Unable to get a management ip address", Pod.class, pod.getId()); } Integer vlan = result.getVlan(); nic.setIPv4Address(result.getIpAddress()); nic.setMacAddress(NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(result.getMacAddress(), NetworkModel.MACIdentifier.value()))); nic.setIPv4Gateway(pod.getGateway()); nic.setFormat(AddressFormat.Ip4); String netmask = NetUtils.getCidrNetmask(pod.getCidrSize()); nic.setIPv4Netmask(netmask); nic.setBroadcastType(BroadcastDomainType.Native); if (vlan != null) { nic.setBroadcastUri(BroadcastDomainType.Native.toUri(vlan)); } else { nic.setBroadcastUri(null); } nic.setIsolationUri(null); s_logger.debug("Allocated a nic " + nic + " for " + vm); }
String newMacAddress = NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(ipVO.getMacAddress(), NetworkModel.MACIdentifier.value())); privateNicProfile.setMacAddress(newMacAddress); final PrivateIpAddress ip = new PrivateIpAddress(ipVO, privateNetwork.getBroadcastUri().toString(), privateNetwork.getGateway(), netmask, NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(ipVO.getMacAddress(), NetworkModel.MACIdentifier.value())));
protected void getIp(NicProfile nic, DataCenter dc, Network network) throws InsufficientVirtualNetworkCapacityException, InsufficientAddressCapacityException { if (nic.getIPv4Address() == null) { PrivateIpVO ipVO = _privateIpDao.allocateIpAddress(network.getDataCenterId(), network.getId(), null); String vlanTag = BroadcastDomainType.getValue(network.getBroadcastUri()); String netmask = NetUtils.getCidrNetmask(network.getCidr()); PrivateIpAddress ip = new PrivateIpAddress(ipVO, vlanTag, network.getGateway(), netmask, NetUtils.long2Mac(NetUtils.createSequenceBasedMacAddress(ipVO.getMacAddress(), NetworkModel.MACIdentifier.value()))); nic.setIPv4Address(ip.getIpAddress()); nic.setIPv4Gateway(ip.getGateway()); nic.setIPv4Netmask(ip.getNetmask()); nic.setIsolationUri(IsolationType.Vlan.toUri(ip.getBroadcastUri())); nic.setBroadcastUri(IsolationType.Vlan.toUri(ip.getBroadcastUri())); nic.setBroadcastType(BroadcastDomainType.Vlan); nic.setFormat(AddressFormat.Ip4); nic.setReservationId(String.valueOf(ip.getBroadcastUri())); nic.setMacAddress(ip.getMacAddress()); } nic.setIPv4Dns1(dc.getDns1()); nic.setIPv4Dns2(dc.getDns2()); }
@Test public void testLong2Mac() { assertEquals("00:00:00:00:00:00", NetUtils.long2Mac(0l)); assertEquals("00:00:00:00:00:01", NetUtils.long2Mac(1l)); assertEquals("00:00:00:00:00:ff", NetUtils.long2Mac(0xFFl)); assertEquals("00:00:00:00:ff:aa", NetUtils.long2Mac(0xFFAAl)); assertEquals("00:00:00:11:ff:aa", NetUtils.long2Mac(0x11FFAAl)); assertEquals("00:00:12:34:56:78", NetUtils.long2Mac(0x12345678l)); assertEquals("00:12:34:56:78:9a", NetUtils.long2Mac(0x123456789Al)); assertEquals("12:34:56:78:9a:bc", NetUtils.long2Mac(0x123456789ABCl)); }
nic.setMacAddress(NetUtils.long2Mac(NetUtils.ip2Long(ip) | (14l << 40))); nic.setIPv4Netmask("255.255.0.0"); nic.setFormat(AddressFormat.Ip4);