Break code into multiple source files
[olsrd.git] / lib / quagga / src / plugin.c
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               : plugin.c
17  * Description        : functions to set zebra plugin parameters
18  * ------------------------------------------------------------------------- */
19
20 #include "defs.h"
21 #include "olsr.h"
22 #include "log.h"
23
24 #include "common.h"
25 #include "packet.h"
26 #include "plugin.h"
27
28 static void *my_realloc(void *, size_t, const char *);
29
30 static void
31 *my_realloc(void *buf, size_t s, const char *c)
32 {
33   buf = realloc(buf, s);
34   if (!buf) {
35     OLSR_PRINTF(1, "(QUAGGA) OUT OF MEMORY: %s\n", strerror(errno));
36     olsr_syslog(OLSR_LOG_ERR, "olsrd: out of memory!: %m\n");
37     olsr_exit(c, EXIT_FAILURE);
38   }
39   return buf;
40 }
41
42 int
43 zebra_redistribute(unsigned char type)
44 {
45
46   if (type > ZEBRA_ROUTE_MAX - 1)
47     return -1;
48   zebra.redistribute[type] = 1;
49
50   return 0;
51
52 }
53
54 void
55 zebra_export_routes(unsigned char t)
56 {
57   if (t)
58     zebra.options |= OPTION_EXPORT;
59   else
60     zebra.options &= ~OPTION_EXPORT;
61 }
62
63 void
64 zebra_olsr_distance(unsigned char dist)
65 {
66   zebra.distance = dist;
67 }
68
69 void
70 zebra_olsr_localpref(void)
71 {
72   zebra.flags &= ZEBRA_FLAG_SELECTED;
73 }
74
75 void
76 zebra_sockpath(char *sockpath)
77 {
78   size_t len;
79
80   len = strlen(sockpath) + 1;
81   zebra.sockpath = my_realloc(zebra.sockpath, len, "zebra_sockpath");
82   memcpy(zebra.sockpath, sockpath, len);
83
84 }
85
86 void
87 zebra_port(unsigned int port)
88 {
89
90   zebra.port = port;
91
92 }
93
94 void
95 zebra_version(char version)
96 {
97
98   zebra.version = version;
99
100 }
101
102 /*
103  * Local Variables:
104  * c-basic-offset: 2
105  * indent-tabs-mode: nil
106  * End:
107  */