* creating builddata.c containing build time information as date+time,
[olsrd.git] / gui / linux-gtk / src / common.h
1 /*
2  * OLSR ad-hoc routing table management protocol GUI front-end
3  * Copyright (C) 2003 Andreas Tønnesen (andreto@ifi.uio.no)
4  *
5  * This file is part of olsr.org.
6  *
7  * uolsrGUI is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * uolsrGUI is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with olsr.org; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  *
21  */
22
23 /*
24  *Andreas Tønmnesen
25  */
26
27 #ifndef _OLSRD_FORNTEND_COMMON
28 #define _OLSRD_FORNTEND_COMMON
29
30 #include <gtk/gtk.h>
31 #include <stdlib.h>
32 #include <netinet/in.h>
33 #include <stdio.h>
34 #include <string.h>
35
36 //#include "interface.h"
37 #include "callbacks.h"
38 //#include "types.h"
39 #include "olsr_protocol.h"
40
41 #define olsrd_version "olsr.org GUI 0.2.7" 
42 #define IPC_INTERVAL 500 //interval for IPC read timeout
43 #define MAXPACKS 20
44 #define BUFFSIZE 512
45
46
47 extern int connected;
48 extern struct timeval hold_time_nodes; /* Timeout for all nodes */
49 extern struct timeval now;
50
51
52 /* Our address */
53 union olsr_ip_addr main_addr;
54 union olsr_ip_addr null_addr;
55
56 int ipversion;
57 int ipsize;
58 char ipv6_buf[100];      /* buffer for IPv6 inet_htop */
59
60 int nodes_timeout;
61
62 int freeze_packets;
63 int display_dec;
64 extern int timeouts;
65
66 /*
67  *Node info
68  */
69
70
71 struct mid
72 {
73   union olsr_ip_addr alias;
74   struct mid *next;
75   struct mid *prev;
76 };
77
78 struct hna
79 {
80   union olsr_ip_addr net;
81   union olsr_ip_addr mask;
82   struct hna *next;
83   struct hna *prev;
84 };
85
86 struct mpr
87 {
88   union olsr_ip_addr addr;
89   struct timeval timer;
90   struct mpr *next;
91   struct mpr *prev;
92 };
93
94
95 struct node
96 {
97   union olsr_ip_addr addr;
98   union olsr_ip_addr gw_addr;
99   int hopcount;
100   int display;
101   char dev[5];
102   struct mid mid;
103   struct hna hna;
104   struct mpr mpr;
105   struct timeval timer;
106   struct node *next;
107   struct node *prev;
108 };
109
110
111
112
113
114
115 /*
116  *Interface public
117  */
118
119
120 GtkWidget * 
121 create_main_window (void);
122
123
124 void
125 packet_list_add(char *, char *, char *);
126
127 void
128 route_list_add(char *, char *, char *, char *);
129
130 int
131 route_list_del(char *);
132
133 void
134 route_list_update(char *);
135
136
137 void
138 set_net_info(gchar *, int);
139
140 void
141 set_net_info_offline();
142
143 void
144 update_nodes_list(struct node *);
145
146 int
147 remove_nodes_list(union olsr_ip_addr *);
148
149 /*
150  *IPC public
151  */
152 int
153 ipc_connect();
154
155 int
156 ipc_close();
157
158 int
159 ipc_read();
160
161 int
162 ipc_send();
163
164
165 char *
166 ip_to_string(union olsr_ip_addr *);
167
168 int
169 gui_itoa(int, char *);
170
171
172 /*
173  *Packet.c public
174  */
175
176 int
177 add_packet_to_buffer(union olsr_message *, int);
178
179
180 union olsr_message *
181 get_packet(int);
182
183
184
185 /*
186  *Nodes.c public
187  */
188
189
190
191 void
192 init_nodes();
193
194 struct node *
195 find_node(char *);
196
197 struct node *
198 find_node_t(union olsr_ip_addr *);
199
200 int
201 update_timer_node(union olsr_ip_addr *, olsr_u8_t);
202
203 int
204 add_hna_node(union olsr_ip_addr *, union olsr_ip_addr *, union olsr_ip_addr *, olsr_u8_t);
205
206 int
207 add_mid_node(union olsr_ip_addr *, union olsr_ip_addr *, olsr_u8_t);
208
209 void
210 init_timer(olsr_u32_t, struct timeval *);
211
212 gint
213 time_out_nodes(gpointer);
214
215 int
216 add_node(union olsr_ip_addr *, olsr_u8_t);
217
218 int
219 add_mpr(union olsr_ip_addr *, union olsr_ip_addr *, struct timeval *);
220
221 int
222 update_timer_mpr(union olsr_ip_addr *, union olsr_ip_addr *, olsr_u8_t);
223
224 int
225 time_out_mprs(union olsr_ip_addr *);
226
227
228
229 #endif