Re: netlink socket does not accept SOCK_DGRAM
- Reply: User Ngor : "Re: netlink socket does not accept SOCK_DGRAM"
- Reply: Alexander V. Chernikov : "Re: netlink socket does not accept SOCK_DGRAM"
- Reply: Alexander V. Chernikov: "Re: netlink socket does not accept SOCK_DGRAM"
- In reply to: User Ngor : "netlink socket does not accept SOCK_DGRAM"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 15 Jan 2023 13:09:51 UTC
> On 15 Jan 2023, at 02:26, User Ngor <ihor@antonovs.family> wrote: > > 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? It’s a bug. The manage should state SOCK_RAW, but both options should be supported, which is not the case ATM. I’ll fix it in a couple of days. Meanwhile it may be worth looking into snl(3) which abstracts issues like this one. > > > > $ uname -a FreeBSD zen.hq 14.0-CURRENT FreeBSD 14.0-CURRENT #0 main-n259967-11b5b9e8a520: Sat Jan 7 16:39:30 UTC 2023 root@releng1.nyi.freebsd.org:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64 > > $ kldstat | grep netl > 39 1 0xffffffff839fc000 14af8 netlink.ko > > > -- > Ihor Antonov > >