• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/net/tipc/

Lines Matching refs:subscriber

45  * struct subscriber - TIPC network topology subscriber
46 * @port_ref: object reference to server port connecting to subscriber
47 * @lock: pointer to spinlock controlling access to subscriber's server port
49 * @subscription_list: list of subscription objects for this subscriber
52 struct subscriber {
65 * @lock: spinlock govering access to subscriber list
79 * subscr_send_event - send a message containing a tipc_event to the subscriber
81 * Note: Must not hold subscriber's server port lock, since tipc_send() will
155 /* Validate server port reference (in case subscriber is terminating) */
172 /* Unlink subscription from subscriber */
176 /* Release subscriber's server port */
180 /* Notify subscriber of timeout */
195 * Called with subscriber port locked.
207 * subscr_terminate - terminate communication with a subscriber
209 * Called with subscriber port locked. Routine must temporarily release lock
217 static void subscr_terminate(struct subscriber *subscriber)
223 /* Invalidate subscriber reference */
225 port_ref = subscriber->port_ref;
226 subscriber->port_ref = 0;
227 spin_unlock_bh(subscriber->lock);
229 /* Sever connection to subscriber */
234 /* Destroy any existing subscriptions for subscriber */
236 list_for_each_entry_safe(sub, sub_temp, &subscriber->subscription_list,
242 dbg("Term: Removing sub %u,%u,%u from subscriber %x list\n",
243 sub->seq.type, sub->seq.lower, sub->seq.upper, subscriber);
247 /* Remove subscriber from topology server's subscriber list */
250 list_del(&subscriber->subscriber_list);
253 /* Reclaim subscriber lock */
255 spin_lock_bh(subscriber->lock);
257 /* Now destroy subscriber */
259 kfree(subscriber);
265 * Called with subscriber port locked. Routine must temporarily release lock
269 * Note that fields of 's' use subscriber's endianness!
273 struct subscriber *subscriber)
288 list_for_each_entry_safe(sub, sub_temp, &subscriber->subscription_list,
308 spin_unlock_bh(subscriber->lock);
311 spin_lock_bh(subscriber->lock);
313 dbg("Cancel: removing sub %u,%u,%u from subscriber %p list\n",
314 sub->seq.type, sub->seq.lower, sub->seq.upper, subscriber);
319 * subscr_subscribe - create subscription for subscriber
321 * Called with subscriber port locked.
325 struct subscriber *subscriber)
332 subscr_cancel(s, subscriber);
341 subscr_terminate(subscriber);
350 subscr_terminate(subscriber);
365 subscr_terminate(subscriber);
370 list_add(&sub->subscription_list, &subscriber->subscription_list);
371 sub->server_ref = subscriber->port_ref;
384 * subscr_conn_shutdown_event - handle termination request from subscriber
386 * Called with subscriber's server port unlocked.
396 struct subscriber *subscriber = usr_handle;
402 subscriber_lock = subscriber->lock;
403 subscr_terminate(subscriber);
408 * subscr_conn_msg_event - handle new subscription request from subscriber
410 * Called with subscriber's server port unlocked.
419 struct subscriber *subscriber = usr_handle;
424 * Lock subscriber's server port (& make a local copy of lock pointer,
425 * in case subscriber is deleted while processing subscription request)
431 subscriber_lock = subscriber->lock;
434 subscr_terminate(subscriber);
437 sub = subscr_subscribe((struct tipc_subscr *)data, subscriber);
450 * the subscriber connection cannot be broken, and
462 * subscr_named_msg_event - handle request to establish a new subscriber
476 struct subscriber *subscriber;
479 /* Create subscriber object */
481 subscriber = kzalloc(sizeof(struct subscriber), GFP_ATOMIC);
482 if (subscriber == NULL) {
486 INIT_LIST_HEAD(&subscriber->subscription_list);
487 INIT_LIST_HEAD(&subscriber->subscriber_list);
489 /* Create server port & establish connection to subscriber */
492 subscriber,
501 &subscriber->port_ref);
502 if (subscriber->port_ref == 0) {
504 kfree(subscriber);
507 tipc_connect2port(subscriber->port_ref, orig);
511 subscriber->lock = tipc_port_lock(subscriber->port_ref)->publ.lock;
513 /* Add subscriber to topology server's subscriber list */
516 list_add(&subscriber->subscriber_list, &topsrv.subscriber_list);
521 server_port_ref = subscriber->port_ref;
522 spin_unlock_bh(subscriber->lock);
531 subscr_conn_msg_event(subscriber, server_port_ref,
583 struct subscriber *subscriber;
584 struct subscriber *subscriber_temp;
589 list_for_each_entry_safe(subscriber, subscriber_temp,
592 subscriber_lock = subscriber->lock;
594 subscr_terminate(subscriber);