win32verify: solved runtime errs on olsr_cfg
authorSven-Ola Tuecke <sven-ola@gmx.de>
Fri, 16 Jan 2009 06:30:26 +0000 (07:30 +0100)
committerSven-Ola Tuecke <sven-ola@gmx.de>
Fri, 16 Jan 2009 06:30:26 +0000 (07:30 +0100)
gui/win32/mk.sh
gui/win32/win32verify.c
src/ipcalc.c
src/ipcalc.h
src/olsr_cfg_gen.c
src/olsr_cfg_gen.h

index 20c9154..0d0ae89 100644 (file)
@@ -1,10 +1,10 @@
 #!/bin/sh
 
-SRCS="olsr_cfg olsr_cfg_gen olsr_ip_acl olsr_ip_prefix_list ipcalc builddata common/autobuf"
+SRCS="olsr_cfg olsr_cfg_gen olsr_ip_acl olsr_ip_prefix_list olsr_logging_data ipcalc builddata common/autobuf"
 OBJS=
 
 for i in $SRCS; do
-  gcc -Werror -Wall -I../../src -O0 -ggdb -c ../../src/$i.c
+  gcc -Werror -Wall -I../../src -O0 -ggdb -DDEBUG -c ../../src/$i.c
   OBJS="$OBJS ${i##*/}.o"
 done
-gcc -Werror -Wall -I../../src -O0 -ggdb -o win32verify win32verify.c $OBJS
+gcc -Werror -Wall -I../../src -O0 -ggdb -DDEBUG -o win32verify win32verify.c $OBJS
index f8baa4c..a61ff77 100644 (file)
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <errno.h>
 #include "olsr.h"
 #include "olsr_cfg.h"
 #include "olsr_cfg_gen.h"
@@ -33,17 +34,40 @@ void parser_set_disp_pack_in(bool val __attribute__ ((unused)))
 {
 }
 
+static int write_cnf(struct olsr_config *cnf, const char *fname)
+{
+  struct autobuf abuf;
+  FILE *fd = fopen(fname, "w");
+  if (fd == NULL) {
+    fprintf(stderr, "Could not open file %s for writing\n%s\n", fname, strerror(errno));
+    return -1;
+  }
+
+  printf("Writing config to file \"%s\".... ", fname);
+
+  abuf_init(&abuf, 0);
+  olsr_write_cnf_buf(&abuf, cnf, false);
+  fputs(abuf.buf, fd);
+
+  abuf_free(&abuf);
+  fclose(fd);
+  printf("DONE\n");
+
+  return 1;
+}
+
 int main(int argc, char *argv[])
 {
   int i, ret = 0;
+  debug_handle = stdout;
   for (i = 1; i < argc; i++) {
     struct olsr_config *cfg_tmp;
     char cfg_msg[FILENAME_MAX + 256];
     
     printf("Verifying argv[%d]=%s\n", i, argv[i]);
     if (CFG_ERROR != olsr_parse_cfg(0, NULL, argv[i], cfg_msg, &cfg_tmp)) {
-      printf("%s verified: %s\n", argv[i], olsr_sanity_check_cfg(cfg_tmp) ? "yes" : "no");
-      printf("DebugLevel=%d\n", cfg_tmp->debug_level);
+      printf("%s verified: %s\n", argv[i], 0 <= olsr_sanity_check_cfg(cfg_tmp) ? "yes" : "no");
+      if (&write_cnf != NULL) olsr_print_cnf(cfg_tmp);
     }
     else {
       fprintf(stderr, "%s not verified. %s\n", argv[i], cfg_msg);
index e7aef04..b6e1f9c 100644 (file)
@@ -101,10 +101,10 @@ netmask_to_prefix(const uint8_t *adr, int len)
 }
 
 const char *
-olsr_ip_prefix_to_string(struct ipprefix_str * const buf, const struct olsr_ip_prefix *prefix)
+ip_prefix_to_string(int af, struct ipprefix_str * const buf, const struct olsr_ip_prefix *prefix)
 {
   int len;
-  inet_ntop(olsr_cnf->ip_version, &prefix->prefix, buf->buf, sizeof(buf->buf));
+  inet_ntop(af, &prefix->prefix, buf->buf, sizeof(buf->buf));
   len = strlen(buf->buf);
   snprintf(buf->buf+len, sizeof(buf->buf)-len, "/%d", prefix->prefix_len);
   return buf->buf;
index 5199122..8f4351e 100644 (file)
@@ -99,7 +99,9 @@ static INLINE const char *ip_to_string(int af, struct ipaddr_str * const buf, co
 
 static INLINE const char *olsr_ip_to_string(struct ipaddr_str * const buf, const union olsr_ip_addr *addr) { return ip_to_string(olsr_cnf->ip_version, buf, addr); }
 
-const char *EXPORT(olsr_ip_prefix_to_string)(struct ipprefix_str * const buf, const struct olsr_ip_prefix *prefix);
+const char *EXPORT(ip_prefix_to_string)(int af, struct ipprefix_str * const buf, const struct olsr_ip_prefix *prefix);
+
+static INLINE const char *olsr_ip_prefix_to_string(struct ipprefix_str * const buf, const struct olsr_ip_prefix *prefix) { return ip_prefix_to_string(olsr_cnf->ip_version, buf, prefix); }
 
 const char *sockaddr_to_string(char *buf, int bufsize, const struct sockaddr * const addr, unsigned int addrsize);
 
index 5ee9d85..23b9829 100644 (file)
@@ -47,7 +47,7 @@
 #include <errno.h>
 
 void
-olsr_print_cnf(const struct olsr_config *cnf)
+olsr_print_cnf(struct olsr_config *cnf)
 {
   struct ip_prefix_entry *h;
   struct olsr_if_config *in = cnf->if_configs;
@@ -78,13 +78,13 @@ olsr_print_cnf(const struct olsr_config *cnf)
     printf("Willingness      : %d\n", cnf->willingness);
 
   printf("IPC connections  : %d\n", cnf->ipc_connections);
-  OLSR_FOR_ALL_IPPREFIX_ENTRIES(&olsr_cnf->ipc_nets.accept, ie) {
-    if (ie->net.prefix_len == 8 * olsr_cnf->ipsize) {
+  OLSR_FOR_ALL_IPPREFIX_ENTRIES(&cnf->ipc_nets.accept, ie) {
+    if (ie->net.prefix_len == 8 * cnf->ipsize) {
       struct ipaddr_str strbuf;
-      printf("\tHost %s\n", olsr_ip_to_string(&strbuf, &ie->net.prefix));
+      printf("\tHost %s\n", ip_to_string(cnf->ip_version, &strbuf, &ie->net.prefix));
     } else {
       struct ipprefix_str prefixstr;
-      printf("\tNet %s\n", olsr_ip_prefix_to_string(&prefixstr, &ie->net));
+      printf("\tNet %s\n", ip_prefix_to_string(cnf->ip_version, &prefixstr, &ie->net));
     }
   } OLSR_FOR_ALL_IPPREFIX_ENTRIES_END()
 
@@ -151,18 +151,18 @@ olsr_print_cnf(const struct olsr_config *cnf)
   }
 
   /* HNA IPv4 and IPv6 */
-  if (!list_is_empty(&olsr_cnf->hna_entries)) {
+  if (!list_is_empty(&cnf->hna_entries)) {
     printf("HNA%d entries:\n", cnf->ip_version == AF_INET ? 4 : 6);
-    OLSR_FOR_ALL_IPPREFIX_ENTRIES(&olsr_cnf->hna_entries, h) {
+    OLSR_FOR_ALL_IPPREFIX_ENTRIES(&cnf->hna_entries, h) {
       struct ipprefix_str prefixstr;
-      printf("\t%s\n", olsr_ip_prefix_to_string(&prefixstr, &h->net));
+      printf("\t%s\n", ip_prefix_to_string(cnf->ip_version, &prefixstr, &h->net));
     } OLSR_FOR_ALL_IPPREFIX_ENTRIES_END()
   }
 }
 
 #if 0
 int
-olsr_write_cnf(const struct olsr_config *cnf, const char *fname)
+olsr_write_cnf(struct olsr_config *cnf, const char *fname)
 {
   struct autobuf abuf;
   FILE *fd = fopen(fname, "w");
@@ -225,7 +225,7 @@ olsr_write_cnf_buf(struct autobuf *abuf, struct olsr_config *cnf, bool write_mor
 
     OLSR_FOR_ALL_IPPREFIX_ENTRIES(&cnf->hna_entries, h) {
       struct ipprefix_str strbuf;
-      abuf_appendf(abuf, "    %s\n", olsr_ip_prefix_to_string(&strbuf, &h->net));
+      abuf_appendf(abuf, "    %s\n", ip_prefix_to_string(cnf->ip_version, &strbuf, &h->net));
     } OLSR_FOR_ALL_IPPREFIX_ENTRIES_END()
   }
   abuf_appendf(abuf, "}\n\n");
@@ -263,12 +263,12 @@ olsr_write_cnf_buf(struct autobuf *abuf, struct olsr_config *cnf, bool write_mor
   if (list_is_empty(&cnf->ipc_nets.accept)) {
     struct ip_prefix_entry *ie;
     OLSR_FOR_ALL_IPPREFIX_ENTRIES(&cnf->ipc_nets.accept, ie) {
-      if (ie->net.prefix_len == 8 * olsr_cnf->ipsize) {
+      if (ie->net.prefix_len == 8 * cnf->ipsize) {
         struct ipaddr_str strbuf;
-        abuf_appendf(abuf, "    Host\t\t%s\n", olsr_ip_to_string(&strbuf, &ie->net.prefix));
+        abuf_appendf(abuf, "    Host\t\t%s\n", ip_to_string(cnf->ip_version, &strbuf, &ie->net.prefix));
       } else {
         struct ipprefix_str strbuf;
-        abuf_appendf(abuf, "    Net\t\t\t%s\n", olsr_ip_prefix_to_string(&strbuf, &ie->net));
+        abuf_appendf(abuf, "    Net\t\t\t%s\n", ip_prefix_to_string(cnf->ip_version, &strbuf, &ie->net));
       }
     } OLSR_FOR_ALL_IPPREFIX_ENTRIES_END()
   }
index 24a89a7..9258eaf 100644 (file)
@@ -48,7 +48,7 @@
 /*
  * Interface config generation
  */
-void olsr_print_cnf(const struct olsr_config *);
+void olsr_print_cnf(struct olsr_config *);
 #if 0
 int olsr_write_cnf(const struct olsr_config *cnf, const char *fname);
 #endif