1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-16 20:23:50 +03:00

r20854: Ok, now I think we're at a point where looking at notify starts to make sense

again :-)

Volker
This commit is contained in:
Volker Lendecke
2007-01-17 16:23:45 +00:00
committed by Gerald (Jerry) Carter
parent b48ea4d777
commit 5533cdeec1
8 changed files with 627 additions and 41 deletions

View File

@@ -434,6 +434,49 @@ struct vfs_fsp_data {
*/
};
/* the basic packet size, assuming no words or bytes */
#define smb_size 39
struct notify_change {
uint32_t action;
char *name;
};
struct notify_change_request {
struct notify_change_request *prev, *next;
struct files_struct *fsp; /* backpointer for cancel by mid */
char request_buf[smb_size];
uint32 filter;
uint32 max_param_count;
struct notify_mid_map *mid_map;
};
/*
* For NTCancel, we need to find the notify_change_request indexed by
* mid. Separate list here.
*/
struct notify_mid_map {
struct notify_mid_map *prev, *next;
struct notify_change_request *req;
uint16 mid;
};
struct notify_change_buf {
/*
* If no requests are pending, changes are queued here. Simple array,
* we only append.
*/
unsigned num_changes;
struct notify_change *changes;
/*
* If no changes are around requests are queued here. Using a linked
* list, because we have to append at the end and delete from the top.
*/
struct notify_change_request *requests;
};
typedef struct files_struct {
struct files_struct *next, *prev;
int fnum;
@@ -476,6 +519,8 @@ typedef struct files_struct {
struct vfs_fsp_data *vfs_extension;
FAKE_FILE_HANDLE *fake_file_handle;
struct notify_change_buf *notify;
} files_struct;
#include "ntquotas.h"
@@ -885,9 +930,6 @@ struct bitmap {
unsigned int n;
};
/* the basic packet size, assuming no words or bytes */
#define smb_size 39
/* offsets into message for common items */
#define smb_com 8
#define smb_rcls 9
@@ -1349,6 +1391,19 @@ struct bitmap {
#define FILE_NOTIFY_CHANGE_SECURITY 0x100
#define FILE_NOTIFY_CHANGE_FILE_NAME 0x200
#define FILE_NOTIFY_CHANGE_NAME \
(FILE_NOTIFY_CHANGE_FILE_NAME|FILE_NOTIFY_CHANGE_DIR_NAME)
/* change notify action results */
#define NOTIFY_ACTION_ADDED 1
#define NOTIFY_ACTION_REMOVED 2
#define NOTIFY_ACTION_MODIFIED 3
#define NOTIFY_ACTION_OLD_NAME 4
#define NOTIFY_ACTION_NEW_NAME 5
#define NOTIFY_ACTION_ADDED_STREAM 6
#define NOTIFY_ACTION_REMOVED_STREAM 7
#define NOTIFY_ACTION_MODIFIED_STREAM 8
/* where to find the base of the SMB packet proper */
#define smb_base(buf) (((char *)(buf))+4)