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