4334ebbf3d8991d75f99d748dd6671da67ad392f
[olsrd.git] / lib / quagga / src / quagga.h
1 /***************************************************************************
2  projekt              : olsrd-quagga
3  file                 : quagga.h  
4  usage                : header for quagga.c
5  copyright            : (C) 2006 by Immo 'FaUl' Wehrenberg
6  e-mail               : immo@chaostreff-dortmund.de
7  ***************************************************************************/
8
9 /***************************************************************************
10  *                                                                         *
11  *   This program is free software; you can redistribute it and/or modify  *
12  *   it under the terms of the GNU General Public License version 2 as     *
13  *   published by the Free Software Foundation.                            *
14  *                                                                         *
15  ***************************************************************************/
16
17 #include <stdint.h>
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include "routing_table.h"
21 #define HAVE_SOCKLEN_T
22 #include <quagga/zebra.h>
23
24 #ifndef ZEBRA_PORT
25 #define ZEBRA_PORT 2600
26 #endif
27
28 #ifdef ZEBRA_HEADER_MARKER
29 #ifndef ZSERV_VERSION
30 #define ZSERV_VERSION 1
31 #endif
32 #endif
33
34 struct ipv4_route {
35   uint8_t type;
36   uint8_t flags;
37   uint8_t message;
38   uint8_t prefixlen;
39   uint32_t prefix;
40   uint8_t nh_count;
41   struct {
42     uint8_t type;
43     union {
44       uint32_t v4;
45     } payload;
46   } *nexthops;
47   uint8_t ind_num;
48   uint32_t *index;
49   uint32_t metric;
50   uint8_t distance;
51   struct ipv4_route *next;
52 };
53
54 void init_zebra (void);
55 void zebra_cleanup (void);
56 unsigned char zebra_send_command (unsigned char, unsigned char *, int );
57 int zebra_add_v4_route (const struct ipv4_route r);
58 int zebra_delete_v4_route (const struct ipv4_route r);
59 void zebra_check (void*);
60 int zebra_parse_packet (unsigned char*, ssize_t);
61 int zebra_redistribute (unsigned char);
62 int zebra_disable_redistribute (unsigned char);
63 int add_hna4_route (struct ipv4_route);
64 int delete_hna4_route (struct ipv4_route);
65 void *my_realloc (void *, size_t, const char *);
66 int zebra_add_olsr_v4_route (const struct rt_entry *);
67 int zebra_del_olsr_v4_route (const struct rt_entry *);
68 void zebra_olsr_localpref (void);
69 void zebra_olsr_distance (unsigned char);
70 void zebra_export_routes(unsigned char);