summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zebra/ChangeLog6
-rw-r--r--zebra/ioctl_null.c18
-rw-r--r--zebra/kernel_null.c19
3 files changed, 37 insertions, 6 deletions
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index 602de50d..3cd30bd5 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,9 @@
+2007-04-08 Paul Jakma <paul.jakma@sun.com>
+
+ * {ioctl,kernel}_null.c: Install of IP address should
+ reflect back to zebra via kernel_address_add..., makes
+ testzebra more useful.
+
2007-04-07 Paul Jakma <paul.jakma@sun.com>
* redistribute.c: (zebra_check_addr) Don't redistribute routes
diff --git a/zebra/ioctl_null.c b/zebra/ioctl_null.c
index d1f3db08..6d8e13a0 100644
--- a/zebra/ioctl_null.c
+++ b/zebra/ioctl_null.c
@@ -6,10 +6,20 @@
void ifreq_set_name (struct ifreq *a, struct interface *b) { return; }
-int if_set_prefix (struct interface *a, struct connected *b) { return 0; }
-#pragma weak if_unset_prefix = if_set_prefix
-#pragma weak if_prefix_add_ipv6 = if_set_prefix
-#pragma weak if_prefix_delete_ipv6 = if_set_prefix
+int if_set_prefix (struct interface *a, struct connected *b)
+{
+ kernel_address_add_ipv4 (a, b);
+ return 0;
+}
+
+int if_unset_prefix (struct interface *a, struct connected *b)
+{
+ kernel_address_delete_ipv4 (a, b);
+ return 0;
+}
+
+int if_prefix_add_ipv6 (struct interface *a, struct connected *b) { return 0; }
+#pragma weak if_prefix_delete_ipv6 = if_prefix_add_ipv6
int if_ioctl (u_long a, caddr_t b) { return 0; }
diff --git a/zebra/kernel_null.c b/zebra/kernel_null.c
index a84f4371..94b7b3c7 100644
--- a/zebra/kernel_null.c
+++ b/zebra/kernel_null.c
@@ -1,10 +1,12 @@
/* NULL kernel methods for testing. */
#include <zebra.h>
+#include <log.h>
#include "zebra/zserv.h"
#include "zebra/rt.h"
#include "zebra/redistribute.h"
+#include "zebra/connected.h"
int kernel_add_ipv4 (struct prefix *a, struct rib *b) { return 0; }
#pragma weak kernel_delete_ipv4 = kernel_add_ipv4
@@ -18,8 +20,21 @@ int kernel_add_route (struct prefix_ipv4 *a, struct in_addr *b, int c, int d)
{ return 0; }
int kernel_address_add_ipv4 (struct interface *a, struct connected *b)
-{ return 0; }
-#pragma weak kernel_address_delete_ipv4 = kernel_address_add_ipv4
+{
+ zlog_debug ("%s", __func__);
+ connected_add_ipv4 (a, 0, &b->address->u.prefix4, b->address->prefixlen,
+ (b->destination ? &b->destination->u.prefix4 : NULL),
+ NULL);
+ return 0;
+}
+
+int kernel_address_delete_ipv4 (struct interface *a, struct connected *b)
+{
+ zlog_debug ("%s", __func__);
+ connected_delete_ipv4 (a, 0, &b->address->u.prefix4, b->address->prefixlen,
+ (b->destination ? &b->destination->u.prefix4 : NULL));
+ return 0;
+}
void kernel_init (void) { return; }
#pragma weak route_read = kernel_init