2005-06-19 02:37:11 +04:00
/*
Unix SMB / CIFS implementation .
Test suite for libnet calls .
Copyright ( C ) Rafal Szczesniak 2005
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"
2005-07-02 18:37:21 +04:00
# include "lib/cmdline/popt_common.h"
2005-06-19 02:37:11 +04:00
# include "libnet/libnet.h"
BOOL torture_lookup ( void )
{
2005-07-03 17:58:47 +04:00
BOOL ret ;
2005-06-19 02:37:11 +04:00
NTSTATUS status ;
TALLOC_CTX * mem_ctx ;
2005-07-02 18:37:21 +04:00
struct libnet_context * ctx ;
2005-06-19 02:37:11 +04:00
struct libnet_Lookup lookup ;
2005-07-03 17:58:47 +04:00
const char * address ;
2005-06-19 02:37:11 +04:00
2005-06-22 00:22:38 +04:00
mem_ctx = talloc_init ( " test_lookup " ) ;
2005-06-19 02:37:11 +04:00
2005-07-02 18:37:21 +04:00
ctx = libnet_context_init ( NULL ) ;
ctx - > cred = cmdline_credentials ;
2005-07-03 17:58:47 +04:00
address = talloc_array ( ctx , const char , 16 ) ;
2005-06-19 02:37:11 +04:00
lookup . in . hostname = lp_netbios_name ( ) ;
2005-06-22 00:22:38 +04:00
lookup . in . methods = lp_name_resolve_order ( ) ;
lookup . in . type = NBT_NAME_CLIENT ;
2005-07-02 18:37:21 +04:00
lookup . out . address = & address ;
2005-06-19 02:37:11 +04:00
2005-07-02 18:37:21 +04:00
status = libnet_Lookup ( ctx , mem_ctx , & lookup ) ;
2005-06-19 02:37:11 +04:00
2005-06-22 00:22:38 +04:00
if ( ! NT_STATUS_IS_OK ( status ) ) {
printf ( " Couldn't lookup name %s: %s \n " , lookup . in . hostname , nt_errstr ( status ) ) ;
2005-07-03 17:58:47 +04:00
ret = False ;
goto done ;
2005-06-22 00:22:38 +04:00
}
2005-07-03 17:58:47 +04:00
ret = True ;
done :
talloc_free ( mem_ctx ) ;
return ret ;
2005-06-22 00:22:38 +04:00
}
BOOL torture_lookup_host ( void )
{
2005-07-03 17:58:47 +04:00
BOOL ret ;
2005-06-22 00:22:38 +04:00
NTSTATUS status ;
TALLOC_CTX * mem_ctx ;
2005-07-02 18:37:21 +04:00
struct libnet_context * ctx ;
2005-06-22 00:22:38 +04:00
struct libnet_Lookup lookup ;
2005-07-03 17:58:47 +04:00
const char * address ;
2005-06-22 00:22:38 +04:00
mem_ctx = talloc_init ( " test_lookup_host " ) ;
2005-07-02 18:37:21 +04:00
ctx = libnet_context_init ( NULL ) ;
ctx - > cred = cmdline_credentials ;
2005-07-03 17:58:47 +04:00
address = talloc_array ( mem_ctx , const char , 16 ) ;
2005-06-22 00:22:38 +04:00
lookup . in . hostname = lp_netbios_name ( ) ;
lookup . in . methods = lp_name_resolve_order ( ) ;
2005-07-02 18:37:21 +04:00
lookup . out . address = & address ;
2005-06-22 00:22:38 +04:00
2005-07-02 18:37:21 +04:00
status = libnet_LookupHost ( ctx , mem_ctx , & lookup ) ;
2005-06-22 00:22:38 +04:00
2005-06-19 02:37:11 +04:00
if ( ! NT_STATUS_IS_OK ( status ) ) {
printf ( " Couldn't lookup host %s: %s \n " , lookup . in . hostname , nt_errstr ( status ) ) ;
2005-07-03 17:58:47 +04:00
ret = False ;
goto done ;
2005-06-19 02:37:11 +04:00
}
2005-07-03 17:58:47 +04:00
ret = True ;
done :
talloc_free ( mem_ctx ) ;
return ret ;
2005-06-19 02:37:11 +04:00
}
2005-06-22 00:22:38 +04:00
BOOL torture_lookup_pdc ( void )
{
2005-07-03 17:58:47 +04:00
BOOL ret ;
2005-06-22 00:22:38 +04:00
NTSTATUS status ;
TALLOC_CTX * mem_ctx ;
2005-07-02 18:37:21 +04:00
struct libnet_context * ctx ;
2005-06-22 00:22:38 +04:00
struct libnet_Lookup lookup ;
2005-07-03 17:58:47 +04:00
const char * address ;
2005-06-22 00:22:38 +04:00
mem_ctx = talloc_init ( " test_lookup_pdc " ) ;
2005-07-02 18:37:21 +04:00
ctx = libnet_context_init ( NULL ) ;
ctx - > cred = cmdline_credentials ;
2005-07-03 17:58:47 +04:00
address = talloc_array ( mem_ctx , const char , 16 ) ;
2005-06-22 00:22:38 +04:00
lookup . in . hostname = lp_workgroup ( ) ;
lookup . in . methods = lp_name_resolve_order ( ) ;
2005-07-02 18:37:21 +04:00
lookup . out . address = & address ;
2005-06-22 00:22:38 +04:00
2005-07-02 18:37:21 +04:00
status = libnet_LookupPdc ( ctx , mem_ctx , & lookup ) ;
2005-06-22 00:22:38 +04:00
if ( ! NT_STATUS_IS_OK ( status ) ) {
printf ( " Couldn't lookup pdc %s: %s \n " , lookup . in . hostname , nt_errstr ( status ) ) ;
2005-07-03 17:58:47 +04:00
ret = False ;
goto done ;
2005-06-22 00:22:38 +04:00
}
2005-07-03 17:58:47 +04:00
ret = True ;
done :
talloc_free ( mem_ctx ) ;
return ret ;
2005-06-22 00:22:38 +04:00
}