BSDIP6Lookup − Click element; IPv6 routing lookup using a variant of PATRICIA trie
BSDIP6Lookup(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...)
any number of inputs, any number of outputs
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.
Outputs a human-readable version of the current routing table.
Reports the OUTput port and GW corresponding to an address.
Adds a route to the table. Format should be ‘ADDR/MASK [GW] OUT’. Fails if a route for ADDR/MASK already exists.
Removes a route from the table. Format should be ‘ADDR/MASK’.
Clears the entire routing table in a single atomic operation.
Outputs human-readable report on current database state.
... -> GetIP6Address(24) -> rt;
rt -> ... rt -> ...
Keith Sklower. "A tree-based packet routing table for Berkeley UNIX". In Proc. USENIX Winter 1991 Technical Conference, pp. 93-104.