{
struct netdev_dev_pltap *dev =
netdev_dev_pltap_cast(netdev_get_dev(netdev_));
- struct tun_pi pi;
+ char prefix[4];
struct iovec iov[2] = {
- { .iov_base = &pi, .iov_len = sizeof(pi) },
+ { .iov_base = prefix, .iov_len = 4 },
{ .iov_base = buffer, .iov_len = size }
};
if (!dev->finalized)
{
struct netdev_dev_pltap *dev =
netdev_dev_pltap_cast(netdev_get_dev(netdev_));
- struct tun_pi pi = { 0, htons(ETH_P_IP) };
+ char prefix[4] = { 0, 0, 8, 6 };
struct iovec iov[2] = {
- { .iov_base = &pi, .iov_len = sizeof(pi) },
+ { .iov_base = prefix, .iov_len = 4 },
{ .iov_base = buffer, .iov_len = size }
};
if (dev->fd < 0 || !dev->finalized)
ssize_t retval;
retval = writev(dev->fd, iov, 2);
if (retval >= 0) {
- if (retval != size + sizeof(pi)) {
+ if (retval != size + 4) {
VLOG_WARN_RL(&rl, "sent partial Ethernet packet (%zd bytes of %zu) on %s",
- retval, size + sizeof(pi), netdev_get_name(netdev_));
+ retval, size + 4, netdev_get_name(netdev_));
}
return 0;
} else if (errno != EINTR) {