From 6d81d56f929e763bcf6b1f7a61aabaf884c4aad4 Mon Sep 17 00:00:00 2001 From: Samba Release Account Date: Wed, 19 Jun 1996 13:23:46 +0000 Subject: [PATCH] Basic doc changes to keep up to date. Dan --- README | 21 +- docs/announce | 24 +- docs/textdocs/security_level.txt | 9 +- source/change-log | 4 +- source/include/proto.h | 646 ------------------------------- source/lib/system.c | 6 +- 6 files changed, 41 insertions(+), 669 deletions(-) diff --git a/README b/README index 84bc00b2ef1..07896e7a1d1 100644 --- a/README +++ b/README @@ -10,21 +10,27 @@ called COPYING). WHAT CAN SAMBA DO? ================== -Here is a very short list of what samba includes, and what it does +Here is a very short list of what samba includes, and what it does. -- a SMB server, to provide LanManager style file and print services to PCs +- a SMB server, to provide Windows NT and LAN Manager-style file and print + services to SMB clients such as Windows 95, Warp Server, smbfs and others. -- a Netbios (rfc1001/1002) nameserver +- a Netbios (rfc1001/1002) nameserver, which among other things gives + browsing support. Samba can be the master browser on your LAN if you wish. - a ftp-like SMB client so you can access PC resources (disks and -printers) from unix +printers) from unix, Netware and other operating systems - a tar extension to the client for backing up PCs +For a much better overview have a look at the web site at +http://samba.canberra.edu.au/pub/samba, and browse the user survey. + Related packages include: -- ksmbfs, a linux-only filesystem allowing you to mount remote SMB -filesystems from PCs on your linux box +- smbfs, a linux-only filesystem allowing you to mount remote SMB +filesystems from PCs on your linux box. This is included as standard with +Linux 2.0 and later. - tcpdump-smb, a extension to tcpdump to allow you to investigate SMB networking problems over netbeui and tcp/ip @@ -47,7 +53,8 @@ see who added it, then send them an email. Remember that free software of this kind lives or dies by the response we get. If noone tells us they like it then we'll probably move onto -something else. +something else. However, as you can see from the user survey quite a lot of +people do seem to like it at the moment :-) Andrew Tridgell Email: samba-bugs@samba.anu.edu.au diff --git a/docs/announce b/docs/announce index 78775aa5ca3..5740f37dc61 100644 --- a/docs/announce +++ b/docs/announce @@ -4,19 +4,21 @@ What is Samba? -------------- -Samba is a Unix based SMB file server. This allows a Unix host to -act as a file and print server for SMB clients. This includes +Samba is a SMB file server that runs on Unix and other operating systems. +It allows these operating systems (currently Unix, Netware, OS/2 and +AmigaDOS) to act as a file and print server for SMB clients. There are many Lan-Manager compatible clients such as LanManager for DOS, Windows for Workgroups, Windows NT, Windows 95, OS/2, Pathworks and many more. -The package also includes a Unix SMB client and a netbios nameserver. +The package also includes a SMB client for accessing other SMB servers +and a netbios nameserver for browsing support. What can it do for me? ---------------------- If you have any PCs running SMB clients, such as a PC running Windows -for Workgroups, then you can mount file space or printers from a unix -host, so that directories, files and printers on the unix host are +for Workgroups, then you can mount file space or printers on a Samba +host, so that directories, files and printers on the host are available on the PC. The client part of the package will also allow you to attach to other @@ -31,7 +33,7 @@ What are it's features? Samba supports many features that are not supported in other SMB implementations (all of which are commercial). Some of it's features -include host as well as username/password security, a unix client, +include host as well as username/password security, a client, automatic home directory exporting, automatic printer exporting, dead connection timeouts, umask support, guest connections, name mangling and hidden and system attribute mapping. Look at the man pages @@ -66,7 +68,7 @@ Samba software is free software. It is available under the GNU Public licence in source code form at no cost. Please read the file COPYING that comes with the package for more information. -What flavours of unix does it support? +What operating systems does it support? --------------------------------------- The code has been written to be as portable as possible. It has been @@ -79,7 +81,9 @@ Sequent, HP-UX, SGI, FreeBSD, NeXT, ISC, A/UX, SCO, Intergraph, Domain/OS and DGUX. Some of these have received more testing than others. If it doesn't -work with your unix then it should be easy to fix. +work with your unix then it should be easy to fix. It has also been ported +to Netware, OS/2 and the Amiga. A VMS port is underway. See the web site +for more details. Who wrote it? ------------- @@ -125,5 +129,5 @@ newsgroup comp.protocols.smb. A WWW site with lots of Samba info can be found at http://samba.canberra.edu.au/pub/samba/ -Andrew Tridgell (Contact: samba-bugs@anu.edu.au) -January 1995 +The Samba Team (Contact: samba-bugs@anu.edu.au) +June 1996 diff --git a/docs/textdocs/security_level.txt b/docs/textdocs/security_level.txt index b565ea79668..34d7ce70932 100644 --- a/docs/textdocs/security_level.txt +++ b/docs/textdocs/security_level.txt @@ -42,14 +42,14 @@ share. It will send a password along with each "tree connection" operation. The client is expecting a password to be associated with each share, independent of the user. This means that samba has to work out what username the client probably wants to use. It is never -explicitly sent the username. A "real" SMB server like NT actually -associates passwords directly with shares in share level security, but +explicitly sent the username. Some commercial SMB servers such as NT actually +associate passwords directly with shares in share level security, but samba always uses the unix authentication scheme where it is a username/password that is authenticated, not a "share/password". Many clients send a "session setup" even if the server is in share level security. They normally send a valid username but no -password. Samba records this username is a list of "possible +password. Samba records this username in a list of "possible usernames". When the client then does a "tree connection" it also adds to this list the name of the share they try to connect to (useful for home directories) and any users listed in the "user =" smb.conf @@ -75,4 +75,5 @@ passwords in encrypted form. You have to compile samba with encryption enabled to support this feature, and you have to maintain a separate smbpasswd file with SMB style encrypted passwords. It is cryptographically impossible to translate from unix style encryption -to SMB style encryption. +to SMB style encryption, although there are some fairly simple management +schemes by which the two could be kept in sync. diff --git a/source/change-log b/source/change-log index ee49663ed6e..0b8fabc0daf 100644 --- a/source/change-log +++ b/source/change-log @@ -5,6 +5,8 @@ Andrew.Tridgell@anu.edu.au NOTE: THIS LOG IS IN CHRONOLOGICAL ORDER +NOTE: From now on the cvs.log file will be used to give a complete log of +changes to samba. This change-log is now obsolete. 1.5.00 announced to mailing list @@ -1872,4 +1874,4 @@ lpd stuff: Tony Aiuto (tony@ics.com) make max disk size local - \ No newline at end of file + diff --git a/source/include/proto.h b/source/include/proto.h index ffd8254aaa9..e69de29bb2d 100644 --- a/source/include/proto.h +++ b/source/include/proto.h @@ -1,646 +0,0 @@ -/* This file is automatically generated with "make proto". DO NOT EDIT */ -BOOL check_access(int snum); -BOOL allow_access(char *deny_list,char *allow_list,struct from_host *client); -BOOL fromhost(int sock,struct from_host *f); -char *unix2dos_format(char *str,BOOL overwrite); -char *dos2unix_format(char *str, BOOL overwrite); -int interpret_character_set(char *str, int def); -void charset_initialise(void); -void add_char_string(char *s); -BOOL chat_with_program(char *passwordprogram,char *name,char *chatsequence); -BOOL chgpasswd(char *name,char *oldpass,char *newpass); -BOOL chgpasswd(char *name,char *oldpass,char *newpass); -void setup_pkt(char *outbuf); -void do_dir(char *inbuf,char *outbuf,char *Mask,int attribute,void (*fn)(),BOOL recurse_dir); -void cmd_help(void); -BOOL reopen_connection(char *inbuf,char *outbuf); -char *smb_errstr(char *inbuf); -void cli_setup_pkt(char *outbuf); -BOOL cli_receive_trans_response(char *inbuf,int trans,int *data_len, - int *param_len, char **data,char **param); -BOOL cli_send_session_request(char *inbuf, char *outbuf); -BOOL cli_send_login(char *inbuf, char *outbuf, BOOL start_session, BOOL use_setup); -void cli_send_logout(void); -BOOL cli_call_api(int prcnt,int drcnt,int mprcnt,int mdrcnt,int *rprcnt, - int *rdrcnt, char *param,char *data, char **rparam,char **rdata); -BOOL cli_send_trans_request(char *outbuf, int trans, char *name, int fid, int flags, - char *data,char *param,uint16 *setup, int ldata,int lparam, - int lsetup,int mdata,int mparam,int msetup); -BOOL cli_open_sockets(int port); -BOOL cli_reopen_connection(char *inbuf,char *outbuf); -char *smb_errstr(char *inbuf); -int strslashcmp(const char *s1, const char *s2); -void cmd_block(void); -void cmd_tarmode(void); -void cmd_setmode(void); -void cmd_tar(char *inbuf, char *outbuf); -int process_tar(char *inbuf, char *outbuf); -int clipfind(char **aret, int ret, char *tok); -int tar_parseargs(int argc, char *argv[], char *Optarg, int Optind); -void init_dptrs(void); -char *dptr_path(int key); -char *dptr_wcard(int key); -BOOL dptr_set_wcard(int key, char *wcard); -BOOL dptr_set_attr(int key, uint16 attr); -uint16 dptr_attr(int key); -void dptr_close(int key); -void dptr_closecnum(int cnum); -void dptr_idlecnum(int cnum); -void dptr_closepath(char *path,int pid); -int dptr_create(int cnum,char *path, BOOL expect_close,int pid); -BOOL dptr_fill(char *buf1,unsigned int key); -BOOL dptr_zero(char *buf); -void *dptr_fetch(char *buf,int *num); -void *dptr_fetch_lanman2(char *params,int dptr_num); -BOOL dir_check_ftype(int cnum,int mode,struct stat *st,int dirtype); -BOOL get_dir_entry(int cnum,char *mask,int dirtype,char *fname,int *size,int *mode,time_t *date,BOOL check_descend); -void *OpenDir(char *name); -void CloseDir(void *p); -char *ReadDirName(void *p); -BOOL SeekDir(void *p,int pos); -int TellDir(void *p); -void DirCacheAdd(char *path,char *name,char *dname,int snum); -char *DirCacheCheck(char *path,char *name,int snum); -void DirCacheFlush(int snum); -void fault_setup(void (*fn)()); -char *getsmbpass(char *prompt) ; -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); -int reply_trans(char *inbuf,char *outbuf); -int interpret_coding_system(char *str, int def); -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_wins_server(void); -char *lp_interfaces(void); -BOOL lp_wins_support(void); -BOOL lp_wins_proxy(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); -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_readsize(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); -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_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 ); -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_syncalways(int ); -BOOL lp_map_system(int ); -BOOL lp_delete_readonly(int ); -int lp_create_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_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(void); -int lp_servicenumber(char *pszServiceName); -char *my_workgroup(void); -char *volume_label(int snum); -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_locked(int fnum,int cnum,uint32 count,uint32 offset); -BOOL do_lock(int fnum,int cnum,uint32 count,uint32 offset,int *eclass,uint32 *ecode); -BOOL do_unlock(int fnum,int cnum,uint32 count,uint32 offset,int *eclass,uint32 *ecode); -int get_share_mode_by_fnum(int cnum,int fnum,int *pid); -int get_share_mode_byname(int cnum,char *fname,int *pid); -int get_share_mode(int cnum,struct stat *sbuf,int *pid); -void del_share_mode(int fnum); -BOOL set_share_mode(int fnum,int mode); -void clean_share_files(void); -int str_checksum(char *s); -BOOL is_8_3(char *fname); -void create_mangled_stack(int size); -BOOL check_mangled_stack(char *s); -BOOL is_mangled(char *s); -void mangle_name_83(char *s); -BOOL name_map_mangle(char *OutName,BOOL need83,int snum); -int reply_sends(char *inbuf,char *outbuf); -int reply_sendstrt(char *inbuf,char *outbuf); -int reply_sendtxt(char *inbuf,char *outbuf); -int reply_sendend(char *inbuf,char *outbuf); -void announce_request(struct work_record *work, struct in_addr ip); -void do_announce_request(char *info, char *to_name, int announce_type, - int from, - int to, struct in_addr dest_ip); -void announce_backup(void); -void announce_host(void); -void announce_master(void); -struct work_record *remove_workgroup(struct subnet_record *d, - struct work_record *work); -void expire_browse_cache(time_t t); -struct work_record *find_workgroupstruct(struct subnet_record *d, - fstring name, BOOL add); -struct subnet_record *find_domain(struct in_addr ip); -void dump_workgroups(void); -struct subnet_record *add_subnet_entry(struct in_addr source_ip, - struct in_addr source_mask, - char *name, BOOL add); -struct browse_cache_record *add_browser_entry(char *name, int type, char *wg, - time_t ttl, struct in_addr ip); -struct server_record *add_server_entry(struct subnet_record *d, - struct work_record *work, - char *name,int servertype, - int ttl,char *comment, - BOOL replace); -void write_browse_list(void); -void expire_servers(time_t t); -void check_master_browser(void); -void browser_gone(char *work_name, struct in_addr ip); -void send_election(struct subnet_record *d, char *group,uint32 criterion, - int timeup,char *name); -void become_nonmaster(struct subnet_record *d, struct work_record *work); -void run_elections(void); -void process_election(struct packet_struct *p,char *buf); -BOOL check_elections(void); -BOOL name_status(int fd,char *name,int name_type,BOOL recurse, - struct in_addr to_ip,char *master,char *rname, - void (*fn)()); -BOOL name_query(int fd,char *name,int name_type, - BOOL bcast,BOOL recurse, - struct in_addr to_ip, struct in_addr *ip,void (*fn)()); -void expire_netbios_response_entries(time_t t); -void reply_netbios_packet(struct packet_struct *p1,int trn_id,int rcode, - int opcode,BOOL recurse,struct nmb_name *rr_name, - int rr_type,int rr_class,int ttl,char *data,int len); -uint16 initiate_netbios_packet(int fd,int quest_type,char *name,int name_type, - int nb_flags,BOOL bcast,BOOL recurse, - struct in_addr to_ip); -void queue_netbios_pkt_wins(int fd,int quest_type,enum cmd_type cmd, - char *name,int name_type,int nb_flags, - BOOL bcast,BOOL recurse,struct in_addr to_ip); -void queue_netbios_packet(int fd,int quest_type,enum cmd_type cmd,char *name, - int name_type,int nb_flags,BOOL bcast,BOOL recurse, - struct in_addr to_ip); -struct name_response_record *find_name_query(uint16 id); -void queue_packet(struct packet_struct *packet); -void run_packet_queue(); -void listen_for_packets(BOOL run_election); -BOOL interpret_node_status(char *p, struct nmb_name *name,int t, - char *serv_name, struct in_addr ip); -BOOL send_mailslot_reply(char *mailslot,int fd,char *buf,int len,char *srcname, - char *dstname,int src_type,int dest_type, - struct in_addr dest_ip,struct in_addr src_ip); -void remove_name(struct name_record *n); -void dump_names(void); -void remove_netbios_name(char *name,int type, enum name_source source, - struct in_addr ip); -struct name_record *add_netbios_entry(char *name, int type, int nb_flags, - int ttl, - enum name_source source, - struct in_addr ip, - BOOL new_only); -void remove_name_entry(char *name,int type); -void add_name_entry(char *name,int type,int nb_flags); -void add_my_names(void); -void remove_my_names(); -void refresh_my_names(time_t t); -void expire_names(time_t t); -void response_name_release(struct packet_struct *p); -void reply_name_release(struct packet_struct *p); -void response_name_reg(struct packet_struct *p); -void reply_name_reg(struct packet_struct *p); -void reply_name_status(struct packet_struct *p); -void reply_name_query(struct packet_struct *p); -void process_nmb(struct packet_struct *p); -void reset_server(char *name, int state, struct in_addr ip); -void tell_become_backup(void); -void do_browser_lists(void); -void sync_server(enum cmd_type cmd, char *serv_name, char *work_name, - int name_type, - struct in_addr ip); -void update_from_reg(char *name, int type, struct in_addr ip); -void add_my_domains(char *group); -BOOL same_context(struct dgram_packet *dgram); -BOOL listening_name(struct work_record *work, struct nmb_name *n); -void process_logon_packet(struct packet_struct *p,char *buf,int len); -BOOL listening_type(struct packet_struct *p, int command); -void process_browse_packet(struct packet_struct *p,char *buf,int len); -void process_dgram(struct packet_struct *p); -BOOL reload_services(BOOL test); -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); -int main(int argc,char *argv[]); -char *getsmbpass(char *pass); -void sync_browse_lists(struct work_record *work, char *name, int nm_type, - struct in_addr ip); -BOOL pm_process(char *pszFileName,BOOL (*sfunc)(char *),BOOL (*pfunc)(char *,char *)); -void generate_next_challenge(char *challenge); -BOOL set_challenge(char *challenge); -BOOL last_challenge(char *challenge); -int valid_uid(int uid); -user_struct *get_valid_user_struct(int uid); -void invalidate_uid(int uid); -char *validated_username(int vuid); -void register_uid(int uid,int gid, char *name,BOOL guest); -void add_session_user(char *user); -void dfs_unlogin(void); -BOOL password_check(char *password); -BOOL smb_password_check(char *password, unsigned char *part_passwd, unsigned char *c8); -BOOL password_ok(char *user,char *password, int pwlen, struct passwd *pwd, BOOL is_nt_password); -BOOL user_ok(char *user,int snum); -BOOL authorise_login(int snum,char *user,char *password, int pwlen, - BOOL *guest,BOOL *force,int vuid); -BOOL check_hosts_equiv(char *user); -BOOL server_cryptkey(char *buf); -BOOL server_validate(char *buf); -BOOL pcap_printername_ok(char *pszPrintername, char *pszPrintcapname); -void pcap_printer_fn(void (*fn)()); -int read_predict(int fd,int offset,char *buf,char **ptr,int num); -void do_read_prediction(); -void invalidate_read_prediction(int fd); -void lpq_reset(int snum); -void print_file(int fnum); -int get_printqueue(int snum,int cnum,print_queue_struct **queue, - print_status_struct *status); -void del_printqueue(int cnum,int snum,int jobid); -void status_printjob(int cnum,int snum,int jobid,int status); -BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize); -BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize); -BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize); -BOOL disk_quotas(char *path, int *bsize, int *dfree, int *dsize); -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); -int reply_special(char *inbuf,char *outbuf); -int reply_tcon(char *inbuf,char *outbuf); -int reply_tcon_and_X(char *inbuf,char *outbuf,int length,int bufsize); -int reply_unknown(char *inbuf,char *outbuf); -int reply_ioctl(char *inbuf,char *outbuf); -int reply_sesssetup_and_X(char *inbuf,char *outbuf,int length,int bufsize); -int reply_chkpth(char *inbuf,char *outbuf); -int reply_getatr(char *inbuf,char *outbuf); -int reply_setatr(char *inbuf,char *outbuf); -int reply_dskattr(char *inbuf,char *outbuf); -int reply_search(char *inbuf,char *outbuf); -int reply_fclose(char *inbuf,char *outbuf); -int reply_open(char *inbuf,char *outbuf); -int reply_open_and_X(char *inbuf,char *outbuf,int length,int bufsize); -int reply_ulogoffX(char *inbuf,char *outbuf,int length,int bufsize); -int reply_mknew(char *inbuf,char *outbuf); -int reply_ctemp(char *inbuf,char *outbuf); -int reply_unlink(char *inbuf,char *outbuf); -int reply_readbraw(char *inbuf, char *outbuf); -int reply_lockread(char *inbuf,char *outbuf); -int reply_read(char *inbuf,char *outbuf); -int reply_read_and_X(char *inbuf,char *outbuf,int length,int bufsize); -int reply_writebraw(char *inbuf,char *outbuf); -int reply_writeunlock(char *inbuf,char *outbuf); -int reply_write(char *inbuf,char *outbuf,int dum1,int dum2); -int reply_write_and_X(char *inbuf,char *outbuf,int length,int bufsize); -int reply_lseek(char *inbuf,char *outbuf); -int reply_flush(char *inbuf,char *outbuf); -int reply_exit(char *inbuf,char *outbuf); -int reply_close(char *inbuf,char *outbuf); -int reply_writeclose(char *inbuf,char *outbuf); -int reply_lock(char *inbuf,char *outbuf); -int reply_unlock(char *inbuf,char *outbuf); -int reply_tdis(char *inbuf,char *outbuf); -int reply_echo(char *inbuf,char *outbuf); -int reply_printopen(char *inbuf,char *outbuf); -int reply_printclose(char *inbuf,char *outbuf); -int reply_printqueue(char *inbuf,char *outbuf); -int reply_printwrite(char *inbuf,char *outbuf); -int reply_mkdir(char *inbuf,char *outbuf); -int reply_rmdir(char *inbuf,char *outbuf); -int reply_mv(char *inbuf,char *outbuf); -int reply_copy(char *inbuf,char *outbuf); -int reply_setdir(char *inbuf,char *outbuf); -int reply_lockingX(char *inbuf,char *outbuf,int length,int bufsize); -int reply_readbmpx(char *inbuf,char *outbuf,int length,int bufsize); -int reply_writebmpx(char *inbuf,char *outbuf); -int reply_writebs(char *inbuf,char *outbuf); -int reply_setattrE(char *inbuf,char *outbuf); -int reply_getattrE(char *inbuf,char *outbuf); -mode_t unix_mode(int cnum,int dosmode); -int dos_mode(int cnum,char *path,struct stat *sbuf); -int dos_chmod(int cnum,char *fname,int dosmode,struct stat *st); -BOOL unix_convert(char *name,int cnum); -int disk_free(char *path,int *bsize,int *dfree,int *dsize); -int sys_disk_free(char *path,int *bsize,int *dfree,int *dsize); -BOOL check_name(char *name,int cnum); -void open_file(int fnum,int cnum,char *fname1,int flags,int mode); -void sync_file(int fnum); -void close_file(int fnum); -BOOL check_file_sharing(int cnum,char *fname); -void open_file_shared(int fnum,int cnum,char *fname,int share_mode,int ofun, - int mode,int *Access,int *action); -int seek_file(int fnum,int pos); -int read_file(int fnum,char *data,int pos,int mincnt,int maxcnt,int timeout,BOOL exact); -int write_file(int fnum,char *data,int n); -BOOL become_service(int cnum,BOOL do_chdir); -int find_service(char *service); -int cached_error_packet(char *inbuf,char *outbuf,int fnum,int line); -int unix_error_packet(char *inbuf,char *outbuf,int def_class,uint32 def_code,int line); -int error_packet(char *inbuf,char *outbuf,int error_class,uint32 error_code,int line); -BOOL snum_used(int snum); -BOOL reload_services(BOOL test); -int setup_groups(char *user, int uid, int gid, int *p_ngroups, - int **p_igroups, gid_t **p_groups); -int make_connection(char *service,char *user,char *password, int pwlen, char *dev,int vuid); -int find_free_file(void ); -int reply_corep(char *outbuf); -int reply_coreplus(char *outbuf); -int reply_lanman1(char *outbuf); -int reply_lanman2(char *outbuf); -int reply_nt1(char *outbuf); -void parse_connect(char *buf,char *service,char *user,char *password,int *pwlen,char *dev); -void close_cnum(int cnum, int uid); -BOOL yield_connection(int cnum,char *name,int max_connections); -BOOL claim_connection(int cnum,char *name,int max_connections,BOOL Clear); -void exit_server(char *reason); -void standard_sub(int cnum,char *s); -char *smb_fn_name(int type); -int chain_reply(int type,char *inbuf,char *inbuf2,char *outbuf,char *outbuf2,int size,int bufsize); -int construct_reply(char *inbuf,char *outbuf,int size,int bufsize); -void str_to_key(uchar *str,uchar *key); -void D1(uchar *k, uchar *d, uchar *out); -void E1(uchar *k, uchar *d, uchar *out); -void E_P16(uchar *p14,uchar *p16); -void E_P24(uchar *p21, 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 Ucrit_addUsername(pstring username); -unsigned int Ucrit_checkUsername(pstring username); -void Ucrit_addPid(int pid); -unsigned int Ucrit_checkPid(int pid); -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_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_chown(char *fname,int uid,int gid); -int sys_chroot(char *dname); -int main(int argc, char *argv[]); -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 ); -int reply_findclose(char *inbuf,char *outbuf,int length,int bufsize); -int reply_findnclose(char *inbuf,char *outbuf,int length,int bufsize); -int reply_transs2(char *inbuf,char *outbuf,int length,int bufsize); -int reply_trans2(char *inbuf,char *outbuf,int length,int bufsize); -char *ufc_crypt(char *key,char *salt); -void init_uid(void); -BOOL become_guest(void); -BOOL become_user(int cnum, int uid); -BOOL unbecome_user(void ); -int smbrun(char *cmd,char *outfile); -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); -void setup_logging(char *pname,BOOL interactive); -void reopen_logs(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,const 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 write_socket(int fd,char *buf,int len); -int read_udp_socket(int fd,char *buf,int len); -int set_blocking(int fd, BOOL set); -int read_with_timeout(int fd,char *buf,int mincnt,int maxcnt,long time_out,BOOL exact); -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 *myname,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); -int open_socket_out(int type, struct in_addr *addr, int port ); -int interpret_protocol(char *str,int def); -int interpret_security(char *str,int def); -unsigned long interpret_addr(char *str); -struct in_addr *interpret_addr2(char *str); -BOOL zero_ip(struct in_addr ip); -void standard_sub_basic(char *s); -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); -void ajt_panic(void); -char *readdirname(void *p); -int VT_Check(char *buffer); -int VT_Start_utmp(void); -int VT_Stop_utmp(void); -void VT_AtExit(void); -void VT_SigCLD(int sig); -void VT_SigEXIT(int sig); -int VT_Start(void); -int VT_Output(char *Buffer); -int VT_Input(char *Buffer,int Size); -void VT_Process(void); diff --git a/source/lib/system.c b/source/lib/system.c index ac64b37a6fe..7dc585223a1 100644 --- a/source/lib/system.c +++ b/source/lib/system.c @@ -25,13 +25,17 @@ extern int DEBUGLEVEL; /* The idea is that this file will eventually have wrappers around all - important system calls in samba. The aim is twofold: + important system calls in samba. The aims are: - to enable easier porting by putting OS dependent stuff in here - to allow for hooks into other "pseudo-filesystems" - to allow easier integration of things like the japanese extensions + + - to support the philosophy of Samba to expose the features of + the OS within the SMB model. In general whatever file/printer/variable + expansions/etc make sense to the OS should be acceptable to Samba. */