try to find source address in routing lookups
Destination port
Destination address
flow/class id
mark
mask for netfilter mark
Target to jump to
Interface name
IP protocol
iif or oif is l3mdev goto its table
priority/preference
Originator of the rule
Source port
Source address
Extended table id
UID range
Drop without notification
Jump to another rule
No operation
Drop with EACCES
Pass to fixed table
Drop with ENETUNREACH
see https://github.com/torvalds/linux/blob/master/include/uapi/linux/fib_rules.h
Link supports multicast routing
Driver supports setting media type (only used by ARM ethernet)
Link supports broadcasting
Tell driver to do debugging (currently unused)
Driver signals IFF_DORMANT
Link loopback network
Link layer is operational
Master of a load balancer (bonding)
Link supports multicasting
ARP is not supported
u32erface is point-to-point link
Link selects port automatically (only used by ARM ethernet)
Receive all packets.
Link is up and carrier is OK (RFC2863 OPER_UP)
Slave of a load balancer
Link is up (administratively).
Neighbour cache entry type: entry for cache statistics
Neighbour cache entry type: entry for a network layer destination
address
Neighbour cache entry type: entry for a link layer destination
address
Neighbour cache entry type: unknown type
Request for an acknowledgment on success. Typical direction of request is from user space
(CPC) to kernel space (FEC).
extended ACK TVLs were included
Add to the end of the object list.
Return an atomic snapshot of the table. Requires CAP_NET_ADMIN
capability or a effective UID
of 0.
request was capped
Create object if it doesn’t already exist.
Dump was filtered as requested
Dump was inconsistent due to sequence change
Echo this request. Typical direction of request is from user space (CPC) to kernel space
(FEC).
Don’t replace if the object already exists.
Return all entries matching criteria passed in message content.
Indicates the message is part of a multipart message terminated by NLMSG_DONE
Do not delete recursively
Replace existing matching object.
Must be set on all request messages (typically from user space to kernel space)
Return the complete table instead of a single entry.
Neighbour cache entry state: the validation of this entry is currently delayed
Neighbour cache entry state: the validation of this entry has failed
Neighbour cache entry state: the neighbour has not (yet) been resolved
Neighbour cache entry state: entry is valid and the kernel will not try to validate or refresh
it.
Neighbour cache entry state: pseudo state for fresh entries or before deleting entries
Neighbour cache entry state: entry is valid forever and can only be removed explicitly from
userspace.
Neighbour cache entry state: the neighbour entry is being probed
Neighbour cache entry state: the neighbour entry is valid until its lifetime expires
Neighbour cache entry state: the neighbour entry is valid but suspicious
This route is cloned. Cloned routes are routes coming from the cache instead of the FIB. For
IPv4, the cache was removed in Linux 3.6 (see
IPv4 route lookup on Linux for more information
about IPv4 routing)
Multipath equalizer (not yet implemented)
Return the full FIB lookup match (see commit b61798130f1be5bff08712308126c2d7ebe390ef
)
Show the table from which the lookup result comes. Note that before commit
c36ba6603a11
, Linux
would always hardcode
RouteMessageHeader.table
(known as
rtmsg.rtm_table
in the kernel) to
RT_TABLE_MAIN
.
If the route changes, notify the user via rtnetlink
Prefix addresses
A local broadcast route (sent as a unicast)
A packet dropping route
A local broadcast route (sent as a broadcast)
A local interface route
A multicast route
A network address translation rule
A packet rejection route
Continue routing lookup in another table
A gateway or direct route
An unreachable destination
Unknown route
Refer to an external resolver (not implemented)
Route was learnt during boot
Route was learnt by the kernel
Route was learnt by an ICMP redirect
Route was set statically
Unknown
The destination is valid only on this host
The destination is link local
Destination doesn’t exist
(IPv6 only) the destination is site local, i.e. it is valid inside this site. This is for interior
routes in the local autonomous system
The destination is globally valid.
A route table introduced for compatibility with old software which do not support table IDs
greater than 255. See commit 709772e6e065
in the kernel:
The default routing table.
The local table.
The main routing table.
An unspecified routing table