xref: /linux/net/tipc/subscr.h (revision 859fc7c0cedca0f84dac471fa31e9512259e1ecd)
1b97bf3fdSPer Liden /*
25b06c85cSAllan Stephens  * net/tipc/subscr.h: Include file for TIPC network topology service
3b97bf3fdSPer Liden  *
49da1c8b6SPer Liden  * Copyright (c) 2003-2006, Ericsson AB
513a2e898SYing Xue  * Copyright (c) 2005-2007, 2012-2013, Wind River Systems
6b97bf3fdSPer Liden  * All rights reserved.
7b97bf3fdSPer Liden  *
8b97bf3fdSPer Liden  * Redistribution and use in source and binary forms, with or without
9b97bf3fdSPer Liden  * modification, are permitted provided that the following conditions are met:
10b97bf3fdSPer Liden  *
119ea1fd3cSPer Liden  * 1. Redistributions of source code must retain the above copyright
129ea1fd3cSPer Liden  *    notice, this list of conditions and the following disclaimer.
139ea1fd3cSPer Liden  * 2. Redistributions in binary form must reproduce the above copyright
149ea1fd3cSPer Liden  *    notice, this list of conditions and the following disclaimer in the
159ea1fd3cSPer Liden  *    documentation and/or other materials provided with the distribution.
169ea1fd3cSPer Liden  * 3. Neither the names of the copyright holders nor the names of its
179ea1fd3cSPer Liden  *    contributors may be used to endorse or promote products derived from
189ea1fd3cSPer Liden  *    this software without specific prior written permission.
199ea1fd3cSPer Liden  *
209ea1fd3cSPer Liden  * Alternatively, this software may be distributed under the terms of the
219ea1fd3cSPer Liden  * GNU General Public License ("GPL") version 2 as published by the Free
229ea1fd3cSPer Liden  * Software Foundation.
23b97bf3fdSPer Liden  *
24b97bf3fdSPer Liden  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25b97bf3fdSPer Liden  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26b97bf3fdSPer Liden  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27b97bf3fdSPer Liden  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28b97bf3fdSPer Liden  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29b97bf3fdSPer Liden  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30b97bf3fdSPer Liden  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31b97bf3fdSPer Liden  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32b97bf3fdSPer Liden  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33b97bf3fdSPer Liden  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34b97bf3fdSPer Liden  * POSSIBILITY OF SUCH DAMAGE.
35b97bf3fdSPer Liden  */
36b97bf3fdSPer Liden 
37b97bf3fdSPer Liden #ifndef _TIPC_SUBSCR_H
38b97bf3fdSPer Liden #define _TIPC_SUBSCR_H
39b97bf3fdSPer Liden 
4013a2e898SYing Xue #include "server.h"
4113a2e898SYing Xue 
42*859fc7c0SYing Xue #define TIPC_MAX_SUBSCRIPTIONS	65535
43*859fc7c0SYing Xue #define TIPC_MAX_PUBLICATIONS	65535
44*859fc7c0SYing Xue 
45fead3909SPaul Gortmaker struct tipc_subscription;
4613a2e898SYing Xue struct tipc_subscriber;
47e15f8804SAllan Stephens 
48b97bf3fdSPer Liden /**
49fead3909SPaul Gortmaker  * struct tipc_subscription - TIPC network topology subscription object
5013a2e898SYing Xue  * @subscriber: pointer to its subscriber
51b97bf3fdSPer Liden  * @seq: name sequence associated with subscription
52b97bf3fdSPer Liden  * @timeout: duration of subscription (in ms)
53b97bf3fdSPer Liden  * @filter: event filtering to be done for subscription
545b06c85cSAllan Stephens  * @timer: timer governing subscription duration (optional)
555b06c85cSAllan Stephens  * @nameseq_list: adjacent subscriptions in name sequence's subscription list
565b06c85cSAllan Stephens  * @subscription_list: adjacent subscriptions in subscriber's subscription list
5728353e7fSAllan Stephens  * @server_ref: object reference of server port associated with subscription
58db5a753bSNeil Horman  * @swap: indicates if subscriber uses opposite endianness in its messages
59b97bf3fdSPer Liden  * @evt: template for events generated by subscription
60b97bf3fdSPer Liden  */
61fead3909SPaul Gortmaker struct tipc_subscription {
6213a2e898SYing Xue 	struct tipc_subscriber *subscriber;
63b97bf3fdSPer Liden 	struct tipc_name_seq seq;
642f55c437SYing Xue 	unsigned long timeout;
65b97bf3fdSPer Liden 	u32 filter;
665b06c85cSAllan Stephens 	struct timer_list timer;
675b06c85cSAllan Stephens 	struct list_head nameseq_list;
685b06c85cSAllan Stephens 	struct list_head subscription_list;
69db5a753bSNeil Horman 	int swap;
70b97bf3fdSPer Liden 	struct tipc_event evt;
71b97bf3fdSPer Liden };
72b97bf3fdSPer Liden 
73ae8509c4SPaul Gortmaker int tipc_subscr_overlap(struct tipc_subscription *sub, u32 found_lower,
74b97bf3fdSPer Liden 			u32 found_upper);
75b97bf3fdSPer Liden 
76ae8509c4SPaul Gortmaker void tipc_subscr_report_overlap(struct tipc_subscription *sub, u32 found_lower,
77ae8509c4SPaul Gortmaker 				u32 found_upper, u32 event, u32 port_ref,
78ae8509c4SPaul Gortmaker 				u32 node, int must);
79b97bf3fdSPer Liden 
804323add6SPer Liden int tipc_subscr_start(void);
81b97bf3fdSPer Liden 
824323add6SPer Liden void tipc_subscr_stop(void);
83b97bf3fdSPer Liden 
84b97bf3fdSPer Liden #endif
85