This plugin now includes datatypes directly from olsrd source
[olsrd.git] / lib / dyn_gw / src / olsrd_plugin.h
1
2 /*
3  * The olsr.org Optimized Link-State Routing daemon(olsrd)
4  * Copyright (c) 2004, Andreas T√łnnesen(andreto@olsr.org)
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without 
8  * modification, are permitted provided that the following conditions 
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright 
12  *   notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above copyright 
14  *   notice, this list of conditions and the following disclaimer in 
15  *   the documentation and/or other materials provided with the 
16  *   distribution.
17  * * Neither the name of olsr.org, olsrd nor the names of its 
18  *   contributors may be used to endorse or promote products derived 
19  *   from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
25  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
32  * POSSIBILITY OF SUCH DAMAGE.
33  *
34  * Visit http://www.olsr.org for more information.
35  *
36  * If you find this software useful feel free to make a donation
37  * to the project. For more information see the website or contact
38  * the copyright holders.
39  *
40  * $Id: olsrd_plugin.h,v 1.11 2005/02/19 17:56:05 kattemat Exp $
41  */
42
43 #ifndef _OLSRD_PLUGIN_DEFS
44 #define _OLSRD_PLUGIN_DEFS
45
46
47 #include <sys/socket.h>
48 #include <netinet/in.h>
49 #include <arpa/inet.h>
50 #include <sys/time.h>
51 #include <time.h>
52 #include <math.h>
53
54 #include "olsr_plugin_io.h"
55 #include "olsr_protocol.h"
56
57 #define PLUGIN_NAME    "OLSRD dynamic gateway plugin"
58 #define PLUGIN_VERSION "0.4"
59 #define PLUGIN_AUTHOR   "Various artists"
60 #define MOD_DESC PLUGIN_NAME " " PLUGIN_VERSION " by " PLUGIN_AUTHOR
61 #define PLUGIN_INTERFACE_VERSION 2
62
63 /* hna_netmask (declared in packet.h) */
64 union hna_netmask
65 {
66   olsr_u32_t v4;
67   olsr_u16_t v6;
68 };
69
70
71 /****************************************************************************
72  *                Function pointers to functions in olsrd                   *
73  *              These allow direct access to olsrd functions                *
74  ****************************************************************************/
75
76 /* The multi-purpose funtion. All other functions are fetched trough this */
77 int (*olsr_plugin_io)(int, void *, size_t);
78
79 /* Register a scheduled event */
80 int (*olsr_register_scheduler_event)(void (*)(void), void*, float, float, olsr_u8_t *);
81
82 /* olsrd printf wrapper */
83 int (*olsr_printf)(int, char *, ...);
84
85 /* Add hna net IPv4 */
86 void (*add_local_hna4_entry)(union olsr_ip_addr *, union hna_netmask *);
87
88 /* Remove hna net IPv4 */
89 int (*remove_local_hna4_entry)(union olsr_ip_addr *, union hna_netmask *);
90
91
92 /****************************************************************************
93  *                             Data from olsrd                              *
94  *           NOTE THAT POINTERS POINT TO THE DATA USED BY OLSRD!            *
95  *               NEVER ALTER DATA POINTED TO BY THESE POINTERS              * 
96  *                   UNLESS YOU KNOW WHAT YOU ARE DOING!!!                  *
97  ****************************************************************************/
98
99 /* These two are set automatically by olsrd at load time */
100 int                ipversion;  /* IPversion in use */
101 union olsr_ip_addr *main_addr; /* Main address */
102
103
104 size_t             ipsize;     /* Size of the ipadresses used */
105 struct timeval     *now;       /* the olsrds schedulers idea of current time */
106
107
108 /****************************************************************************
109  *                Functions that the plugin MUST provide                    *
110  ****************************************************************************/
111
112
113 /* Initialization function */
114 int
115 olsr_plugin_init(void);
116
117 /* Destructor function */
118 void
119 olsr_plugin_exit(void);
120
121 /* Mulitpurpose funtion */
122 int
123 plugin_io(int, void *, size_t);
124
125 int
126 register_olsr_param(char *, char *);
127
128 int 
129 get_plugin_interface_version(void);
130
131 #endif