summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--zebra/kernel_null.c3
-rw-r--r--zebra/rt.h5
-rw-r--r--zebra/rt_ioctl.c110
3 files changed, 1 insertions, 117 deletions
diff --git a/zebra/kernel_null.c b/zebra/kernel_null.c
index b90c6f57f..17b3c7bc8 100644
--- a/zebra/kernel_null.c
+++ b/zebra/kernel_null.c
@@ -39,9 +39,6 @@ int kernel_add_ipv6 (struct prefix *a, struct rib *b) { return 0; }
int kernel_update_ipv6 (struct prefix *a, struct rib *b) { return 0; }
int kernel_delete_ipv6 (struct prefix *a, struct rib *b) { return 0; }
-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)
{
zlog_debug ("%s", __func__);
diff --git a/zebra/rt.h b/zebra/rt.h
index 4515d56a3..46e71fa46 100644
--- a/zebra/rt.h
+++ b/zebra/rt.h
@@ -30,16 +30,13 @@
extern int kernel_add_ipv4 (struct prefix *, struct rib *);
extern int kernel_update_ipv4 (struct prefix *, struct rib *);
extern int kernel_delete_ipv4 (struct prefix *, struct rib *);
-extern int kernel_add_route (struct prefix_ipv4 *, struct in_addr *, int, int);
+
extern int kernel_address_add_ipv4 (struct interface *, struct connected *);
extern int kernel_address_delete_ipv4 (struct interface *, struct connected *);
extern int kernel_neigh_update (int, int, uint32_t, char *, int);
-#ifdef HAVE_IPV6
extern int kernel_add_ipv6 (struct prefix *, struct rib *);
extern int kernel_update_ipv6 (struct prefix *, struct rib *);
extern int kernel_delete_ipv6 (struct prefix *, struct rib *);
-#endif /* HAVE_IPV6 */
-
#endif /* _ZEBRA_RT_H */
diff --git a/zebra/rt_ioctl.c b/zebra/rt_ioctl.c
index 383c5f71a..597392c38 100644
--- a/zebra/rt_ioctl.c
+++ b/zebra/rt_ioctl.c
@@ -46,122 +46,12 @@ kernel_read (int sock)
return;
}
-#if 0
-/* Initialization prototype of struct sockaddr_in. */
-static struct sockaddr_in sin_proto =
-{
-#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
- sizeof (struct sockaddr_in),
-#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */
- AF_INET, 0, {0}, {0}
-};
-#endif /* 0 */
-
/* Solaris has ortentry. */
#ifdef HAVE_OLD_RTENTRY
#define rtentry ortentry
#endif /* HAVE_OLD_RTENTRY */
/* Interface to ioctl route message. */
-int
-kernel_add_route (struct prefix_ipv4 *dest, struct in_addr *gate,
- int index, int flags)
-{
- int ret;
- int sock;
- struct rtentry rtentry;
- struct sockaddr_in sin_dest, sin_mask, sin_gate;
-
- memset (&rtentry, 0, sizeof (struct rtentry));
-
- /* Make destination. */
- memset (&sin_dest, 0, sizeof (struct sockaddr_in));
- sin_dest.sin_family = AF_INET;
-#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
- sin_dest.sin_len = sizeof (struct sockaddr_in);
-#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */
- sin_dest.sin_addr = dest->prefix;
-
- /* Make gateway. */
- if (gate)
- {
- memset (&sin_gate, 0, sizeof (struct sockaddr_in));
- sin_gate.sin_family = AF_INET;
-#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
- sin_gate.sin_len = sizeof (struct sockaddr_in);
-#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */
- sin_gate.sin_addr = *gate;
- }
-
- memset (&sin_mask, 0, sizeof (struct sockaddr_in));
- sin_mask.sin_family = AF_INET;
-#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
- sin_gate.sin_len = sizeof (struct sockaddr_in);
-#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */
- masklen2ip (dest->prefixlen, &sin_mask.sin_addr);
-
- /* Set destination address, mask and gateway.*/
- memcpy (&rtentry.rt_dst, &sin_dest, sizeof (struct sockaddr_in));
- if (gate)
- memcpy (&rtentry.rt_gateway, &sin_gate, sizeof (struct sockaddr_in));
-#ifndef SUNOS_5
- memcpy (&rtentry.rt_genmask, &sin_mask, sizeof (struct sockaddr_in));
-#endif /* SUNOS_5 */
-
- /* Routing entry flag set. */
- if (dest->prefixlen == 32)
- rtentry.rt_flags |= RTF_HOST;
-
- if (gate && gate->s_addr != INADDR_ANY)
- rtentry.rt_flags |= RTF_GATEWAY;
-
- rtentry.rt_flags |= RTF_UP;
-
- /* Additional flags */
- rtentry.rt_flags |= flags;
-
-
- /* For tagging route. */
- /* rtentry.rt_flags |= RTF_DYNAMIC; */
-
- /* Open socket for ioctl. */
- sock = socket (AF_INET, SOCK_DGRAM, 0);
- if (sock < 0)
- {
- zlog_warn ("can't make socket\n");
- return -1;
- }
-
- /* Send message by ioctl(). */
- ret = ioctl (sock, SIOCADDRT, &rtentry);
- if (ret < 0)
- {
- switch (errno)
- {
- case EEXIST:
- close (sock);
- return ZEBRA_ERR_RTEXIST;
- break;
- case ENETUNREACH:
- close (sock);
- return ZEBRA_ERR_RTUNREACH;
- break;
- case EPERM:
- close (sock);
- return ZEBRA_ERR_EPERM;
- break;
- }
-
- close (sock);
- zlog_warn ("write : %s (%d)", safe_strerror (errno), errno);
- return 1;
- }
- close (sock);
-
- return ret;
-}
-
-/* Interface to ioctl route message. */
static int
kernel_ioctl_ipv4 (u_long cmd, struct prefix *p, struct rib *rib, int family)
{