summaryrefslogtreecommitdiffstats
path: root/clatd.c
diff options
context:
space:
mode:
authorLorenzo Colitti <lorenzo@google.com>2014-02-09 10:35:38 +0900
committerLorenzo Colitti <lorenzo@google.com>2014-02-22 12:46:06 +0900
commit57d480d2b425ef20d8b6f84abd4e9e3209fa9422 (patch)
tree1d4d53278970b0681042e4f10ef44c1c5334bc5f /clatd.c
parent07f0265830fcae2632159e9993b93a161d7ea23b (diff)
downloadandroid_external_android-clat-57d480d2b425ef20d8b6f84abd4e9e3209fa9422.tar.gz
android_external_android-clat-57d480d2b425ef20d8b6f84abd4e9e3209fa9422.tar.bz2
android_external_android-clat-57d480d2b425ef20d8b6f84abd4e9e3209fa9422.zip
Support translating fragmented packets.
Bug: 11542311 Change-Id: I14a20b9ac669cdb5927f6ac26147bb0109099497
Diffstat (limited to 'clatd.c')
-rw-r--r--clatd.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/clatd.c b/clatd.c
index 3ab2371..a89c588 100644
--- a/clatd.c
+++ b/clatd.c
@@ -51,6 +51,9 @@
#define DEVICENAME6 "clat"
#define DEVICENAME4 "clat4"
+/* 40 bytes IPv6 header - 20 bytes IPv4 header + 8 bytes fragment header */
+#define MTU_DELTA 28
+
int forwarding_fd = -1;
volatile sig_atomic_t running = 1;
@@ -271,8 +274,9 @@ void configure_interface(const char *uplink_interface, const char *plat_prefix,
Global_Clatd_Config.mtu = 1280;
}
- if(Global_Clatd_Config.ipv4mtu <= 0 || (Global_Clatd_Config.ipv4mtu > Global_Clatd_Config.mtu - 20)) {
- Global_Clatd_Config.ipv4mtu = Global_Clatd_Config.mtu-20;
+ if(Global_Clatd_Config.ipv4mtu <= 0 ||
+ Global_Clatd_Config.ipv4mtu > Global_Clatd_Config.mtu - MTU_DELTA) {
+ Global_Clatd_Config.ipv4mtu = Global_Clatd_Config.mtu - MTU_DELTA;
logmsg(ANDROID_LOG_WARN,"ipv4mtu now set to = %d",Global_Clatd_Config.ipv4mtu);
}