Skip to content
Tom Barbette edited this page Oct 3, 2018 · 2 revisions

FromHost.u Element Documentation

NAME

FromHost.u — Click element; interface to /dev/net/tun or ethertap (user-level)

SYNOPSIS

FromHost(DEVNAME [, DST] [, keywords GATEWAY, HEADROOM, ...])

Ports: no inputs, 1 output
Processing: push
Drivers: userlevel

DESCRIPTION

Note: The KernelTun and KernelTap elements are preferable for most purposes.

Reads packets from and writes packets through the universal TUN/TAP module in Linux (the /dev/net/tun device). This allows a user-level Click to hand packets to the virtual ethernet device. FromHost will also transfer packets from the virtual ethernet device.

To use this element your kernel config must support CONFIG_TUN and CONFIG_ETHERTAP. Either modules (tun.o) or compiled in should work.

FromHost allocates a /dev/net/tun device (this might fail) and runs ifconfig to set the interface's local (i.e., kernel) address and netmask to DST, which must be an IP prefix such as 18.26.4.9/24. If DST is not specified, then FromHost assumes the tunnel has already been configured to the correct address. If a nonzero GATEWAY IP address (which must be on the same network as the tun) is specified, then FromHost tries to set up a default route through that host. HEADROOM is the number of bytes left empty before the packet data (to leave room for additional encapsulation headers). Default HEADROOM is roughly 28.

Keyword arguments are:

  • ETHER — Ethernet address. Specifies the fake device's Ethernet address. Default is not specified, in which case the fake device's address is whatever the kernel chooses.
  • DST6 — IPv6 prefix. If specified, FromHost runs ifconfig to set the interface's local (i.e., kernel) IPv6 address and netmask. Both DST and DST6 may be specified.

NOTES

Linux will send ARP queries to the fake device. You must respond to these queries in order to receive any IP packets, but you can obviously respond with any Ethernet address you'd like. Here is one common idiom:

 FromHost(fake, 192.0.0.1/8)
 -> fromhost_cl :: Classifier(12/0806, 12/0800);
 fromhost_cl[0] -> ARPResponder(0.0.0.0/0 1:1:1:1:1:1) -> ToHost(fake);
 fromhost_cl[1] -> ... // IP packets

EXAMPLES

 FromHost(fake, 192.0.0.1/8) -> ...;

An error like "open /dev/net/tun: No such file or directory" usually means that you have not enabled tunnel support in your kernel.

ELEMENT HANDLERS

  • dev_name (read-only) — Returns the name of the device that this element is using.

SEE ALSO

ToHost.u, ifconfig

Generated by click-elem2man from ../elements/userlevel/fromhost.hh:14 on 2018/10/03.

Clone this wiki locally