* another update from svn://dev.durchdieluft.net/olsr-quagga/trunk/quagga
authorBernd Petrovitsch <bernd@firmix.at>
Sun, 11 Mar 2007 23:26:06 +0000 (23:26 +0000)
committerBernd Petrovitsch <bernd@firmix.at>
Sun, 11 Mar 2007 23:26:06 +0000 (23:26 +0000)
lib/quagga/Makefile
lib/quagga/README
lib/quagga/src/olsrd_plugin.c
lib/quagga/src/quagga.c
lib/quagga/src/quagga.h

index 9281079..0f202d7 100644 (file)
@@ -35,7 +35,7 @@
 # to the project. For more information see the website or contact
 # the copyright holders.
 #
-# $Id: Makefile,v 1.4 2007/03/11 20:59:17 bernd67 Exp $
+# $Id: Makefile,v 1.5 2007/03/11 23:26:06 bernd67 Exp $
 
 OLSRD_PLUGIN = true
 PLUGIN_NAME =  olsrd_quagga
index cd53a8d..9e59dde 100644 (file)
@@ -30,7 +30,7 @@ PlParam "ExportRoutes" "<only/both>"
        exportes olsr-routes to quagga or to both, quagga and kernel
        no routes are exportet if not set.
 
-PlParam "Localpref" "true"
+PlParam "LocalPref" "true"
         sets the zebra SELECTED-flag on the routes exported to zebra
        which means these routes are prefered in any case.
 
@@ -49,8 +49,8 @@ LoadPlugin "olsrd_quagga.so.0.2.2"
        PlParam "redistribute" "ospf"
        PlParam "redistribute" "bgp"
        PlParam "ExportRoutes" "only"
-        PlParam "Distance" "125" 
-       PlParam "Localpref" "false"
+       PlParam "Distance" "125" 
+       PlParam "LocalPref" "false"
 }
 
 
index 80dd56c..fd0c1f9 100644 (file)
@@ -70,16 +70,16 @@ int olsrd_plugin_register_param(char *key, char *value) {
     }
   }
   else if (!strcmp(key, "Distance")) {
-    unsigned int distance = atoi (key);
+    unsigned int distance = atoi (value);
     if (distance < 255)
       zebra_olsr_distance(distance);
       return 1;
   }
   
   else if (!strcmp(key, "LocalPref")) {
-    if (!strcmp(key, "true")) 
+    if (!strcmp(value, "true")) 
       zebra_olsr_localpref();
-    else if (strcmp (key, "false"))
+    else if (strcmp (value, "false"))
       return -1;
     return 1;
   }
index ca79d23..582ee33 100644 (file)
@@ -155,7 +155,7 @@ void *my_realloc (void *buf, size_t s, const char *c) {
 }
 
 int init_zebra () {
-  if (!zebra_connect()) {
+  if (zebra_connect() < 0 || !(zebra.status&STATUS_CONNECTED)) {
     olsr_exit ("AIIIII, could not connect to zebra! is zebra running?", 
               EXIT_FAILURE);
   }
@@ -166,7 +166,7 @@ static int zebra_reconnect (void) {
   struct ipv4_route *tmp;
   int i;
 
-  if (!zebra_connect()) 
+  if (zebra_connect() < 0 || !(zebra.status&STATUS_CONNECTED)) 
     // log: zebra-reconnect failed
     ;
   for (i = 0; ZEBRA_ROUTE_MAX - 1; i++)
@@ -355,7 +355,7 @@ static char* zebra_route_packet (struct ipv4_route r, ssize_t *optlen) {
   if (r.message & ZAPI_MESSAGE_IFINDEX)
     *optlen += r.ind_num * sizeof *r.index + 1;
   if (r.message & ZAPI_MESSAGE_DISTANCE)
-    *optlen++;
+    (*optlen)++;
   if (r.message & ZAPI_MESSAGE_METRIC)
     *optlen += sizeof r.metric;
 
@@ -392,12 +392,12 @@ static char* zebra_route_packet (struct ipv4_route r, ssize_t *optlen) {
     memcpy (t, r.index, sizeof *r.index * r.ind_num);
     t += sizeof r.index * r.ind_num;
   }
+  if (r.message & ZAPI_MESSAGE_DISTANCE)
+    *t++ = r.distance;
   if (r.message & ZAPI_MESSAGE_METRIC) {
     memcpy (t, &r.metric, sizeof r.metric);
     t += sizeof r.metric;
   }
-  if (r.message & ZAPI_MESSAGE_DISTANCE)
-    *t++ = r.distance;
   return cmdopt;
 }
 
index 779b9fd..9eb8d25 100644 (file)
@@ -47,7 +47,7 @@ struct ipv4_route {
   uint8_t ind_num;
   uint32_t *index;
   uint32_t metric;
-  uint32_t distance;
+  uint8_t distance;
   struct ipv4_route *next;
 };