2004-11-25 23:03:46 +03:00
/*
Unix SMB / CIFS implementation .
UUID / GUID / policy_handle functions
Copyright ( C ) Andrew Tridgell 2003.
Copyright ( C ) Stefan ( metze ) Metzmacher 2004.
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-10 06:07:03 +04:00
the Free Software Foundation ; either version 3 of the License , or
2004-11-25 23:03:46 +03: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 06:07:03 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2004-11-25 23:03:46 +03:00
*/
# include "includes.h"
2005-01-31 20:16:45 +03:00
# include "system/network.h"
2006-03-18 18:42:57 +03:00
# include "librpc/ndr/libndr.h"
2018-03-22 07:12:49 +03:00
# include "libcli/util/ntstatus.h"
# include "lib/util/util_str_hex.h"
2005-01-31 20:16:45 +03:00
2006-03-05 20:44:16 +03:00
_PUBLIC_ void ndr_print_GUID ( struct ndr_print * ndr , const char * name , const struct GUID * guid )
2004-11-25 23:03:46 +03:00
{
2021-01-22 21:33:51 +03:00
struct GUID_txt_buf buf ;
ndr - > print ( ndr , " %-25s: %s " , name , GUID_buf_string ( guid , & buf ) ) ;
2004-11-25 23:03:46 +03:00
}
2008-09-18 18:56:11 +04:00
bool ndr_syntax_id_equal ( const struct ndr_syntax_id * i1 ,
const struct ndr_syntax_id * i2 )
{
return GUID_equal ( & i1 - > uuid , & i2 - > uuid )
& & ( i1 - > if_version = = i2 - > if_version ) ;
}
2014-02-04 15:54:42 +04:00
2021-01-22 21:50:04 +03:00
char * ndr_syntax_id_buf_string (
const struct ndr_syntax_id * id , struct ndr_syntax_id_buf * dst )
{
struct GUID_txt_buf guid_buf ;
snprintf ( dst - > buf ,
sizeof ( dst - > buf ) ,
2021-05-11 01:28:07 +03:00
" %s/0x%08 " PRIx32 ,
2021-01-22 21:50:04 +03:00
GUID_buf_string ( & id - > uuid , & guid_buf ) ,
2021-05-11 01:28:07 +03:00
id - > if_version ) ;
2021-01-22 21:50:04 +03:00
return dst - > buf ;
}
2014-02-04 15:54:42 +04:00
_PUBLIC_ char * ndr_syntax_id_to_string ( TALLOC_CTX * mem_ctx , const struct ndr_syntax_id * id )
{
2021-01-22 21:50:04 +03:00
struct ndr_syntax_id_buf buf ;
return talloc_strdup ( mem_ctx , ndr_syntax_id_buf_string ( id , & buf ) ) ;
2014-02-04 15:54:42 +04:00
}
_PUBLIC_ bool ndr_syntax_id_from_string ( const char * s , struct ndr_syntax_id * id )
{
2021-01-24 11:15:29 +03:00
bool ok ;
2014-02-04 15:54:42 +04:00
2021-01-24 11:15:29 +03:00
ok = parse_guid_string ( s , & id - > uuid ) ;
if ( ! ok ) {
2018-03-22 07:12:49 +03:00
return false ;
}
if ( strncmp ( s + 36 , " /0x " , 3 ) ! = 0 ) {
return false ;
}
2021-01-24 11:15:29 +03:00
ok = hex_uint32 ( s + 39 , & id - > if_version ) ;
return ok ;
2014-02-04 15:54:42 +04:00
}