diff options
author | Herb Lewis <herb@samba.org> | 2005-04-06 16:28:04 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:56:30 -0500 |
commit | 978ca8486031e43754a3c23757f361bf3a85f335 (patch) | |
tree | 109bd3ff560afcbd74296990d9554859cb2fb78f /source3/smbd | |
parent | 60dd0d0f9c277eb9852924aea81fee06b7395832 (diff) | |
download | samba-978ca8486031e43754a3c23757f361bf3a85f335.tar.gz samba-978ca8486031e43754a3c23757f361bf3a85f335.tar.bz2 samba-978ca8486031e43754a3c23757f361bf3a85f335.zip |
r6225: get rid of warnings from my compiler about nested externs
(This used to be commit efea76ac71412f8622cd233912309e91b9ea52da)
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/dir.c | 4 | ||||
-rw-r--r-- | source3/smbd/error.c | 2 | ||||
-rw-r--r-- | source3/smbd/fake_file.c | 3 | ||||
-rw-r--r-- | source3/smbd/lanman.c | 6 | ||||
-rw-r--r-- | source3/smbd/negprot.c | 2 | ||||
-rw-r--r-- | source3/smbd/nttrans.c | 4 | ||||
-rw-r--r-- | source3/smbd/open.c | 4 | ||||
-rw-r--r-- | source3/smbd/oplock.c | 8 | ||||
-rw-r--r-- | source3/smbd/oplock_linux.c | 32 | ||||
-rw-r--r-- | source3/smbd/posix_acls.c | 28 | ||||
-rw-r--r-- | source3/smbd/process.c | 9 | ||||
-rw-r--r-- | source3/smbd/reply.c | 4 | ||||
-rw-r--r-- | source3/smbd/server.c | 4 | ||||
-rw-r--r-- | source3/smbd/service.c | 2 | ||||
-rw-r--r-- | source3/smbd/sesssetup.c | 11 | ||||
-rw-r--r-- | source3/smbd/trans2.c | 2 |
16 files changed, 55 insertions, 70 deletions
diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index 27ec003fb8..0f32dddd2d 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -24,6 +24,8 @@ This module implements directory related functions for Samba. */ +extern struct current_user current_user; + /* Make directory handle internals available. */ #define NAME_CACHE_SIZE 100 @@ -785,7 +787,6 @@ BOOL get_dir_entry(connection_struct *conn,char *mask,int dirtype, pstring fname static BOOL user_can_read_file(connection_struct *conn, char *name, SMB_STRUCT_STAT *pst) { - extern struct current_user current_user; SEC_DESC *psd = NULL; size_t sd_size; files_struct *fsp; @@ -838,7 +839,6 @@ static BOOL user_can_read_file(connection_struct *conn, char *name, SMB_STRUCT_S static BOOL user_can_write_file(connection_struct *conn, char *name, SMB_STRUCT_STAT *pst) { - extern struct current_user current_user; SEC_DESC *psd = NULL; size_t sd_size; files_struct *fsp; diff --git a/source3/smbd/error.c b/source3/smbd/error.c index 6988d74f91..090a2f6d81 100644 --- a/source3/smbd/error.c +++ b/source3/smbd/error.c @@ -23,6 +23,7 @@ /* From lib/error.c */ extern struct unix_error_map unix_dos_nt_errmap[]; +extern uint32 global_client_caps; /* these can be set by some functions to override the error codes */ static int override_ERR_class; static int override_ERR_code; @@ -114,7 +115,6 @@ int unix_error_packet(char *outbuf,int def_class,uint32 def_code, NTSTATUS def_s int error_packet(char *outbuf, uint8 eclass, uint32 ecode, NTSTATUS ntstatus, int line, const char *file) { int outsize = set_message(outbuf,0,0,True); - extern uint32 global_client_caps; BOOL force_nt_status = False; BOOL force_dos_status = False; diff --git a/source3/smbd/fake_file.c b/source3/smbd/fake_file.c index 53aac1e036..ee510eb003 100644 --- a/source3/smbd/fake_file.c +++ b/source3/smbd/fake_file.c @@ -20,6 +20,8 @@ #include "includes.h" +extern struct current_user current_user; + /**************************************************************************** Open a file with a share mode. ****************************************************************************/ @@ -29,7 +31,6 @@ files_struct *open_fake_file_shared1(enum FAKE_FILE_TYPE fake_file_type, connect int share_mode,int ofun, uint32 new_dos_attr, int oplock_request, int *Access,int *action) { - extern struct current_user current_user; int flags=0; files_struct *fsp = NULL; diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c index d8c5201ce6..f2794d2901 100644 --- a/source3/smbd/lanman.c +++ b/source3/smbd/lanman.c @@ -27,6 +27,9 @@ #include "includes.h" +extern struct current_user current_user; +extern userdom_struct current_user_info; + #ifdef CHECK_TYPES #undef CHECK_TYPES #endif @@ -2116,7 +2119,6 @@ static BOOL api_RDosPrintJobDel(connection_struct *conn,uint16 vuid, char *param int snum; fstring sharename; int errcode; - extern struct current_user current_user; WERROR werr = WERR_OK; if(!rap_to_pjobid(SVAL(p,0), sharename, &jobid)) @@ -2183,7 +2185,6 @@ static BOOL api_WPrintQueueCtrl(connection_struct *conn,uint16 vuid, char *param int errcode = NERR_notsupported; int snum; WERROR werr = WERR_OK; - extern struct current_user current_user; /* check it's a supported varient */ if (!(strcsequal(str1,"z") && strcsequal(str2,""))) @@ -2435,7 +2436,6 @@ static BOOL api_NetWkstaGetInfo(connection_struct *conn,uint16 vuid, char *param char *str2 = skip_string(str1,1); char *p = skip_string(str2,1); char *p2; - extern userdom_struct current_user_info; int level = SVAL(p,0); DEBUG(4,("NetWkstaGetInfo level %d\n",level)); diff --git a/source3/smbd/negprot.c b/source3/smbd/negprot.c index bdb15cb3f7..054afac683 100644 --- a/source3/smbd/negprot.c +++ b/source3/smbd/negprot.c @@ -20,6 +20,7 @@ #include "includes.h" +extern fstring remote_proto; extern enum protocol_types Protocol; extern int max_recv; BOOL global_encrypted_passwords_negotiated = False; @@ -549,7 +550,6 @@ int reply_negprot(connection_struct *conn, SSVAL(outbuf,smb_vwv0,choice); if(choice != -1) { - extern fstring remote_proto; fstrcpy(remote_proto,supported_protocols[protocol].short_name); reload_services(True); outsize = supported_protocols[protocol].proto_reply_fn(inbuf, outbuf); diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c index d878df6636..69b83fe3da 100644 --- a/source3/smbd/nttrans.c +++ b/source3/smbd/nttrans.c @@ -21,6 +21,8 @@ #include "includes.h" +extern DOM_SID global_sid_World; +extern int max_send; extern enum protocol_types Protocol; extern int smb_read_error; extern int global_oplock_break; @@ -83,7 +85,6 @@ static char *nttrans_realloc(char **ptr, size_t size) static int send_nt_replies(char *inbuf, char *outbuf, int bufsize, NTSTATUS nt_error, char *params, int paramsize, char *pdata, int datasize) { - extern int max_send; int data_to_send = datasize; int params_to_send = paramsize; int useable_space; @@ -2020,7 +2021,6 @@ static int call_nt_transact_rename(connection_struct *conn, char *inbuf, char *o static size_t get_null_nt_acl(TALLOC_CTX *mem_ctx, SEC_DESC **ppsd) { - extern DOM_SID global_sid_World; size_t sd_size; *ppsd = make_standard_sec_desc( mem_ctx, &global_sid_World, &global_sid_World, NULL, &sd_size); diff --git a/source3/smbd/open.c b/source3/smbd/open.c index 5b349e2e44..559994ca46 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -21,6 +21,7 @@ #include "includes.h" +extern struct current_user current_user; extern userdom_struct current_user_info; extern uint16 global_oplock_port; extern uint16 global_smbpid; @@ -172,7 +173,6 @@ Error was %s\n", static BOOL open_file(files_struct *fsp,connection_struct *conn, const char *fname,SMB_STRUCT_STAT *psbuf,int flags,mode_t mode, uint32 desired_access) { - extern struct current_user current_user; int accmode = (flags & O_ACCMODE); int local_flags = flags; @@ -1606,7 +1606,6 @@ int close_file_fchmod(files_struct *fsp) files_struct *open_directory(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf, uint32 desired_access, int share_mode, int smb_ofun, int *action) { - extern struct current_user current_user; BOOL got_stat = False; files_struct *fsp = file_new(conn); BOOL delete_on_close = GET_DELETE_ON_CLOSE_FLAG(share_mode); @@ -1744,7 +1743,6 @@ files_struct *open_directory(connection_struct *conn, const char *fname, SMB_STR files_struct *open_file_stat(connection_struct *conn, char *fname, SMB_STRUCT_STAT *psbuf) { - extern struct current_user current_user; files_struct *fsp = NULL; if (!VALID_STAT(*psbuf)) diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c index ea3ac43744..858092407f 100644 --- a/source3/smbd/oplock.c +++ b/source3/smbd/oplock.c @@ -31,6 +31,9 @@ static int32 level_II_oplocks_open = 0; BOOL global_client_failed_oplock_break = False; BOOL global_oplock_break = False; +extern struct timeval smb_last_time; +extern uint32 global_client_caps; +extern struct current_user current_user; extern int smb_read_error; static struct kernel_oplocks *koplocks; @@ -518,8 +521,6 @@ static void prepare_break_message(char *outbuf, files_struct *fsp, BOOL level2) static void wait_before_sending_break(BOOL local_request) { - extern struct timeval smb_last_time; - if(local_request) { struct timeval cur_tv; long wait_left = (long)lp_oplock_break_wait_time(); @@ -603,7 +604,6 @@ static files_struct *initial_break_processing(SMB_DEV_T dev, SMB_INO_T inode, un static BOOL oplock_break_level2(files_struct *fsp, BOOL local_request) { - extern uint32 global_client_caps; char outbuf[128]; SMB_DEV_T dev = fsp->dev; SMB_INO_T inode = fsp->inode; @@ -676,8 +676,6 @@ static BOOL oplock_break_level2(files_struct *fsp, BOOL local_request) static BOOL oplock_break(SMB_DEV_T dev, SMB_INO_T inode, unsigned long file_id, BOOL local_request) { - extern uint32 global_client_caps; - extern struct current_user current_user; char *inbuf = NULL; char *outbuf = NULL; files_struct *fsp = NULL; diff --git a/source3/smbd/oplock_linux.c b/source3/smbd/oplock_linux.c index fe324577e1..5d6bdb9883 100644 --- a/source3/smbd/oplock_linux.c +++ b/source3/smbd/oplock_linux.c @@ -22,6 +22,22 @@ #if HAVE_KERNEL_OPLOCKS_LINUX +/* these can be removed when they are in glibc headers */ +struct cap_user_header { + uint32 version; + int pid; +} header; +struct cap_user_data { + uint32 effective; + uint32 permitted; + uint32 inheritable; +} data; + +extern int capget(struct cap_user_header * hdrp, + struct cap_user_data * datap); +extern int capset(struct cap_user_header * hdrp, + const struct cap_user_data * datap); + static SIG_ATOMIC_T signals_received; #define FD_PENDING_SIZE 100 static SIG_ATOMIC_T fd_pending_array[FD_PENDING_SIZE]; @@ -68,22 +84,6 @@ static void set_capability(unsigned capability) #ifndef _LINUX_CAPABILITY_VERSION #define _LINUX_CAPABILITY_VERSION 0x19980330 #endif - /* these can be removed when they are in glibc headers */ - struct cap_user_header { - uint32 version; - int pid; - } header; - struct cap_user_data { - uint32 effective; - uint32 permitted; - uint32 inheritable; - } data; - - extern int capget(struct cap_user_header * hdrp, - struct cap_user_data * datap); - extern int capset(struct cap_user_header * hdrp, - const struct cap_user_data * datap); - header.version = _LINUX_CAPABILITY_VERSION; header.pid = 0; diff --git a/source3/smbd/posix_acls.c b/source3/smbd/posix_acls.c index 87173fca3b..31135f0907 100644 --- a/source3/smbd/posix_acls.c +++ b/source3/smbd/posix_acls.c @@ -21,6 +21,14 @@ #include "includes.h" +extern struct current_user current_user; +extern DOM_SID global_sid_Creator_Owner; +extern DOM_SID global_sid_Creator_Group; +extern DOM_SID global_sid_World; +extern DOM_SID global_sid_Builtin_Administrators; +extern DOM_SID global_sid_Builtin_Users; +extern struct generic_mapping file_generic_mapping; + #undef DBGC_CLASS #define DBGC_CLASS DBGC_ACLS @@ -916,7 +924,6 @@ static BOOL unpack_nt_owners(int snum, SMB_STRUCT_STAT *psbuf, uid_t *puser, gid if (lp_force_unknown_acl_user(snum)) { /* this allows take ownership to work * reasonably */ - extern struct current_user current_user; *puser = current_user.uid; } else { DEBUG(3,("unpack_nt_owners: unable to validate" @@ -938,7 +945,6 @@ static BOOL unpack_nt_owners(int snum, SMB_STRUCT_STAT *psbuf, uid_t *puser, gid if (lp_force_unknown_acl_user(snum)) { /* this allows take group ownership to work * reasonably */ - extern struct current_user current_user; *pgrp = current_user.gid; } else { DEBUG(3,("unpack_nt_owners: unable to validate" @@ -1003,10 +1009,8 @@ static void apply_default_perms(files_struct *fsp, canon_ace *pace, mode_t type) static BOOL uid_entry_in_group( canon_ace *uid_ace, canon_ace *group_ace ) { - extern DOM_SID global_sid_World; fstring u_name; fstring g_name; - extern struct current_user current_user; /* "Everyone" always matches every uid. */ @@ -1046,7 +1050,6 @@ static BOOL ensure_canon_entry_valid(canon_ace **pp_ace, SMB_STRUCT_STAT *pst, BOOL setting_acl) { - extern DOM_SID global_sid_World; canon_ace *pace; BOOL got_user = False; BOOL got_grp = False; @@ -1220,10 +1223,6 @@ static BOOL create_canon_ace_lists(files_struct *fsp, SMB_STRUCT_STAT *pst, canon_ace **ppfile_ace, canon_ace **ppdir_ace, SEC_ACL *dacl) { - extern DOM_SID global_sid_Creator_Owner; - extern DOM_SID global_sid_Creator_Group; - extern DOM_SID global_sid_World; - extern struct generic_mapping file_generic_mapping; BOOL all_aces_are_inherit_only = (fsp->is_directory ? True : False); canon_ace *file_ace = NULL; canon_ace *dir_ace = NULL; @@ -1647,7 +1646,6 @@ Deny entry after Allow entry. Failing to set on file %s.\n", fsp->fsp_name )); static void process_deny_list( canon_ace **pp_ace_list ) { - extern DOM_SID global_sid_World; canon_ace *ace_list = *pp_ace_list; canon_ace *curr_ace = NULL; canon_ace *curr_ace_next = NULL; @@ -2067,7 +2065,6 @@ static void arrange_posix_perms( char *filename, canon_ace **pp_list_head) static canon_ace *canonicalise_acl( files_struct *fsp, SMB_ACL_T posix_acl, SMB_STRUCT_STAT *psbuf, DOM_SID *powner, DOM_SID *pgroup, struct pai_val *pal, SMB_ACL_TYPE_T the_acl_type) { - extern DOM_SID global_sid_World; connection_struct *conn = fsp->conn; mode_t acl_mask = (S_IRUSR|S_IWUSR|S_IXUSR); canon_ace *list_head = NULL; @@ -2629,10 +2626,6 @@ static size_t merge_default_aces( SEC_ACE *nt_ace_list, size_t num_aces) size_t get_nt_acl(files_struct *fsp, uint32 security_info, SEC_DESC **ppdesc) { - extern DOM_SID global_sid_Builtin_Administrators; - extern DOM_SID global_sid_Builtin_Users; - extern DOM_SID global_sid_Creator_Owner; - extern DOM_SID global_sid_Creator_Group; connection_struct *conn = fsp->conn; SMB_STRUCT_STAT sbuf; SEC_ACE *nt_ace_list = NULL; @@ -2920,7 +2913,6 @@ size_t get_nt_acl(files_struct *fsp, uint32 security_info, SEC_DESC **ppdesc) static int try_chown(connection_struct *conn, const char *fname, uid_t uid, gid_t gid) { int ret; - extern struct current_user current_user; files_struct *fsp; SMB_STRUCT_STAT st; @@ -2976,7 +2968,6 @@ BOOL set_nt_acl(files_struct *fsp, uint32 security_info_sent, SEC_DESC *psd) uid_t orig_uid; gid_t orig_gid; BOOL need_chown = False; - extern struct current_user current_user; DEBUG(10,("set_nt_acl: called for file %s\n", fsp->fsp_name )); @@ -3760,7 +3751,6 @@ BOOL set_unix_posix_acl(connection_struct *conn, files_struct *fsp, const char * static int check_posix_acl_group_write(connection_struct *conn, const char *fname, SMB_STRUCT_STAT *psbuf) { - extern struct current_user current_user; SMB_ACL_T posix_acl = NULL; int entry_id = SMB_ACL_FIRST_ENTRY; SMB_ACL_ENTRY_T entry; @@ -3922,7 +3912,6 @@ failed to match on user or group in token.\n", fname )); BOOL can_delete_file_in_directory(connection_struct *conn, const char *fname) { - extern struct current_user current_user; SMB_STRUCT_STAT sbuf; pstring dname; int ret; @@ -3980,7 +3969,6 @@ BOOL can_delete_file_in_directory(connection_struct *conn, const char *fname) BOOL can_write_to_file(connection_struct *conn, const char *fname) { - extern struct current_user current_user; SMB_STRUCT_STAT sbuf; int ret; diff --git a/source3/smbd/process.c b/source3/smbd/process.c index 3043cadfd8..1bf6f4f9d1 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -20,6 +20,11 @@ #include "includes.h" +extern uint16 global_smbpid; +extern int keepalive; +extern struct auth_context *negprot_global_auth_context; +extern int smb_echo_count; + struct timeval smb_last_time; static char *InBuffer = NULL; @@ -852,7 +857,6 @@ static int switch_message(int type,char *inbuf,char *outbuf,int size,int bufsize { static pid_t pid= (pid_t)-1; int outsize = 0; - extern uint16 global_smbpid; type &= 0xff; @@ -1331,7 +1335,6 @@ static BOOL timeout_processing(int deadtime, int *select_timeout, time_t *last_t static time_t last_idle_closed_check = 0; time_t t; BOOL allidle = True; - extern int keepalive; if (smb_read_error == READ_EOF) { DEBUG(3,("timeout_processing: End of file from client (client has disconnected).\n")); @@ -1375,7 +1378,6 @@ static BOOL timeout_processing(int deadtime, int *select_timeout, time_t *last_t } if (keepalive && (t - last_keepalive_sent_time)>keepalive) { - extern struct auth_context *negprot_global_auth_context; if (!send_keepalive(smbd_server_fd())) { DEBUG( 2, ( "Keepalive failed - exiting.\n" ) ); return False; @@ -1493,7 +1495,6 @@ machine %s in domain %s.\n", global_myname(), lp_workgroup())); void smbd_process(void) { - extern int smb_echo_count; time_t last_timeout_processing_time = time(NULL); unsigned int num_smbs = 0; const size_t total_buffer_size = BUFFER_SIZE + LARGE_WRITEX_HDR_SIZE + SAFETY_MARGIN; diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 0d1523ae3b..c3cb81ddfc 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -35,6 +35,7 @@ extern int global_oplock_break; unsigned int smb_echo_count = 0; extern uint32 global_client_caps; +extern struct current_user current_user; extern BOOL global_encrypted_passwords_negotiated; /**************************************************************************** @@ -471,7 +472,6 @@ int reply_tcon_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt int passlen = SVAL(inbuf,smb_vwv3); pstring path; char *p, *q; - extern BOOL global_encrypted_passwords_negotiated; START_PROFILE(SMBtconX); @@ -2010,7 +2010,6 @@ void send_file_readbraw(connection_struct *conn, files_struct *fsp, SMB_OFF_T st int reply_readbraw(connection_struct *conn, char *inbuf, char *outbuf, int dum_size, int out_buffsize) { - extern struct current_user current_user; ssize_t maxcount,mincount; size_t nread = 0; SMB_OFF_T startpos; @@ -2980,7 +2979,6 @@ int reply_exit(connection_struct *conn, int reply_close(connection_struct *conn, char *inbuf,char *outbuf, int size, int dum_buffsize) { - extern struct current_user current_user; int outsize = 0; time_t mtime; int32 eclass = 0, err = 0; diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 7f7d55c7e3..9d910cd14a 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -30,6 +30,8 @@ int last_message = -1; /* a useful macro to debug the last message processed */ #define LAST_MESSAGE() smb_fn_name(last_message) +extern char *last_inbuf; +extern struct auth_context *negprot_global_auth_context; extern pstring user_socket_options; extern SIG_ATOMIC_T got_sig_term; extern SIG_ATOMIC_T reload_after_sighup; @@ -598,8 +600,6 @@ static BOOL dump_core(void) void exit_server(const char *reason) { static int firsttime=1; - extern char *last_inbuf; - extern struct auth_context *negprot_global_auth_context; if (!firsttime) exit(0); diff --git a/source3/smbd/service.c b/source3/smbd/service.c index 7bbf8d7f2a..d39d3d3836 100644 --- a/source3/smbd/service.c +++ b/source3/smbd/service.c @@ -20,6 +20,7 @@ #include "includes.h" +extern char magic_char; extern struct timeval smb_last_time; extern userdom_struct current_user_info; @@ -30,7 +31,6 @@ extern userdom_struct current_user_info; BOOL set_current_service(connection_struct *conn, uint16 flags, BOOL do_chdir) { - extern char magic_char; static connection_struct *last_conn; static uint16 last_flags; int snum; diff --git a/source3/smbd/sesssetup.c b/source3/smbd/sesssetup.c index 60867df653..9fbf0b1d51 100644 --- a/source3/smbd/sesssetup.c +++ b/source3/smbd/sesssetup.c @@ -25,6 +25,12 @@ uint32 global_client_caps = 0; +extern BOOL global_encrypted_passwords_negotiated; +extern BOOL global_spnego_negotiated; +extern enum protocol_types Protocol; +extern int max_send; +extern struct auth_context *negprot_global_auth_context; + static struct auth_ntlmssp_state *global_ntlmssp_state; /* @@ -637,13 +643,8 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf, fstring native_lanman; fstring primary_domain; static BOOL done_sesssetup = False; - extern BOOL global_encrypted_passwords_negotiated; - extern BOOL global_spnego_negotiated; - extern enum protocol_types Protocol; - extern int max_send; auth_usersupplied_info *user_info = NULL; - extern struct auth_context *negprot_global_auth_context; auth_serversupplied_info *server_info = NULL; NTSTATUS nt_status; diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index f8123bc11a..8d673c25bd 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -23,6 +23,7 @@ #include "includes.h" +extern int max_send; extern enum protocol_types Protocol; extern int smb_read_error; extern int global_oplock_break; @@ -574,7 +575,6 @@ static int send_trans2_replies(char *outbuf, global struct. These different max_xmit variables should be merged as this is now too confusing */ - extern int max_send; int data_to_send = datasize; int params_to_send = paramsize; int useable_space; |