17366c0a4SAlexander V. Chernikov.\" 27366c0a4SAlexander V. Chernikov.\" Copyright (C) 2022 Alexander Chernikov <melifaro@FreeBSD.org>. 37366c0a4SAlexander V. Chernikov.\" 47366c0a4SAlexander V. Chernikov.\" Redistribution and use in source and binary forms, with or without 57366c0a4SAlexander V. Chernikov.\" modification, are permitted provided that the following conditions 67366c0a4SAlexander V. Chernikov.\" are met: 77366c0a4SAlexander V. Chernikov.\" 1. Redistributions of source code must retain the above copyright 87366c0a4SAlexander V. Chernikov.\" notice, this list of conditions and the following disclaimer. 97366c0a4SAlexander V. Chernikov.\" 2. Redistributions in binary form must reproduce the above copyright 107366c0a4SAlexander V. Chernikov.\" notice, this list of conditions and the following disclaimer in the 117366c0a4SAlexander V. Chernikov.\" documentation and/or other materials provided with the distribution. 127366c0a4SAlexander V. Chernikov.\" 137366c0a4SAlexander V. Chernikov.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 147366c0a4SAlexander V. Chernikov.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 157366c0a4SAlexander V. Chernikov.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 167366c0a4SAlexander V. Chernikov.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 177366c0a4SAlexander V. Chernikov.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 187366c0a4SAlexander V. Chernikov.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 197366c0a4SAlexander V. Chernikov.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 207366c0a4SAlexander V. Chernikov.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 217366c0a4SAlexander V. Chernikov.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 227366c0a4SAlexander V. Chernikov.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 237366c0a4SAlexander V. Chernikov.\" SUCH DAMAGE. 247366c0a4SAlexander V. Chernikov.\" 257366c0a4SAlexander V. Chernikov.Dd November 1, 2022 267366c0a4SAlexander V. Chernikov.Dt RTNETLINK 4 277366c0a4SAlexander V. Chernikov.Os 287366c0a4SAlexander V. Chernikov.Sh NAME 297366c0a4SAlexander V. Chernikov.Nm RTNetlink 307366c0a4SAlexander V. Chernikov.Nd Network configuration-specific Netlink family 317366c0a4SAlexander V. Chernikov.Sh SYNOPSIS 327366c0a4SAlexander V. Chernikov.In netlink/netlink.h 337366c0a4SAlexander V. Chernikov.In netlink/netlink_route.h 347366c0a4SAlexander V. Chernikov.Ft int 350079d177SAlexander V. Chernikov.Fn socket AF_NETLINK SOCK_RAW NETLINK_ROUTE 367366c0a4SAlexander V. Chernikov.Sh DESCRIPTION 377366c0a4SAlexander V. ChernikovThe 387366c0a4SAlexander V. Chernikov.Dv NETLINK_ROUTE 397366c0a4SAlexander V. Chernikovfamily aims to be the primary configuration mechanism for all 407366c0a4SAlexander V. Chernikovnetwork-related tasks. 417366c0a4SAlexander V. ChernikovCurrently it supports configuring interfaces, interface addresses, routes, 427366c0a4SAlexander V. Chernikovnexthops and arp/ndp neighbors. 437366c0a4SAlexander V. Chernikov.Sh ROUTES 447366c0a4SAlexander V. ChernikovAll route configuration messages share the common header: 457366c0a4SAlexander V. Chernikov.Bd -literal 467366c0a4SAlexander V. Chernikovstruct rtmsg { 477366c0a4SAlexander V. Chernikov unsigned char rtm_family; /* address family */ 487366c0a4SAlexander V. Chernikov unsigned char rtm_dst_len; /* Prefix length */ 497366c0a4SAlexander V. Chernikov unsigned char rtm_src_len; /* Deprecated, set to 0 */ 507366c0a4SAlexander V. Chernikov unsigned char rtm_tos; /* Type of service (not used) */ 517366c0a4SAlexander V. Chernikov unsigned char rtm_table; /* deprecated, set to 0 */ 527366c0a4SAlexander V. Chernikov unsigned char rtm_protocol; /* Routing protocol id (RTPROT_) */ 537366c0a4SAlexander V. Chernikov unsigned char rtm_scope; /* Route distance (RT_SCOPE_) */ 547366c0a4SAlexander V. Chernikov unsigned char rtm_type; /* Route type (RTN_) */ 557366c0a4SAlexander V. Chernikov unsigned rtm_flags; /* Route flags (not supported) */ 567366c0a4SAlexander V. Chernikov}; 577366c0a4SAlexander V. Chernikov.Ed 587366c0a4SAlexander V. Chernikov.Pp 597366c0a4SAlexander V. ChernikovThe 607366c0a4SAlexander V. Chernikov.Va rtm_family 617366c0a4SAlexander V. Chernikovspecifies the route family to be operated on. 627366c0a4SAlexander V. ChernikovCurrently, 637366c0a4SAlexander V. Chernikov.Dv AF_INET6 647366c0a4SAlexander V. Chernikovand 657366c0a4SAlexander V. Chernikov.Dv AF_INET 667366c0a4SAlexander V. Chernikovare the only supported families. 677366c0a4SAlexander V. ChernikovThe route prefix length is stored in 687366c0a4SAlexander V. Chernikov.Va rtm_dst_len 697366c0a4SAlexander V. Chernikov. 707366c0a4SAlexander V. ChernikovThe caller should set the originator identity (one of the 717366c0a4SAlexander V. Chernikov.Dv RTPROT_ 727366c0a4SAlexander V. Chernikovvalues) in 737366c0a4SAlexander V. Chernikov.Va rtm_protocol 747366c0a4SAlexander V. Chernikov. 757366c0a4SAlexander V. ChernikovIt is useful for users and for the application itself, allowing for easy 767366c0a4SAlexander V. Chernikovidentification of self-originated routes. 777366c0a4SAlexander V. ChernikovThe route scope has to be set via 787366c0a4SAlexander V. Chernikov.Va rtm_scope 797366c0a4SAlexander V. Chernikovfield. 807366c0a4SAlexander V. ChernikovThe supported values are: 817366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 827366c0a4SAlexander V. ChernikovRT_SCOPE_UNIVERSE Global scope 837366c0a4SAlexander V. ChernikovRT_SCOPE_LINK Link scope 847366c0a4SAlexander V. Chernikov.Ed 857366c0a4SAlexander V. Chernikov.Pp 867366c0a4SAlexander V. ChernikovRoute type needs to be set. 877366c0a4SAlexander V. ChernikovThe defined values are: 887366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 897366c0a4SAlexander V. ChernikovRTN_UNICAST Unicast route 907366c0a4SAlexander V. ChernikovRTN_MULTICAST Multicast route 917366c0a4SAlexander V. ChernikovRTN_BLACKHOLE Drops traffic towards destination 927366c0a4SAlexander V. ChernikovRTN_PROHIBIT Drops traffic and sends reject 937366c0a4SAlexander V. Chernikov.Ed 947366c0a4SAlexander V. Chernikov.Pp 957366c0a4SAlexander V. ChernikovThe following messages are supported: 967366c0a4SAlexander V. Chernikov.Ss RTM_NEWROUTE 977366c0a4SAlexander V. ChernikovAdds a new route. 987366c0a4SAlexander V. ChernikovAll NL flags are supported. 997366c0a4SAlexander V. ChernikovExtending a multipath route requires NLM_F_APPEND flag. 1007366c0a4SAlexander V. Chernikov.Ss RTM_DELROUTE 1017366c0a4SAlexander V. ChernikovTries to delete a route. 1027366c0a4SAlexander V. ChernikovThe route is specified using a combination of 1037366c0a4SAlexander V. Chernikov.Dv RTA_DST 1047366c0a4SAlexander V. ChernikovTLV and 1057366c0a4SAlexander V. Chernikov.Va rtm_dst_len . 1067366c0a4SAlexander V. Chernikov.Ss RTM_GETROUTE 1077366c0a4SAlexander V. ChernikovFetches a single route or all routes in the current VNET, depending on the 1087366c0a4SAlexander V. Chernikov.Dv NLM_F_DUMP 1097366c0a4SAlexander V. Chernikovflag. 1107366c0a4SAlexander V. ChernikovEach route is reported as 1117366c0a4SAlexander V. Chernikov.Dv RTM_NEWROUTE 1127366c0a4SAlexander V. Chernikovmessage. 1137366c0a4SAlexander V. ChernikovThe following filters are recognised by the kernel: 1147366c0a4SAlexander V. Chernikov.Pp 1157366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 1167366c0a4SAlexander V. Chernikovrtm_family required family or AF_UNSPEC 1177366c0a4SAlexander V. ChernikovRTA_TABLE fib number or RT_TABLE_UNSPEC to return all fibs 1187366c0a4SAlexander V. Chernikov.Ed 1197366c0a4SAlexander V. Chernikov.Ss TLVs 1207366c0a4SAlexander V. Chernikov.Bl -tag -width indent 1217366c0a4SAlexander V. Chernikov.It Dv RTA_DST 1227366c0a4SAlexander V. Chernikov(binary) IPv4/IPv6 address, depending on the 1237366c0a4SAlexander V. Chernikov.Va rtm_family . 1247366c0a4SAlexander V. Chernikov.It Dv RTA_OIF 1257366c0a4SAlexander V. Chernikov(uint32_t) transmit interface index. 1267366c0a4SAlexander V. Chernikov.It Dv RTA_GATEWAY 1277366c0a4SAlexander V. Chernikov(binary) IPv4/IPv6 gateway address, depending on the 1287366c0a4SAlexander V. Chernikov.Va rtm_family . 1297366c0a4SAlexander V. Chernikov.It Dv RTA_METRICS 1307366c0a4SAlexander V. Chernikov(nested) Container attribute, listing route properties. 1317366c0a4SAlexander V. ChernikovThe only supported sub-attribute is 1327366c0a4SAlexander V. Chernikov.Dv RTAX_MTU , which stores path MTU as uint32_t. 1337366c0a4SAlexander V. Chernikov.It Dv RTA_MULTIPATH 1347366c0a4SAlexander V. ChernikovThis attribute contains multipath route nexthops with their weights. 1357366c0a4SAlexander V. ChernikovThese nexthops are represented as a sequence of 1367366c0a4SAlexander V. Chernikov.Va rtnexthop 1377366c0a4SAlexander V. Chernikovstructures, each followed by 1387366c0a4SAlexander V. Chernikov.Dv RTA_GATEWAY 1397366c0a4SAlexander V. Chernikovor 1407366c0a4SAlexander V. Chernikov.Dv RTA_VIA 1417366c0a4SAlexander V. Chernikovattributes. 1427366c0a4SAlexander V. Chernikov.Bd -literal 1437366c0a4SAlexander V. Chernikovstruct rtnexthop { 1447366c0a4SAlexander V. Chernikov unsigned short rtnh_len; 1457366c0a4SAlexander V. Chernikov unsigned char rtnh_flags; 1467366c0a4SAlexander V. Chernikov unsigned char rtnh_hops; /* nexthop weight */ 1477366c0a4SAlexander V. Chernikov int rtnh_ifindex; 1487366c0a4SAlexander V. Chernikov}; 1497366c0a4SAlexander V. Chernikov.Ed 1507366c0a4SAlexander V. Chernikov.Pp 1517366c0a4SAlexander V. ChernikovThe 1527366c0a4SAlexander V. Chernikov.Va rtnh_len 1537366c0a4SAlexander V. Chernikovfield specifies the total nexthop info length, including both 1547366c0a4SAlexander V. Chernikov.Va struct rtnexthop 1557366c0a4SAlexander V. Chernikovand the following TLVs. 1567366c0a4SAlexander V. ChernikovThe 1577366c0a4SAlexander V. Chernikov.Va rtnh_hops 1587366c0a4SAlexander V. Chernikovfield stores relative nexthop weight, used for load balancing between group 1597366c0a4SAlexander V. Chernikovmembers. 1607366c0a4SAlexander V. ChernikovThe 1617366c0a4SAlexander V. Chernikov.Va rtnh_ifindex 1627366c0a4SAlexander V. Chernikovfield contains the index of the transmit interface. 1637366c0a4SAlexander V. Chernikov.Pp 1647366c0a4SAlexander V. ChernikovThe following TLVs can follow the structure: 1657366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 1667366c0a4SAlexander V. ChernikovRTA_GATEWAY IPv4/IPv6 nexthop address of the gateway 1677366c0a4SAlexander V. ChernikovRTA_VIA IPv6 nexthop address for IPv4 route 1687366c0a4SAlexander V. ChernikovRTA_KNH_ID Kernel-specific index of the nexthop 1697366c0a4SAlexander V. Chernikov.Ed 1707366c0a4SAlexander V. Chernikov.It Dv RTA_KNH_ID 1717366c0a4SAlexander V. Chernikov(uint32_t) (FreeBSD-specific) Auto-allocated kernel index of the nexthop. 1727366c0a4SAlexander V. Chernikov.It Dv RTA_RTFLAGS 1737366c0a4SAlexander V. Chernikov(uint32_t) (FreeBSD-specific) rtsock route flags. 1747366c0a4SAlexander V. Chernikov.It Dv RTA_TABLE 1757366c0a4SAlexander V. Chernikov(uint32_t) Fib number of the route. 1767366c0a4SAlexander V. ChernikovDefault route table is 1777366c0a4SAlexander V. Chernikov.Dv RT_TABLE_MAIN . 178*ffc4f93eSBenedict ReuschlingTo explicitly specify "all tables" one needs to set the value to 1797366c0a4SAlexander V. Chernikov.Dv RT_TABLE_UNSPEC . 1807366c0a4SAlexander V. Chernikov.It Dv RTA_EXPIRES 1817366c0a4SAlexander V. Chernikov(uint32_t) seconds till path expiration. 1827366c0a4SAlexander V. Chernikov.It Dv RTA_NH_ID 1837366c0a4SAlexander V. Chernikov(uint32_t) useland nexthop or nexthop group index. 1847366c0a4SAlexander V. Chernikov.El 1857366c0a4SAlexander V. Chernikov.Ss Groups 1867366c0a4SAlexander V. ChernikovThe following groups are defined: 1877366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 1887366c0a4SAlexander V. ChernikovRTNLGRP_IPV4_ROUTE Notifies on IPv4 route arrival/removal/change 1897366c0a4SAlexander V. ChernikovRTNLGRP_IPV6_ROUTE Notifies on IPv6 route arrival/removal/change 1907366c0a4SAlexander V. Chernikov.Ed 1917366c0a4SAlexander V. Chernikov.Sh NEXTHOPS 1927366c0a4SAlexander V. ChernikovAll nexthop/nexthop group configuration messages share the common header: 1937366c0a4SAlexander V. Chernikov.Bd -literal 1947366c0a4SAlexander V. Chernikovstruct nhmsg { 1957366c0a4SAlexander V. Chernikov unsigned char nh_family; /* transport family */ 1967366c0a4SAlexander V. Chernikov unsigned char nh_scope; /* ignored on RX, filled by kernel */ 1977366c0a4SAlexander V. Chernikov unsigned char nh_protocol; /* Routing protocol that installed nh */ 1987366c0a4SAlexander V. Chernikov unsigned char resvd; 1997366c0a4SAlexander V. Chernikov unsigned int nh_flags; /* RTNH_F_* flags from route.h */ 2007366c0a4SAlexander V. Chernikov}; 2017366c0a4SAlexander V. Chernikov.Ed 2027366c0a4SAlexander V. ChernikovThe 2037366c0a4SAlexander V. Chernikov.Va nh_family 204*ffc4f93eSBenedict Reuschlingspecifies the gateway address family. 2057366c0a4SAlexander V. ChernikovIt can be different from route address family for IPv4 routes with IPv6 2067366c0a4SAlexander V. Chernikovnexthops. 2077366c0a4SAlexander V. ChernikovThe 2087366c0a4SAlexander V. Chernikov.Va nh_protocol 2097366c0a4SAlexander V. Chernikovis similar to 2107366c0a4SAlexander V. Chernikov.Va rtm_protocol 2117366c0a4SAlexander V. Chernikovfield, which designates originator application identity. 2127366c0a4SAlexander V. Chernikov.Pp 2137366c0a4SAlexander V. ChernikovThe following messages are supported: 2147366c0a4SAlexander V. Chernikov.Ss RTM_NEWNEXTHOP 2157366c0a4SAlexander V. ChernikovCreates a new nexthop or nexthop group. 2167366c0a4SAlexander V. Chernikov.Ss RTM_DELNEXTHOP 2177366c0a4SAlexander V. ChernikovDeletes nexthop or nexthhop group. 2187366c0a4SAlexander V. ChernikovThe required object is specified by the 2197366c0a4SAlexander V. Chernikov.Dv RTA_NH_ID 2207366c0a4SAlexander V. Chernikovattribute. 2217366c0a4SAlexander V. Chernikov.Ss RTM_GETNEXTHOP 2227366c0a4SAlexander V. ChernikovFetches a single nexthop or all nexthops/nexthop groups, depending on the 2237366c0a4SAlexander V. Chernikov.Dv NLM_F_DUMP 2247366c0a4SAlexander V. Chernikovflag. 2257366c0a4SAlexander V. ChernikovThe following filters are recognised by the kernel: 2267366c0a4SAlexander V. Chernikov.Pp 2277366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 2287366c0a4SAlexander V. ChernikovRTA_NH_ID nexthop or nexthtop group id 2297366c0a4SAlexander V. ChernikovNHA_GROUPS match only nexthtop groups 2307366c0a4SAlexander V. Chernikov.Ed 2317366c0a4SAlexander V. Chernikov.Ss TLVs 2327366c0a4SAlexander V. Chernikov.Bl -tag -width indent 2337366c0a4SAlexander V. Chernikov.It Dv RTA_NH_ID 2347366c0a4SAlexander V. Chernikov(uint32_t) Nexthhop index used to identify particular nexthop or nexthop group. 2357366c0a4SAlexander V. ChernikovShould be provided by userland at the nexthtop creation time. 2367366c0a4SAlexander V. Chernikov.It Dv NHA_GROUP 2377366c0a4SAlexander V. ChernikovThis attribute designates the nexthtop group and contains all of its nexthtops 2387366c0a4SAlexander V. Chernikovand their relative weights. 239fa826f64SGordon BerglingThe attribute consists of a list of 2407366c0a4SAlexander V. Chernikov.Va nexthop_grp 2417366c0a4SAlexander V. Chernikovstructures: 2427366c0a4SAlexander V. Chernikov.Bd -literal 2437366c0a4SAlexander V. Chernikovstruct nexthop_grp { 2447366c0a4SAlexander V. Chernikov uint32_t id; /* nexhop userland index */ 2457366c0a4SAlexander V. Chernikov uint8_t weight; /* weight of this nexthop */ 2467366c0a4SAlexander V. Chernikov uint8_t resvd1; 2477366c0a4SAlexander V. Chernikov uint16_t resvd2; 2487366c0a4SAlexander V. Chernikov}; 2497366c0a4SAlexander V. Chernikov.Ed 2507366c0a4SAlexander V. Chernikov.It Dv NHA_GROUP_TYPE 2517366c0a4SAlexander V. Chernikov(uint16_t) Nexthtop group type, set to one of the following types: 2527366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 2537366c0a4SAlexander V. ChernikovNEXTHOP_GRP_TYPE_MPATH default multipath group 2547366c0a4SAlexander V. Chernikov.Ed 2557366c0a4SAlexander V. Chernikov.It Dv NHA_BLACKHOLE 2567366c0a4SAlexander V. Chernikov(flag) Marks the nexthtop as blackhole. 2577366c0a4SAlexander V. Chernikov.It Dv NHA_OIF 2587366c0a4SAlexander V. Chernikov(uint32_t) Transmit interface index of the nexthtop. 2597366c0a4SAlexander V. Chernikov.It Dv NHA_GATEWAY 2607366c0a4SAlexander V. Chernikov(binary) IPv4/IPv6 gateway address 2617366c0a4SAlexander V. Chernikov.It Dv NHA_GROUPS 2627366c0a4SAlexander V. Chernikov(flag) Matches nexthtop groups during dump. 2637366c0a4SAlexander V. Chernikov.El 2647366c0a4SAlexander V. Chernikov.Ss Groups 2657366c0a4SAlexander V. ChernikovThe following groups are defined: 2667366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 2677366c0a4SAlexander V. ChernikovRTNLGRP_NEXTHOP Notifies on nexthop/groups arrival/removal/change 2687366c0a4SAlexander V. Chernikov.Ed 2697366c0a4SAlexander V. Chernikov.Sh INTERFACES 2707366c0a4SAlexander V. ChernikovAll interface configuration messages share the common header: 2717366c0a4SAlexander V. Chernikov.Bd -literal 2727366c0a4SAlexander V. Chernikovstruct ifinfomsg { 2737366c0a4SAlexander V. Chernikov unsigned char ifi_family; /* not used, set to 0 */ 2747366c0a4SAlexander V. Chernikov unsigned char __ifi_pad; 2757366c0a4SAlexander V. Chernikov unsigned short ifi_type; /* ARPHRD_* */ 276*ffc4f93eSBenedict Reuschling int ifi_index; /* Interface index */ 2777366c0a4SAlexander V. Chernikov unsigned ifi_flags; /* IFF_* flags */ 2787366c0a4SAlexander V. Chernikov unsigned ifi_change; /* IFF_* change mask */ 2797366c0a4SAlexander V. Chernikov}; 2807366c0a4SAlexander V. Chernikov.Ed 2817366c0a4SAlexander V. Chernikov.Ss RTM_NEWLINK 2827366c0a4SAlexander V. ChernikovCreates a new interface. 2837366c0a4SAlexander V. ChernikovThe only mandatory TLV is 2847366c0a4SAlexander V. Chernikov.Dv IFLA_IFNAME . 28525c2dd2fSAlexander V. ChernikovThe following attributes are returned inside the nested 28625c2dd2fSAlexander V. Chernikov.Dv NLMSGERR_ATTR_COOKIE : 28725c2dd2fSAlexander V. Chernikov.Pp 28825c2dd2fSAlexander V. Chernikov.Bd -literal -offset indent -compact 28925c2dd2fSAlexander V. ChernikovIFLA_NEW_IFINDEX (uint32) created interface index 29025c2dd2fSAlexander V. ChernikovIFLA_IFNAME (string) created interface name 29125c2dd2fSAlexander V. Chernikov.Ed 2927366c0a4SAlexander V. Chernikov.Ss RTM_DELLINK 2937366c0a4SAlexander V. ChernikovDeletes the interface specified by 2947366c0a4SAlexander V. Chernikov.Dv IFLA_IFNAME . 2957366c0a4SAlexander V. Chernikov.Ss RTM_GETLINK 2967366c0a4SAlexander V. ChernikovFetches a single interface or all interfaces in the current VNET, depending on the 2977366c0a4SAlexander V. Chernikov.Dv NLM_F_DUMP 2987366c0a4SAlexander V. Chernikovflag. 2997366c0a4SAlexander V. ChernikovEach interface is reported as a 3007366c0a4SAlexander V. Chernikov.Dv RTM_NEWLINK 3017366c0a4SAlexander V. Chernikovmessage. 3027366c0a4SAlexander V. ChernikovThe following filters are recognised by the kernel: 3037366c0a4SAlexander V. Chernikov.Pp 3047366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 3057366c0a4SAlexander V. Chernikovifi_index interface index 3067366c0a4SAlexander V. ChernikovIFLA_IFNAME interface name 3077366c0a4SAlexander V. ChernikovIFLA_ALT_IFNAME interface name 3087366c0a4SAlexander V. Chernikov.Ed 3097366c0a4SAlexander V. Chernikov.Ss TLVs 3107366c0a4SAlexander V. Chernikov.Bl -tag -width indent 3117366c0a4SAlexander V. Chernikov.It Dv IFLA_ADDRESS 3127366c0a4SAlexander V. Chernikov(binary) Llink-level interface address (MAC). 3137366c0a4SAlexander V. Chernikov.It Dv IFLA_BROADCAST 3147366c0a4SAlexander V. Chernikov(binary) (readonly) Link-level broadcast address. 3157366c0a4SAlexander V. Chernikov.It Dv IFLA_IFNAME 3167366c0a4SAlexander V. Chernikov(string) New interface name. 31780f03e63SAlexander V. Chernikov.It Dv IFLA_IFALIAS 31880f03e63SAlexander V. Chernikov(string) Interface description. 3197366c0a4SAlexander V. Chernikov.It Dv IFLA_LINK 3207366c0a4SAlexander V. Chernikov(uint32_t) (readonly) Interface index. 3217366c0a4SAlexander V. Chernikov.It Dv IFLA_MASTER 3227366c0a4SAlexander V. Chernikov(uint32_t) Parent interface index. 3237366c0a4SAlexander V. Chernikov.It Dv IFLA_LINKINFO 3247366c0a4SAlexander V. Chernikov(nested) Interface type-specific attributes: 3257366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 3267366c0a4SAlexander V. ChernikovIFLA_INFO_KIND (string) interface type ("vlan") 3277366c0a4SAlexander V. ChernikovIFLA_INFO_DATA (nested) custom attributes 3287366c0a4SAlexander V. Chernikov.Ed 3297366c0a4SAlexander V. ChernikovThe following types and attributes are supported: 3307366c0a4SAlexander V. Chernikov.Bl -tag -width indent 3317366c0a4SAlexander V. Chernikov.It Dv vlan 3327366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 3337366c0a4SAlexander V. ChernikovIFLA_VLAN_ID (uint16_t) 802.1Q vlan id 3347366c0a4SAlexander V. ChernikovIFLA_VLAN_PROTOCOL (uint16_t) Protocol: ETHERTYPE_VLAN or ETHERTYPE_QINQ 3357366c0a4SAlexander V. Chernikov.Ed 3367366c0a4SAlexander V. Chernikov.El 3377366c0a4SAlexander V. Chernikov.It Dv IFLA_OPERSTATE 3387366c0a4SAlexander V. Chernikov(uint8_t) Interface operational state per RFC 2863. 3397366c0a4SAlexander V. ChernikovCan be one of the following: 3407366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 3417366c0a4SAlexander V. ChernikovIF_OPER_UNKNOWN status can not be determined 3427366c0a4SAlexander V. ChernikovIF_OPER_NOTPRESENT some (hardware) component not present 3437366c0a4SAlexander V. ChernikovIF_OPER_DOWN down 3447366c0a4SAlexander V. ChernikovIF_OPER_LOWERLAYERDOWN some lower-level interface is down 3457366c0a4SAlexander V. ChernikovIF_OPER_TESTING in some test mode 3467366c0a4SAlexander V. ChernikovIF_OPER_DORMANT "up" but waiting for some condition (802.1X) 3477366c0a4SAlexander V. ChernikovIF_OPER_UP ready to pass packets 3487366c0a4SAlexander V. Chernikov.Ed 3497366c0a4SAlexander V. Chernikov.It Dv IFLA_STATS64 3507366c0a4SAlexander V. Chernikov(readonly) Consists of the following 64-bit counters structure: 3517366c0a4SAlexander V. Chernikov.Bd -literal 3527366c0a4SAlexander V. Chernikovstruct rtnl_link_stats64 { 3537366c0a4SAlexander V. Chernikov uint64_t rx_packets; /* total RX packets (IFCOUNTER_IPACKETS) */ 3547366c0a4SAlexander V. Chernikov uint64_t tx_packets; /* total TX packets (IFCOUNTER_OPACKETS) */ 3557366c0a4SAlexander V. Chernikov uint64_t rx_bytes; /* total RX bytes (IFCOUNTER_IBYTES) */ 3567366c0a4SAlexander V. Chernikov uint64_t tx_bytes; /* total TX bytes (IFCOUNTER_OBYTES) */ 3577366c0a4SAlexander V. Chernikov uint64_t rx_errors; /* RX errors (IFCOUNTER_IERRORS) */ 3587366c0a4SAlexander V. Chernikov uint64_t tx_errors; /* RX errors (IFCOUNTER_OERRORS) */ 3597366c0a4SAlexander V. Chernikov uint64_t rx_dropped; /* RX drop (no space in ring/no bufs) (IFCOUNTER_IQDROPS) */ 3607366c0a4SAlexander V. Chernikov uint64_t tx_dropped; /* TX drop (IFCOUNTER_OQDROPS) */ 3617366c0a4SAlexander V. Chernikov uint64_t multicast; /* RX multicast packets (IFCOUNTER_IMCASTS) */ 3627366c0a4SAlexander V. Chernikov uint64_t collisions; /* not supported */ 3637366c0a4SAlexander V. Chernikov uint64_t rx_length_errors; /* not supported */ 3647366c0a4SAlexander V. Chernikov uint64_t rx_over_errors; /* not supported */ 3657366c0a4SAlexander V. Chernikov uint64_t rx_crc_errors; /* not supported */ 3667366c0a4SAlexander V. Chernikov uint64_t rx_frame_errors; /* not supported */ 3677366c0a4SAlexander V. Chernikov uint64_t rx_fifo_errors; /* not supported */ 3687366c0a4SAlexander V. Chernikov uint64_t rx_missed_errors; /* not supported */ 3697366c0a4SAlexander V. Chernikov uint64_t tx_aborted_errors; /* not supported */ 3707366c0a4SAlexander V. Chernikov uint64_t tx_carrier_errors; /* not supported */ 3717366c0a4SAlexander V. Chernikov uint64_t tx_fifo_errors; /* not supported */ 3727366c0a4SAlexander V. Chernikov uint64_t tx_heartbeat_errors; /* not supported */ 3737366c0a4SAlexander V. Chernikov uint64_t tx_window_errors; /* not supported */ 3747366c0a4SAlexander V. Chernikov uint64_t rx_compressed; /* not supported */ 3757366c0a4SAlexander V. Chernikov uint64_t tx_compressed; /* not supported */ 3767366c0a4SAlexander V. Chernikov uint64_t rx_nohandler; /* dropped due to no proto handler (IFCOUNTER_NOPROTO) */ 3777366c0a4SAlexander V. Chernikov}; 3787366c0a4SAlexander V. Chernikov.Ed 3797366c0a4SAlexander V. Chernikov.El 3807366c0a4SAlexander V. Chernikov.Ss Groups 3817366c0a4SAlexander V. ChernikovThe following groups are defined: 3827366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 3837366c0a4SAlexander V. ChernikovRTNLGRP_LINK Notifies on interface arrival/removal/change 3847366c0a4SAlexander V. Chernikov.Ed 3857366c0a4SAlexander V. Chernikov.Sh INTERFACE ADDRESSES 3867366c0a4SAlexander V. ChernikovAll interface address configuration messages share the common header: 3877366c0a4SAlexander V. Chernikov.Bd -literal 3887366c0a4SAlexander V. Chernikovstruct ifaddrmsg { 3897366c0a4SAlexander V. Chernikov uint8_t ifa_family; /* Address family */ 3907366c0a4SAlexander V. Chernikov uint8_t ifa_prefixlen; /* Prefix length */ 3917366c0a4SAlexander V. Chernikov uint8_t ifa_flags; /* Address-specific flags */ 3927366c0a4SAlexander V. Chernikov uint8_t ifa_scope; /* Address scope */ 3937366c0a4SAlexander V. Chernikov uint32_t ifa_index; /* Link ifindex */ 3947366c0a4SAlexander V. Chernikov}; 3957366c0a4SAlexander V. Chernikov.Ed 3967366c0a4SAlexander V. Chernikov.Pp 3977366c0a4SAlexander V. ChernikovThe 3987366c0a4SAlexander V. Chernikov.Va ifa_family 3997366c0a4SAlexander V. Chernikovspecifies the address family of the interface address. 4007366c0a4SAlexander V. ChernikovThe 4017366c0a4SAlexander V. Chernikov.Va ifa_prefixlen 4027366c0a4SAlexander V. Chernikovspecifies the prefix length if applicable for the address family. 4037366c0a4SAlexander V. ChernikovThe 4047366c0a4SAlexander V. Chernikov.Va ifa_index 4057366c0a4SAlexander V. Chernikovspecifies the interface index of the target interface. 4067366c0a4SAlexander V. Chernikov.Ss RTM_NEWADDR 4077366c0a4SAlexander V. ChernikovNot supported 4087366c0a4SAlexander V. Chernikov.Ss RTM_DELADDR 4097366c0a4SAlexander V. ChernikovNot supported 4107366c0a4SAlexander V. Chernikov.Ss RTM_GETADDR 411c1871a33SAlexander V. ChernikovFetches interface addresses in the current VNET matching conditions. 412c1871a33SAlexander V. ChernikovEach address is reported as a 413c1871a33SAlexander V. Chernikov.Dv RTM_NEWADDR 414c1871a33SAlexander V. Chernikovmessage. 415c1871a33SAlexander V. ChernikovThe following filters are recognised by the kernel: 416c1871a33SAlexander V. Chernikov.Pp 417c1871a33SAlexander V. Chernikov.Bd -literal -offset indent -compact 418c1871a33SAlexander V. Chernikovifa_family required family or AF_UNSPEC 419c1871a33SAlexander V. Chernikovifa_index matching interface index or 0 420c1871a33SAlexander V. Chernikov.Ed 4217366c0a4SAlexander V. Chernikov.Ss TLVs 4227366c0a4SAlexander V. Chernikov.Bl -tag -width indent 4237366c0a4SAlexander V. Chernikov.It Dv IFA_ADDRESS 4247366c0a4SAlexander V. Chernikov(binary) masked interface address or destination address for p2p interfaces. 4257366c0a4SAlexander V. Chernikov.It Dv IFA_LOCAL 426c1871a33SAlexander V. Chernikov(binary) local interface address. 427c1871a33SAlexander V. ChernikovSet for IPv4 and p2p addresses. 428c1871a33SAlexander V. Chernikov.It Dv IFA_LABEL 429c1871a33SAlexander V. Chernikov(string) interface name. 4307366c0a4SAlexander V. Chernikov.It Dv IFA_BROADCAST 431*ffc4f93eSBenedict Reuschling(binary) broadcast interface address. 4327366c0a4SAlexander V. Chernikov.El 4337366c0a4SAlexander V. Chernikov.Ss Groups 4347366c0a4SAlexander V. ChernikovThe following groups are defined: 4357366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 4367366c0a4SAlexander V. ChernikovRTNLGRP_IPV4_IFADDR Notifies on IPv4 ifaddr arrival/removal/change 4377366c0a4SAlexander V. ChernikovRTNLGRP_IPV6_IFADDR Notifies on IPv6 ifaddr arrival/removal/change 4387366c0a4SAlexander V. Chernikov.Ed 4397366c0a4SAlexander V. Chernikov.Sh NEIGHBORS 4407366c0a4SAlexander V. ChernikovAll neighbor configuration messages share the common header: 4417366c0a4SAlexander V. Chernikov.Bd -literal 4427366c0a4SAlexander V. Chernikovstruct ndmsg { 4437366c0a4SAlexander V. Chernikov uint8_t ndm_family; 4447366c0a4SAlexander V. Chernikov uint8_t ndm_pad1; 4457366c0a4SAlexander V. Chernikov uint16_t ndm_pad2; 4467366c0a4SAlexander V. Chernikov int32_t ndm_ifindex; 4477366c0a4SAlexander V. Chernikov uint16_t ndm_state; 4487366c0a4SAlexander V. Chernikov uint8_t ndm_flags; 4497366c0a4SAlexander V. Chernikov uint8_t ndm_type; 4507366c0a4SAlexander V. Chernikov}; 4517366c0a4SAlexander V. Chernikov.Ed 4527366c0a4SAlexander V. Chernikov.Pp 4537366c0a4SAlexander V. ChernikovThe 4547366c0a4SAlexander V. Chernikov.Va ndm_family 4557366c0a4SAlexander V. Chernikovfield specifies the address family (IPv4 or IPv6) of the neighbor. 4567366c0a4SAlexander V. ChernikovThe 4577366c0a4SAlexander V. Chernikov.Va ndm_ifindex 4587366c0a4SAlexander V. Chernikovspecifies the interface to operate on. 4597366c0a4SAlexander V. ChernikovThe 4607366c0a4SAlexander V. Chernikov.Va ndm_state 4617366c0a4SAlexander V. Chernikovrepresents the entry state according to the neighbor model. 4627366c0a4SAlexander V. ChernikovThe state can be one of the following: 4637366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 4647366c0a4SAlexander V. ChernikovNUD_INCOMPLETE No lladdr, address resolution in progress 4657366c0a4SAlexander V. ChernikovNUD_REACHABLE reachable & recently resolved 4667366c0a4SAlexander V. ChernikovNUD_STALE has lladdr but it's stale 4677366c0a4SAlexander V. ChernikovNUD_DELAY has lladdr, is stale, probes delayed 4687366c0a4SAlexander V. ChernikovNUD_PROBE has lladdr, is stale, probes sent 4697366c0a4SAlexander V. ChernikovNUD_FAILED unused 4707366c0a4SAlexander V. Chernikov.Ed 4717366c0a4SAlexander V. Chernikov.Pp 4727366c0a4SAlexander V. ChernikovThe 4737366c0a4SAlexander V. Chernikov.Va ndm_flags 4747366c0a4SAlexander V. Chernikovfield stores the options specific to this entry. 4757366c0a4SAlexander V. ChernikovAvailable flags: 4767366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 4777366c0a4SAlexander V. ChernikovNTF_SELF local station (LLE_IFADDR) 4787366c0a4SAlexander V. ChernikovNTF_PROXY proxy entry (LLE_PUB) 479*ffc4f93eSBenedict ReuschlingNTF_STICKY permanent entry (LLE_STATIC) 4807366c0a4SAlexander V. ChernikovNTF_ROUTER dst indicated itself as a router 4817366c0a4SAlexander V. Chernikov.Ed 4827366c0a4SAlexander V. Chernikov.Ss RTM_NEWNEIGH 4837366c0a4SAlexander V. ChernikovCreates new neighbor entry. 4847366c0a4SAlexander V. ChernikovThe mandatory options are 4857366c0a4SAlexander V. Chernikov.Dv NDA_DST , 4867366c0a4SAlexander V. Chernikov.Dv NDA_LLADDR 4877366c0a4SAlexander V. Chernikovand 4887366c0a4SAlexander V. Chernikov.Dv NDA_IFINDEX . 4897366c0a4SAlexander V. Chernikov.Ss RTM_DELNEIGH 4907366c0a4SAlexander V. ChernikovDeletes the neighbor entry. 4917366c0a4SAlexander V. ChernikovThe entry is specified by the combination of 4927366c0a4SAlexander V. Chernikov.Dv NDA_DST 4937366c0a4SAlexander V. Chernikovand 4947366c0a4SAlexander V. Chernikov.Dv NDA_IFINDEX . 4957366c0a4SAlexander V. Chernikov.Ss RTM_GETNEIGH 4967366c0a4SAlexander V. ChernikovFetches a single neighbor or all neighbors in the current VNET, depending on the 4977366c0a4SAlexander V. Chernikov.Dv NLM_F_DUMP 4987366c0a4SAlexander V. Chernikovflag. 4997366c0a4SAlexander V. ChernikovEach entry is reported as 5007366c0a4SAlexander V. Chernikov.Dv RTM_NEWNEIGH 5017366c0a4SAlexander V. Chernikovmessage. 5027366c0a4SAlexander V. ChernikovThe following filters are recognised by the kernel: 5037366c0a4SAlexander V. Chernikov.Pp 5047366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 5057366c0a4SAlexander V. Chernikovndm_family required family or AF_UNSPEC 5067366c0a4SAlexander V. Chernikovndm_ifindex target ifindex 5077366c0a4SAlexander V. ChernikovNDA_IFINDEX target ifindex 5087366c0a4SAlexander V. Chernikov.Ed 5097366c0a4SAlexander V. Chernikov.Ss TLVs 5107366c0a4SAlexander V. Chernikov.Bl -tag -width indent 5117366c0a4SAlexander V. Chernikov.It Dv NDA_DST 5127366c0a4SAlexander V. Chernikov(binary) neighbor IPv4/IPv6 address. 5137366c0a4SAlexander V. Chernikov.It Dv NDA_LLADDR 5147366c0a4SAlexander V. Chernikov(binary) neighbor link-level address. 5157366c0a4SAlexander V. Chernikov.It Dv NDA_IFINDEX 5167366c0a4SAlexander V. Chernikov(uint32_t) interface index. 5177366c0a4SAlexander V. Chernikov.It Dv NDA_FLAGS_EXT 5187366c0a4SAlexander V. Chernikov(uint32_t) extended version of 5197366c0a4SAlexander V. Chernikov.Va ndm_flags . 5207366c0a4SAlexander V. Chernikov.El 5217366c0a4SAlexander V. Chernikov.Ss Groups 5227366c0a4SAlexander V. ChernikovThe following groups are defined: 5237366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact 5247366c0a4SAlexander V. ChernikovRTNLGRP_NEIGH Notifies on ARP/NDP neighbor arrival/removal/change 5257366c0a4SAlexander V. Chernikov.Ed 5267366c0a4SAlexander V. Chernikov.Sh SEE ALSO 5277366c0a4SAlexander V. Chernikov.Xr netlink 4 , 5287366c0a4SAlexander V. Chernikov.Xr route 4 5297366c0a4SAlexander V. Chernikov.Sh HISTORY 5307366c0a4SAlexander V. ChernikovThe 5317366c0a4SAlexander V. Chernikov.Dv NETLINK_ROUTE 5327366c0a4SAlexander V. Chernikovprotocol family appeared in 5336d2feb39STom Hukins.Fx 13.2 . 5347366c0a4SAlexander V. Chernikov.Sh AUTHORS 535*ffc4f93eSBenedict ReuschlingThe netlink was implemented by 5367366c0a4SAlexander V. Chernikov.An -nosplit 5377366c0a4SAlexander V. Chernikov.An Alexander Chernikov Aq Mt melifaro@FreeBSD.org . 5387366c0a4SAlexander V. ChernikovIt was derived from the Google Summer of Code 2021 project by 5397366c0a4SAlexander V. Chernikov.An Ng Peng Nam Sean . 540