diff options
Diffstat (limited to 'zebra')
-rw-r--r-- | zebra/ChangeLog | 6 | ||||
-rw-r--r-- | zebra/ioctl_null.c | 18 | ||||
-rw-r--r-- | zebra/kernel_null.c | 19 |
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 |