From 5bba3124c8c23568def7a4804651a53f3a6b4fd2 Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Wed, 10 Nov 2004 21:14:08 +0000 Subject: [PATCH] Support tunneling IPv6 on Solaris. --- lib/ipv4.h | 5 ++++- src/solaris/device.c | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/ipv4.h b/lib/ipv4.h index 060f8ae9..7f1e1592 100644 --- a/lib/ipv4.h +++ b/lib/ipv4.h @@ -67,7 +67,6 @@ struct ip { #define IP_RF 0x8000 #define IP_DF 0x4000 #define IP_MF 0x2000 -#define IP_OFFMASK 0x1fff uint8_t ip_ttl; uint8_t ip_p; uint16_t ip_sum; @@ -75,6 +74,10 @@ struct ip { } __attribute__ ((__packed__)); #endif +#ifndef IP_OFFMASK +#define IP_OFFMASK 0x1fff +#endif + #ifndef HAVE_STRUCT_ICMP struct icmp { uint8_t icmp_type; diff --git a/src/solaris/device.c b/src/solaris/device.c index 4bd88d73..9a6cfb65 100644 --- a/src/solaris/device.c +++ b/src/solaris/device.c @@ -127,8 +127,21 @@ bool read_packet(vpn_packet_t *packet) return false; } - packet->data[12] = 0x08; - packet->data[13] = 0x00; + switch(packet->data[14] >> 4) { + case 4: + packet->data[12] = 0x08; + packet->data[13] = 0x00; + break; + case 6: + packet->data[12] = 0x86; + packet->data[13] = 0xDD; + break; + default: + ifdebug(TRAFFIC) logger(LOG_ERR, + _ ("Unknown IP version %d while reading packet from %s %s"), + packet->data[14] >> 4, device_info, device); + return false; + } packet->len = lenin + 14; -- 2.39.5