gateway: simplify stopping the cleanup timer
[olsrd.git] / lib / tas / src / http.h
1
2 /*
3  * The olsr.org Optimized Link-State Routing daemon (olsrd)
4  *
5  * Copyright (c) 2004, Thomas Lopatic (thomas@olsr.org)
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  * * Redistributions of source code must retain the above copyright
13  *   notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above copyright
15  *   notice, this list of conditions and the following disclaimer in
16  *   the documentation and/or other materials provided with the
17  *   distribution.
18  * * Neither the name of olsr.org, olsrd nor the names of its
19  *   contributors may be used to endorse or promote products derived
20  *   from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGE.
34  *
35  * Visit http://www.olsr.org for more information.
36  *
37  * If you find this software useful feel free to make a donation
38  * to the project. For more information see the website or contact
39  * the copyright holders.
40  *
41  */
42
43 #include "olsrd_plugin.h"       /* union set_plugin_parameter_addon */
44
45 #define CHUNK_SIZE 1024
46
47 struct chunk {
48   struct chunk *next;
49   unsigned char data[CHUNK_SIZE];
50 };
51
52 struct inOutBuff {
53   int off, len;
54   int cont;
55   struct chunk *first, *last;
56 };
57
58 #define BUFF_SIZE 1024
59
60 struct workBuff {
61   struct workBuff *next;
62   unsigned char *data;
63 };
64
65 struct httpHeader {
66   struct httpHeader *next;
67   char *name;
68   char *value;
69 };
70
71 #define STATE_REQUEST 0
72 #define STATE_HEADERS 1
73 #define STATE_RESPONSE 2
74 #define STATE_FILE 3
75 #define STATE_LSP 4
76 #define STATE_DRAIN 5
77
78 struct connInfo {
79   struct fileId *sockId;
80   struct ipAddr *addr;
81
82   int state;
83
84   struct inOutBuff read;
85   struct inOutBuff write[3];
86
87   int which;
88
89   int flags;
90
91   struct workBuff *buff;
92
93   int buffUsed;
94   int buffTotal;
95
96   struct httpHeader *firstHead, *lastHead;
97
98   char *verb;
99   char *host;
100   char *path;
101   char *para;
102   char *proto;
103
104   const char *contType;
105   int contLen;
106
107   struct sessInfo *newSess;
108
109   struct fileId fileId;
110
111   char *authUser;
112   char *authPass;
113 };
114
115 extern void httpInit(void);
116
117 extern int httpSetAddress(const char *addrStr, void *data, set_plugin_parameter_addon addon);
118 extern int httpSetPort(const char *portStr, void *data, set_plugin_parameter_addon addon);
119 extern int httpSetRootDir(const char *rootDir, void *data, set_plugin_parameter_addon addon);
120 extern int httpSetWorkDir(const char *workDir, void *data, set_plugin_parameter_addon addon);
121 extern int httpSetIndexFile(const char *indexFile, void *data, set_plugin_parameter_addon addon);
122 extern int httpSetUser(const char *user, void *data, set_plugin_parameter_addon addon);
123 extern int httpSetPassword(const char *password, void *data, set_plugin_parameter_addon addon);
124 extern int httpSetSessTime(const char *timeStr, void *data, set_plugin_parameter_addon addon);
125 extern int httpSetPubDir(const char *pref, void *data, set_plugin_parameter_addon addon);
126 extern int httpSetQuantum(const char *quantumStr, void *data, set_plugin_parameter_addon addon);
127 extern int httpSetMessTime(const char *timeStr, void *data, set_plugin_parameter_addon addon);
128 extern int httpSetMessLimit(const char *limitStr, void *data, set_plugin_parameter_addon addon);
129
130 extern int httpSetup(void);
131 extern int httpService(int freq);
132 extern void httpShutdown(void);
133 extern void httpAddTasMessage(const char *service, const char *string, const char *from);
134 extern int httpGetTasMessage(const char *service, char **string, char **from);
135
136 extern void writeBuff(struct inOutBuff *write, const unsigned char *data, int dataLen);
137 extern void *allocBuff(struct connInfo *info, int len);
138
139 /*
140  * Local Variables:
141  * c-basic-offset: 2
142  * indent-tabs-mode: nil
143  * End:
144  */