diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/include/includes.h | 8 | ||||
-rw-r--r-- | source/include/proto.h | 1100 | ||||
-rw-r--r-- | source/lib/util.c | 84 | ||||
-rw-r--r-- | source/smbd/quotas.c | 20 | ||||
-rw-r--r-- | source/smbd/reply.c | 22 | ||||
-rw-r--r-- | source/smbd/server.c | 268 |
6 files changed, 313 insertions, 1189 deletions
diff --git a/source/include/includes.h b/source/include/includes.h index a63f8f8597c..e66ceb2d70c 100644 --- a/source/include/includes.h +++ b/source/include/includes.h @@ -217,6 +217,14 @@ Here come some platform specific sections #ifndef NO_ASMSIGNALH #include <asm/signal.h> #endif +#ifdef GLIBC2 +#define _LINUX_C_LIB_VERSION_MAJOR 6 +#include <termios.h> +#include <rpcsvc/ypclnt.h> +#include <crypt.h> +#include <netinet/tcp.h> +#include <netinet/ip.h> +#endif #define SIGNAL_CAST (__sighandler_t) #define USE_GETCWD #define USE_SETSID diff --git a/source/include/proto.h b/source/include/proto.h index 0e6a90a8f3b..9c6cccb3708 100644 --- a/source/include/proto.h +++ b/source/include/proto.h @@ -5,38 +5,18 @@ BOOL check_access(int snum); BOOL allow_access(char *deny_list,char *allow_list,char *cname,char *caddr); -BOOL check_access(int snum); -BOOL allow_access(char *deny_list,char *allow_list,char *cname,char *caddr); /*The following definitions come from charcnv.c */ char *unix2dos_format(char *str,BOOL overwrite); char *dos2unix_format(char *str, BOOL overwrite); int interpret_character_set(char *str, int def); -char *unix2dos_format(char *str,BOOL overwrite); -char *dos2unix_format(char *str, BOOL overwrite); -int interpret_character_set(char *str, int def); -char *unix2dos_format(char *str,BOOL overwrite); -char *dos2unix_format(char *str, BOOL overwrite); -int interpret_character_set(char *str, int def); -char *unix2dos_format(char *str,BOOL overwrite); -char *dos2unix_format(char *str, BOOL overwrite); -int interpret_character_set(char *str, int def); /*The following definitions come from charset.c */ void charset_initialise(); void codepage_initialise(int client_codepage); void add_char_string(char *s); -void charset_initialise(); -void codepage_initialise(int client_codepage); -void add_char_string(char *s); -void charset_initialise(); -void codepage_initialise(int client_codepage); -void add_char_string(char *s); -void charset_initialise(); -void codepage_initialise(int client_codepage); -void add_char_string(char *s); /*The following definitions come from chgpasswd.c */ @@ -111,9 +91,6 @@ void DirCacheFlush(int snum); /*The following definitions come from fault.c */ void fault_setup(void (*fn)()); -void fault_setup(void (*fn)()); -void fault_setup(void (*fn)()); -void fault_setup(void (*fn)()); /*The following definitions come from getsmbpass.c */ @@ -130,33 +107,6 @@ struct in_addr *iface_n_ip(int n); struct in_addr *iface_bcast(struct in_addr ip); struct in_addr *iface_nmask(struct in_addr ip); struct in_addr *iface_ip(struct in_addr ip); -void load_interfaces(void); -void iface_set_default(char *ip,char *bcast,char *nmask); -BOOL ismyip(struct in_addr ip); -BOOL ismybcast(struct in_addr bcast); -int iface_count(void); -struct in_addr *iface_n_ip(int n); -struct in_addr *iface_bcast(struct in_addr ip); -struct in_addr *iface_nmask(struct in_addr ip); -struct in_addr *iface_ip(struct in_addr ip); -void load_interfaces(void); -void iface_set_default(char *ip,char *bcast,char *nmask); -BOOL ismyip(struct in_addr ip); -BOOL ismybcast(struct in_addr bcast); -int iface_count(void); -struct in_addr *iface_n_ip(int n); -struct in_addr *iface_bcast(struct in_addr ip); -struct in_addr *iface_nmask(struct in_addr ip); -struct in_addr *iface_ip(struct in_addr ip); -void load_interfaces(void); -void iface_set_default(char *ip,char *bcast,char *nmask); -BOOL ismyip(struct in_addr ip); -BOOL ismybcast(struct in_addr bcast); -int iface_count(void); -struct in_addr *iface_n_ip(int n); -struct in_addr *iface_bcast(struct in_addr ip); -struct in_addr *iface_nmask(struct in_addr ip); -struct in_addr *iface_ip(struct in_addr ip); /*The following definitions come from ipc.c */ @@ -169,21 +119,6 @@ char *sj_strstr(char *s1, char *s2); char *sj_strchr (char *s, int c); char *sj_strrchr(char *s, int c); int interpret_coding_system(char *str, int def); -char *sj_strtok(char *s1, char *s2); -char *sj_strstr(char *s1, char *s2); -char *sj_strchr (char *s, int c); -char *sj_strrchr(char *s, int c); -int interpret_coding_system(char *str, int def); -char *sj_strtok(char *s1, char *s2); -char *sj_strstr(char *s1, char *s2); -char *sj_strchr (char *s, int c); -char *sj_strrchr(char *s, int c); -int interpret_coding_system(char *str, int def); -char *sj_strtok(char *s1, char *s2); -char *sj_strstr(char *s1, char *s2); -char *sj_strchr (char *s, int c); -char *sj_strrchr(char *s, int c); -int interpret_coding_system(char *str, int def); /*The following definitions come from loadparm.c */ @@ -351,498 +286,6 @@ void lp_copy_service(int snum, char *new_name); int lp_default_server_announce(void); int lp_major_announce_version(void); int lp_minor_announce_version(void); -char *lp_string(char *s); -char *lp_logfile(void); -char *lp_smbrun(void); -char *lp_configfile(void); -char *lp_smb_passwd_file(void); -char *lp_serverstring(void); -char *lp_printcapname(void); -char *lp_lockdir(void); -char *lp_rootdir(void); -char *lp_defaultservice(void); -char *lp_msg_command(void); -char *lp_dfree_command(void); -char *lp_hosts_equiv(void); -char *lp_auto_services(void); -char *lp_passwd_program(void); -char *lp_passwd_chat(void); -char *lp_passwordserver(void); -char *lp_workgroup(void); -char *lp_domain_controller(void); -char *lp_username_map(void); -char *lp_character_set(void); -char *lp_logon_script(void); -char *lp_logon_path(void); -char *lp_remote_announce(void); -char *lp_wins_server(void); -char *lp_interfaces(void); -char *lp_socket_address(void); -char *lp_nis_home_map_name(void); -char *lp_announce_version(void); -char *lp_netbios_aliases(void); -BOOL lp_dns_proxy(void); -BOOL lp_wins_support(void); -BOOL lp_wins_proxy(void); -BOOL lp_local_master(void); -BOOL lp_domain_master(void); -BOOL lp_domain_logons(void); -BOOL lp_preferred_master(void); -BOOL lp_load_printers(void); -BOOL lp_use_rhosts(void); -BOOL lp_getwdcache(void); -BOOL lp_readprediction(void); -BOOL lp_readbmpx(void); -BOOL lp_readraw(void); -BOOL lp_writeraw(void); -BOOL lp_null_passwords(void); -BOOL lp_strip_dot(void); -BOOL lp_encrypted_passwords(void); -BOOL lp_syslog_only(void); -BOOL lp_browse_list(void); -BOOL lp_unix_realname(void); -BOOL lp_nis_home_map(void); -BOOL lp_time_server(void); -int lp_os_level(void); -int lp_max_ttl(void); -int lp_max_log_size(void); -int lp_mangledstack(void); -int lp_maxxmit(void); -int lp_maxmux(void); -int lp_maxpacket(void); -int lp_keepalive(void); -int lp_passwordlevel(void); -int lp_usernamelevel(void); -int lp_readsize(void); -int lp_shmem_size(void); -int lp_shmem_hash_size(void); -int lp_deadtime(void); -int lp_maxprotocol(void); -int lp_security(void); -int lp_printing(void); -int lp_maxdisksize(void); -int lp_lpqcachetime(void); -int lp_syslog(void); -int lp_client_code_page(void); -int lp_announce_as(void); -char *lp_preexec(int ); -char *lp_postexec(int ); -char *lp_rootpreexec(int ); -char *lp_rootpostexec(int ); -char *lp_servicename(int ); -char *lp_pathname(int ); -char *lp_dontdescend(int ); -char *lp_username(int ); -char *lp_guestaccount(int ); -char *lp_invalid_users(int ); -char *lp_valid_users(int ); -char *lp_admin_users(int ); -char *lp_printcommand(int ); -char *lp_lpqcommand(int ); -char *lp_lprmcommand(int ); -char *lp_lppausecommand(int ); -char *lp_lpresumecommand(int ); -char *lp_printername(int ); -char *lp_printerdriver(int ); -char *lp_hostsallow(int ); -char *lp_hostsdeny(int ); -char *lp_magicscript(int ); -char *lp_magicoutput(int ); -char *lp_comment(int ); -char *lp_force_user(int ); -char *lp_force_group(int ); -char *lp_readlist(int ); -char *lp_writelist(int ); -char *lp_volume(int ); -char *lp_mangled_map(int ); -char *lp_veto_files(int ); -char *lp_hide_files(int ); -BOOL lp_alternate_permissions(int ); -BOOL lp_revalidate(int ); -BOOL lp_casesensitive(int ); -BOOL lp_preservecase(int ); -BOOL lp_shortpreservecase(int ); -BOOL lp_casemangle(int ); -BOOL lp_status(int ); -BOOL lp_hide_dot_files(int ); -BOOL lp_browseable(int ); -BOOL lp_readonly(int ); -BOOL lp_no_set_dir(int ); -BOOL lp_guest_ok(int ); -BOOL lp_guest_only(int ); -BOOL lp_print_ok(int ); -BOOL lp_postscript(int ); -BOOL lp_map_hidden(int ); -BOOL lp_map_archive(int ); -BOOL lp_locking(int ); -BOOL lp_strict_locking(int ); -BOOL lp_share_modes(int ); -BOOL lp_onlyuser(int ); -BOOL lp_manglednames(int ); -BOOL lp_widelinks(int ); -BOOL lp_symlinks(int ); -BOOL lp_syncalways(int ); -BOOL lp_map_system(int ); -BOOL lp_delete_readonly(int ); -BOOL lp_fake_oplocks(int ); -BOOL lp_recursive_veto_delete(int ); -int lp_create_mode(int ); -int lp_force_create_mode(int ); -int lp_dir_mode(int ); -int lp_force_dir_mode(int ); -int lp_max_connections(int ); -int lp_defaultcase(int ); -int lp_minprintspace(int ); -char lp_magicchar(int ); -BOOL lp_add_home(char *pszHomename, int iDefaultService, char *pszHomedir); -int lp_add_service(char *pszService, int iDefaultService); -BOOL lp_add_printer(char *pszPrintername, int iDefaultService); -BOOL lp_file_list_changed(void); -BOOL lp_do_parameter(int snum, char *pszParmName, char *pszParmValue); -int lp_next_parameter(int snum, int *i, char *label, - char *value, int allparameters); -BOOL lp_snum_ok(int iService); -BOOL lp_loaded(void); -void lp_killunused(BOOL (*snumused)(int )); -BOOL lp_load(char *pszFname,BOOL global_only); -int lp_numservices(void); -void lp_dump(FILE *f); -int lp_servicenumber(char *pszServiceName); -char *volume_label(int snum); -void lp_rename_service(int snum, char *new_name); -void lp_remove_service(int snum); -void lp_copy_service(int snum, char *new_name); -int lp_default_server_announce(void); -int lp_major_announce_version(void); -int lp_minor_announce_version(void); -char *lp_string(char *s); -char *lp_logfile(void); -char *lp_smbrun(void); -char *lp_configfile(void); -char *lp_smb_passwd_file(void); -char *lp_serverstring(void); -char *lp_printcapname(void); -char *lp_lockdir(void); -char *lp_rootdir(void); -char *lp_defaultservice(void); -char *lp_msg_command(void); -char *lp_dfree_command(void); -char *lp_hosts_equiv(void); -char *lp_auto_services(void); -char *lp_passwd_program(void); -char *lp_passwd_chat(void); -char *lp_passwordserver(void); -char *lp_workgroup(void); -char *lp_domain_controller(void); -char *lp_username_map(void); -char *lp_character_set(void); -char *lp_logon_script(void); -char *lp_logon_path(void); -char *lp_remote_announce(void); -char *lp_wins_server(void); -char *lp_interfaces(void); -char *lp_socket_address(void); -char *lp_nis_home_map_name(void); -char *lp_announce_version(void); -char *lp_netbios_aliases(void); -BOOL lp_dns_proxy(void); -BOOL lp_wins_support(void); -BOOL lp_wins_proxy(void); -BOOL lp_local_master(void); -BOOL lp_domain_master(void); -BOOL lp_domain_logons(void); -BOOL lp_preferred_master(void); -BOOL lp_load_printers(void); -BOOL lp_use_rhosts(void); -BOOL lp_getwdcache(void); -BOOL lp_readprediction(void); -BOOL lp_readbmpx(void); -BOOL lp_readraw(void); -BOOL lp_writeraw(void); -BOOL lp_null_passwords(void); -BOOL lp_strip_dot(void); -BOOL lp_encrypted_passwords(void); -BOOL lp_syslog_only(void); -BOOL lp_browse_list(void); -BOOL lp_unix_realname(void); -BOOL lp_nis_home_map(void); -BOOL lp_time_server(void); -int lp_os_level(void); -int lp_max_ttl(void); -int lp_max_log_size(void); -int lp_mangledstack(void); -int lp_maxxmit(void); -int lp_maxmux(void); -int lp_maxpacket(void); -int lp_keepalive(void); -int lp_passwordlevel(void); -int lp_usernamelevel(void); -int lp_readsize(void); -int lp_shmem_size(void); -int lp_shmem_hash_size(void); -int lp_deadtime(void); -int lp_maxprotocol(void); -int lp_security(void); -int lp_printing(void); -int lp_maxdisksize(void); -int lp_lpqcachetime(void); -int lp_syslog(void); -int lp_client_code_page(void); -int lp_announce_as(void); -char *lp_preexec(int ); -char *lp_postexec(int ); -char *lp_rootpreexec(int ); -char *lp_rootpostexec(int ); -char *lp_servicename(int ); -char *lp_pathname(int ); -char *lp_dontdescend(int ); -char *lp_username(int ); -char *lp_guestaccount(int ); -char *lp_invalid_users(int ); -char *lp_valid_users(int ); -char *lp_admin_users(int ); -char *lp_printcommand(int ); -char *lp_lpqcommand(int ); -char *lp_lprmcommand(int ); -char *lp_lppausecommand(int ); -char *lp_lpresumecommand(int ); -char *lp_printername(int ); -char *lp_printerdriver(int ); -char *lp_hostsallow(int ); -char *lp_hostsdeny(int ); -char *lp_magicscript(int ); -char *lp_magicoutput(int ); -char *lp_comment(int ); -char *lp_force_user(int ); -char *lp_force_group(int ); -char *lp_readlist(int ); -char *lp_writelist(int ); -char *lp_volume(int ); -char *lp_mangled_map(int ); -char *lp_veto_files(int ); -char *lp_hide_files(int ); -BOOL lp_alternate_permissions(int ); -BOOL lp_revalidate(int ); -BOOL lp_casesensitive(int ); -BOOL lp_preservecase(int ); -BOOL lp_shortpreservecase(int ); -BOOL lp_casemangle(int ); -BOOL lp_status(int ); -BOOL lp_hide_dot_files(int ); -BOOL lp_browseable(int ); -BOOL lp_readonly(int ); -BOOL lp_no_set_dir(int ); -BOOL lp_guest_ok(int ); -BOOL lp_guest_only(int ); -BOOL lp_print_ok(int ); -BOOL lp_postscript(int ); -BOOL lp_map_hidden(int ); -BOOL lp_map_archive(int ); -BOOL lp_locking(int ); -BOOL lp_strict_locking(int ); -BOOL lp_share_modes(int ); -BOOL lp_onlyuser(int ); -BOOL lp_manglednames(int ); -BOOL lp_widelinks(int ); -BOOL lp_symlinks(int ); -BOOL lp_syncalways(int ); -BOOL lp_map_system(int ); -BOOL lp_delete_readonly(int ); -BOOL lp_fake_oplocks(int ); -BOOL lp_recursive_veto_delete(int ); -int lp_create_mode(int ); -int lp_force_create_mode(int ); -int lp_dir_mode(int ); -int lp_force_dir_mode(int ); -int lp_max_connections(int ); -int lp_defaultcase(int ); -int lp_minprintspace(int ); -char lp_magicchar(int ); -BOOL lp_add_home(char *pszHomename, int iDefaultService, char *pszHomedir); -int lp_add_service(char *pszService, int iDefaultService); -BOOL lp_add_printer(char *pszPrintername, int iDefaultService); -BOOL lp_file_list_changed(void); -BOOL lp_do_parameter(int snum, char *pszParmName, char *pszParmValue); -int lp_next_parameter(int snum, int *i, char *label, - char *value, int allparameters); -BOOL lp_snum_ok(int iService); -BOOL lp_loaded(void); -void lp_killunused(BOOL (*snumused)(int )); -BOOL lp_load(char *pszFname,BOOL global_only); -int lp_numservices(void); -void lp_dump(FILE *f); -int lp_servicenumber(char *pszServiceName); -char *volume_label(int snum); -void lp_rename_service(int snum, char *new_name); -void lp_remove_service(int snum); -void lp_copy_service(int snum, char *new_name); -int lp_default_server_announce(void); -int lp_major_announce_version(void); -int lp_minor_announce_version(void); -char *lp_string(char *s); -char *lp_logfile(void); -char *lp_smbrun(void); -char *lp_configfile(void); -char *lp_smb_passwd_file(void); -char *lp_serverstring(void); -char *lp_printcapname(void); -char *lp_lockdir(void); -char *lp_rootdir(void); -char *lp_defaultservice(void); -char *lp_msg_command(void); -char *lp_dfree_command(void); -char *lp_hosts_equiv(void); -char *lp_auto_services(void); -char *lp_passwd_program(void); -char *lp_passwd_chat(void); -char *lp_passwordserver(void); -char *lp_workgroup(void); -char *lp_domain_controller(void); -char *lp_username_map(void); -char *lp_character_set(void); -char *lp_logon_script(void); -char *lp_logon_path(void); -char *lp_remote_announce(void); -char *lp_wins_server(void); -char *lp_interfaces(void); -char *lp_socket_address(void); -char *lp_nis_home_map_name(void); -char *lp_announce_version(void); -char *lp_netbios_aliases(void); -BOOL lp_dns_proxy(void); -BOOL lp_wins_support(void); -BOOL lp_wins_proxy(void); -BOOL lp_local_master(void); -BOOL lp_domain_master(void); -BOOL lp_domain_logons(void); -BOOL lp_preferred_master(void); -BOOL lp_load_printers(void); -BOOL lp_use_rhosts(void); -BOOL lp_getwdcache(void); -BOOL lp_readprediction(void); -BOOL lp_readbmpx(void); -BOOL lp_readraw(void); -BOOL lp_writeraw(void); -BOOL lp_null_passwords(void); -BOOL lp_strip_dot(void); -BOOL lp_encrypted_passwords(void); -BOOL lp_syslog_only(void); -BOOL lp_browse_list(void); -BOOL lp_unix_realname(void); -BOOL lp_nis_home_map(void); -BOOL lp_time_server(void); -int lp_os_level(void); -int lp_max_ttl(void); -int lp_max_log_size(void); -int lp_mangledstack(void); -int lp_maxxmit(void); -int lp_maxmux(void); -int lp_maxpacket(void); -int lp_keepalive(void); -int lp_passwordlevel(void); -int lp_usernamelevel(void); -int lp_readsize(void); -int lp_shmem_size(void); -int lp_shmem_hash_size(void); -int lp_deadtime(void); -int lp_maxprotocol(void); -int lp_security(void); -int lp_printing(void); -int lp_maxdisksize(void); -int lp_lpqcachetime(void); -int lp_syslog(void); -int lp_client_code_page(void); -int lp_announce_as(void); -char *lp_preexec(int ); -char *lp_postexec(int ); -char *lp_rootpreexec(int ); -char *lp_rootpostexec(int ); -char *lp_servicename(int ); -char *lp_pathname(int ); -char *lp_dontdescend(int ); -char *lp_username(int ); -char *lp_guestaccount(int ); -char *lp_invalid_users(int ); -char *lp_valid_users(int ); -char *lp_admin_users(int ); -char *lp_printcommand(int ); -char *lp_lpqcommand(int ); -char *lp_lprmcommand(int ); -char *lp_lppausecommand(int ); -char *lp_lpresumecommand(int ); -char *lp_printername(int ); -char *lp_printerdriver(int ); -char *lp_hostsallow(int ); -char *lp_hostsdeny(int ); -char *lp_magicscript(int ); -char *lp_magicoutput(int ); -char *lp_comment(int ); -char *lp_force_user(int ); -char *lp_force_group(int ); -char *lp_readlist(int ); -char *lp_writelist(int ); -char *lp_volume(int ); -char *lp_mangled_map(int ); -char *lp_veto_files(int ); -char *lp_hide_files(int ); -BOOL lp_alternate_permissions(int ); -BOOL lp_revalidate(int ); -BOOL lp_casesensitive(int ); -BOOL lp_preservecase(int ); -BOOL lp_shortpreservecase(int ); -BOOL lp_casemangle(int ); -BOOL lp_status(int ); -BOOL lp_hide_dot_files(int ); -BOOL lp_browseable(int ); -BOOL lp_readonly(int ); -BOOL lp_no_set_dir(int ); -BOOL lp_guest_ok(int ); -BOOL lp_guest_only(int ); -BOOL lp_print_ok(int ); -BOOL lp_postscript(int ); -BOOL lp_map_hidden(int ); -BOOL lp_map_archive(int ); -BOOL lp_locking(int ); -BOOL lp_strict_locking(int ); -BOOL lp_share_modes(int ); -BOOL lp_onlyuser(int ); -BOOL lp_manglednames(int ); -BOOL lp_widelinks(int ); -BOOL lp_symlinks(int ); -BOOL lp_syncalways(int ); -BOOL lp_map_system(int ); -BOOL lp_delete_readonly(int ); -BOOL lp_fake_oplocks(int ); -BOOL lp_recursive_veto_delete(int ); -int lp_create_mode(int ); -int lp_force_create_mode(int ); -int lp_dir_mode(int ); -int lp_force_dir_mode(int ); -int lp_max_connections(int ); -int lp_defaultcase(int ); -int lp_minprintspace(int ); -char lp_magicchar(int ); -BOOL lp_add_home(char *pszHomename, int iDefaultService, char *pszHomedir); -int lp_add_service(char *pszService, int iDefaultService); -BOOL lp_add_printer(char *pszPrintername, int iDefaultService); -BOOL lp_file_list_changed(void); -BOOL lp_do_parameter(int snum, char *pszParmName, char *pszParmValue); -int lp_next_parameter(int snum, int *i, char *label, - char *value, int allparameters); -BOOL lp_snum_ok(int iService); -BOOL lp_loaded(void); -void lp_killunused(BOOL (*snumused)(int )); -BOOL lp_load(char *pszFname,BOOL global_only); -int lp_numservices(void); -void lp_dump(FILE *f); -int lp_servicenumber(char *pszServiceName); -char *volume_label(int snum); -void lp_rename_service(int snum, char *new_name); -void lp_remove_service(int snum); -void lp_copy_service(int snum, char *new_name); -int lp_default_server_announce(void); -int lp_major_announce_version(void); -int lp_minor_announce_version(void); /*The following definitions come from locking.c */ @@ -877,9 +320,6 @@ BOOL name_map_mangle(char *OutName,BOOL need83,int snum); /*The following definitions come from md4.c */ void mdfour(unsigned char *out, unsigned char *in, int n); -void mdfour(unsigned char *out, unsigned char *in, int n); -void mdfour(unsigned char *out, unsigned char *in, int n); -void mdfour(unsigned char *out, unsigned char *in, int n); /*The following definitions come from message.c */ @@ -1109,15 +549,6 @@ struct packet_struct *read_packet(int fd,enum packet_type packet_type); void make_nmb_name(struct nmb_name *n,char *name,int type,char *this_scope); BOOL send_packet(struct packet_struct *p); struct packet_struct *receive_packet(int fd,enum packet_type type,int t); -char *lookup_opcode_name( int opcode ); -void debug_nmb_packet(struct packet_struct *p); -char *namestr(struct nmb_name *n); -void free_nmb_packet(struct nmb_packet *nmb); -void free_packet(struct packet_struct *packet); -struct packet_struct *read_packet(int fd,enum packet_type packet_type); -void make_nmb_name(struct nmb_name *n,char *name,int type,char *this_scope); -BOOL send_packet(struct packet_struct *p); -struct packet_struct *receive_packet(int fd,enum packet_type type,int t); /*The following definitions come from nmblookup.c */ @@ -1132,9 +563,6 @@ void sync_browse_lists(struct subnet_record *d, struct work_record *work, /*The following definitions come from params.c */ BOOL pm_process(char *pszFileName,BOOL (*sfunc)(char *),BOOL (*pfunc)(char *,char *)); -BOOL pm_process(char *pszFileName,BOOL (*sfunc)(char *),BOOL (*pfunc)(char *,char *)); -BOOL pm_process(char *pszFileName,BOOL (*sfunc)(char *),BOOL (*pfunc)(char *,char *)); -BOOL pm_process(char *pszFileName,BOOL (*sfunc)(char *),BOOL (*pfunc)(char *,char *)); /*The following definitions come from password.c */ @@ -1161,12 +589,6 @@ BOOL server_validate(char *buf); BOOL pcap_printername_ok(char *pszPrintername, char *pszPrintcapname); void pcap_printer_fn(void (*fn)()); -BOOL pcap_printername_ok(char *pszPrintername, char *pszPrintcapname); -void pcap_printer_fn(void (*fn)()); -BOOL pcap_printername_ok(char *pszPrintername, char *pszPrintcapname); -void pcap_printer_fn(void (*fn)()); -BOOL pcap_printername_ok(char *pszPrintername, char *pszPrintcapname); -void pcap_printer_fn(void (*fn)()); /*The following definitions come from pipes.c */ @@ -1214,27 +636,6 @@ void *malloc_wrapped(int size,char *file,int line); void *realloc_wrapped(void *ptr,int size,char *file,int line); void free_wrapped(void *ptr,char *file,int line); void *memcpy_wrapped(void *d,void *s,int l,char *fname,int line); -char *Strstr(char *s, char *p); -time_t Mktime(struct tm *t); -int InNetGr(char *group,char *host,char *user,char *dom); -void *malloc_wrapped(int size,char *file,int line); -void *realloc_wrapped(void *ptr,int size,char *file,int line); -void free_wrapped(void *ptr,char *file,int line); -void *memcpy_wrapped(void *d,void *s,int l,char *fname,int line); -char *Strstr(char *s, char *p); -time_t Mktime(struct tm *t); -int InNetGr(char *group,char *host,char *user,char *dom); -void *malloc_wrapped(int size,char *file,int line); -void *realloc_wrapped(void *ptr,int size,char *file,int line); -void free_wrapped(void *ptr,char *file,int line); -void *memcpy_wrapped(void *d,void *s,int l,char *fname,int line); -char *Strstr(char *s, char *p); -time_t Mktime(struct tm *t); -int InNetGr(char *group,char *host,char *user,char *dom); -void *malloc_wrapped(int size,char *file,int line); -void *realloc_wrapped(void *ptr,int size,char *file,int line); -void free_wrapped(void *ptr,char *file,int line); -void *memcpy_wrapped(void *d,void *s,int l,char *fname,int line); /*The following definitions come from reply.c */ @@ -1352,55 +753,23 @@ BOOL smb_shm_unlock_hash_entry( unsigned int entry ); BOOL smb_shm_get_usage(int *bytes_free, int *bytes_used, int *bytes_overhead); -BOOL smb_shm_create_hash_table( unsigned int size ); -BOOL smb_shm_open( char *file_name, int size); -BOOL smb_shm_close( void ); -smb_shm_offset_t smb_shm_alloc(int size); -BOOL smb_shm_free(smb_shm_offset_t offset); -smb_shm_offset_t smb_shm_get_userdef_off(void); -BOOL smb_shm_set_userdef_off(smb_shm_offset_t userdef_off); -void *smb_shm_offset2addr(smb_shm_offset_t offset); -smb_shm_offset_t smb_shm_addr2offset(void *addr); -BOOL smb_shm_lock_hash_entry( unsigned int entry); -BOOL smb_shm_unlock_hash_entry( unsigned int entry ); -BOOL smb_shm_get_usage(int *bytes_free, - int *bytes_used, - int *bytes_overhead); /*The following definitions come from smbdes.c */ void E_P16(unsigned char *p14,unsigned char *p16); void E_P24(unsigned char *p21, unsigned char *c8, unsigned char *p24); -void E_P16(unsigned char *p14,unsigned char *p16); -void E_P24(unsigned char *p21, unsigned char *c8, unsigned char *p24); -void E_P16(unsigned char *p14,unsigned char *p16); -void E_P24(unsigned char *p21, unsigned char *c8, unsigned char *p24); -void E_P16(unsigned char *p14,unsigned char *p16); -void E_P24(unsigned char *p21, unsigned char *c8, unsigned char *p24); /*The following definitions come from smbencrypt.c */ void SMBencrypt(uchar *passwd, uchar *c8, uchar *p24); void E_md4hash(uchar *passwd, uchar *p16); void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24); -void SMBencrypt(uchar *passwd, uchar *c8, uchar *p24); -void E_md4hash(uchar *passwd, uchar *p16); -void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24); -void SMBencrypt(uchar *passwd, uchar *c8, uchar *p24); -void E_md4hash(uchar *passwd, uchar *p16); -void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24); -void SMBencrypt(uchar *passwd, uchar *c8, uchar *p24); -void E_md4hash(uchar *passwd, uchar *p16); -void SMBNTencrypt(uchar *passwd, uchar *c8, uchar *p24); /*The following definitions come from smbpass.c */ int pw_file_lock(char *name, int type, int secs); int pw_file_unlock(int fd); struct smb_passwd *get_smbpwnam(char *name); -int pw_file_lock(char *name, int type, int secs); -int pw_file_unlock(int fd); -struct smb_passwd *get_smbpwnam(char *name); /*The following definitions come from smbpasswd.c */ @@ -1435,60 +804,6 @@ char *sys_getwd(char *s); int sys_chown(char *fname,int uid,int gid); int sys_chroot(char *dname); struct hostent *sys_gethostbyname(char *name); -int sys_select(fd_set *fds,struct timeval *tval); -int sys_select(fd_set *fds,struct timeval *tval); -int sys_unlink(char *fname); -int sys_open(char *fname,int flags,int mode); -DIR *sys_opendir(char *dname); -int sys_stat(char *fname,struct stat *sbuf); -int sys_waitpid(pid_t pid,int *status,int options); -int sys_lstat(char *fname,struct stat *sbuf); -int sys_mkdir(char *dname,int mode); -int sys_rmdir(char *dname); -int sys_chdir(char *dname); -int sys_utime(char *fname,struct utimbuf *times); -int sys_rename(char *from, char *to); -int sys_chmod(char *fname,int mode); -char *sys_getwd(char *s); -int sys_chown(char *fname,int uid,int gid); -int sys_chroot(char *dname); -struct hostent *sys_gethostbyname(char *name); -int sys_select(fd_set *fds,struct timeval *tval); -int sys_select(fd_set *fds,struct timeval *tval); -int sys_unlink(char *fname); -int sys_open(char *fname,int flags,int mode); -DIR *sys_opendir(char *dname); -int sys_stat(char *fname,struct stat *sbuf); -int sys_waitpid(pid_t pid,int *status,int options); -int sys_lstat(char *fname,struct stat *sbuf); -int sys_mkdir(char *dname,int mode); -int sys_rmdir(char *dname); -int sys_chdir(char *dname); -int sys_utime(char *fname,struct utimbuf *times); -int sys_rename(char *from, char *to); -int sys_chmod(char *fname,int mode); -char *sys_getwd(char *s); -int sys_chown(char *fname,int uid,int gid); -int sys_chroot(char *dname); -struct hostent *sys_gethostbyname(char *name); -int sys_select(fd_set *fds,struct timeval *tval); -int sys_select(fd_set *fds,struct timeval *tval); -int sys_unlink(char *fname); -int sys_open(char *fname,int flags,int mode); -DIR *sys_opendir(char *dname); -int sys_stat(char *fname,struct stat *sbuf); -int sys_waitpid(pid_t pid,int *status,int options); -int sys_lstat(char *fname,struct stat *sbuf); -int sys_mkdir(char *dname,int mode); -int sys_rmdir(char *dname); -int sys_chdir(char *dname); -int sys_utime(char *fname,struct utimbuf *times); -int sys_rename(char *from, char *to); -int sys_chmod(char *fname,int mode); -char *sys_getwd(char *s); -int sys_chown(char *fname,int uid,int gid); -int sys_chroot(char *dname); -struct hostent *sys_gethostbyname(char *name); /*The following definitions come from testparm.c */ @@ -1513,48 +828,6 @@ time_t make_unix_date2(void *date_ptr); time_t make_unix_date3(void *date_ptr); BOOL set_filetime(char *fname,time_t mtime); char *timestring(void ); -void GetTimeOfDay(struct timeval *tval); -void TimeInit(void); -int TimeDiff(time_t t); -struct tm *LocalTime(time_t *t); -time_t interpret_long_date(char *p); -void put_long_date(char *p,time_t t); -void put_dos_date(char *buf,int offset,time_t unixdate); -void put_dos_date2(char *buf,int offset,time_t unixdate); -void put_dos_date3(char *buf,int offset,time_t unixdate); -time_t make_unix_date(void *date_ptr); -time_t make_unix_date2(void *date_ptr); -time_t make_unix_date3(void *date_ptr); -BOOL set_filetime(char *fname,time_t mtime); -char *timestring(void ); -void GetTimeOfDay(struct timeval *tval); -void TimeInit(void); -int TimeDiff(time_t t); -struct tm *LocalTime(time_t *t); -time_t interpret_long_date(char *p); -void put_long_date(char *p,time_t t); -void put_dos_date(char *buf,int offset,time_t unixdate); -void put_dos_date2(char *buf,int offset,time_t unixdate); -void put_dos_date3(char *buf,int offset,time_t unixdate); -time_t make_unix_date(void *date_ptr); -time_t make_unix_date2(void *date_ptr); -time_t make_unix_date3(void *date_ptr); -BOOL set_filetime(char *fname,time_t mtime); -char *timestring(void ); -void GetTimeOfDay(struct timeval *tval); -void TimeInit(void); -int TimeDiff(time_t t); -struct tm *LocalTime(time_t *t); -time_t interpret_long_date(char *p); -void put_long_date(char *p,time_t t); -void put_dos_date(char *buf,int offset,time_t unixdate); -void put_dos_date2(char *buf,int offset,time_t unixdate); -void put_dos_date3(char *buf,int offset,time_t unixdate); -time_t make_unix_date(void *date_ptr); -time_t make_unix_date2(void *date_ptr); -time_t make_unix_date3(void *date_ptr); -BOOL set_filetime(char *fname,time_t mtime); -char *timestring(void ); /*The following definitions come from trans2.c */ @@ -1566,7 +839,6 @@ int reply_trans2(char *inbuf,char *outbuf,int length,int bufsize); /*The following definitions come from ufc.c */ char *ufc_crypt(char *key,char *salt); -char *ufc_crypt(char *key,char *salt); /*The following definitions come from uid.c */ @@ -1582,18 +854,6 @@ char *get_home_dir(char *user); void map_username(char *user); struct passwd *Get_Pwnam(char *user,BOOL allow_change); BOOL user_in_list(char *user,char *list); -char *get_home_dir(char *user); -void map_username(char *user); -struct passwd *Get_Pwnam(char *user,BOOL allow_change); -BOOL user_in_list(char *user,char *list); -char *get_home_dir(char *user); -void map_username(char *user); -struct passwd *Get_Pwnam(char *user,BOOL allow_change); -BOOL user_in_list(char *user,char *list); -char *get_home_dir(char *user); -void map_username(char *user); -struct passwd *Get_Pwnam(char *user,BOOL allow_change); -BOOL user_in_list(char *user,char *list); /*The following definitions come from util.c */ @@ -1664,363 +924,9 @@ int write_data(int fd,char *buffer,int N); int transfer_file(int infd,int outfd,int n,char *header,int headlen,int align); int read_smb_length(int fd,char *inbuf,int timeout); BOOL receive_smb(int fd,char *buffer,int timeout); -BOOL send_smb(int fd,char *buffer); -char *name_ptr(char *buf,int ofs); -int name_extract(char *buf,int ofs,char *name); -int name_len(char *s); -BOOL send_one_packet(char *buf,int len,struct in_addr ip,int port,int type); -void msleep(int t); -BOOL in_list(char *s,char *list,BOOL casesensitive); -BOOL string_init(char **dest,char *src); -void string_free(char **s); -BOOL string_set(char **dest,char *src); -BOOL string_sub(char *s,char *pattern,char *insert); -BOOL do_match(char *str, char *regexp, int case_sig); -BOOL mask_match(char *str, char *regexp, int case_sig,BOOL trans2); -void become_daemon(void); -BOOL yesno(char *p); -char *fgets_slash(char *s2,int maxlen,FILE *f); -int set_filelen(int fd, long len); -int byte_checksum(char *buf,int len); -char *dirname_dos(char *path,char *buf); -void *Realloc(void *p,int size); -void Abort(void ); -BOOL get_myname(char *my_name,struct in_addr *ip); -BOOL ip_equal(struct in_addr ip1,struct in_addr ip2); -int open_socket_in(int type, int port, int dlevel,uint32 socket_addr); -int open_socket_out(int type, struct in_addr *addr, int port ,int timeout); -int interpret_protocol(char *str,int def); -int interpret_security(char *str,int def); -uint32 interpret_addr(char *str); -struct in_addr *interpret_addr2(char *str); -BOOL zero_ip(struct in_addr ip); -void reset_globals_after_fork(); -char *client_name(void); -char *client_addr(void); -void standard_sub_basic(char *str); -BOOL same_net(struct in_addr ip1,struct in_addr ip2,struct in_addr mask); -int PutUniCode(char *dst,char *src); -struct hostent *Get_Hostbyname(char *name); -BOOL process_exists(int pid); -char *uidtoname(int uid); -char *gidtoname(int gid); -void BlockSignals(BOOL block,int signum); -void ajt_panic(void); -char *readdirname(void *p); -BOOL is_in_path(char *name, name_compare_entry *namelist); -void set_namearray(name_compare_entry **ppname_array, char *namelist); -void free_namearray(name_compare_entry *name_array); -BOOL fcntl_lock(int fd,int op,uint32 offset,uint32 count,int type); -int file_lock(char *name,int timeout); -void file_unlock(int fd); -BOOL is_myname(char *s); -void set_remote_arch(enum remote_arch_types type); -enum remote_arch_types get_remote_arch(); -void setup_logging(char *pname,BOOL interactive); -void reopen_logs(void); -char *tmpdir(void); -BOOL is_a_socket(int fd); -BOOL next_token(char **ptr,char *buff,char *sep); -char **toktocliplist(int *ctok, char *sep); -void *MemMove(void *dest,void *src,int size); -void array_promote(char *array,int elsize,int element); -void set_socket_options(int fd, char *options); -void close_sockets(void ); -BOOL in_group(gid_t group, int current_gid, int ngroups, int *groups); -char *StrCpy(char *dest,char *src); -char *StrnCpy(char *dest,char *src,int n); -void putip(void *dest,void *src); -int name_mangle(char *In,char *Out,char name_type); -BOOL file_exist(char *fname,struct stat *sbuf); -time_t file_modtime(char *fname); -BOOL directory_exist(char *dname,struct stat *st); -uint32 file_size(char *file_name); -char *attrib_string(int mode); -int StrCaseCmp(char *s, char *t); -int StrnCaseCmp(char *s, char *t, int n); -BOOL strequal(char *s1, char *s2); -BOOL strnequal(char *s1,char *s2,int n); -BOOL strcsequal(char *s1,char *s2); -void strlower(char *s); -void strupper(char *s); -void strnorm(char *s); -BOOL strisnormal(char *s); -void string_replace(char *s,char oldc,char newc); -void unix_format(char *fname); -void dos_format(char *fname); -void show_msg(char *buf); -int smb_len(char *buf); -void _smb_setlen(char *buf,int len); -void smb_setlen(char *buf,int len); -int set_message(char *buf,int num_words,int num_bytes,BOOL zero); -int smb_numwords(char *buf); -int smb_buflen(char *buf); -int smb_buf_ofs(char *buf); -char *smb_buf(char *buf); -int smb_offset(char *p,char *buf); -char *skip_string(char *buf,int n); -BOOL trim_string(char *s,char *front,char *back); -void dos_clean_name(char *s); -void unix_clean_name(char *s); -int ChDir(char *path); -char *GetWd(char *str); -BOOL reduce_name(char *s,char *dir,BOOL widelinks); -void expand_mask(char *Mask,BOOL doext); -BOOL strhasupper(char *s); -BOOL strhaslower(char *s); -int count_chars(char *s,char c); -void make_dir_struct(char *buf,char *mask,char *fname,unsigned int size,int mode,time_t date); -void close_low_fds(void); -int set_blocking(int fd, BOOL set); -int write_socket(int fd,char *buf,int len); -int read_udp_socket(int fd,char *buf,int len); -int read_with_timeout(int fd,char *buf,int mincnt,int maxcnt,long time_out); -int read_max_udp(int fd,char *buffer,int bufsize,int maxtime); -int TvalDiff(struct timeval *tvalold,struct timeval *tvalnew); -BOOL send_keepalive(int client); -int read_data(int fd,char *buffer,int N); -int write_data(int fd,char *buffer,int N); -int transfer_file(int infd,int outfd,int n,char *header,int headlen,int align); -int read_smb_length(int fd,char *inbuf,int timeout); -BOOL receive_smb(int fd,char *buffer,int timeout); -BOOL send_smb(int fd,char *buffer); -char *name_ptr(char *buf,int ofs); -int name_extract(char *buf,int ofs,char *name); -int name_len(char *s); -BOOL send_one_packet(char *buf,int len,struct in_addr ip,int port,int type); -void msleep(int t); -BOOL in_list(char *s,char *list,BOOL casesensitive); -BOOL string_init(char **dest,char *src); -void string_free(char **s); -BOOL string_set(char **dest,char *src); -BOOL string_sub(char *s,char *pattern,char *insert); -BOOL do_match(char *str, char *regexp, int case_sig); -BOOL mask_match(char *str, char *regexp, int case_sig,BOOL trans2); -void become_daemon(void); -BOOL yesno(char *p); -char *fgets_slash(char *s2,int maxlen,FILE *f); -int set_filelen(int fd, long len); -int byte_checksum(char *buf,int len); -char *dirname_dos(char *path,char *buf); -void *Realloc(void *p,int size); -void Abort(void ); -BOOL get_myname(char *my_name,struct in_addr *ip); -BOOL ip_equal(struct in_addr ip1,struct in_addr ip2); -int open_socket_in(int type, int port, int dlevel,uint32 socket_addr); -int open_socket_out(int type, struct in_addr *addr, int port ,int timeout); -int interpret_protocol(char *str,int def); -int interpret_security(char *str,int def); -uint32 interpret_addr(char *str); -struct in_addr *interpret_addr2(char *str); -BOOL zero_ip(struct in_addr ip); -void reset_globals_after_fork(); -char *client_name(void); -char *client_addr(void); -void standard_sub_basic(char *str); -BOOL same_net(struct in_addr ip1,struct in_addr ip2,struct in_addr mask); -int PutUniCode(char *dst,char *src); -struct hostent *Get_Hostbyname(char *name); -BOOL process_exists(int pid); -char *uidtoname(int uid); -char *gidtoname(int gid); -void BlockSignals(BOOL block,int signum); -void ajt_panic(void); -char *readdirname(void *p); -BOOL is_in_path(char *name, name_compare_entry *namelist); -void set_namearray(name_compare_entry **ppname_array, char *namelist); -void free_namearray(name_compare_entry *name_array); -BOOL fcntl_lock(int fd,int op,uint32 offset,uint32 count,int type); -int file_lock(char *name,int timeout); -void file_unlock(int fd); -BOOL is_myname(char *s); -void set_remote_arch(enum remote_arch_types type); -enum remote_arch_types get_remote_arch(); -void setup_logging(char *pname,BOOL interactive); -void reopen_logs(void); -char *tmpdir(void); -BOOL is_a_socket(int fd); -BOOL next_token(char **ptr,char *buff,char *sep); -char **toktocliplist(int *ctok, char *sep); -void *MemMove(void *dest,void *src,int size); -void array_promote(char *array,int elsize,int element); -void set_socket_options(int fd, char *options); -void close_sockets(void ); -BOOL in_group(gid_t group, int current_gid, int ngroups, int *groups); -char *StrCpy(char *dest,char *src); -char *StrnCpy(char *dest,char *src,int n); -void putip(void *dest,void *src); -int name_mangle(char *In,char *Out,char name_type); -BOOL file_exist(char *fname,struct stat *sbuf); -time_t file_modtime(char *fname); -BOOL directory_exist(char *dname,struct stat *st); -uint32 file_size(char *file_name); -char *attrib_string(int mode); -int StrCaseCmp(char *s, char *t); -int StrnCaseCmp(char *s, char *t, int n); -BOOL strequal(char *s1, char *s2); -BOOL strnequal(char *s1,char *s2,int n); -BOOL strcsequal(char *s1,char *s2); -void strlower(char *s); -void strupper(char *s); -void strnorm(char *s); -BOOL strisnormal(char *s); -void string_replace(char *s,char oldc,char newc); -void unix_format(char *fname); -void dos_format(char *fname); -void show_msg(char *buf); -int smb_len(char *buf); -void _smb_setlen(char *buf,int len); -void smb_setlen(char *buf,int len); -int set_message(char *buf,int num_words,int num_bytes,BOOL zero); -int smb_numwords(char *buf); -int smb_buflen(char *buf); -int smb_buf_ofs(char *buf); -char *smb_buf(char *buf); -int smb_offset(char *p,char *buf); -char *skip_string(char *buf,int n); -BOOL trim_string(char *s,char *front,char *back); -void dos_clean_name(char *s); -void unix_clean_name(char *s); -int ChDir(char *path); -char *GetWd(char *str); -BOOL reduce_name(char *s,char *dir,BOOL widelinks); -void expand_mask(char *Mask,BOOL doext); -BOOL strhasupper(char *s); -BOOL strhaslower(char *s); -int count_chars(char *s,char c); -void make_dir_struct(char *buf,char *mask,char *fname,unsigned int size,int mode,time_t date); -void close_low_fds(void); -int set_blocking(int fd, BOOL set); -int write_socket(int fd,char *buf,int len); -int read_udp_socket(int fd,char *buf,int len); -int read_with_timeout(int fd,char *buf,int mincnt,int maxcnt,long time_out); -int read_max_udp(int fd,char *buffer,int bufsize,int maxtime); -int TvalDiff(struct timeval *tvalold,struct timeval *tvalnew); -BOOL send_keepalive(int client); -int read_data(int fd,char *buffer,int N); -int write_data(int fd,char *buffer,int N); -int transfer_file(int infd,int outfd,int n,char *header,int headlen,int align); -int read_smb_length(int fd,char *inbuf,int timeout); -BOOL receive_smb(int fd,char *buffer,int timeout); -BOOL send_smb(int fd,char *buffer); -char *name_ptr(char *buf,int ofs); -int name_extract(char *buf,int ofs,char *name); -int name_len(char *s); -BOOL send_one_packet(char *buf,int len,struct in_addr ip,int port,int type); -void msleep(int t); -BOOL in_list(char *s,char *list,BOOL casesensitive); -BOOL string_init(char **dest,char *src); -void string_free(char **s); -BOOL string_set(char **dest,char *src); -BOOL string_sub(char *s,char *pattern,char *insert); -BOOL do_match(char *str, char *regexp, int case_sig); -BOOL mask_match(char *str, char *regexp, int case_sig,BOOL trans2); -void become_daemon(void); -BOOL yesno(char *p); -char *fgets_slash(char *s2,int maxlen,FILE *f); -int set_filelen(int fd, long len); -int byte_checksum(char *buf,int len); -char *dirname_dos(char *path,char *buf); -void *Realloc(void *p,int size); -void Abort(void ); -BOOL get_myname(char *my_name,struct in_addr *ip); -BOOL ip_equal(struct in_addr ip1,struct in_addr ip2); -int open_socket_in(int type, int port, int dlevel,uint32 socket_addr); -int open_socket_out(int type, struct in_addr *addr, int port ,int timeout); -int interpret_protocol(char *str,int def); -int interpret_security(char *str,int def); -uint32 interpret_addr(char *str); -struct in_addr *interpret_addr2(char *str); -BOOL zero_ip(struct in_addr ip); -void reset_globals_after_fork(); -char *client_name(void); -char *client_addr(void); -void standard_sub_basic(char *str); -BOOL same_net(struct in_addr ip1,struct in_addr ip2,struct in_addr mask); -int PutUniCode(char *dst,char *src); -struct hostent *Get_Hostbyname(char *name); -BOOL process_exists(int pid); -char *uidtoname(int uid); -char *gidtoname(int gid); -void BlockSignals(BOOL block,int signum); -void ajt_panic(void); -char *readdirname(void *p); -BOOL is_in_path(char *name, name_compare_entry *namelist); -void set_namearray(name_compare_entry **ppname_array, char *namelist); -void free_namearray(name_compare_entry *name_array); -BOOL fcntl_lock(int fd,int op,uint32 offset,uint32 count,int type); -int file_lock(char *name,int timeout); -void file_unlock(int fd); -BOOL is_myname(char *s); -void set_remote_arch(enum remote_arch_types type); -enum remote_arch_types get_remote_arch(); -void setup_logging(char *pname,BOOL interactive); -void reopen_logs(void); -char *tmpdir(void); -BOOL is_a_socket(int fd); -BOOL next_token(char **ptr,char *buff,char *sep); -char **toktocliplist(int *ctok, char *sep); -void *MemMove(void *dest,void *src,int size); -void array_promote(char *array,int elsize,int element); -void set_socket_options(int fd, char *options); -void close_sockets(void ); -BOOL in_group(gid_t group, int current_gid, int ngroups, int *groups); -char *StrCpy(char *dest,char *src); -char *StrnCpy(char *dest,char *src,int n); -void putip(void *dest,void *src); -int name_mangle(char *In,char *Out,char name_type); -BOOL file_exist(char *fname,struct stat *sbuf); -time_t file_modtime(char *fname); -BOOL directory_exist(char *dname,struct stat *st); -uint32 file_size(char *file_name); -char *attrib_string(int mode); -int StrCaseCmp(char *s, char *t); -int StrnCaseCmp(char *s, char *t, int n); -BOOL strequal(char *s1, char *s2); -BOOL strnequal(char *s1,char *s2,int n); -BOOL strcsequal(char *s1,char *s2); -void strlower(char *s); -void strupper(char *s); -void strnorm(char *s); -BOOL strisnormal(char *s); -void string_replace(char *s,char oldc,char newc); -void unix_format(char *fname); -void dos_format(char *fname); -void show_msg(char *buf); -int smb_len(char *buf); -void _smb_setlen(char *buf,int len); -void smb_setlen(char *buf,int len); -int set_message(char *buf,int num_words,int num_bytes,BOOL zero); -int smb_numwords(char *buf); -int smb_buflen(char *buf); -int smb_buf_ofs(char *buf); -char *smb_buf(char *buf); -int smb_offset(char *p,char *buf); -char *skip_string(char *buf,int n); -BOOL trim_string(char *s,char *front,char *back); -void dos_clean_name(char *s); -void unix_clean_name(char *s); -int ChDir(char *path); -char *GetWd(char *str); -BOOL reduce_name(char *s,char *dir,BOOL widelinks); -void expand_mask(char *Mask,BOOL doext); -BOOL strhasupper(char *s); -BOOL strhaslower(char *s); -int count_chars(char *s,char c); -void make_dir_struct(char *buf,char *mask,char *fname,unsigned int size,int mode,time_t date); -void close_low_fds(void); -int set_blocking(int fd, BOOL set); -int write_socket(int fd,char *buf,int len); -int read_udp_socket(int fd,char *buf,int len); -int read_with_timeout(int fd,char *buf,int mincnt,int maxcnt,long time_out); -int read_max_udp(int fd,char *buffer,int bufsize,int maxtime); -int TvalDiff(struct timeval *tvalold,struct timeval *tvalnew); -BOOL send_keepalive(int client); -int read_data(int fd,char *buffer,int N); -int write_data(int fd,char *buffer,int N); -int transfer_file(int infd,int outfd,int n,char *header,int headlen,int align); -int read_smb_length(int fd,char *inbuf,int timeout); -BOOL receive_smb(int fd,char *buffer,int timeout); +BOOL receive_message_or_smb(int smbfd, int oplock_fd, + char *buffer, int buffer_len, + int timeout, BOOL *got_smb); BOOL send_smb(int fd,char *buffer); char *name_ptr(char *buf,int ofs); int name_extract(char *buf,int ofs,char *name); diff --git a/source/lib/util.c b/source/lib/util.c index 22c1c3e43dc..812e59769e5 100644 --- a/source/lib/util.c +++ b/source/lib/util.c @@ -2270,7 +2270,7 @@ int read_smb_length(int fd,char *inbuf,int timeout) /**************************************************************************** - read an smb from a fd and return it's length + read an smb from a fd. The timeout is in milli seconds ****************************************************************************/ BOOL receive_smb(int fd,char *buffer,int timeout) @@ -2300,6 +2300,88 @@ BOOL receive_smb(int fd,char *buffer,int timeout) return(True); } +#ifdef USE_OPLOCKS +/**************************************************************************** + Do a select on an two fd's - with timeout. + + If the first smbfd is ready then read an smb from it. + if the second (loopback UDP) fd is ready then read a message + from it and setup the buffer header to identify the length + and from address. + Returns False on timeout or error. + Else returns True. + +The timeout is in milli seconds +****************************************************************************/ +BOOL receive_message_or_smb(int smbfd, int oplock_fd, + char *buffer, int buffer_len, + int timeout, BOOL *got_smb) +{ + fd_set fds; + int selrtn; + struct timeval to; + + *got_smb = False; + + FD_ZERO(&fds); + FD_SET(smbfd,&fds); + FD_SET(oplock_fd,&fds); + + to.tv_sec = timeout / 1000; + to.tv_usec = (timeout % 1000) * 1000; + + selrtn = sys_select(&fds,timeout>0?&to:NULL); + + /* Check if error */ + if(selrtn == -1) { + /* something is wrong. Maybe the socket is dead? */ + smb_read_error = READ_ERROR; + return False; + } + + /* Did we timeout ? */ + if (selrtn == 0) { + smb_read_error = READ_TIMEOUT; + return False; + } + + if (FD_ISSET(smbfd,&fds)) + { + *got_smb = True; + return receive_smb(smbfd, buffer, 0); + } + else + { + /* + * Read a udp message. + */ + struct sockaddr_in from; + int fromlen = sizeof(from); + int32 msg_len = 0; + uint16 port = 0; + + msg_len = recvfrom(oplock_fd, &buffer[6+sizeof(struct in_addr)], + buffer_len - (6 + sizeof(struct in_addr)), 0, + (struct sockaddr *)&from, &fromlen); + + if(msg_len < 0) + { + DEBUG(0,("Invalid loopback packet ! (%s).\n",strerror(errno))); + return False; + } + + port = ntohs(from.sin_port); + + /* Setup the message header */ + SIVAL(buffer,0,msg_len); + SSVAL(buffer,4,port); + memcpy(&buffer[6],(char *)&from.sin_addr,sizeof(struct in_addr)); + + } + + return True; +} +#endif /* USE_OPLOCKS */ /**************************************************************************** send an smb to a fd diff --git a/source/smbd/quotas.c b/source/smbd/quotas.c index d19d386e273..d4f746c9e36 100644 --- a/source/smbd/quotas.c +++ b/source/smbd/quotas.c @@ -373,22 +373,34 @@ try to get the disk space from disk quotas - OFS1 version BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize) { uid_t user_id, euser_id; - int r; + int r, save_errno; struct dqblk D; struct stat S; euser_id = geteuid(); user_id = getuid(); - setreuid(euser_id, euser_id); + setreuid(euser_id, -1); r= quotactl(path,QCMD(Q_GETQUOTA, USRQUOTA),euser_id,(char *) &D); - if (setreuid(user_id, euser_id) == -1) + if (r) + save_errno = errno; + + if (setreuid(user_id, -1) == -1) DEBUG(5,("Unable to reset uid to %d\n", user_id)); *bsize = DEV_BSIZE; if (r) - return(False); + { + if (save_errno == EDQUOT) // disk quota exceeded + { + *dfree = 0; + *dsize = D.dqb_curblocks; + return (True); + } + else + return (False); + } /* Use softlimit to determine disk space, except when it has been exceeded */ diff --git a/source/smbd/reply.c b/source/smbd/reply.c index 09c4e29416b..81176856377 100644 --- a/source/smbd/reply.c +++ b/source/smbd/reply.c @@ -3610,11 +3610,31 @@ int reply_setattrE(char *inbuf,char *outbuf) unix_times.actime = make_unix_date2(inbuf+smb_vwv3); unix_times.modtime = make_unix_date2(inbuf+smb_vwv5); + /* + * Patch from Ray Frush <frush@engr.colostate.edu> + * Sometimes times are sent as zero - ignore them. + */ + + if ((unix_times.actime == 0) && (unix_times.modtime == 0)) + { + /* Ignore request */ + DEBUG(3,("%s reply_setattrE fnum=%d cnum=%d ignoring zero request - \ +not setting timestamps of 0\n", + timestring(), fnum,cnum,unix_times.actime,unix_times.modtime)); + return(outsize); + } + else if ((unix_times.actime != 0) && (unix_times.modtime == 0)) + { + /* set modify time = to access time if modify time was 0 */ + unix_times.modtime = unix_times.actime; + } + /* Set the date on this file */ if(sys_utime(Files[fnum].name, &unix_times)) return(ERROR(ERRDOS,ERRnoaccess)); - DEBUG(3,("%s reply_setattrE fnum=%d cnum=%d\n",timestring(),fnum,cnum)); + DEBUG(3,("%s reply_setattrE fnum=%d cnum=%d actime=%d modtime=%d\n", + timestring(), fnum,cnum,unix_times.actime,unix_times.modtime)); return(outsize); } diff --git a/source/smbd/server.c b/source/smbd/server.c index 8560d5239d3..110d31b3029 100644 --- a/source/smbd/server.c +++ b/source/smbd/server.c @@ -84,6 +84,12 @@ int chain_fnum = -1; /* number of open connections */ static int num_connections_open = 0; +#ifdef USE_OPLOCKS +/* Oplock ipc UDP socket. */ +int oplock_sock = -1; +int oplock_port = -1; +#endif /* USE_OPLOCKS */ + extern fstring remote_machine; pstring OriginalDir; @@ -2257,6 +2263,64 @@ static BOOL open_sockets(BOOL is_daemon,int port) return True; } +#ifdef USE_OPLOCKS +/**************************************************************************** + open the oplock IPC socket communication +****************************************************************************/ +static BOOL open_oplock_ipc() +{ + struct sockaddr_in sock_name; + int name_len = sizeof(sock_name); + + DEBUG(3,("open_oplock_ipc: opening loopback UDP socket.\n")); + + /* Open a lookback UDP socket on a random port. */ + oplock_sock = open_socket_in(SOCK_DGRAM, 0, 0,interpret_addr("127.0.0.1")); + if (oplock_sock == -1) + return(False); + + /* Find out the transient UDP port we have been allocated. */ + if(getsockname(oplock_sock, (struct sockaddr *)&sock_name, &name_len)<0) + { + DEBUG(0,("open_oplock_ipc: Failed to get local UDP port. Error was %s\n", + strerror(errno))); + close(oplock_sock); + oplock_sock = -1; + return False; + } + oplock_port = ntohs(sock_name.sin_port); + + return True; +} + +/**************************************************************************** + process an oplock break message. +****************************************************************************/ +static BOOL process_local_message(int oplock_sock, char *buffer, int buf_size) +{ + int32 msg_len; + int16 port; + struct in_addr from; + char *msg_start; + + msg_len = IVAL(buffer,0); + port = SVAL(buffer,4); + memcpy((char *)&from, &buffer[6], sizeof(struct in_addr)); + + msg_start = &buffer[6 + sizeof(struct in_addr)]; + + /* Validate message length. */ + if(msg_len > (buf_size - (6 + sizeof(struct in_addr)))) + { + DEBUG(0,("process_local_message: invalid msg_len (%d) max can be %d\n", + msg_len, buf_size - (6 + sizeof(struct in_addr)))); + return False; + } + + /* Validate message from address (must be localhost). */ + return True; +} +#endif /* USE_OPLOCKS */ /**************************************************************************** check if a snum is in use @@ -3960,32 +4024,40 @@ static void process(void) #endif while (True) + { + int32 len; + int msg_type; + int msg_flags; + int type; + int deadtime = lp_deadtime()*60; + int counter; + int last_keepalive=0; + int service_load_counter = 0; +#ifdef USE_OPLOCKS + BOOL got_smb = False; +#endif /* USE_OPLOCKS */ + + if (deadtime <= 0) + deadtime = DEFAULT_SMBD_TIMEOUT; + + if (lp_readprediction()) + do_read_prediction(); + + errno = 0; + + for (counter=SMBD_SELECT_LOOP; +#ifdef USE_OPLOCKS + !receive_message_or_smb(Client,oplock_sock, + InBuffer,SMBD_SELECT_LOOP*1000,&got_smb); +#else /* USE_OPLOCKS */ + !receive_smb(Client,InBuffer,SMBD_SELECT_LOOP*1000); +#endif /* USE_OPLOCKS */ + counter += SMBD_SELECT_LOOP) { - int32 len; - int msg_type; - int msg_flags; - int type; - int deadtime = lp_deadtime()*60; - int counter; - int last_keepalive=0; - int service_load_counter = 0; - - if (deadtime <= 0) - deadtime = DEFAULT_SMBD_TIMEOUT; - - if (lp_readprediction()) - do_read_prediction(); - - errno = 0; - - for (counter=SMBD_SELECT_LOOP; - !receive_smb(Client,InBuffer,SMBD_SELECT_LOOP*1000); - counter += SMBD_SELECT_LOOP) - { - int i; - time_t t; - BOOL allidle = True; - extern int keepalive; + int i; + time_t t; + BOOL allidle = True; + extern int keepalive; if (counter > 365 * 3600) /* big number of seconds. */ { @@ -3993,69 +4065,79 @@ static void process(void) service_load_counter = 0; } - if (smb_read_error == READ_EOF) { - DEBUG(3,("end of file from client\n")); - return; - } + if (smb_read_error == READ_EOF) + { + DEBUG(3,("end of file from client\n")); + return; + } - if (smb_read_error == READ_ERROR) { - DEBUG(3,("receive_smb error (%s) exiting\n", - strerror(errno))); - return; - } + if (smb_read_error == READ_ERROR) + { + DEBUG(3,("receive_smb error (%s) exiting\n", + strerror(errno))); + return; + } - t = time(NULL); + t = time(NULL); - /* become root again if waiting */ - unbecome_user(); + /* become root again if waiting */ + unbecome_user(); - /* check for smb.conf reload */ - if (counter >= service_load_counter + SMBD_RELOAD_CHECK) + /* check for smb.conf reload */ + if (counter >= service_load_counter + SMBD_RELOAD_CHECK) { service_load_counter = counter; /* reload services, if files have changed. */ - reload_services(True); + reload_services(True); } - /* automatic timeout if all connections are closed */ - if (num_connections_open==0 && counter >= IDLE_CLOSED_TIMEOUT) { - DEBUG(2,("%s Closing idle connection\n",timestring())); - return; - } + /* automatic timeout if all connections are closed */ + if (num_connections_open==0 && counter >= IDLE_CLOSED_TIMEOUT) + { + DEBUG(2,("%s Closing idle connection\n",timestring())); + return; + } - if (keepalive && (counter-last_keepalive)>keepalive) { - extern int password_client; - if (!send_keepalive(Client)) { - DEBUG(2,("%s Keepalive failed - exiting\n",timestring())); - return; - } - /* also send a keepalive to the password server if its still - connected */ - if (password_client != -1) - send_keepalive(password_client); - last_keepalive = counter; - } + if (keepalive && (counter-last_keepalive)>keepalive) + { + extern int password_client; + if (!send_keepalive(Client)) + { + DEBUG(2,("%s Keepalive failed - exiting\n",timestring())); + return; + } + /* also send a keepalive to the password server if its still + connected */ + if (password_client != -1) + send_keepalive(password_client); + last_keepalive = counter; + } - /* check for connection timeouts */ - for (i=0;i<MAX_CONNECTIONS;i++) - if (Connections[i].open) - { - /* close dirptrs on connections that are idle */ - if ((t-Connections[i].lastused)>DPTR_IDLE_TIMEOUT) - dptr_idlecnum(i); - - if (Connections[i].num_files_open > 0 || - (t-Connections[i].lastused)<deadtime) - allidle = False; - } - - if (allidle && num_connections_open>0) { - DEBUG(2,("%s Closing idle connection 2\n",timestring())); - return; - } - } + /* check for connection timeouts */ + for (i=0;i<MAX_CONNECTIONS;i++) + if (Connections[i].open) + { + /* close dirptrs on connections that are idle */ + if ((t-Connections[i].lastused)>DPTR_IDLE_TIMEOUT) + dptr_idlecnum(i); + + if (Connections[i].num_files_open > 0 || + (t-Connections[i].lastused)<deadtime) + allidle = False; + } + + if (allidle && num_connections_open>0) + { + DEBUG(2,("%s Closing idle connection 2\n",timestring())); + return; + } + } +#ifdef USE_OPLOCKS + if(got_smb) + { +#endif /* USE_OPLOCKS */ msg_type = CVAL(InBuffer,0); msg_flags = CVAL(InBuffer,1); type = CVAL(InBuffer,smb_com); @@ -4069,7 +4151,8 @@ static void process(void) DEBUG(3,("%s Transaction %d of length %d\n",timestring(),trans_num,nread)); #ifdef WITH_VTP - if(trans_num == 1 && VT_Check(InBuffer)) { + if(trans_num == 1 && VT_Check(InBuffer)) + { VT_Process(); return; } @@ -4077,25 +4160,32 @@ static void process(void) if (msg_type == 0) - show_msg(InBuffer); + show_msg(InBuffer); nread = construct_reply(InBuffer,OutBuffer,nread,max_send); - if(nread > 0) { + if(nread > 0) + { if (CVAL(OutBuffer,0) == 0) - show_msg(OutBuffer); + show_msg(OutBuffer); if (nread != smb_len(OutBuffer) + 4) - { - DEBUG(0,("ERROR: Invalid message response size! %d %d\n", - nread, - smb_len(OutBuffer))); - } - else - send_smb(Client,OutBuffer); + { + DEBUG(0,("ERROR: Invalid message response size! %d %d\n", + nread, smb_len(OutBuffer))); + } + else + send_smb(Client,OutBuffer); } trans_num++; +#ifdef USE_OPLOCKS + } + else + { + process_local_message(oplock_sock, InBuffer, BUFFER_SIZE); } +#endif /* USE_OPLOCKS */ + } } @@ -4374,6 +4464,12 @@ static void usage(char *pname) DEBUG(2,("%s changed root to %s\n",timestring(),lp_rootdir())); } +#ifdef USE_OPLOCKS + /* Setup the oplock IPC socket. */ + if(!open_oplock_ipc()) + exit(1); +#endif /* USE_OPLOCKS */ + process(); close_sockets(); |