- if(write(tap_fd, outpkt.data, outpkt.len) < 0)
- syslog(LOG_ERR, _("Can't write to tap device: %m"));
- else
- total_tap_out += outpkt.len;
+ Do decryption is everything else is fixed...
+*/
+ outlen = outpkt.len+2;
+ memcpy(&outpkt, inpkt, outlen);
+
+ /* Fix mac address */
+
+ memcpy(outpkt.data, mymac.net.mac.address.x, 6);
+
+ if(taptype == TAP_TYPE_TUNTAP)
+ {
+ if(write(tap_fd, outpkt.data, outpkt.len) < 0)
+ syslog(LOG_ERR, _("Can't write to tun/tap device: %m"));
+ else
+ total_tap_out += outpkt.len;
+ }
+ else /* ethertap */
+ {
+ if(write(tap_fd, outpkt.data - 2, outpkt.len + 2) < 0)
+ syslog(LOG_ERR, _("Can't write to ethertap device: %m"));
+ else
+ total_tap_out += outpkt.len + 2;
+ }