Lines Matching refs:sr

91 #define service_range_upper(sr) ((sr)->upper)
99 #define service_range_overlap(sr, start, end) \
100 ((sr)->lower <= (end) && (sr)->upper >= (start))
105 * @sr: the service range pointer as a loop cursor
110 #define service_range_foreach_match(sr, sc, start, end) \
111 for (sr = service_range_match_first((sc)->ranges.rb_node, \
114 sr; \
115 sr = service_range_match_next(&(sr)->tree_node, \
131 struct service_range *sr;
152 sr = service_range_entry(n);
153 if (service_range_overlap(sr, start, end))
154 return sr;
158 if (sr->lower <= end &&
181 struct service_range *sr;
203 sr = service_range_entry(p);
204 if (service_range_overlap(sr, start, end))
205 return sr;
208 if (sr->lower <= end) {
238 p->sr = ua->sr;
271 service->type = ua->sr.type;
275 hd = &nt->services[hash(ua->sr.type)];
285 struct service_range *sr;
287 service_range_foreach_match(sr, sc, ua->sr.lower, ua->sr.upper) {
289 if (sr->lower == ua->sr.lower && sr->upper == ua->sr.upper)
290 return sr;
300 struct service_range *sr;
301 u32 lower = p->sr.lower;
302 u32 upper = p->sr.upper;
307 sr = service_range_entry(parent);
308 if (lower == sr->lower && upper == sr->upper)
309 return sr;
310 if (sr->max < upper)
311 sr->max = upper;
312 if (lower <= sr->lower)
317 sr = kzalloc(sizeof(*sr), GFP_ATOMIC);
318 if (!sr)
320 sr->lower = lower;
321 sr->upper = upper;
322 sr->max = upper;
323 INIT_LIST_HEAD(&sr->local_publ);
324 INIT_LIST_HEAD(&sr->all_publ);
325 rb_link_node(&sr->tree_node, parent, n);
326 rb_insert_augmented(&sr->tree_node, &sc->ranges, &sr_callbacks);
327 return sr;
335 struct service_range *sr;
343 sr = tipc_service_create_range(sc, p);
344 if (!sr)
347 first = list_empty(&sr->all_publ);
350 list_for_each_entry(_p, &sr->all_publ, all_publ) {
353 p->sr.type, p->sr.lower, p->sr.upper,
360 list_add(&p->local_publ, &sr->local_publ);
361 list_add(&p->all_publ, &sr->all_publ);
372 p->sr.type, p->sr.lower, p->sr.upper);
426 struct service_range *sr;
440 service_range_foreach_match(sr, service, lower, upper) {
442 list_for_each_entry(p, &sr->all_publ, all_publ) {
468 service_head = &nt->services[hash(ua->sr.type)];
470 if (service->type == ua->sr.type)
504 struct service_range *sr;
513 sr = tipc_service_find_range(sc, ua);
514 if (!sr)
516 p = tipc_service_remove_publ(sr, sk, key);
521 last = list_empty(&sr->all_publ);
527 if (list_empty(&sr->all_publ)) {
528 rb_erase_augmented(&sr->tree_node, &sc->ranges, &sr_callbacks);
529 kfree(sr);
542 ua->sr.type, ua->sr.lower, ua->sr.upper,
634 struct service_range *sr;
647 sr = service_range_match_first(sc->ranges.rb_node, inst, inst);
648 if (!sr)
651 list_for_each_entry(p, &sr->all_publ, all_publ) {
660 list_move_tail(&p->all_publ, &sr->all_publ);
678 struct service_range *sr;
689 service_range_foreach_match(sr, sc, ua->sr.lower, ua->sr.upper) {
690 list_for_each_entry(p, &sr->local_publ, local_publ) {
708 struct service_range *sr;
718 service_range_foreach_match(sr, sc, ua->sr.lower, ua->sr.upper) {
719 list_for_each_entry(p, &sr->all_publ, all_publ) {
733 struct service_range *sr;
745 sr = container_of(n, struct service_range, tree_node);
746 list_for_each_entry(p, &sr->all_publ, all_publ) {
750 p->sr.lower);
913 struct service_range *sr, *tmpr;
917 rbtree_postorder_for_each_entry_safe(sr, tmpr, &sc->ranges, tree_node) {
918 list_for_each_entry_safe(p, tmp, &sr->all_publ, all_publ) {
919 tipc_service_remove_publ(sr, &p->sk, p->key);
922 rb_erase_augmented(&sr->tree_node, &sc->ranges, &sr_callbacks);
923 kfree(sr);
958 struct service_range *sr,
967 list_for_each_entry(p, &sr->all_publ, all_publ)
970 if (list_entry_is_head(p, &sr->all_publ, all_publ))
973 p = list_first_entry(&sr->all_publ,
978 list_for_each_entry_from(p, &sr->all_publ, all_publ) {
997 if (nla_put_u32(msg->skb, TIPC_NLA_PUBL_LOWER, sr->lower))
999 if (nla_put_u32(msg->skb, TIPC_NLA_PUBL_UPPER, sr->upper))
1032 struct service_range *sr;
1037 sr = container_of(n, struct service_range, tree_node);
1038 if (sr->lower < *last_lower)
1040 err = __tipc_nl_add_nametable_publ(msg, sc, sr, last_key);
1042 *last_lower = sr->lower;