a6bf76e8488f373cdf40b9e9a32ebec68ac1b052
[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.23 2005/02/27 18:39:43 kattemat Exp $
40  */
41
42 #include "generate_msg.h"
43 #include "defs.h"
44 #include "olsr.h"
45 #include "build_msg.h"
46 #include "packet.h"
47
48 /*
49  * Infomation repositiries
50  */
51 #include "hna_set.h"
52 #include "mid_set.h"
53 #include "tc_set.h"
54 #include "mpr_selector_set.h"
55 #include "duplicate_set.h"
56 #include "neighbor_table.h"
57 #include "link_set.h"
58 #include "two_hop_neighbor_table.h"
59
60
61 static char pulsedata[] = {'\\', '|', '/', '-'};
62 #define PULSE_MAX 4
63 static olsr_u8_t pulse_state = 0;
64
65
66 void
67 generate_hello(void *p)
68 {
69   struct hello_message hellopacket;
70   struct interface *ifn = (struct interface *)p;
71
72   olsr_build_hello_packet(&hellopacket, ifn);
73       
74   if(queue_hello(&hellopacket, ifn))
75     net_output(ifn);
76
77   olsr_free_hello_packet(&hellopacket);
78
79 }
80
81 void
82 generate_tc(void *p)
83 {
84   struct tc_message tcpacket;
85   struct interface *ifn = (struct interface *)p;
86
87   olsr_build_tc_packet(&tcpacket);
88
89   if(queue_tc(&tcpacket, ifn) && TIMED_OUT(fwdtimer[ifn->if_nr]))
90     {
91       set_buffer_timer(ifn);
92     }
93
94   olsr_free_tc_packet(&tcpacket);
95 }
96
97 void
98 generate_mid(void *p)
99 {
100   struct interface *ifn = (struct interface *)p;
101   
102   if(queue_mid(ifn) && TIMED_OUT(fwdtimer[ifn->if_nr]))
103     {
104       set_buffer_timer(ifn);
105     }
106
107 }
108
109
110
111 void
112 generate_hna(void *p)
113 {
114   struct interface *ifn = (struct interface *)p;
115   
116   if(queue_hna(ifn) && TIMED_OUT(fwdtimer[ifn->if_nr]))
117     {
118       set_buffer_timer(ifn);
119     }
120 }
121
122
123 void
124 generate_stdout_pulse(void *foo)
125 {
126   if(olsr_cnf->debug_level == 0)
127     return;
128
129   pulse_state = pulse_state == 3 ? 0 : pulse_state + 1;
130
131   printf("%c\r", pulsedata[pulse_state]);
132
133 }