Re: netlink socket does not accept SOCK_DGRAM
- In reply to: Alexander V. Chernikov: "Re: netlink socket does not accept SOCK_DGRAM"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 21 Jan 2023 18:08:25 UTC
> On 16 Jan 2023, at 15:13, Alexander V. Chernikov <melifaro@ipfw.ru> wrote: > > > >> On 15 Jan 2023, at 13:09, Alexander V. Chernikov <melifaro@ipfw.ru> wrote: >> >>> >>> 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. > Raised https://reviews.freebsd.org/D38075 with a fix. Committed as 0079d177ab69. >> 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