114 lines
3.1 KiB
Diff
114 lines
3.1 KiB
Diff
From c04d001c962e756d152abc1dbd58edfdbfee45a1 Mon Sep 17 00:00:00 2001
|
|
From: Tias Guns <tias@ulyssis.org>
|
|
Date: Mon, 19 Mar 2012 18:24:29 +0000
|
|
Subject: [PATCH] fix ipv6, add ipv6_route.h
|
|
|
|
from 'in6_rtmsg' by Dan Drown
|
|
"in6_rtmsg defined in linux/ipv6_route.h"
|
|
http://dan.drown.org/android/src/busybox/
|
|
---
|
|
include/linux/ipv6_route.h | 58 ++++++++++++++++++++++++++++++++++++++++++++
|
|
networking/ifconfig.c | 2 +
|
|
networking/route.c | 2 +
|
|
3 files changed, 62 insertions(+), 0 deletions(-)
|
|
create mode 100644 include/linux/ipv6_route.h
|
|
|
|
diff --git a/include/linux/ipv6_route.h b/include/linux/ipv6_route.h
|
|
new file mode 100644
|
|
index 0000000..144875d
|
|
--- /dev/null
|
|
+++ b/include/linux/ipv6_route.h
|
|
@@ -0,0 +1,58 @@
|
|
+/*
|
|
+ * Linux INET6 implementation
|
|
+ *
|
|
+ * Authors:
|
|
+ * Pedro Roque <roque@di.fc.ul.pt>
|
|
+ *
|
|
+ * This program is free software; you can redistribute it and/or
|
|
+ * modify it under the terms of the GNU General Public License
|
|
+ * as published by the Free Software Foundation; either version
|
|
+ * 2 of the License, or (at your option) any later version.
|
|
+ */
|
|
+
|
|
+#ifndef _LINUX_IPV6_ROUTE_H
|
|
+#define _LINUX_IPV6_ROUTE_H
|
|
+
|
|
+#include <linux/types.h>
|
|
+
|
|
+#define RTF_DEFAULT 0x00010000 /* default - learned via ND */
|
|
+#define RTF_ALLONLINK 0x00020000 /* (deprecated and will be removed)
|
|
+ fallback, no routers on link */
|
|
+#define RTF_ADDRCONF 0x00040000 /* addrconf route - RA */
|
|
+#define RTF_PREFIX_RT 0x00080000 /* A prefix only route - RA */
|
|
+#define RTF_ANYCAST 0x00100000 /* Anycast */
|
|
+
|
|
+#define RTF_NONEXTHOP 0x00200000 /* route with no nexthop */
|
|
+#define RTF_EXPIRES 0x00400000
|
|
+
|
|
+#define RTF_ROUTEINFO 0x00800000 /* route information - RA */
|
|
+
|
|
+#define RTF_CACHE 0x01000000 /* cache entry */
|
|
+#define RTF_FLOW 0x02000000 /* flow significant route */
|
|
+#define RTF_POLICY 0x04000000 /* policy route */
|
|
+
|
|
+#define RTF_PREF(pref) ((pref) << 27)
|
|
+#define RTF_PREF_MASK 0x18000000
|
|
+
|
|
+#define RTF_LOCAL 0x80000000
|
|
+
|
|
+
|
|
+struct in6_rtmsg {
|
|
+ struct in6_addr rtmsg_dst;
|
|
+ struct in6_addr rtmsg_src;
|
|
+ struct in6_addr rtmsg_gateway;
|
|
+ __u32 rtmsg_type;
|
|
+ __u16 rtmsg_dst_len;
|
|
+ __u16 rtmsg_src_len;
|
|
+ __u32 rtmsg_metric;
|
|
+ unsigned long rtmsg_info;
|
|
+ __u32 rtmsg_flags;
|
|
+ int rtmsg_ifindex;
|
|
+};
|
|
+
|
|
+#define RTMSG_NEWDEVICE 0x11
|
|
+#define RTMSG_DELDEVICE 0x12
|
|
+#define RTMSG_NEWROUTE 0x21
|
|
+#define RTMSG_DELROUTE 0x22
|
|
+
|
|
+#endif
|
|
diff --git a/networking/ifconfig.c b/networking/ifconfig.c
|
|
index b6604f5..12e8198 100644
|
|
--- a/networking/ifconfig.c
|
|
+++ b/networking/ifconfig.c
|
|
@@ -79,12 +79,14 @@
|
|
#endif
|
|
|
|
#if ENABLE_FEATURE_IPV6
|
|
+#ifndef __BIONIC__
|
|
struct in6_ifreq {
|
|
struct in6_addr ifr6_addr;
|
|
uint32_t ifr6_prefixlen;
|
|
int ifr6_ifindex;
|
|
};
|
|
#endif
|
|
+#endif
|
|
|
|
/*
|
|
* Here are the bit masks for the "flags" member of struct options below.
|
|
diff --git a/networking/route.c b/networking/route.c
|
|
index b7b5a02..a060eb2 100644
|
|
--- a/networking/route.c
|
|
+++ b/networking/route.c
|
|
@@ -35,6 +35,8 @@
|
|
|
|
#include <net/route.h>
|
|
#include <net/if.h>
|
|
+#include <linux/in6.h>
|
|
+#include <linux/ipv6_route.h>
|
|
|
|
#include "libbb.h"
|
|
#include "inet_common.h"
|
|
--
|
|
1.7.0.4
|
|
|