bf1ce7a2e132bdcd32e77228b39f53f2e7ab95b0
[olsrd.git] / lib / quagga / src / quagga.h
1 /*
2  * OLSRd Quagga plugin
3  *
4  * Copyright (C) 2006-2008 Immo 'FaUl' Wehrenberg <immo@chaostreff-dortmund.de>
5  * Copyright (C) 2007-2010 Vasilis Tsiligiannis <acinonyxs@yahoo.gr>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License version 2 as
9  * published by the Free Software Foundation or - at your option - under
10  * the terms of the GNU General Public Licence version 2 but can be
11  * linked to any BSD-Licenced Software with public available sourcecode
12  *
13  */
14
15 /* -------------------------------------------------------------------------
16  * File               : quagga.h
17  * Description        : header file for quagga.c
18  * ------------------------------------------------------------------------- */
19
20 #include "routing_table.h" /* rt_entry */
21 #include "olsr_types.h" /* olsr_ip_addr */
22
23 #include <stdint.h>
24 #include <stdlib.h>
25
26 #define HAVE_SOCKLEN_T
27
28 /* Zebra version */
29 #ifndef ZEBRA_HEADER_MARKER
30 #define ZEBRA_HEADER_MARKER 255
31 #endif
32
33 #ifndef ZSERV_VERSION
34 #define ZSERV_VERSION 1
35 #endif
36
37 /* Zebra socket */
38 #ifndef ZEBRA_SOCKPATH
39 #define ZEBRA_SOCKPATH "/var/run/quagga/zserv.api"
40 #endif
41
42 /* Zebra packet size */
43 #define ZEBRA_MAX_PACKET_SIZ            4096
44
45 /* Zebra message types */
46 #define ZEBRA_IPV4_ROUTE_ADD            7
47 #define ZEBRA_IPV4_ROUTE_DELETE         8
48 #define ZEBRA_REDISTRIBUTE_ADD          11
49 #define ZEBRA_REDISTRIBUTE_DELETE       12
50 #define ZEBRA_MESSAGE_MAX               23
51
52 /* Zebra route types */
53 #define ZEBRA_ROUTE_OLSR                11
54 #define ZEBRA_ROUTE_MAX                 13
55
56 /* Zebra flags */
57 #define ZEBRA_FLAG_SELECTED             0x10
58
59 /* Zebra nexthop flags */
60 #define ZEBRA_NEXTHOP_IFINDEX           1
61 #define ZEBRA_NEXTHOP_IPV4              3
62
63 /* Zebra message flags */
64 #define ZAPI_MESSAGE_NEXTHOP            0x01
65 #define ZAPI_MESSAGE_IFINDEX            0x02
66 #define ZAPI_MESSAGE_DISTANCE           0x04
67 #define ZAPI_MESSAGE_METRIC             0x08
68
69 /* Buffer size */
70 #define BUFSIZE 1024
71
72 /* Quagga plugin flags */
73 #define STATUS_CONNECTED 1
74 #define OPTION_EXPORT 1
75
76 struct zebra_route {
77   unsigned char type;
78   unsigned char flags;
79   unsigned char message;
80   unsigned char prefixlen;
81   union olsr_ip_addr prefix;
82   unsigned char nexthop_num;
83   union olsr_ip_addr *nexthop;
84   unsigned char ifindex_num;
85   uint32_t *ifindex;
86   uint32_t metric;
87   uint8_t distance;
88 };
89
90 void init_zebra(void);
91 void zebra_cleanup(void);
92 void zebra_parse(void*);
93 int zebra_redistribute(unsigned char);
94 int zebra_add_route(const struct rt_entry *);
95 int zebra_del_route(const struct rt_entry *);
96 void zebra_olsr_localpref(void);
97 void zebra_olsr_distance(unsigned char);
98 void zebra_export_routes(unsigned char);
99 void zebra_sockpath(char *);
100 void zebra_port(unsigned int);
101 void zebra_version(char);
102
103 /*
104  * Local Variables:
105  * c-basic-offset: 2
106  * indent-tabs-mode: nil
107  * End:
108  */