Support tunneling IPv6 on Solaris.
[tinc] / src / solaris / device.c
index 89b5f79..9a6cfb6 100644 (file)
 int device_fd = -1;
 char *device = NULL;
 char *iface = NULL;
-char ifrname[IFNAMSIZ];
 char *device_info = NULL;
 
-int device_total_in = 0;
-int device_total_out = 0;
+static int device_total_in = 0;
+static int device_total_out = 0;
 
 bool setup_device(void)
 {
@@ -128,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;