2002-08-12 13:48:19 +00:00
/*
* Unix SMB / CIFS implementation .
* UUID server routines
* Copyright ( C ) Theodore Ts ' o 1996 , 1997 ,
2004-04-13 14:39:48 +00:00
* Copyright ( C ) Jim McDonough < jmcd @ us . ibm . com > 2002 , 2003
2002-08-12 13:48:19 +00:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
2007-07-09 19:25:36 +00:00
* the Free Software Foundation ; either version 3 of the License , or
2002-08-12 13:48:19 +00:00
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
2007-07-10 05:23:25 +00:00
* along with this program ; if not , see < http : //www.gnu.org/licenses/>.
2002-08-12 13:48:19 +00:00
*/
# include "includes.h"
2006-09-19 00:12:11 +00:00
void smb_uuid_pack ( const struct GUID uu , UUID_FLAT * ptr )
2002-08-12 13:48:19 +00:00
{
2004-09-01 04:46:15 +00:00
SIVAL ( ptr - > info , 0 , uu . time_low ) ;
SSVAL ( ptr - > info , 4 , uu . time_mid ) ;
SSVAL ( ptr - > info , 6 , uu . time_hi_and_version ) ;
memcpy ( ptr - > info + 8 , uu . clock_seq , 2 ) ;
memcpy ( ptr - > info + 10 , uu . node , 6 ) ;
2004-04-13 14:39:48 +00:00
}
2002-08-12 13:48:19 +00:00
2006-09-19 00:12:11 +00:00
void smb_uuid_unpack ( const UUID_FLAT in , struct GUID * uu )
2004-04-13 14:39:48 +00:00
{
uu - > time_low = IVAL ( in . info , 0 ) ;
uu - > time_mid = SVAL ( in . info , 4 ) ;
uu - > time_hi_and_version = SVAL ( in . info , 6 ) ;
memcpy ( uu - > clock_seq , in . info + 8 , 2 ) ;
memcpy ( uu - > node , in . info + 10 , 6 ) ;
2002-08-12 13:48:19 +00:00
}
2007-07-11 10:26:02 +00:00
/*****************************************************************
Return the binary string representation of a GUID .
Caller must free .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
char * guid_binstring ( const struct GUID * guid )
{
UUID_FLAT guid_flat ;
smb_uuid_pack ( * guid , & guid_flat ) ;
return binary_string_rfc2254 ( ( char * ) guid_flat . info , UUID_FLAT_SIZE ) ;
}