From: Guus Sliepen Date: Wed, 10 Nov 2004 21:14:08 +0000 (+0000) Subject: Support tunneling IPv6 on Solaris. X-Git-Tag: release-1.0.3~8 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=5bba3124c8c23568def7a4804651a53f3a6b4fd2;p=oweals%2Ftinc.git Support tunneling IPv6 on Solaris. --- diff --git a/lib/ipv4.h b/lib/ipv4.h index 060f8ae..7f1e159 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 4bd88d7..9a6cfb6 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;