Hi *, I have a problem (configuration problem probably) using the libsmbclient library (samba 2.2.6/7). I use a small c program to open directories (workgroups and servers) and list the contents of these dirs. I have two samba servers int the network. The first is everything-master and wins server, the second is nothing like that. The program works fine if I run it on the first server (using the /etc/smb.conf) but it doesn't work on the second samba server (using its /etc/smb.conf). errors: 1) list all workgroups $ ./list smb:// smbc_opendir: Invalid argument # means: A NULL file/URL was passed, or the URL would not parse, or was of incorrect form or smbc_init not called. # lists the available workgroups when called on first server 2) list servers in workgroup RATNET $ ./list smb://RATNET/ smbc_opendir: No such device # means: the workgroup or server could not be found. # lists servers when called on first server Listing dirctories and shares works with both samba servers. My question is: which options in the smb.conf file are used by libsmbclient (and which options could be wrong in my case)? I've listed the (in my eyes) important options below... <first server (works)> workgroup = RATNET security = user interfaces = 172.17.10.3/255.255.255.0 127.0.0.1 bind interfaces only = yes domain master = yes local master = yes preferred master = yes os level = 65 name resolve order = lmhosts wins bcast wins support = yes wins proxy = yes </first server> <second server (doesn't work)> workgroup = RATNET security = share domain master = no local master = no preferred master = no os level = 0 name resolve order = lmhosts wins bcast wins support = no wins server = 172.17.10.3 </second server> I've appended my test program at the end of this mail. $ smbclient -L 172.17.10.3 # works and lists all information I need (on both samba servers) Thanks for any help, Philipp -------------- next part -------------- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include "libsmbclient.h" static void auth_func( char const* server, char const* share, char* workgroup, int wglen, char* username, int unlen, char* password, int pwlen ) { #if 1 printf( "need authentication: smb://%s/%s\n", server, share ); #endif if ( workgroup[0] != '\0' ) { memset( workgroup, '\0', wglen ); snprintf( workgroup, wglen-1, "%s", "RATNET" ); } } /* main function */ int main( int argc, char** argv ) { char const* smburl = argc > 1 ? argv[1] : "smb://RATNET/"; struct smbc_dirent* dirp; int handle; /* open libsmbclient library... */ if( smbc_init( auth_func, 10 ) < 0 ) { perror( "smbc_init" ); return 1; } /* open directory */ handle = smbc_opendir( smburl ); if( handle < 0 ) { perror( "smbc_opendir" ); return 1; } /* read dir contents */ errno = 0; while( (dirp=smbc_readdir( handle )) != NULL ) { printf( "%s\n", dirp->name ); } if( errno != 0 ) { perror( "smbc_readdir" ); smbc_closedir( handle ); return 1; } printf( "Done.\n" ); /* close dir */ smbc_closedir( handle ); return 0; }