notify_buf->num_changes = 0;
}
-void notify_callback(void *private_data, struct timespec when,
+void notify_callback(struct smbd_server_connection *sconn,
+ void *private_data, struct timespec when,
const struct notify_event *e)
{
files_struct *fsp = (files_struct *)private_data;
struct server_id notifyd;
struct messaging_context *msg_ctx;
struct notify_list *list;
- void (*callback)(void *private_data, struct timespec when,
+
+ struct smbd_server_connection *sconn;
+ void (*callback)(struct smbd_server_connection *sconn,
+ void *private_data, struct timespec when,
const struct notify_event *ctx);
};
struct notify_context *notify_init(
TALLOC_CTX *mem_ctx, struct messaging_context *msg,
struct tevent_context *ev,
- void (*callback)(void *, struct timespec,
+ struct smbd_server_connection *sconn,
+ void (*callback)(struct smbd_server_connection *sconn,
+ void *, struct timespec,
const struct notify_event *))
{
struct server_id_db *names_db;
}
ctx->msg_ctx = msg;
ctx->list = NULL;
+
+ ctx->sconn = sconn;
ctx->callback = callback;
names_db = messaging_names_db(msg);
for (listel = ctx->list; listel != NULL; listel = listel->next) {
if (listel->private_data == event.private_data) {
- ctx->callback(listel->private_data, event_msg->when,
- &event);
+ ctx->callback(ctx->sconn, listel->private_data,
+ event_msg->when, &event);
break;
}
}
void (*reply_fn)(struct smb_request *req,
NTSTATUS error_code,
uint8_t *buf, size_t len));
-void notify_callback(void *private_data, struct timespec when,
+void notify_callback(struct smbd_server_connection *sconn,
+ void *private_data, struct timespec when,
const struct notify_event *e);
NTSTATUS change_notify_create(struct files_struct *fsp, uint32_t filter,
bool recursive);
struct notify_context *notify_init(
TALLOC_CTX *mem_ctx, struct messaging_context *msg,
struct tevent_context *ev,
- void (*callback)(void *, struct timespec,
+ struct smbd_server_connection *sconn,
+ void (*callback)(struct smbd_server_connection *sconn,
+ void *, struct timespec,
const struct notify_event *));
NTSTATUS notify_add(struct notify_context *ctx,
const char *path, uint32_t filter, uint32_t subdir_filter,
}
sconn->notify_ctx = notify_init(sconn, sconn->msg_ctx, sconn->ev_ctx,
- notify_callback);
+ sconn, notify_callback);
if (sconn->notify_ctx == NULL) {
return NT_STATUS_NO_MEMORY;
}
struct notify_context *n;
n = notify_init(talloc_tos(), msg_ctx,
- messaging_tevent_context(msg_ctx), NULL);
+ messaging_tevent_context(msg_ctx),
+ NULL, NULL);
if (n == NULL) {
goto done;
}