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