Experimental link quality metric based on a link's packet loss. Define
[olsrd.git] / src / generate_msg.c
1 /*
2  * OLSR ad-hoc routing table management protocol
3  * Copyright (C) 2003 Andreas T√łnnesen (andreto@ifi.uio.no)
4  *
5  * This file is part of the olsr.org OLSR daemon.
6  *
7  * olsr.org is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * olsr.org is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with olsr.org; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  * 
21  * 
22  * $Id: generate_msg.c,v 1.10 2004/10/20 17:11:33 tlopatic Exp $
23  *
24  */
25
26 #include "generate_msg.h"
27 #include "defs.h"
28 #include "build_msg.h"
29 #include "packet.h"
30
31 /*
32  * Infomation repositiries
33  */
34 #include "hna_set.h"
35 #include "mid_set.h"
36 #include "tc_set.h"
37 #include "mpr_selector_set.h"
38 #include "duplicate_set.h"
39 #include "neighbor_table.h"
40 #if defined USE_LINK_QUALITY
41 #include "link_set.h"
42 #endif
43
44
45 void
46 generate_hello(void *p)
47 {
48   struct hello_message hellopacket;
49   struct interface *ifn = (struct interface *)p;
50
51   olsr_build_hello_packet(&hellopacket, ifn);
52   hello_build(&hellopacket, ifn);
53       
54   if(net_output_pending(ifn))
55     net_output(ifn);
56 }
57
58 void
59 generate_tc(void *p)
60 {
61   struct tc_message tcpacket;
62   struct interface *ifn = (struct interface *)p;
63
64   olsr_build_tc_packet(&tcpacket);
65   tc_build(&tcpacket, ifn);
66
67   if(net_output_pending(ifn) && TIMED_OUT(&fwdtimer[ifn->if_nr]))
68     {
69       set_buffer_timer(ifn);
70     }
71 }
72
73
74 void
75 generate_mid(void *p)
76 {
77   struct interface *ifn = (struct interface *)p;
78   mid_build(ifn);
79   
80   if(net_output_pending(ifn) && TIMED_OUT(&fwdtimer[ifn->if_nr]))
81     {
82       set_buffer_timer(ifn);
83     }
84
85 }
86
87
88
89 void
90 generate_hna(void *p)
91 {
92   struct interface *ifn = (struct interface *)p;
93   hna_build(ifn);
94   
95   if(net_output_pending(ifn) && TIMED_OUT(&fwdtimer[ifn->if_nr]))
96     {
97       set_buffer_timer(ifn);
98     }
99 }
100
101
102 /**
103  *Displays various tables depending on debuglevel
104  */
105 void
106 generate_tabledisplay(void *foo)
107 {
108   if(olsr_cnf->debug_level > 0) 
109     {
110 #if defined USE_LINK_QUALITY
111       olsr_print_link_set();
112 #endif
113       olsr_print_neighbor_table();
114       
115       if(olsr_cnf->debug_level > 1)
116         {
117           olsr_print_tc_table();
118           if(olsr_cnf->debug_level > 2) 
119             {
120               olsr_print_mprs_set();
121               olsr_print_mid_set();
122               olsr_print_duplicate_table();
123             }
124         }
125     }
126 }