From 682b26674e11191f2469f6b37fd92f7176a9a588 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sun, 28 Dec 2008 22:34:14 +0000 Subject: processing of device packets works now (null cipher and no auth algo) --- src/plain_packet.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/plain_packet.c') diff --git a/src/plain_packet.c b/src/plain_packet.c index 69338c1..d11a710 100644 --- a/src/plain_packet.c +++ b/src/plain_packet.c @@ -38,6 +38,7 @@ #include #include +#include void plain_packet_init(plain_packet_t* packet) { @@ -118,5 +119,18 @@ void plain_packet_set_type(plain_packet_t* packet, payload_type_t type) if(!packet) return; - packet->data_.payload_type_ = PAYLOAD_TYPE_T_HTON(type); + if(type == PAYLOAD_TYPE_TUN) { + if(!packet->payload_length_) { + packet->data_.payload_type_ = PAYLOAD_TYPE_T_HTON(PAYLOAD_TYPE_TUN); + return; + } + + struct ip* hdr = (struct ip*)(packet->data_.buf_ + sizeof(payload_type_t)); + if(hdr->ip_v == 4) + packet->data_.payload_type_ = PAYLOAD_TYPE_T_HTON(PAYLOAD_TYPE_TUN4); + else if(hdr->ip_v == 6) + packet->data_.payload_type_ = PAYLOAD_TYPE_T_HTON(PAYLOAD_TYPE_TUN6); + } + else + packet->data_.payload_type_ = PAYLOAD_TYPE_T_HTON(type); } -- cgit v1.2.3