2001-10-12 14:32:06 +04:00
/*
2004-03-30 23:35:44 +04:00
* Copyright ( C ) 2001 - 2004 Sistina Software , Inc . All rights reserved .
2007-08-21 00:55:30 +04:00
* Copyright ( C ) 2004 - 2006 Red Hat , Inc . All rights reserved .
2001-10-12 14:32:06 +04:00
*
2004-03-30 23:35:44 +04:00
* This file is part of LVM2 .
*
* This copyrighted material is made available to anyone wishing to use ,
* modify , copy , or redistribute it subject to the terms and conditions
2007-08-21 00:55:30 +04:00
* of the GNU Lesser General Public License v .2 .1 .
2004-03-30 23:35:44 +04:00
*
2007-08-21 00:55:30 +04:00
* You should have received a copy of the GNU Lesser General Public License
2004-03-30 23:35:44 +04:00
* along with this program ; if not , write to the Free Software Foundation ,
2016-01-21 13:49:46 +03:00
* Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
2001-10-12 14:32:06 +04:00
*/
# ifndef _LVM_UUID_H
# define _LVM_UUID_H
# define ID_LEN 32
2012-01-26 02:26:33 +04:00
# include <sys/types.h>
struct dm_pool ;
2001-10-12 14:32:06 +04:00
struct id {
2006-05-10 01:23:51 +04:00
int8_t uuid [ ID_LEN ] ;
2001-10-12 14:32:06 +04:00
} ;
2002-03-05 23:03:09 +03:00
/*
* Unique logical volume identifier
2005-04-06 17:47:41 +04:00
* With format1 this is VG uuid + LV uuid + ' \0 ' + padding
2002-03-05 23:03:09 +03:00
*/
union lvid {
struct id id [ 2 ] ;
2005-04-06 17:47:41 +04:00
char s [ 2 * sizeof ( struct id ) + 1 + 7 ] ;
2002-03-05 23:03:09 +03:00
} ;
2002-12-20 02:25:55 +03:00
int lvid_from_lvnum ( union lvid * lvid , struct id * vgid , uint32_t lv_num ) ;
2002-03-05 23:03:09 +03:00
int lvnum_from_lvid ( union lvid * lvid ) ;
2008-08-28 22:41:51 +04:00
int lvid_in_restricted_range ( union lvid * lvid ) ;
2002-02-21 18:26:44 +03:00
2004-01-09 22:18:20 +03:00
void uuid_from_num ( char * uuid , uint32_t num ) ;
2002-04-24 22:20:51 +04:00
int lvid_create ( union lvid * lvid , struct id * vgid ) ;
2001-10-12 14:32:06 +04:00
int id_create ( struct id * id ) ;
int id_valid ( struct id * id ) ;
2002-12-20 02:25:55 +03:00
int id_equal ( const struct id * lhs , const struct id * rhs ) ;
2001-10-12 14:32:06 +04:00
2001-12-11 14:40:34 +03:00
/*
* Fills ' buffer ' with a more human readable form
* of the uuid .
*/
2002-12-20 02:25:55 +03:00
int id_write_format ( const struct id * id , char * buffer , size_t size ) ;
2001-12-11 14:40:34 +03:00
/*
* Reads a formatted uuid .
*/
2002-12-20 02:25:55 +03:00
int id_read_format ( struct id * id , const char * buffer ) ;
2015-12-03 17:25:09 +03:00
/*
* Tries to read a formatted uuid without logging error for invalid ID
*/
int id_read_format_try ( struct id * id , const char * buffer ) ;
2001-12-11 14:40:34 +03:00
2010-09-30 18:07:33 +04:00
char * id_format_and_copy ( struct dm_pool * mem , const struct id * id ) ;
2001-10-12 14:32:06 +04:00
# endif