]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Rip should now reconfigure itself only if needed.
authorPavel Machek <pavel@ucw.cz>
Tue, 16 May 2000 14:58:06 +0000 (14:58 +0000)
committerPavel Machek <pavel@ucw.cz>
Tue, 16 May 2000 14:58:06 +0000 (14:58 +0000)
proto/rip/rip.c
proto/rip/rip.h

index 44d8ce0d5367350698b6e2c44003908a6c392500..1ac0eff8fddccf8ee4a099b453b1475c3c205705 100644 (file)
@@ -886,15 +886,21 @@ rip_get_attr(eattr *a, byte *buf)
   }
 }
 
+static int
+rip_pat_compare(struct rip_patt *a, struct rip_patt *b)
+{
+  return ((a->metric == b->metric) &&
+         (a->mode == b->mode));
+}
+
 static int
 rip_reconfigure(struct proto *p, struct proto_config *c)
 {
   struct rip_proto_config *new = (struct rip_proto_config *) c;
   int generic = sizeof(struct proto_config) + sizeof(list) /* + sizeof(struct password_item *) */;
 
-  /* FIXME: patt_same needed */
-  return 0;
-
+  if (!iface_patts_equal(&P_CF->iface_list, &new->iface_list, (void *) rip_pat_compare))
+    return 0;
   if (!password_same(P_CF->passwords, 
                     new->passwords))
     return 0;
index 442232dbb0a8499de7047b7cb62cd13d29b3a005..185959aee9fbc011103eb6a6febfe13a24fe50da 100644 (file)
@@ -111,7 +111,7 @@ struct rip_interface {
 struct rip_patt {
   struct iface_patt i;
 
-  int metric;
+  int metric;          /* If you add entries here, don't forget to modify patt_compare! */
   int mode;
 #define IM_BROADCAST 2
 #define IM_QUIET 4
@@ -124,7 +124,7 @@ struct rip_proto_config {
   list iface_list;     /* Patterns configured -- keep it first; see rip_reconfigure why */
   struct password_item *passwords;     /* Passwords, keep second */
 
-  int infinity;                /* User configurable data */
+  int infinity;                /* User configurable data; must be comparable with memcmp */
   int port;
   int period;
   int garbage_time;