man 4 rtnetlink says:
int socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
The following snippet fails
int fd = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
if (fd < 0) {
perror("Failed to open netlink socket");
return -1;
}
printf("all good\n");
close(fd);
return 0;
I get: Failed to open netlink socket: Protocol wrong type for socket
but if I change
int fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
I get "all good"
Am I doing something wrong or is this a bug?
$ uname -a FreeBSD zen.hq 14.0-CURRENT FreeBSD 14.0-CURRENT #0
main-n259967-11b5b9e8a520: Sat Jan 7 16:39:30 UTC 2023
r...@releng1.nyi.freebsd.org:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64
$ kldstat | grep netl
39 1 0xffffffff839fc000 14af8 netlink.ko
--
Ihor Antonov