BSDIP6Lookup − Click element; IPv6 routing lookup using a variant of PATRICIA trie
BSDIP6Lookup(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...)
Ports:
any number of inputs, any number of outputs
Processing: push
Package: ip6 (core)
Expects a destination IPv6 address annotation with each packet. Looks up that address in its routing table, using longest-prefix-match, sets the destination annotation to the corresponding GW (if specified), and emits the packet on the indicated OUTput port.
Each argument is a route, specifying a destination and mask, an optional gateway IP address, and an output port. No destination-mask pair may occur more than once.
BSDIP6Lookup is optimized for fast database updates, while longest-prefix lookups are accomplished in at most O(W) time, where W is the width of the search key. The implementation is based on the historic PATRICIA trie lookup scheme borrowed from FreeBSD, described by Keith Sklower in the paper cited below.
table (read-only)
Outputs a human-readable version of the current routing table.
lookup (read-only) |
Reports the OUTput port and GW corresponding to an address.
add (write-only) |
Adds a route to the table. Format should be ‘ADDR/MASK [GW] OUT’. Fails if a route for ADDR/MASK already exists.
remove (write-only) |
Removes a route from the table. Format should be ‘ADDR/MASK’.
flush (write-only) |
Clears the entire routing table in a single atomic operation.
status (read-only) |
Outputs human-readable report on current database state.