xref: /freebsd/share/man/man4/rtnetlink.4 (revision 80f03e63d67ede8fedbed4bd6bf6b12ec2ab2cfb)
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