Can Not Send Netlink Messages with Unshare(CLONE_NEWNET)
From: Hang An
Date: Thu Nov 17 2022 - 02:55:37 EST
Hi,
A process can not send netlink messages(errno is ECONNREFUSED) after
running unshare(CLONE_NEWNET).
Part of the call stack when process failed:
netlink_sendmsg
netlink_unicast
netlink_getsockbyportid
netlink_lookup(return NULL)
The corresponding pseudocode is shown below:
unshare(CLONE_NEWNET) ;
res_socket = syscall(__NR_socket, 0x10ul, 3ul, 8);
syscall(__NR_sendmsg, res_socket, msghdr, 0ul);
I can't understand this situation. Is this a bug or special design?
Thanks.