2003-08-13 05:53:07 +04:00
/*
* Unix SMB / CIFS implementation .
* UUID server routines
* Copyright ( C ) Theodore Ts ' o 1996 , 1997 ,
* Copyright ( C ) Jim McDonough 2002.
2003-12-16 12:02:58 +03:00
* Copyright ( C ) Andrew Tridgell 2003.
2003-08-13 05:53:07 +04: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
* the Free Software Foundation ; either version 2 of the License , or
* ( 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
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
# include "includes.h"
2003-12-16 12:02:58 +03:00
void uuid_generate_random ( struct GUID * out )
2003-08-13 05:53:07 +04:00
{
2003-12-16 12:02:58 +03:00
generate_random_buffer ( out , sizeof ( struct GUID ) , False ) ;
out - > clock_seq [ 0 ] = ( out - > clock_seq [ 0 ] & 0x3F ) | 0x80 ;
out - > time_hi_and_version = ( out - > time_hi_and_version & 0x0FFF ) | 0x4000 ;
2003-08-13 05:53:07 +04:00
}
2003-12-16 12:50:49 +03:00
BOOL uuid_all_zero ( const struct GUID * u )
{
if ( u - > time_low ! = 0 | |
u - > time_mid ! = 0 | |
u - > time_hi_and_version ! = 0 | |
u - > clock_seq [ 0 ] ! = 0 | |
u - > clock_seq [ 1 ] ! = 0 | |
! all_zero ( u - > node , 6 ) ) {
return False ;
}
return True ;
}
BOOL uuid_equal ( const struct GUID * u1 , const struct GUID * u2 )
{
if ( u1 - > time_low ! = u2 - > time_low | |
u1 - > time_mid ! = u2 - > time_mid | |
u1 - > time_hi_and_version ! = u2 - > time_hi_and_version | |
u1 - > clock_seq [ 0 ] ! = u2 - > clock_seq [ 0 ] | |
u1 - > clock_seq [ 1 ] ! = u2 - > clock_seq [ 1 ] | |
memcmp ( u1 - > node , u2 - > node , 6 ) ! = 0 ) {
return False ;
}
return True ;
}
2003-12-19 06:59:27 +03:00
BOOL policy_handle_empty ( struct policy_handle * h )
{
return ( h - > handle_type = = 0 & & uuid_all_zero ( & h - > uuid ) ) ;
}