/*
 * $Id: smb_fs.h,v 1.6 2000/11/28 09:59:19 olsen Exp olsen $
 *
 * :ts=8
 *
 * smb_fs.h
 *
 * Copyright (C) 1995 by Paal-Kr. Engstad and Volker Lendecke
 * Modified for use with AmigaOS by Olaf Barthel <olsen@sourcery.han.de>
 */

#ifndef _LINUX_SMB_FS_H
#define _LINUX_SMB_FS_H

#include <smb/smb.h>

#include <smb/smb_mount.h>
#include <smb/smb_fs_sb.h>

#include <netinet/in.h>

#define SMB_HEADER_LEN   37     /* includes everything up to, but not
                                   including smb_bcc */

/*****************************************************************************/

/* proc.c */
byte *smb_encode_smb_length(byte *p, dword len);
dword smb_len(byte *packet);
int smb_proc_open(struct smb_server *server, const char *pathname, int len, struct smb_dirent *entry);
int smb_proc_close(struct smb_server *server, word fileid, dword mtime);
int smb_proc_read(struct smb_server *server, struct smb_dirent *finfo, off_t offset, long count, char *data, int fs);
int smb_proc_read_raw(struct smb_server *server, struct smb_dirent *finfo, off_t offset, long count, char *data);
int smb_proc_write(struct smb_server *server, struct smb_dirent *finfo, off_t offset, int count, const char *data);
int smb_proc_write_raw(struct smb_server *server, struct smb_dirent *finfo, off_t offset, long count, const char *data);
int smb_proc_create(struct smb_server *server, const char *path, int len, struct smb_dirent *entry);
int smb_proc_mv(struct smb_server *server, const char *opath, const int olen, const char *npath, const int nlen);
int smb_proc_mkdir(struct smb_server *server, const char *path, const int len);
int smb_proc_rmdir(struct smb_server *server, const char *path, const int len);
int smb_proc_unlink(struct smb_server *server, const char *path, const int len);
int smb_proc_trunc(struct smb_server *server, word fid, dword length);
int smb_proc_readdir(struct smb_server *server, char *path, int fpos, int cache_size, struct smb_dirent *entry);
int smb_proc_getattr_core(struct smb_server *server, const char *path, int len, struct smb_dirent *entry);
int smb_proc_getattrE(struct smb_server *server, struct smb_dirent *entry);
int smb_proc_setattr_core(struct smb_server *server, const char *path, int len, struct smb_dirent *new_finfo);
int smb_proc_setattrE(struct smb_server *server, word fid, struct smb_dirent *new_entry);
int smb_proc_dskattr (struct smb_server *server, struct smb_dskattr *attr);
int smb_proc_connect(struct smb_server *server);

/* sock.c */
int smb_catch_keepalive(struct smb_server *server);
int smb_dont_catch_keepalive(struct smb_server *server);
int smb_release(struct smb_server *server);
int smb_connect(struct smb_server *server);
int smb_request(struct smb_server *server);
int smb_trans2_request(struct smb_server *server, int *data_len, int *param_len, char **data, char **param);
int smb_request_read_raw(struct smb_server *server, unsigned char *target, int max_len);
int smb_request_write_raw(struct smb_server *server, unsigned const char *source, int length);

#endif /* _LINUX_SMB_FS_H */
