Lines Matching refs:peer

49  * @ack_gen: most recent generation of self's domain acked by peer
63 /* struct tipc_peer: state of a peer node and its domain
64 * @addr: tipc node identity of peer
65 * @head_map: shows which other nodes currently consider peer 'up'
66 * @domain: most recent domain record from peer
70 * @is_up: peer is up as seen from this node
71 * @is_head: peer is assigned domain head as seen from this node
72 * @is_local: peer is in local domain and should be continuously monitored
166 static struct tipc_peer *peer_prev(struct tipc_peer *peer)
168 return list_last_entry(&peer->list, struct tipc_peer, list);
171 static struct tipc_peer *peer_nxt(struct tipc_peer *peer)
173 return list_first_entry(&peer->list, struct tipc_peer, list);
176 static struct tipc_peer *peer_head(struct tipc_peer *peer)
178 while (!peer->is_head)
179 peer = peer_prev(peer);
180 return peer;
185 struct tipc_peer *peer;
188 hlist_for_each_entry(peer, &mon->peers[thash], hash) {
189 if (peer->addr == addr)
190 return peer;
211 static void mon_identify_lost_members(struct tipc_peer *peer,
215 struct tipc_peer *member = peer;
216 struct tipc_mon_domain *dom_aft = peer->domain;
217 int applied_aft = peer->applied;
223 /* Do nothing if self or peer already see member as down */
243 /* mon_apply_domain() : match a peer's domain record against monitor list
246 struct tipc_peer *peer)
248 struct tipc_mon_domain *dom = peer->domain;
253 if (!dom || !peer->is_up)
257 peer->applied = 0;
258 member = peer_nxt(peer);
263 peer->applied++;
268 /* mon_update_local_domain() : update after peer addition/removal/up/down
275 struct tipc_peer *peer = self;
289 peer = peer_nxt(peer);
290 diff |= dom->members[i] != peer->addr;
291 dom->members[i] = peer->addr;
292 map_set(&dom->up_map, i, peer->is_up);
293 cache->members[i] = mon_cpu_to_le32(peer->addr);
306 /* mon_update_neighbors() : update preceding neighbors of added/removed peer
309 struct tipc_peer *peer)
315 mon_apply_domain(mon, peer);
316 peer = peer_prev(peer);
320 /* mon_assign_roles() : reassign peer roles after a network change
321 * The monitor list is consistent at this stage; i.e., each peer is monitoring
326 struct tipc_peer *peer = peer_nxt(head);
330 for (; peer != self; peer = peer_nxt(peer)) {
331 peer->is_local = false;
335 peer->is_head = false;
337 peer->is_local = true;
341 if (!peer->is_up)
343 if (peer->is_head)
345 head = peer;
356 struct tipc_peer *peer, *prev, *head;
363 peer = get_peer(mon, addr);
364 if (!peer)
366 prev = peer_prev(peer);
367 list_del(&peer->list);
368 hlist_del(&peer->hash);
369 kfree(peer->domain);
370 kfree(peer);
379 list_for_each_entry(peer, &self->list, list) {
380 kfree(peer->domain);
381 peer->domain = NULL;
382 peer->applied = 0;
391 struct tipc_peer **peer)
397 *peer = p;
402 /* Add new peer to lookup list */
406 /* Sort new peer into iterator list, in ascending circular order */
426 struct tipc_peer *peer, *head;
429 peer = get_peer(mon, addr);
430 if (!peer && !tipc_mon_add_peer(mon, addr, &peer))
432 peer->is_up = true;
433 head = peer_head(peer);
445 struct tipc_peer *peer, *head;
454 peer = get_peer(mon, addr);
455 if (!peer) {
459 applied = peer->applied;
460 peer->applied = 0;
461 dom = peer->domain;
462 peer->domain = NULL;
463 if (peer->is_head)
464 mon_identify_lost_members(peer, dom, applied);
466 peer->is_up = false;
467 peer->is_head = false;
468 peer->is_local = false;
469 peer->down_cnt = 0;
470 head = peer_head(peer);
487 struct tipc_peer *peer;
508 /* Synch generation numbers with peer if link just came up */
523 peer = get_peer(mon, addr);
524 if (!peer || !peer->is_up)
528 peer->down_cnt = 0;
538 dom = peer->domain;
546 peer->domain = dom;
558 applied_bef = peer->applied;
559 mon_apply_domain(mon, peer);
560 mon_identify_lost_members(peer, &dom_bef, applied_bef);
561 mon_assign_roles(mon, peer_head(peer));
580 /* Send only a dummy record with ack if peer has acked our last sent */
604 struct tipc_peer *peer;
619 peer = get_peer(mon, addr);
620 if (peer) {
622 state->probing |= peer->down_cnt;
623 state->reset |= peer->down_cnt >= MAX_PEER_DOWN_EVENTS;
624 state->monitoring = peer->is_local;
625 state->monitoring |= peer->is_head;
687 struct tipc_peer *peer, *tmp;
695 list_for_each_entry_safe(peer, tmp, &self->list, list) {
696 list_del(&peer->list);
697 hlist_del(&peer->hash);
698 kfree(peer->domain);
699 kfree(peer);
743 static int __tipc_nl_add_monitor_peer(struct tipc_peer *peer,
746 struct tipc_mon_domain *dom = peer->domain;
759 if (nla_put_u32(msg->skb, TIPC_NLA_MON_PEER_ADDR, peer->addr))
761 if (nla_put_u32(msg->skb, TIPC_NLA_MON_PEER_APPLIED, peer->applied))
764 if (peer->is_up)
767 if (peer->is_local)
770 if (peer->is_head)
801 struct tipc_peer *peer;
807 peer = mon->self;
810 if (peer->addr == *prev_node)
815 if (__tipc_nl_add_monitor_peer(peer, msg)) {
816 *prev_node = peer->addr;
820 } while ((peer = peer_nxt(peer)) != mon->self);