• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt/router/samba-3.5.8/source4/wrepl_server/

Lines Matching defs:partner

28 static void wreplsrv_out_partner_push(struct wreplsrv_partner *partner, bool propagate);
32 struct wreplsrv_partner *partner = talloc_get_type(creq->async.private_data, struct wreplsrv_partner);
35 partner->push.last_status = wreplsrv_push_notify_recv(partner->push.creq);
36 partner->push.creq = NULL;
38 old_notify_io = partner->push.notify_io;
39 partner->push.notify_io = NULL;
41 if (NT_STATUS_IS_OK(partner->push.last_status)) {
42 partner->push.error_count = 0;
44 partner->address, nt_errstr(partner->push.last_status)));
48 partner->push.error_count++;
50 if (partner->push.error_count > 1) {
52 partner->address, nt_errstr(partner->push.last_status),
53 partner->push.error_count));
58 partner->address, nt_errstr(partner->push.last_status),
59 partner->push.error_count));
60 wreplsrv_out_partner_push(partner, old_notify_io->in.propagate);
65 static void wreplsrv_out_partner_push(struct wreplsrv_partner *partner, bool propagate)
67 /* a push for this partner is currently in progress, so we're done */
68 if (partner->push.creq) return;
71 partner->push.notify_io = talloc(partner, struct wreplsrv_push_notify_io);
72 if (!partner->push.notify_io) {
76 partner->push.notify_io->in.partner = partner;
77 partner->push.notify_io->in.inform = partner->push.use_inform;
78 partner->push.notify_io->in.propagate = propagate;
79 partner->push.creq = wreplsrv_push_notify_send(partner->push.notify_io, partner->push.notify_io);
80 if (!partner->push.creq) {
82 partner->address));
86 partner->push.creq->async.fn = wreplsrv_push_handler_creq;
87 partner->push.creq->async.private_data = partner;
91 talloc_free(partner->push.notify_io);
92 partner->push.notify_io = NULL;
94 partner->address, propagate));
98 static uint32_t wreplsrv_calc_change_count(struct wreplsrv_partner *partner, uint64_t maxVersionID)
103 if (partner->push.maxVersionID > maxVersionID) {
107 tmp_diff = maxVersionID - partner->push.maxVersionID;
115 partner->push.maxVersionID = maxVersionID;
121 struct wreplsrv_partner *partner;
127 for (partner = service->partners; partner; partner = partner->next) {
128 /* if it's not a push partner, go to the next partner */
129 if (!(partner->type & WINSREPL_PARTNER_PUSH)) continue;
131 /* if push notifies are disabled for this partner, go to the next partner */
132 if (partner->push.change_count == 0) continue;
134 /* get the actual change count for the partner */
135 change_count = wreplsrv_calc_change_count(partner, seqnumber);
137 /* if the configured change count isn't reached, go to the next partner */
138 if (change_count < partner->push.change_count) continue;
140 wreplsrv_out_partner_push(partner, false);