implement ethernet over gre encapsulation with a thing egre(4) driver.
authordlg <dlg@openbsd.org>
Thu, 8 Feb 2018 22:08:18 +0000 (22:08 +0000)
committerdlg <dlg@openbsd.org>
Thu, 8 Feb 2018 22:08:18 +0000 (22:08 +0000)
commita34ed272231f1035c620ce4a8cde1b998cbf0c28
treeadd3c8d7aa452726fce6b56a54a0f8eedf66d94e
parent52cbef69132eb9b148769da358f071fd787ef9e9
implement ethernet over gre encapsulation with a thing egre(4) driver.

there's three main chunks in this: transmit, receive, and factoring out
common gre code.

ethernet over gre unfortunately doesnt pad ethernet frames, so their
payload on rx and their headers on tx will be misaligned. egre copes
with this in the rx path by copying the payload with m_dup_pkt if
it detects misalignment. in the tx path, it unconditionally allocates
a new mbuf for the headers, that can be aligned separately to the
existing payload.

most of the common gre code is in the ioctl paths, so this diff
adds gre_tunnel_ioctl, which is in the spirit of ether_ioctl.

ok claudio@
sys/net/if_gre.c