#!/system/bin/sh
cat << "EOF" > /data/local/tmp/radvd-wlan2.conf
interface wlan2 {
AdvSendAdvert on;
AdvLinkMTU 1500;
prefix 64:ff9b:ffff::/64 {
AdvOnLink on;
AdvAutonomous on;
};
route 64:ff9b::/96 {
AdvRoutePreference high;
};
route 2000::/64 {
AdvRoutePreference high;
};
RDNSS 64:ff9b::7f09:909 {
};
};
EOF
chmod -w /data/local/tmp/radvd-wlan2.conf
./radvd -C /data/local/tmp/radvd-wlan2.conf -m stderr -l /data/local/tmp -p /dev/radvd.pid
# ip -6 rule add from all iif wlan2 lookup local_network
ip -6 rule add from all iif wlan2 lookup tun0 pref 9999
ip -6 rule add from all iif tun0 lookup local_network pref 9999
sysctl net.ipv6.conf.wlan2.accept_ra=1
sysctl net.ipv6.conf.wlan2.accept_ra_from_local=1
sysctl net.ipv6.conf.wlan2.addr_gen_mode=1
ip -6 route add 64:ff9b:ffff::/64 dev wlan2 table local_network
ip route get 64:ff9b::1.1.1.1 from 64:ff9b:ffff::11 iif wlan2
ip route get 64:ff9b:ffff::1111 from 64:ff9b::101:101 iif tun0
ip rule add iif wlan2 lookup tun0 pref 9999
ip rule add iif tun0 lookup local_network pref 9999
iptables -C FORWARD -j ACCEPT ||
iptables -I FORWARD -j ACCEPT
add_dns_nat() {
iptables -C PREROUTING -t nat -p udp --dport 53 -i wlan2 -j DNAT --to $1 ||
iptables -A PREROUTING -t nat -p udp --dport 53 -i wlan2 -j DNAT --to $1
}
ip -4 a s dev tun0 | grep 172.19.0. && add_dns_nat 172.19.0.2
ip -4 a s dev tun0 | grep 26.26.26. && add_dns_nat 26.26.26.2
ip route add 74.125.0.0/16 dev tun0 scope link table tun0
ip route add 142.250.0.0/15 dev tun0 scope link table tun0
ip route add 172.217.0.0/16 dev tun0 scope link table tun0
ip route add 216.58.0.0/15 dev tun0 scope link table tun0
build android radvd from source
level@ThinkStation:$ mkdir -p android_external_radvd/jni
level@ThinkStation:$ git clone https://github.com/ddrown/android_external_radvd android_external_radvd/jni
level@ThinkStation:$ cd android_external_radvd/jni
level@ThinkStation:android_external_radvd/jni$ git diff
diff --git a/Android.mk b/Android.mk
index 72880fc..9f4f911 100644
--- a/Android.mk
+++ b/Android.mk
@@ -5,7 +5,8 @@ LOCAL_SRC_FILES := log.c recv.c socket.c util.c device-common.c interface.c proc
LOCAL_MODULE := radvd
-LOCAL_CFLAGS := -O2 -g -DINET6=1 -DPATH_RADVD_CONF=\"$(PATH_RADVD_CONF)\" -Wall -Werror -Wno-unused-function
+LOCAL_CFLAGS := -O2 -g -DINET6=1 -DPATH_RADVD_CONF=\"$(PATH_RADVD_CONF)\" -Wall -Werror -Wno-unused-function -fPIC -fPIE
+LOCAL_LDFLAGS := -fPIC -pie
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
include $(BUILD_EXECUTABLE)
diff --git a/radvd.c b/radvd.c
index 6355ff0..f82f9dd 100644
--- a/radvd.c
+++ b/radvd.c
@@ -107,6 +107,8 @@ main(int argc, char *argv[])
#ifdef HAVE_GETOPT_LONG
int opt_idx;
#endif
+(void)logfile;
+(void)log_method;
pname = ((pname=strrchr(argv[0],'/')) != NULL)?pname+1:argv[0];
Comments
Post a Comment