Lines Matching refs:sr
90 #define service_range_upper(sr) ((sr)->upper)
98 #define service_range_overlap(sr, start, end) \
99 ((sr)->lower <= (end) && (sr)->upper >= (start))
104 * @sr: the service range pointer as a loop cursor
108 #define service_range_foreach_match(sr, sc, start, end) \
109 for (sr = service_range_match_first((sc)->ranges.rb_node, \
112 sr; \
113 sr = service_range_match_next(&(sr)->tree_node, \
128 struct service_range *sr;
149 sr = service_range_entry(n);
150 if (service_range_overlap(sr, start, end))
151 return sr;
155 if (sr->lower <= end &&
177 struct service_range *sr;
199 sr = service_range_entry(p);
200 if (service_range_overlap(sr, start, end))
201 return sr;
204 if (sr->lower <= end) {
274 struct service_range *sr;
276 service_range_foreach_match(sr, sc, lower, upper) {
278 if (sr->lower == lower && sr->upper == upper)
279 return sr;
289 struct service_range *sr;
294 sr = service_range_entry(parent);
295 if (lower == sr->lower && upper == sr->upper)
296 return sr;
297 if (sr->max < upper)
298 sr->max = upper;
299 if (lower <= sr->lower)
304 sr = kzalloc(sizeof(*sr), GFP_ATOMIC);
305 if (!sr)
307 sr->lower = lower;
308 sr->upper = upper;
309 sr->max = upper;
310 INIT_LIST_HEAD(&sr->local_publ);
311 INIT_LIST_HEAD(&sr->all_publ);
312 rb_link_node(&sr->tree_node, parent, n);
313 rb_insert_augmented(&sr->tree_node, &sc->ranges, &sr_callbacks);
314 return sr;
325 struct service_range *sr;
329 sr = tipc_service_create_range(sc, lower, upper);
330 if (!sr)
333 first = list_empty(&sr->all_publ);
336 list_for_each_entry(p, &sr->all_publ, all_publ) {
348 list_add(&p->local_publ, &sr->local_publ);
349 list_add(&p->all_publ, &sr->all_publ);
365 static struct publication *tipc_service_remove_publ(struct service_range *sr,
370 list_for_each_entry(p, &sr->all_publ, all_publ) {
405 struct service_range *sr;
421 service_range_foreach_match(sr, service, ns.lower, ns.upper) {
423 list_for_each_entry(p, &sr->all_publ, all_publ) {
491 struct service_range *sr = NULL;
499 sr = tipc_service_find_range(sc, lower, upper);
500 if (!sr)
502 p = tipc_service_remove_publ(sr, node, key);
507 last = list_empty(&sr->all_publ);
514 if (list_empty(&sr->all_publ)) {
515 rb_erase_augmented(&sr->tree_node, &sc->ranges, &sr_callbacks);
516 kfree(sr);
550 struct service_range *sr;
566 service_range_foreach_match(sr, sc, instance, instance) {
569 list = &sr->local_publ;
574 list_move_tail(&p->local_publ, &sr->local_publ);
575 } else if (legacy && !*dnode && !list_empty(&sr->local_publ)) {
576 list = &sr->local_publ;
579 list_move_tail(&p->local_publ, &sr->local_publ);
581 list = &sr->all_publ;
584 list_move_tail(&p->all_publ, &sr->all_publ);
606 struct service_range *sr;
619 sr = service_range_match_first(sc->ranges.rb_node, instance, instance);
620 if (!sr)
623 list_for_each_entry(p, &sr->all_publ, all_publ) {
632 list_move_tail(&p->all_publ, &sr->all_publ);
645 struct service_range *sr;
655 service_range_foreach_match(sr, sc, lower, upper) {
656 list_for_each_entry(p, &sr->local_publ, local_publ) {
673 struct service_range *sr;
683 service_range_foreach_match(sr, sc, lower, upper) {
684 list_for_each_entry(p, &sr->all_publ, all_publ) {
698 struct service_range *sr;
710 sr = container_of(n, struct service_range, tree_node);
711 list_for_each_entry(p, &sr->all_publ, all_publ) {
877 struct service_range *sr, *tmpr;
881 rbtree_postorder_for_each_entry_safe(sr, tmpr, &sc->ranges, tree_node) {
882 list_for_each_entry_safe(p, tmp, &sr->all_publ, all_publ) {
883 tipc_service_remove_publ(sr, p->node, p->key);
886 rb_erase_augmented(&sr->tree_node, &sc->ranges, &sr_callbacks);
887 kfree(sr);
922 struct service_range *sr,
931 list_for_each_entry(p, &sr->all_publ, all_publ)
934 if (list_entry_is_head(p, &sr->all_publ, all_publ))
937 p = list_first_entry(&sr->all_publ,
942 list_for_each_entry_from(p, &sr->all_publ, all_publ) {
961 if (nla_put_u32(msg->skb, TIPC_NLA_PUBL_LOWER, sr->lower))
963 if (nla_put_u32(msg->skb, TIPC_NLA_PUBL_UPPER, sr->upper))
996 struct service_range *sr;
1001 sr = container_of(n, struct service_range, tree_node);
1002 if (sr->lower < *last_lower)
1004 err = __tipc_nl_add_nametable_publ(msg, sc, sr, last_key);
1006 *last_lower = sr->lower;