summaryrefslogtreecommitdiffstats
path: root/translate.c
diff options
context:
space:
mode:
authorLorenzo Colitti <lorenzo@google.com>2013-11-18 12:59:44 +0900
committerLorenzo Colitti <lorenzo@google.com>2013-11-25 18:45:45 +0900
commitc9f4c89da6c76ebc59a0ec1047853a13ce5f5d96 (patch)
tree9110629c337588c00c67a64b05fa498bd37423bc /translate.c
parent9fe1673c316988d0fb8dd85e9d86642e0ac6d1b4 (diff)
downloadandroid_external_android-clat-c9f4c89da6c76ebc59a0ec1047853a13ce5f5d96.tar.gz
android_external_android-clat-c9f4c89da6c76ebc59a0ec1047853a13ce5f5d96.tar.bz2
android_external_android-clat-c9f4c89da6c76ebc59a0ec1047853a13ce5f5d96.zip
Add generic IP packet code and use it for GRE.
Bug: 11542311 Change-Id: I174e0b268869bc77927feeee57003580c47c30f2
Diffstat (limited to 'translate.c')
-rw-r--r--translate.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/translate.c b/translate.c
index 75ad08a..927b49c 100644
--- a/translate.c
+++ b/translate.c
@@ -279,6 +279,22 @@ int icmp6_to_icmp(clat_packet out, int pos, const struct icmp6_hdr *icmp6,
return clat_packet_len;
}
+/* function: generic_packet
+ * takes a generic IP packet and sets it up for translation
+ * out - output packet
+ * pos - position in the output packet of the transport header
+ * payload - pointer to IP payload
+ * len - size of ip payload
+ * returns: the highest position in the output clat_packet that's filled in
+ */
+int generic_packet(clat_packet out, int pos, const char *payload, size_t len) {
+ out[pos].iov_len = 0;
+ out[CLAT_POS_PAYLOAD].iov_base = (char *) payload;
+ out[CLAT_POS_PAYLOAD].iov_len = len;
+
+ return CLAT_POS_PAYLOAD + 1;
+}
+
/* function: udp_packet
* takes a udp packet and sets it up for translation
* out - output packet