Merge r4299
[project/luci.git] / contrib / package / olsrd-luci / patches / 100-olsrd-hg-r3.patch
1 diff --exclude='.hg*' -Nur olsrd-0.5.6-r3/lib/nameservice/README_NAMESERVICE /home/sven-ola/olsrd-0.5.6/lib/nameservice/README_NAMESERVICE
2 --- olsrd-0.5.6-r3/lib/nameservice/README_NAMESERVICE 2008-12-02 11:42:54.000000000 +0100
3 +++ /home/sven-ola/olsrd-0.5.6/lib/nameservice/README_NAMESERVICE 2008-12-03 09:11:11.000000000 +0100
4 @@ -112,12 +112,32 @@
5 table. Useful for executing a script that uses the hosts file
6 to keep a website or a database updated.
7
8 +PlParam "service" "http://me.olsr:80|tcp|my little homepage"
9 + Add a new service announcement to be spreaded in the mesh.
10 +
11 +PlParam "services-file" "/path/to/services_file"
12 + File to write (default: /var/run/services_olsr)
13 +
14 PlParam "services-change-script" "/path/to/script"
15 Similar to the previous parameter. Script to execute when there
16 is a change in the services list propagated by the nameserver
17 plugin. Useful for executing a script that uses the services file
18 to keep a website or a database updated.
19
20 +PlParam "mac" "xx:xx:xx:xx:xx:xx[,0-255]"
21 + Add a new MAC addr to be spreaded in the mesh. This MAC addr
22 + may be used to fine control nerve-wreck-page solutions based
23 + on MAC adresses. The optional dec. number designates a class.
24 +
25 +PlParam "macs-file" "/path/to/macs_file"
26 + File to write (default: /var/run/macs_olsr)
27 +
28 +PlParam "macs-change-script" "/path/to/script"
29 + Similar to the previous parameter. Script to execute when there
30 + is a change in the macs list propagated by the nameserver
31 + plugin. Useful for executing a script that uses the services file
32 + to keep a website or a database updated.
33 +
34 ---------------------------------------------------------------------
35 SAMPLE CONFIG
36 ---------------------------------------------------------------------
37 diff --exclude='.hg*' -Nur olsrd-0.5.6-r3/lib/nameservice/src/nameservice.c /home/sven-ola/olsrd-0.5.6/lib/nameservice/src/nameservice.c
38 --- olsrd-0.5.6-r3/lib/nameservice/src/nameservice.c 2008-12-02 11:50:01.000000000 +0100
39 +++ /home/sven-ola/olsrd-0.5.6/lib/nameservice/src/nameservice.c 2008-12-03 09:20:01.000000000 +0100
40 @@ -75,8 +75,10 @@
41 static double my_timeout = NAME_VALID_TIME;
42 static char my_resolv_file[MAX_FILE + 1];
43 static char my_services_file[MAX_FILE + 1];
44 +static char my_macs_file[MAX_FILE + 1];
45 static char my_name_change_script[MAX_FILE + 1];
46 static char my_services_change_script[MAX_FILE + 1];
47 +static char my_macs_change_script[MAX_FILE + 1];
48 static char latlon_in_file[MAX_FILE + 1];
49 static char my_latlon_file[MAX_FILE + 1];
50 float my_lat = 0.0, my_lon = 0.0;
51 @@ -96,6 +98,10 @@
52 static struct name_entry *my_services = NULL;
53 static olsr_bool service_table_changed = OLSR_TRUE;
54
55 +static struct list_node mac_list[HASHSIZE];
56 +static struct name_entry *my_macs = NULL;
57 +static olsr_bool mac_table_changed = OLSR_TRUE;
58 +
59 static struct list_node forwarder_list[HASHSIZE];
60 static struct name_entry *my_forwarders = NULL;
61 static olsr_bool forwarder_table_changed = OLSR_TRUE;
62 @@ -131,6 +137,7 @@
63
64 GetWindowsDirectory(my_hosts_file, MAX_FILE - 12);
65 GetWindowsDirectory(my_services_file, MAX_FILE - 12);
66 + GetWindowsDirectory(my_macs_file, MAX_FILE - 12);
67 GetWindowsDirectory(my_resolv_file, MAX_FILE - 12);
68
69 len = strlen(my_hosts_file);
70 @@ -143,6 +150,11 @@
71 strscat(my_services_file, "\\", sizeof(my_services_file));
72 strscat(my_services_file, "services_olsr", sizeof(my_services_file));
73
74 + len = strlen(my_macs_file);
75 + if (my_macs_file[len - 1] != '\\')
76 + strscat(my_macs_file, "\\", sizeof(my_macs_file));
77 + strscat(my_macs_file, "macs_olsr", sizeof(my_macs_file));
78 +
79 len = strlen(my_resolv_file);
80 if (my_resolv_file[len - 1] != '\\')
81 strscat(my_resolv_file, "\\", sizeof(my_resolv_file));
82 @@ -150,6 +162,7 @@
83 #else
84 strscpy(my_hosts_file, "/var/run/hosts_olsr", sizeof(my_hosts_file));
85 strscpy(my_services_file, "/var/run/services_olsr", sizeof(my_services_file));
86 + strscpy(my_macs_file, "/var/run/macs_olsr", sizeof(my_macs_file));
87 strscpy(my_resolv_file, "/var/run/resolvconf_olsr", sizeof(my_resolv_file));
88 *my_sighup_pid_file = 0;
89 #endif
90 @@ -160,12 +173,14 @@
91 latlon_in_file[0] = '\0';
92 my_name_change_script[0] = '\0';
93 my_services_change_script[0] = '\0';
94 + my_macs_change_script[0] = '\0';
95
96 /* init the lists heads */
97 for (i = 0; i < HASHSIZE; i++) {
98 list_head_init(&name_list[i]);
99 list_head_init(&forwarder_list[i]);
100 list_head_init(&service_list[i]);
101 + list_head_init(&mac_list[i]);
102 list_head_init(&latlon_list[i]);
103 }
104
105 @@ -232,58 +247,31 @@
106 return 0;
107 }
108
109 +/* *INDENT-OFF* */
110 static const struct olsrd_plugin_parameters plugin_parameters[] = {
111 - {.name = "interval",.set_plugin_parameter = &set_plugin_int,.data = &my_interval},
112 - {.name = "timeout",.set_plugin_parameter = &set_nameservice_float,.data = &my_timeout},
113 - {.name = "sighup-pid-file",.set_plugin_parameter = &set_plugin_string,.data = &my_sighup_pid_file,.addon =
114 - {sizeof(my_sighup_pid_file)}
115 - }
116 - ,
117 - {.name = "hosts-file",.set_plugin_parameter = &set_plugin_string,.data = &my_hosts_file,.addon = {sizeof(my_hosts_file)}
118 - }
119 - ,
120 - {.name = "name-change-script",.set_plugin_parameter = &set_plugin_string,.data = &my_name_change_script,.addon =
121 - {sizeof(my_name_change_script)}
122 - }
123 - ,
124 - {.name = "services-change-script",.set_plugin_parameter = &set_plugin_string,.data = &my_services_change_script,.addon =
125 - {sizeof(my_services_change_script)}
126 - }
127 - ,
128 - {.name = "resolv-file",.set_plugin_parameter = &set_plugin_string,.data = &my_resolv_file,.addon = {sizeof(my_resolv_file)}
129 - }
130 - ,
131 - {.name = "suffix",.set_plugin_parameter = &set_plugin_string,.data = &my_suffix,.addon = {sizeof(my_suffix)}
132 - }
133 - ,
134 - {.name = "add-hosts",.set_plugin_parameter = &set_plugin_string,.data = &my_add_hosts,.addon = {sizeof(my_add_hosts)}
135 - }
136 - ,
137 - {.name = "services-file",.set_plugin_parameter = &set_plugin_string,.data = &my_services_file,.addon = {sizeof(my_services_file)}
138 - }
139 - ,
140 - {.name = "lat",.set_plugin_parameter = &set_nameservice_float,.data = &my_lat}
141 - ,
142 - {.name = "lon",.set_plugin_parameter = &set_nameservice_float,.data = &my_lon}
143 - ,
144 - {.name = "latlon-file",.set_plugin_parameter = &set_plugin_string,.data = &my_latlon_file,.addon = {sizeof(my_latlon_file)}
145 - }
146 - ,
147 - {.name = "latlon-infile",.set_plugin_parameter = &set_plugin_string,.data = &latlon_in_file,.addon = {sizeof(latlon_in_file)}
148 - }
149 - ,
150 - {.name = "dns-server",.set_plugin_parameter = &set_nameservice_server,.data = &my_forwarders,.addon = {NAME_FORWARDER}
151 - }
152 - ,
153 - {.name = "name",.set_plugin_parameter = &set_nameservice_name,.data = &my_names,.addon = {NAME_HOST}
154 - }
155 - ,
156 - {.name = "service",.set_plugin_parameter = &set_nameservice_name,.data = &my_services,.addon = {NAME_SERVICE}
157 - }
158 - ,
159 - {.name = "",.set_plugin_parameter = &set_nameservice_host,.data = &my_names}
160 - ,
161 + { .name = "interval", .set_plugin_parameter = &set_plugin_int, .data = &my_interval },
162 + { .name = "timeout", .set_plugin_parameter = &set_nameservice_float, .data = &my_timeout },
163 + { .name = "sighup-pid-file", .set_plugin_parameter = &set_plugin_string, .data = &my_sighup_pid_file, .addon = {sizeof(my_sighup_pid_file)} },
164 + { .name = "hosts-file", .set_plugin_parameter = &set_plugin_string, .data = &my_hosts_file, .addon = {sizeof(my_hosts_file)} },
165 + { .name = "name-change-script", .set_plugin_parameter = &set_plugin_string, .data = &my_name_change_script, .addon = {sizeof(my_name_change_script)} },
166 + { .name = "services-change-script", .set_plugin_parameter = &set_plugin_string, .data = &my_services_change_script, .addon = {sizeof(my_services_change_script)} },
167 + { .name = "macs-change-script", .set_plugin_parameter = &set_plugin_string, .data = &my_macs_change_script, .addon = {sizeof(my_macs_change_script)} },
168 + { .name = "resolv-file", .set_plugin_parameter = &set_plugin_string, .data = &my_resolv_file, .addon = {sizeof(my_resolv_file)} },
169 + { .name = "suffix", .set_plugin_parameter = &set_plugin_string, .data = &my_suffix, .addon = {sizeof(my_suffix)} },
170 + { .name = "add-hosts", .set_plugin_parameter = &set_plugin_string, .data = &my_add_hosts, .addon = {sizeof(my_add_hosts)} },
171 + { .name = "services-file", .set_plugin_parameter = &set_plugin_string, .data = &my_services_file, .addon = {sizeof(my_services_file)} },
172 + { .name = "macs-file", .set_plugin_parameter = &set_plugin_string, .data = &my_macs_file, .addon = {sizeof(my_macs_file)} },
173 + { .name = "lat", .set_plugin_parameter = &set_nameservice_float, .data = &my_lat },
174 + { .name = "lon", .set_plugin_parameter = &set_nameservice_float, .data = &my_lon },
175 + { .name = "latlon-file", .set_plugin_parameter = &set_plugin_string, .data = &my_latlon_file, .addon = {sizeof(my_latlon_file)} },
176 + { .name = "latlon-infile", .set_plugin_parameter = &set_plugin_string, .data = &latlon_in_file, .addon = {sizeof(latlon_in_file)} },
177 + { .name = "dns-server", .set_plugin_parameter = &set_nameservice_server, .data = &my_forwarders, .addon = {NAME_FORWARDER} },
178 + { .name = "name", .set_plugin_parameter = &set_nameservice_name, .data = &my_names, .addon = {NAME_HOST} },
179 + { .name = "service", .set_plugin_parameter = &set_nameservice_name, .data = &my_services, .addon = {NAME_SERVICE} },
180 + { .name = "mac", .set_plugin_parameter = &set_nameservice_name, .data = &my_macs, .addon = {NAME_MACADDR} },
181 + { .name = "", .set_plugin_parameter = &set_nameservice_host, .data = &my_names },
182 };
183 +/* *INDENT-OFF* */
184
185 void
186 olsrd_get_plugin_parameters(const struct olsrd_plugin_parameters **params, int *size)
187 @@ -404,6 +392,7 @@
188 my_names = remove_nonvalid_names_from_list(my_names, NAME_HOST);
189 my_forwarders = remove_nonvalid_names_from_list(my_forwarders, NAME_FORWARDER);
190 my_services = remove_nonvalid_names_from_list(my_services, NAME_SERVICE);
191 + my_macs = remove_nonvalid_names_from_list(my_macs, NAME_MACADDR);
192
193 /* register functions with olsrd */
194 olsr_parser_add_function(&olsr_parser, PARSER_TYPE);
195 @@ -435,6 +424,9 @@
196 case NAME_SERVICE:
197 valid = allowed_service(my_list->name);
198 break;
199 + case NAME_MACADDR:
200 + valid = is_mac_wellformed(my_list->name);
201 + break;
202 case NAME_LATLON:
203 valid = is_latlon_wellformed(my_list->name);
204 break;
205 @@ -470,10 +462,12 @@
206
207 free_name_entry_list(&my_names);
208 free_name_entry_list(&my_services);
209 + free_name_entry_list(&my_macs);
210 free_name_entry_list(&my_forwarders);
211
212 free_all_list_entries(name_list);
213 free_all_list_entries(service_list);
214 + free_all_list_entries(mac_list);
215 free_all_list_entries(forwarder_list);
216 free_all_list_entries(latlon_list);
217
218 @@ -517,11 +511,12 @@
219 {
220 write_file_timer = NULL;
221
222 - write_resolv_file(); /* if forwarder_table_changed */
223 - write_hosts_file(); /* if name_table_changed */
224 - write_services_file(); /* if service_table_changed */
225 + write_resolv_file(); /* if forwarder_table_changed */
226 + write_hosts_file(); /* if name_table_changed */
227 + write_services_file(OLSR_FALSE); /* if service_table_changed */
228 + write_services_file(OLSR_TRUE); /* if mac_table_changed */
229 #ifdef WIN32
230 - write_latlon_file(); /* if latlon_table_changed */
231 + write_latlon_file(); /* if latlon_table_changed */
232 #endif
233 }
234
235 @@ -688,7 +683,6 @@
236 encap_namemsg(struct namemsg *msg)
237 {
238 struct name_entry *my_name;
239 - struct name_entry *my_service;
240
241 // add the hostname, service and forwarder entries after the namemsg header
242 char *pos = (char *)msg + sizeof(struct namemsg);
243 @@ -705,8 +699,13 @@
244 i++;
245 }
246 // services
247 - for (my_service = my_services; my_service != NULL; my_service = my_service->next) {
248 - pos = create_packet((struct name *)pos, my_service);
249 + for (my_name = my_services; my_name != NULL; my_name = my_name->next) {
250 + pos = create_packet((struct name *)pos, my_name);
251 + i++;
252 + }
253 + // macs
254 + for (my_name = my_macs; my_name != NULL; my_name = my_name->next) {
255 + pos = create_packet((struct name *)pos, my_name);
256 i++;
257 }
258 // latlon
259 @@ -779,6 +778,7 @@
260 //XXX: should I check the from_packet->ip here? If so, why not also check the ip from HOST and SERVICE?
261 if ((type_of_from_packet == NAME_HOST && !is_name_wellformed(name))
262 || (type_of_from_packet == NAME_SERVICE && !is_service_wellformed(name))
263 + || (type_of_from_packet == NAME_MACADDR && !is_mac_wellformed(name))
264 || (type_of_from_packet == NAME_LATLON && !is_latlon_wellformed(name))) {
265 OLSR_PRINTF(4, "NAME PLUGIN: invalid name [%s] received, skipping.\n", name);
266 return;
267 @@ -886,6 +886,9 @@
268 case NAME_SERVICE:
269 insert_new_name_in_list(originator, service_list, from_packet, &service_table_changed, vtime);
270 break;
271 + case NAME_MACADDR:
272 + insert_new_name_in_list(originator, mac_list, from_packet, &mac_table_changed, vtime);
273 + break;
274 case NAME_LATLON:
275 insert_new_name_in_list(originator, latlon_list, from_packet, &latlon_table_changed, vtime);
276 break;
277 @@ -1128,45 +1131,47 @@
278 }
279
280 /**
281 - * write services to a file in the format:
282 - * service #originator ip
283 + * write services or macs to a file in the format:
284 + * service-or-mac #originator ip
285 *
286 * since service has a special format
287 * each line will look similar to e.g.
288 * http://me.olsr:80|tcp|my little homepage
289 + * while a mac line will look similar to
290 + * 02:ca:ff:ee:ba:be,1
291 */
292 void
293 -write_services_file(void)
294 +write_services_file(olsr_bool writemacs)
295 {
296 int hash;
297 struct name_entry *name;
298 struct db_entry *entry;
299 struct list_node *list_head, *list_node;
300 - FILE *services_file;
301 + FILE *file;
302 time_t currtime;
303
304 - if (!service_table_changed)
305 + if ((writemacs && !mac_table_changed) || (!writemacs && !service_table_changed))
306 return;
307
308 - OLSR_PRINTF(2, "NAME PLUGIN: writing services file\n");
309 + OLSR_PRINTF(2, "NAME PLUGIN: writing %s file\n", writemacs ? "macs" : "services");
310
311 - services_file = fopen(my_services_file, "w");
312 - if (services_file == NULL) {
313 - OLSR_PRINTF(2, "NAME PLUGIN: cant write services_file file\n");
314 + file = fopen(writemacs ? my_macs_file : my_services_file, "w");
315 + if (file == NULL) {
316 + OLSR_PRINTF(2, "NAME PLUGIN: cant write %s\n", writemacs ? my_macs_file : my_services_file);
317 return;
318 }
319
320 - fprintf(services_file, "### this file is overwritten regularly by olsrd\n");
321 - fprintf(services_file, "### do not edit\n\n");
322 + fprintf(file, "### this file is overwritten regularly by olsrd\n");
323 + fprintf(file, "### do not edit\n\n");
324
325 - // write own services
326 - for (name = my_services; name != NULL; name = name->next) {
327 - fprintf(services_file, "%s\t# my own service\n", name->name);
328 + // write own services or macs
329 + for (name = writemacs ? my_macs : my_services; name != NULL; name = name->next) {
330 + fprintf(file, "%s\t# my own %s\n", name->name, writemacs ? "mac" : "service");
331 }
332
333 - // write received services
334 + // write received services or macs
335 for (hash = 0; hash < HASHSIZE; hash++) {
336 - list_head = &service_list[hash];
337 + list_head = writemacs ? &mac_list[hash] : &service_list[hash];
338 for (list_node = list_head->next; list_node != list_head; list_node = list_node->next) {
339
340 entry = list2db(list_node);
341 @@ -1176,26 +1181,38 @@
342 OLSR_PRINTF(6, "%s\t", name->name);
343 OLSR_PRINTF(6, "\t#%s\n", olsr_ip_to_string(&strbuf, &entry->originator));
344
345 - fprintf(services_file, "%s\t", name->name);
346 - fprintf(services_file, "\t#%s\n", olsr_ip_to_string(&strbuf, &entry->originator));
347 + fprintf(file, "%s\t", name->name);
348 + fprintf(file, "\t#%s\n", olsr_ip_to_string(&strbuf, &entry->originator));
349 }
350 }
351 }
352
353 if (time(&currtime)) {
354 - fprintf(services_file, "\n### written by olsrd at %s", ctime(&currtime));
355 + fprintf(file, "\n### written by olsrd at %s", ctime(&currtime));
356 }
357
358 - fclose(services_file);
359 - service_table_changed = OLSR_FALSE;
360 -
361 - // Executes my_services_change_script after writing the services file
362 - if (my_services_change_script[0] != '\0') {
363 - if (system(my_services_change_script) != -1) {
364 - OLSR_PRINTF(2, "NAME PLUGIN: Service changed, %s executed\n", my_services_change_script);
365 - } else {
366 - OLSR_PRINTF(2, "NAME PLUGIN: WARNING! Failed to execute %s on service change\n", my_services_change_script);
367 + fclose(file);
368 + if (writemacs) {
369 + // Executes my_macs_change_script after writing the macs file
370 + if (my_macs_change_script[0] != '\0') {
371 + if (system(my_macs_change_script) != -1) {
372 + OLSR_PRINTF(2, "NAME PLUGIN: Service changed, %s executed\n", my_macs_change_script);
373 + } else {
374 + OLSR_PRINTF(2, "NAME PLUGIN: WARNING! Failed to execute %s on mac change\n", my_macs_change_script);
375 + }
376 }
377 + mac_table_changed = OLSR_FALSE;
378 + }
379 + else {
380 + // Executes my_services_change_script after writing the services file
381 + if (my_services_change_script[0] != '\0') {
382 + if (system(my_services_change_script) != -1) {
383 + OLSR_PRINTF(2, "NAME PLUGIN: Service changed, %s executed\n", my_services_change_script);
384 + } else {
385 + OLSR_PRINTF(2, "NAME PLUGIN: WARNING! Failed to execute %s on service change\n", my_services_change_script);
386 + }
387 + }
388 + service_table_changed = OLSR_FALSE;
389 }
390 }
391
392 @@ -1348,6 +1365,9 @@
393 case NAME_SERVICE:
394 service_table_changed = OLSR_TRUE;
395 break;
396 + case NAME_MACADDR:
397 + mac_table_changed = OLSR_TRUE;
398 + break;
399 case NAME_LATLON:
400 latlon_table_changed = OLSR_TRUE;
401 break;
402 @@ -1498,6 +1518,22 @@
403 return regexec(&regex_t_service, service_line, pmatch_service, regmatch_t_service, 0) == 0;
404 }
405
406 +/*
407 + * check if the mac matches the syntax
408 + */
409 +olsr_bool
410 +is_mac_wellformed(const char *mac_line)
411 +{
412 + size_t i;
413 + olsr_bool ret;
414 + int x[6], d = -1;
415 + for(i = 0; i < ARRAYSIZE(x); i++) x[i] = -1;
416 + sscanf(mac_line, "%02x:%02x:%02x:%02x:%02x:%02x,%d\n", &x[0], &x[1], &x[2], &x[3], &x[4], &x[5], &d);
417 + ret = 0 <= d && d <= 0xffff;
418 + for(i = 0; i < ARRAYSIZE(x); i++) ret = ret && 0 <= x[i];
419 + return ret;
420 +}
421 +
422 /**
423 * check if the latlot matches the syntax
424 */
425 diff --exclude='.hg*' -Nur olsrd-0.5.6-r3/lib/nameservice/src/nameservice.h /home/sven-ola/olsrd-0.5.6/lib/nameservice/src/nameservice.h
426 --- olsrd-0.5.6-r3/lib/nameservice/src/nameservice.h 2008-12-02 11:50:01.000000000 +0100
427 +++ /home/sven-ola/olsrd-0.5.6/lib/nameservice/src/nameservice.h 2008-12-03 09:20:01.000000000 +0100
428 @@ -145,7 +145,7 @@
429
430 void write_hosts_file(void);
431
432 -void write_services_file(void);
433 +void write_services_file(olsr_bool writemacs);
434
435 void write_resolv_file(void);
436
437 @@ -161,7 +161,7 @@
438
439 olsr_bool is_service_wellformed(const char *service_line);
440
441 -olsr_bool is_service_wellformed(const char *service_line);
442 +olsr_bool is_mac_wellformed(const char *service_line);
443
444 olsr_bool is_latlon_wellformed(const char *latlon_line);
445
446 diff --exclude='.hg*' -Nur olsrd-0.5.6-r3/lib/nameservice/src/nameservice_msg.h /home/sven-ola/olsrd-0.5.6/lib/nameservice/src/nameservice_msg.h
447 --- olsrd-0.5.6-r3/lib/nameservice/src/nameservice_msg.h 2008-12-02 11:50:01.000000000 +0100
448 +++ /home/sven-ola/olsrd-0.5.6/lib/nameservice/src/nameservice_msg.h 2008-12-03 09:11:13.000000000 +0100
449 @@ -43,6 +43,7 @@
450 NAME_FORWARDER = 1,
451 NAME_SERVICE = 2,
452 NAME_LATLON = 3,
453 + NAME_MACADDR = 4,
454 } NAME_TYPE;
455
456 /**
457 diff --exclude='.hg*' -Nur olsrd-0.5.6-r3/lib/tas/src/lua/lobject.c /home/sven-ola/olsrd-0.5.6/lib/tas/src/lua/lobject.c
458 --- olsrd-0.5.6-r3/lib/tas/src/lua/lobject.c 2008-12-02 11:50:01.000000000 +0100
459 +++ /home/sven-ola/olsrd-0.5.6/lib/tas/src/lua/lobject.c 2008-12-03 09:19:32.000000000 +0100
460 @@ -42,11 +42,11 @@
461 return (m << 3) | cast(int, x);
462 }
463
464 +/* *INDENT-OFF* */
465 int
466 luaO_log2(unsigned int x)
467 {
468 static const lu_byte log_8[255] = {
469 -/* *INDENT-OFF* */
470 0,
471 1,1,
472 2,2,2,2,
473 @@ -59,7 +59,6 @@
474 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
475 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
476 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
477 -/* *INDENT-ON* */
478 };
479 if (x >= 0x00010000) {
480 if (x >= 0x01000000)
481 @@ -74,6 +73,7 @@
482 return -1; /* special `log' for 0 */
483 }
484 }
485 +/* *INDENT-ON* */
486
487 int
488 luaO_rawequalObj(const TObject * t1, const TObject * t2)
489 diff --exclude='.hg*' -Nur olsrd-0.5.6-r3/Makefile /home/sven-ola/olsrd-0.5.6/Makefile
490 --- olsrd-0.5.6-r3/Makefile 2008-12-02 11:50:01.000000000 +0100
491 +++ /home/sven-ola/olsrd-0.5.6/Makefile 2008-12-03 09:11:10.000000000 +0100
492 @@ -39,7 +39,7 @@
493 # Please also write a new version to:
494 # gui/win32/Main/Frontend.rc (line 71, around "CAPTION [...]")
495 # gui/win32/Inst/installer.nsi (line 57, around "MessageBox MB_YESNO [...]")
496 -VERS = 0.5.6-r3
497 +VERS = pre-0.5.6-r4
498
499 TOPDIR = .
500 include Makefile.inc