06ab6b47d525b1fb186f0a4a7eb3731be682242c
[olsrd.git] / src / generate_msg.c
1 /*
2  * The olsr.org Optimized Link-State Routing daemon(olsrd)
3  * Copyright (c) 2004, Andreas T√łnnesen(andreto@olsr.org)
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without 
7  * modification, are permitted provided that the following conditions 
8  * are met:
9  *
10  * * Redistributions of source code must retain the above copyright 
11  *   notice, this list of conditions and the following disclaimer.
12  * * Redistributions in binary form must reproduce the above copyright 
13  *   notice, this list of conditions and the following disclaimer in 
14  *   the documentation and/or other materials provided with the 
15  *   distribution.
16  * * Neither the name of olsr.org, olsrd nor the names of its 
17  *   contributors may be used to endorse or promote products derived 
18  *   from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
23  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
24  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
26  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
27  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
28  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
30  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
31  * POSSIBILITY OF SUCH DAMAGE.
32  *
33  * Visit http://www.olsr.org for more information.
34  *
35  * If you find this software useful feel free to make a donation
36  * to the project. For more information see the website or contact
37  * the copyright holders.
38  *
39  * $Id: generate_msg.c,v 1.22 2005/02/02 19:59:18 kattemat Exp $
40  */
41
42 #include "generate_msg.h"
43 #include "defs.h"
44 #include "build_msg.h"
45 #include "packet.h"
46
47 /*
48  * Infomation repositiries
49  */
50 #include "hna_set.h"
51 #include "mid_set.h"
52 #include "tc_set.h"
53 #include "mpr_selector_set.h"
54 #include "duplicate_set.h"
55 #include "neighbor_table.h"
56 #include "link_set.h"
57 #include "two_hop_neighbor_table.h"
58
59
60 static char pulsedata[] = {'\\', '|', '/', '-'};
61 #define PULSE_MAX 4
62 static olsr_u8_t pulse_state = 0;
63
64
65 void
66 generate_hello(void *p)
67 {
68   struct hello_message hellopacket;
69   struct interface *ifn = (struct interface *)p;
70
71   olsr_build_hello_packet(&hellopacket, ifn);
72       
73   if(queue_hello(&hellopacket, ifn))
74     net_output(ifn);
75
76   olsr_free_hello_packet(&hellopacket);
77
78 }
79
80 void
81 generate_tc(void *p)
82 {
83   struct tc_message tcpacket;
84   struct interface *ifn = (struct interface *)p;
85
86   olsr_build_tc_packet(&tcpacket);
87
88   if(queue_tc(&tcpacket, ifn) && TIMED_OUT(fwdtimer[ifn->if_nr]))
89     {
90       set_buffer_timer(ifn);
91     }
92
93   olsr_free_tc_packet(&tcpacket);
94 }
95
96 void
97 generate_mid(void *p)
98 {
99   struct interface *ifn = (struct interface *)p;
100   
101   if(queue_mid(ifn) && TIMED_OUT(fwdtimer[ifn->if_nr]))
102     {
103       set_buffer_timer(ifn);
104     }
105
106 }
107
108
109
110 void
111 generate_hna(void *p)
112 {
113   struct interface *ifn = (struct interface *)p;
114   
115   if(queue_hna(ifn) && TIMED_OUT(fwdtimer[ifn->if_nr]))
116     {
117       set_buffer_timer(ifn);
118     }
119 }
120
121
122 void
123 generate_stdout_pulse(void *foo)
124 {
125   if(olsr_cnf->debug_level == 0)
126     return;
127
128   pulse_state = pulse_state == 3 ? 0 : pulse_state + 1;
129
130   printf("%c\r", pulsedata[pulse_state]);
131
132 }