The number of netlink families are 32. The netlink families which are presently available as of Kernel 6.13.2 are provided in the article here (Netlink Protocol Families). The number of protocol families were seen to be limited and needed a mechanism that would allow different independently defined Netlink families to be defined. To address this requirement of independent generic families with their own set of communication channels, NETLINK_GENERIC was added as a protocol family member. The other members of the NETLINK protocol families were termed as classic Netlink families.
Generic Netlink overcomes the limitations of classic Netlink’s static ID allocation by providing a mechanism for dynamic registration of new communication channels, referred to as “families”. This is managed through a central Generic Netlink controller (nlctrl ) . User space programs utilize the libnl that provides various APIs to communicate with the kernel space using generic netlink. The below diagram shows the generic netlink sub-system.
