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

FromHost Element Documentation

NAME

FromHost — Click element; reads packets from Linux

SYNOPSIS

FromHost(DEVNAME [, PREFIX, KEYWORDS])

Ports: no inputs, 1-2 outputs
Processing: push
Drivers: linuxmodule

DESCRIPTION

Captures packets orginating from the Linux kernel and pushes them on output 0. The type of packet depends on the TYPE keyword argument. For TYPE ETHER, output packets have Ethernet headers; only the protocol field is interesting. For TYPE IP, output packets are IP packets. TYPE ETHER is the default, although TYPE IP is probably more useful.

Installs a fake interface called DEVNAME. If PREFIX is given, changes the routing table so that every packet destined for PREFIX = ADDR/MASK is sent through that interface. The packet then leaves on output 0. The device's native address is ADDR.

After the fake device is created, the effect of bringing up the interface and changing the routing table is analogous to:

  % /sbin/ifconfig DEVNAME up
  % /sbin/route add -net ADDR netmask MASK DEVNAME

This element is only available in the Linux kernel module.

Keyword arguments are:

  • TYPE — Specifies the device type. Valid options are ETHER and IP. Currently defaults to ETHER with a warning.
  • PREFIX — Specifies the fake device's IP address and netmask.
  • ETHER — Ethernet address. Specifies the fake device's Ethernet address. Default is 00-01-02-03-04-05.
  • MTU — Integer. The maximum transmission unit reported to Linux for the device. Defaults to 1500.
  • CAPACITY — Unsigned. Maximum length of the internal queue that collects packets from Linux. Defaults to 100. If this queue overflows, packets will be silently dropped.
  • CLEAR_ANNO — Boolean. Sets whether or not to clear the user annotation area on packets received from Linux. This consists of the user annotations. If false, this area is left as it was received from Linux. (Note that the packet type, device, and header annotations are left as is.) Defaults to true.
  • BURST — Integer. Sets the BURST parameter affecting how many packets are emitted per task execution. BURST is 8 by default.

NOTES

If TYPE is IP, FromHost will set the packet's IP header and destination IP address annotations. Packets with bad IP version or header length are dropped or emitted on output 1 if it exists. Note that FromHost doesn't check IP checksums or full packet lengths.

If TYPE is ETHER, 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(fake0, 192.0.0.1/8, TYPE ETHER)
    -> fromhost_cl :: Classifier(12/0806, 12/0800);
  fromhost_cl[0] -> ARPResponder(0.0.0.0/0 1-1-1-1-1-1) -> ToHost;
  fromhost_cl[1] -> ... // IP packets

EXAMPLES

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

ELEMENT HANDLERS

  • length (read-only) — Return the current length of the internal queue.
  • capacity (read-only) — Return the maximum length of the internal queue (the CAPACITY argument).
  • drops (read-only) — Return the number of packets dropped off the internal queue so far.

SEE ALSO

ToHost, FromDevice, PollDevice, ToDevice

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

Clone this wiki locally