xref: /freebsd-src/share/man/man4/genetlink.4 (revision ffc4f93e960d38b6f70d59409127f7562e40f916)
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 GENETLINK 4
277366c0a4SAlexander V. Chernikov.Os
287366c0a4SAlexander V. Chernikov.Sh NAME
297366c0a4SAlexander V. Chernikov.Nm genetlink
307366c0a4SAlexander V. Chernikov.Nd Generic Netlink
317366c0a4SAlexander V. Chernikov.Sh SYNOPSIS
327366c0a4SAlexander V. Chernikov.In netlink/netlink.h
337366c0a4SAlexander V. Chernikov.In netlink/netlink_generic.h
347366c0a4SAlexander V. Chernikov.Ft int
357366c0a4SAlexander V. Chernikov.Fn socket AF_NETLINK SOCK_DGRAM NETLINK_GENERIC
367366c0a4SAlexander V. Chernikov.Sh DESCRIPTION
377366c0a4SAlexander V. ChernikovThe
387366c0a4SAlexander V. Chernikov.Dv NETLINK_GENERIC
397366c0a4SAlexander V. Chernikovis a "container" family, used for dynamic registration of other families
407366c0a4SAlexander V. Chernikovbelonging to the various subsystems.
417366c0a4SAlexander V. ChernikovThese subsystems provide a string family name during registration and
427366c0a4SAlexander V. Chernikovreceive a dynamically-allocated family id.
437366c0a4SAlexander V. ChernikovAllocated family identifiers are then used by applications to get access to
447366c0a4SAlexander V. Chernikovfunctions provided by that subsystem via netlink.
457366c0a4SAlexander V. ChernikovThere are standard methods for resolving string family names to family
467366c0a4SAlexander V. Chernikovidentifiers.
477366c0a4SAlexander V. ChernikovA similar mechanism works for the notification groups provided by those
487366c0a4SAlexander V. Chernikovfamilies.
497366c0a4SAlexander V. Chernikov.Pp
507366c0a4SAlexander V. ChernikovAll generic netlink families share a common header:
517366c0a4SAlexander V. Chernikov.Bd -literal
527366c0a4SAlexander V. Chernikovstruct genlmsghdr {
537366c0a4SAlexander V. Chernikov	uint8_t		cmd;		/* command within the family */
547366c0a4SAlexander V. Chernikov	uint8_t		version;	/* ABI version for the cmd */
557366c0a4SAlexander V. Chernikov	uint16_t	reserved;	/* reserved: set to 0 */
567366c0a4SAlexander V. Chernikov};
577366c0a4SAlexander V. Chernikov.Ed
587366c0a4SAlexander V. ChernikovThe family id is encoded in the
597366c0a4SAlexander V. Chernikov.Dv nlmsg_type
607366c0a4SAlexander V. Chernikovof the base netlink header.
617366c0a4SAlexander V. ChernikovThe
627366c0a4SAlexander V. Chernikov.Va cmd
637366c0a4SAlexander V. Chernikovfield is the command identifier within the family.
647366c0a4SAlexander V. ChernikovThe
657366c0a4SAlexander V. Chernikov.Va version
667366c0a4SAlexander V. Chernikovfield is the command version.
677366c0a4SAlexander V. Chernikov.Sh METHODS
687366c0a4SAlexander V. ChernikovThe generic Netlink framework provides the base family,
697366c0a4SAlexander V. Chernikov.Dv GENL_ID_CTRL
707366c0a4SAlexander V. Chernikov("nlctrl") with a fixed family id.
717366c0a4SAlexander V. ChernikovThis family is used to list the details of all registered families.
727366c0a4SAlexander V. Chernikov.Pp
737366c0a4SAlexander V. ChernikovThe following messages are supported by the framework:
747366c0a4SAlexander V. Chernikov.Ss CTRL_CMD_GETFAMILY
757366c0a4SAlexander V. ChernikovFetches a single family or all registered families, depending on the
767366c0a4SAlexander V. Chernikov.Dv NLM_F_DUMP
777366c0a4SAlexander V. Chernikovflag.
787366c0a4SAlexander V. ChernikovEach family is reported as
797366c0a4SAlexander V. Chernikov.Dv CTRL_CMD_NEWFAMILY
807366c0a4SAlexander V. Chernikovmessage.
817366c0a4SAlexander V. ChernikovThe following filters are recognised by the kernel:
827366c0a4SAlexander V. Chernikov.Pp
837366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact
847366c0a4SAlexander V. ChernikovCTRL_ATTR_FAMILY_ID	(uint16_t) current family id assigned by kernel
857366c0a4SAlexander V. ChernikovCTRL_ATTR_FAMILY_NAME	(string) family name
867366c0a4SAlexander V. Chernikov.Ed
877366c0a4SAlexander V. Chernikov.Ss TLVs
887366c0a4SAlexander V. Chernikov.Bl -tag -width indent
897366c0a4SAlexander V. Chernikov.It Dv CTRL_ATTR_FAMILY_ID
907366c0a4SAlexander V. Chernikov(uint16_t) Dynamically-assigned family identifier.
917366c0a4SAlexander V. Chernikov.It Dv CTRL_ATTR_FAMILY_NAME
927366c0a4SAlexander V. Chernikov(string) Family name.
937366c0a4SAlexander V. Chernikov.It Dv CTRL_ATTR_HDRSIZE
947366c0a4SAlexander V. Chernikov(uint32_t) Family mandatory header size (typically 0).
957366c0a4SAlexander V. Chernikov.It Dv CTRL_ATTR_MAXATTR
967366c0a4SAlexander V. Chernikov(uint32_t) Maximum attribute number valid for the family.
977366c0a4SAlexander V. Chernikov.It Dv CTRL_ATTR_OPS
987366c0a4SAlexander V. Chernikov(nested) List of the operations supported by the family.
997366c0a4SAlexander V. ChernikovThe attribute consists of a list of nested TLVs, with attribute values
1007366c0a4SAlexander V. Chernikovmonotonically incremented, starting from 0.
1017366c0a4SAlexander V. ChernikovThe following attributes are present in each TLV:
1027366c0a4SAlexander V. Chernikov.Bl -tag -width indent
1037366c0a4SAlexander V. Chernikov.It Dv CTRL_ATTR_OP_ID
1047366c0a4SAlexander V. ChernikovOperation (message) number.
1057366c0a4SAlexander V. Chernikov.It Dv CTRL_ATTR_OP_FLAGS
1067366c0a4SAlexander V. ChernikovOperation flags.
1077366c0a4SAlexander V. ChernikovThe following flags are supported:
1087366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact
1097366c0a4SAlexander V. ChernikovGENL_ADMIN_PERM		requires elevated permissions
1107366c0a4SAlexander V. ChernikovGENL_CMD_CAP_DO		operation is a modification request
1117366c0a4SAlexander V. ChernikovGENL_CMD_CAP_DUMP	operation is a get/dump request
1127366c0a4SAlexander V. Chernikov.Ed
1137366c0a4SAlexander V. Chernikov.El
1147366c0a4SAlexander V. Chernikov.It Dv CTRL_ATTR_MCAST_GROUPS
1157366c0a4SAlexander V. Chernikov(nested) List of the notification groups supported by the family.
1167366c0a4SAlexander V. ChernikovThe attribute consists of a list of nested TLVs, with attribute values
1177366c0a4SAlexander V. Chernikovmonotonically incremented, starting from 0.
1187366c0a4SAlexander V. ChernikovThe following attributes are present in each TLV:
1197366c0a4SAlexander V. Chernikov.Bl -tag -width indent
1207366c0a4SAlexander V. Chernikov.It Dv CTRL_ATTR_MCAST_GRP_ID
1217366c0a4SAlexander V. ChernikovGroup id that can be used in
1227366c0a4SAlexander V. Chernikov.Dv NETLINK_ADD_MEMBERSHIP
1237366c0a4SAlexander V. Chernikov.Xr setsockopt 2 .
1247366c0a4SAlexander V. Chernikov.It Dv CTRL_ATTR_MCAST_GRP_NAME
1257366c0a4SAlexander V. Chernikov(string) Human-readable name of the group.
1267366c0a4SAlexander V. Chernikov.El
1277366c0a4SAlexander V. Chernikov.El
1287366c0a4SAlexander V. Chernikov.Ss Groups
1297366c0a4SAlexander V. ChernikovThe following groups are defined:
1307366c0a4SAlexander V. Chernikov.Bd -literal -offset indent -compact
1317366c0a4SAlexander V. Chernikov"notify"	Notifies on family registrations/removal.
1327366c0a4SAlexander V. Chernikov.Ed
1337366c0a4SAlexander V. Chernikov.Sh SEE ALSO
1347366c0a4SAlexander V. Chernikov.Xr netlink 4
1357366c0a4SAlexander V. Chernikov.Sh HISTORY
1367366c0a4SAlexander V. ChernikovThe
1377366c0a4SAlexander V. Chernikov.Dv NETLINK_GENERIC
1387366c0a4SAlexander V. Chernikovprotocol family appeared in
1396d2feb39STom Hukins.Fx 13.2 .
1407366c0a4SAlexander V. Chernikov.Sh AUTHORS
141*ffc4f93eSBenedict ReuschlingThe netlink was implemented by
1427366c0a4SAlexander V. Chernikov.An -nosplit
1437366c0a4SAlexander V. Chernikov.An Alexander Chernikov Aq Mt melifaro@FreeBSD.org .
1447366c0a4SAlexander V. ChernikovIt was derived from the Google Summer of Code 2021 project by
1457366c0a4SAlexander V. Chernikov.An Ng Peng Nam Sean .
146