Renamed package name from bmx6-qmp to bmx6 and bmx6-luci to luci-app-bmx6
[feed/routing.git] / packages / qmp-quagga / patches / 120-quagga_manet.patch
1 --- a/lib/log.c
2 +++ b/lib/log.c
3 @@ -929,13 +929,19 @@ proto_redistnum(int afi, const char *s)
4 return ZEBRA_ROUTE_STATIC;
5 else if (strncmp (s, "r", 1) == 0)
6 return ZEBRA_ROUTE_RIP;
7 - else if (strncmp (s, "o", 1) == 0)
8 + else if (strncmp (s, "os", 2) == 0)
9 return ZEBRA_ROUTE_OSPF;
10 else if (strncmp (s, "i", 1) == 0)
11 return ZEBRA_ROUTE_ISIS;
12 else if (strncmp (s, "bg", 2) == 0)
13 return ZEBRA_ROUTE_BGP;
14 - else if (strncmp (s, "ba", 2) == 0)
15 + else if (strncmp (s, "h", 1) == 0)
16 + return ZEBRA_ROUTE_HSLS;
17 + else if (strncmp (s, "ol", 2) == 0)
18 + return ZEBRA_ROUTE_OLSR;
19 + else if (strncmp (s, "bat", 3) == 0)
20 + return ZEBRA_ROUTE_BATMAN;
21 + else if (strncmp (s, "bab", 3) == 0)
22 return ZEBRA_ROUTE_BABEL;
23 }
24 if (afi == AFI_IP6)
25 @@ -948,13 +954,19 @@ proto_redistnum(int afi, const char *s)
26 return ZEBRA_ROUTE_STATIC;
27 else if (strncmp (s, "r", 1) == 0)
28 return ZEBRA_ROUTE_RIPNG;
29 - else if (strncmp (s, "o", 1) == 0)
30 + else if (strncmp (s, "os", 2) == 0)
31 return ZEBRA_ROUTE_OSPF6;
32 else if (strncmp (s, "i", 1) == 0)
33 return ZEBRA_ROUTE_ISIS;
34 else if (strncmp (s, "bg", 2) == 0)
35 return ZEBRA_ROUTE_BGP;
36 - else if (strncmp (s, "ba", 2) == 0)
37 + else if (strncmp (s, "h", 1) == 0)
38 + return ZEBRA_ROUTE_HSLS;
39 + else if (strncmp (s, "ol", 2) == 0)
40 + return ZEBRA_ROUTE_OLSR;
41 + else if (strncmp (s, "bat", 3) == 0)
42 + return ZEBRA_ROUTE_BATMAN;
43 + else if (strncmp (s, "bab", 3) == 0)
44 return ZEBRA_ROUTE_BABEL;
45 }
46 return -1;
47 --- a/lib/route_types.txt
48 +++ b/lib/route_types.txt
49 @@ -51,13 +51,9 @@ ZEBRA_ROUTE_OSPF, ospf, ospfd
50 ZEBRA_ROUTE_OSPF6, ospf6, ospf6d, 'O', 0, 1, "OSPFv6"
51 ZEBRA_ROUTE_ISIS, isis, isisd, 'I', 1, 1, "IS-IS"
52 ZEBRA_ROUTE_BGP, bgp, bgpd, 'B', 1, 1, "BGP"
53 -# HSLS and OLSR both are AFI independent (so: 1, 1), however
54 -# we want to disable for them for general Quagga distribution.
55 -# This at least makes it trivial for users of these protocols
56 -# to 'switch on' redist support (direct numeric entry remaining
57 -# possible).
58 -ZEBRA_ROUTE_HSLS, hsls, hslsd, 'H', 0, 0, "HSLS"
59 -ZEBRA_ROUTE_OLSR, olsr, olsrd, 'o', 0, 0, "OLSR"
60 +ZEBRA_ROUTE_HSLS, hsls, hslsd, 'H', 1, 1, "HSLS"
61 +ZEBRA_ROUTE_OLSR, olsr, olsrd, 'o', 1, 1, "OLSR"
62 +ZEBRA_ROUTE_BATMAN, batman, batmand,'b', 1, 1, "BATMAN"
63 ZEBRA_ROUTE_BABEL, babel, babeld, 'A', 1, 1, "Babel"
64
65 ## help strings
66 @@ -72,5 +68,6 @@ ZEBRA_ROUTE_OSPF6, "Open Shortest Path
67 ZEBRA_ROUTE_ISIS, "Intermediate System to Intermediate System (IS-IS)"
68 ZEBRA_ROUTE_BGP, "Border Gateway Protocol (BGP)"
69 ZEBRA_ROUTE_HSLS, "Hazy-Sighted Link State Protocol (HSLS)"
70 -ZEBRA_ROUTE_OLSR, "Optimised Link State Routing (OLSR)"
71 +ZEBRA_ROUTE_OLSR, "Optimized Link State Routing (OLSR)"
72 +ZEBRA_ROUTE_BATMAN, "Better Approach to Mobile Ad-Hoc Networking (BATMAN)"
73 ZEBRA_ROUTE_BABEL, "Babel routing protocol (Babel)"
74 --- a/ripd/rip_zebra.c
75 +++ b/ripd/rip_zebra.c
76 @@ -206,9 +206,12 @@ static struct {
77 {ZEBRA_ROUTE_KERNEL, 1, "kernel"},
78 {ZEBRA_ROUTE_CONNECT, 1, "connected"},
79 {ZEBRA_ROUTE_STATIC, 1, "static"},
80 - {ZEBRA_ROUTE_OSPF, 1, "ospf"},
81 + {ZEBRA_ROUTE_OSPF, 2, "ospf"},
82 {ZEBRA_ROUTE_BGP, 2, "bgp"},
83 - {ZEBRA_ROUTE_BABEL, 2, "babel"},
84 + {ZEBRA_ROUTE_HSLS, 1, "hsls"},
85 + {ZEBRA_ROUTE_OLSR, 2, "olsr"},
86 + {ZEBRA_ROUTE_BATMAN, 3, "batman"},
87 + {ZEBRA_ROUTE_BABEL, 3, "babel"},
88 {0, 0, NULL}
89 };
90
91 --- a/ripngd/ripng_zebra.c
92 +++ b/ripngd/ripng_zebra.c
93 @@ -216,9 +216,12 @@ static struct {
94 {ZEBRA_ROUTE_KERNEL, 1, "kernel"},
95 {ZEBRA_ROUTE_CONNECT, 1, "connected"},
96 {ZEBRA_ROUTE_STATIC, 1, "static"},
97 - {ZEBRA_ROUTE_OSPF6, 1, "ospf6"},
98 + {ZEBRA_ROUTE_OSPF6, 2, "ospf6"},
99 {ZEBRA_ROUTE_BGP, 2, "bgp"},
100 - {ZEBRA_ROUTE_BABEL, 2, "babel"},
101 + {ZEBRA_ROUTE_HSLS, 1, "hsls"},
102 + {ZEBRA_ROUTE_OLSR, 2, "olsr"},
103 + {ZEBRA_ROUTE_BATMAN, 3, "batman"},
104 + {ZEBRA_ROUTE_BABEL, 3, "babel"},
105 {0, 0, NULL}
106 };
107
108 --- a/zebra/rt_netlink.c
109 +++ b/zebra/rt_netlink.c
110 @@ -1623,6 +1623,9 @@ netlink_route_multipath (int cmd, struct
111 addattr_l (&req.n, sizeof req, RTA_PREFSRC,
112 &nexthop->src.ipv4, bytelen);
113
114 + if (rib->type == ZEBRA_ROUTE_OLSR)
115 + req.r.rtm_scope = RT_SCOPE_LINK;
116 +
117 if (IS_ZEBRA_DEBUG_KERNEL)
118 zlog_debug("netlink_route_multipath() (single hop): "
119 "nexthop via if %u", nexthop->ifindex);
120 --- a/zebra/zebra_rib.c
121 +++ b/zebra/zebra_rib.c
122 @@ -67,6 +67,9 @@ static const struct
123 [ZEBRA_ROUTE_OSPF6] = {ZEBRA_ROUTE_OSPF6, 110},
124 [ZEBRA_ROUTE_ISIS] = {ZEBRA_ROUTE_ISIS, 115},
125 [ZEBRA_ROUTE_BGP] = {ZEBRA_ROUTE_BGP, 20 /* IBGP is 200. */},
126 + [ZEBRA_ROUTE_HSLS] = {ZEBRA_ROUTE_HSLS, 0},
127 + [ZEBRA_ROUTE_OLSR] = {ZEBRA_ROUTE_OLSR, 0},
128 + [ZEBRA_ROUTE_BATMAN] = {ZEBRA_ROUTE_BATMAN, 0},
129 [ZEBRA_ROUTE_BABEL] = {ZEBRA_ROUTE_BABEL, 95},
130 /* no entry/default: 150 */
131 };
132 @@ -403,6 +406,18 @@ nexthop_active_ipv4 (struct rib *rib, st
133 }
134 return 0;
135 }
136 + else if (match->type == ZEBRA_ROUTE_OLSR)
137 + {
138 + for (newhop = match->nexthop; newhop; newhop = newhop->next)
139 + if (CHECK_FLAG (newhop->flags, NEXTHOP_FLAG_FIB)
140 + && newhop->type == NEXTHOP_TYPE_IFINDEX)
141 + {
142 + if (nexthop->type == NEXTHOP_TYPE_IPV4)
143 + nexthop->ifindex = newhop->ifindex;
144 + return 1;
145 + }
146 + return 0;
147 + }
148 else
149 {
150 return 0;
151 @@ -507,6 +522,18 @@ nexthop_active_ipv6 (struct rib *rib, st
152 }
153 return 0;
154 }
155 + else if (match->type == ZEBRA_ROUTE_OLSR)
156 + {
157 + for (newhop = match->nexthop; newhop; newhop = newhop->next)
158 + if (CHECK_FLAG (newhop->flags, NEXTHOP_FLAG_FIB)
159 + && newhop->type == NEXTHOP_TYPE_IFINDEX)
160 + {
161 + if (nexthop->type == NEXTHOP_TYPE_IPV6)
162 + nexthop->ifindex = newhop->ifindex;
163 + return 1;
164 + }
165 + return 0;
166 + }
167 else
168 {
169 return 0;
170 @@ -1236,6 +1263,8 @@ static const u_char meta_queue_map[ZEBRA
171 [ZEBRA_ROUTE_ISIS] = 2,
172 [ZEBRA_ROUTE_BGP] = 3,
173 [ZEBRA_ROUTE_HSLS] = 4,
174 + [ZEBRA_ROUTE_OLSR] = 4,
175 + [ZEBRA_ROUTE_BATMAN] = 4,
176 [ZEBRA_ROUTE_BABEL] = 2,
177 };
178
179 --- a/zebra/zebra_snmp.c
180 +++ b/zebra/zebra_snmp.c
181 @@ -251,6 +251,12 @@ proto_trans(int type)
182 return 1; /* shouldn't happen */
183 case ZEBRA_ROUTE_BGP:
184 return 14; /* bgp */
185 + case ZEBRA_ROUTE_HSLS:
186 + return 1; /* other */
187 + case ZEBRA_ROUTE_OLSR:
188 + return 1; /* other */
189 + case ZEBRA_ROUTE_BATMAN:
190 + return 1; /* other */
191 default:
192 return 1; /* other */
193 }
194 --- a/zebra/zebra_vty.c
195 +++ b/zebra/zebra_vty.c
196 @@ -558,7 +558,10 @@ vty_show_ip_route_detail (struct vty *vt
197 || rib->type == ZEBRA_ROUTE_OSPF
198 || rib->type == ZEBRA_ROUTE_BABEL
199 || rib->type == ZEBRA_ROUTE_ISIS
200 - || rib->type == ZEBRA_ROUTE_BGP)
201 + || rib->type == ZEBRA_ROUTE_BGP
202 + || rib->type == ZEBRA_ROUTE_HSLS
203 + || rib->type == ZEBRA_ROUTE_OLSR
204 + || rib->type == ZEBRA_ROUTE_BATMAN)
205 {
206 time_t uptime;
207 struct tm *tm;
208 @@ -777,7 +780,10 @@ vty_show_ip_route (struct vty *vty, stru
209 || rib->type == ZEBRA_ROUTE_OSPF
210 || rib->type == ZEBRA_ROUTE_BABEL
211 || rib->type == ZEBRA_ROUTE_ISIS
212 - || rib->type == ZEBRA_ROUTE_BGP)
213 + || rib->type == ZEBRA_ROUTE_BGP
214 + || rib->type == ZEBRA_ROUTE_HSLS
215 + || rib->type == ZEBRA_ROUTE_OLSR
216 + || rib->type == ZEBRA_ROUTE_BATMAN)
217 {
218 time_t uptime;
219 struct tm *tm;
220 @@ -1536,7 +1542,10 @@ vty_show_ipv6_route_detail (struct vty *
221 || rib->type == ZEBRA_ROUTE_OSPF6
222 || rib->type == ZEBRA_ROUTE_BABEL
223 || rib->type == ZEBRA_ROUTE_ISIS
224 - || rib->type == ZEBRA_ROUTE_BGP)
225 + || rib->type == ZEBRA_ROUTE_BGP
226 + || rib->type == ZEBRA_ROUTE_HSLS
227 + || rib->type == ZEBRA_ROUTE_OLSR
228 + || rib->type == ZEBRA_ROUTE_BATMAN)
229 {
230 time_t uptime;
231 struct tm *tm;
232 @@ -1716,7 +1725,10 @@ vty_show_ipv6_route (struct vty *vty, st
233 || rib->type == ZEBRA_ROUTE_OSPF6
234 || rib->type == ZEBRA_ROUTE_BABEL
235 || rib->type == ZEBRA_ROUTE_ISIS
236 - || rib->type == ZEBRA_ROUTE_BGP)
237 + || rib->type == ZEBRA_ROUTE_BGP
238 + || rib->type == ZEBRA_ROUTE_HSLS
239 + || rib->type == ZEBRA_ROUTE_OLSR
240 + || rib->type == ZEBRA_ROUTE_BATMAN)
241 {
242 time_t uptime;
243 struct tm *tm;