Kannel: Open Source WAP and SMS gateway  svn-r5335
wtls.h
Go to the documentation of this file.
1 /* ====================================================================
2  * The Kannel Software License, Version 1.0
3  *
4  * Copyright (c) 2001-2018 Kannel Group
5  * Copyright (c) 1998-2001 WapIT Ltd.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Kannel Group (http://www.kannel.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Kannel" and "Kannel Group" must not be used to
28  * endorse or promote products derived from this software without
29  * prior written permission. For written permission, please
30  * contact org@kannel.org.
31  *
32  * 5. Products derived from this software may not be called "Kannel",
33  * nor may "Kannel" appear in their name, without prior written
34  * permission of the Kannel Group.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS
40  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
41  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
42  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
43  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
44  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
45  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
46  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many
50  * individuals on behalf of the Kannel Group. For more information on
51  * the Kannel Group, please see <http://www.kannel.org/>.
52  *
53  * Portions of this software are based upon software originally written at
54  * WapIT Ltd., Helsinki, Finland for the Kannel project.
55  */
56 
57 /*
58  * WTLS Server Header
59  *
60  * Nick Clarey <nclarey@3glab.com>
61  * Nikos Balkanas, InAccess Networks (2009)
62  */
63 
64 #ifndef WTLS_H
65 #define WTLS_H
66 
67 typedef struct WTLSMachine WTLSMachine;
68 
69 #include "gw/msg.h"
70 #include "wap/wap_events.h"
71 #include "wap/wtls_pdu.h"
72 
73 typedef void wtls_dispatch_func_t(Msg *msg);
74 /*
75  * WTLS Server machine states and WTLS machine.
76  * See file wtls_state-decl.h for comments. Note that we must define macro
77  * ROW to produce an empty string.
78  */
80 #define STATE_NAME(state) state,
81 #define ROW(state, event, condition, action, next_state)
82 #include "wtls_state-decl.h"
83  serv_states_count
84 };
85 
86 typedef enum serv_states serv_states;
87 
88 /*
89  * See files wtls_machine-decl.h for comments. We define one macro for
90  * every separate type.
91  */
92 struct WTLSMachine {
93  unsigned long mid;
94 #define ENUM(name) serv_states name;
95 #define ADDRTUPLE(name) WAPAddrTuple *name;
96 #define INTEGER(name) int name;
97 #define OCTSTR(name) Octstr *name;
98 #define MACHINE(field) field
99 #define PDULIST(name) List *name;
100 #include "wtls_machine-decl.h"
101 };
102 
103 /*
104  * Initialize the WTLS server.
105  */
106 void wtls_init(wtls_dispatch_func_t *responder_dispatch);
107 
108 /*
109  * Shut down the WTLS server machines. MUST be called after the subsystem isn't
110  * used anymore.
111  */
112 void wtls_shutdown(void);
113 
114 /*
115  * Transfers control of an event to the WTLS server machine subsystem.
116  */
117 void wtls_dispatch_event(WAPEvent * event);
118 
119 /*
120  * Return control to WTLS server machine subsystem
121  */
122 void wtls_dispatch_resp(WAPEvent * event);
123 
124 /*
125  * Handles possible concatenated messages. Returns a list of wap events.
126  * Real unpacking is done by an internal function.
127  */
129 
130 int wtls_get_address_tuple(long mid, WAPAddrTuple ** tuple);
131 
132 #endif
void wtls_dispatch_event(WAPEvent *event)
unsigned long mid
Definition: wtls.h:93
void wtls_shutdown(void)
void wtls_init(wtls_dispatch_func_t *responder_dispatch)
Definition: msg.h:79
void wtls_dispatch_resp(WAPEvent *event)
serv_states
Definition: wtls.h:79
int wtls_get_address_tuple(long mid, WAPAddrTuple **tuple)
WAPEvent * wtls_unpack_wdp_datagram(Msg *msg)
static XMLRPCDocument * msg
Definition: test_xmlrpc.c:86
void wtls_dispatch_func_t(Msg *msg)
Definition: wtls.h:73
See file LICENSE for details about the license agreement for using, modifying, copying or deriving work from this software.