1/* 2 * Copyright (c) 2010-2013 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24/* 25 * HostUUID.c 26 * - get the host UUID 27 */ 28 29/* 30 * Modification History 31 * 32 * April 11, 2013 33 * - created (split out from DHCPDUIDIAID.c) 34 */ 35 36#include <unistd.h> 37#include "HostUUID.h" 38#include "symbol_scope.h" 39#include "cfutil.h" 40 41PRIVATE_EXTERN CFDataRef 42HostUUIDGet(void) 43{ 44 STATIC CFMutableDataRef host_UUID; 45 struct timespec ts = { 0, 0 }; 46 47 if (host_UUID != NULL) { 48 return (host_UUID); 49 } 50 host_UUID = CFDataCreateMutable(NULL, sizeof(uuid_t)); 51 CFDataSetLength(host_UUID, sizeof(uuid_t)); 52 if (gethostuuid(CFDataGetMutableBytePtr(host_UUID), &ts) != 0) { 53 my_CFRelease(&host_UUID); 54 } 55 return (host_UUID); 56} 57 58