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