diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-03-05 12:07:59 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-03-05 12:10:27 +0100 |
| commit | 42467f5b7bf4eef20f78f796fc6eb10401784d86 (patch) | |
| tree | 6dd3caddad413b777f407abdcd1969b15cb40a84 /sys/linux/socket_llc.txt | |
| parent | e91c118db99874bef7e2cd657505aa4bafbbb6fa (diff) | |
sys/linux: add syz_init_net_socket syscall
The new pseudo syscall allows opening sockets that can only
be created in init net namespace (BLUETOOTH, NFC, LLC).
Use it to open these sockets.
Unfortunately this only works with sandbox none at the moment.
The problem is that setns of a network namespace requires CAP_SYS_ADMIN
in the target namespace, and we've lost all privs in the init namespace
during creation of a user namespace.
Diffstat (limited to 'sys/linux/socket_llc.txt')
| -rw-r--r-- | sys/linux/socket_llc.txt | 13 |
1 files changed, 2 insertions, 11 deletions
diff --git a/sys/linux/socket_llc.txt b/sys/linux/socket_llc.txt index e95e2b97d..79f895ff8 100644 --- a/sys/linux/socket_llc.txt +++ b/sys/linux/socket_llc.txt @@ -13,29 +13,20 @@ include <linux/llc.h> resource sock_llc[sock] -socket$llc(domain const[AF_LLC], type flags[llc_socket_type], proto const[0]) sock_llc -socketpair$llc(domain const[AF_LLC], type flags[llc_socket_type], proto const[0], fds ptr[out, llc_pair]) +syz_init_net_socket$llc(domain const[AF_LLC], type flags[llc_socket_type], proto const[0]) sock_llc bind$llc(fd sock_llc, addr ptr[in, sockaddr_llc], addrlen len[addr]) connect$llc(fd sock_llc, addr ptr[in, sockaddr_llc], addrlen len[addr]) -accept$llc(fd sock_llc, peer ptr[out, sockaddr_llc, opt], peerlen ptr[inout, len[peer, int32]]) sock_llc accept4$llc(fd sock_llc, peer ptr[out, sockaddr_llc, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_llc - sendto$llc(fd sock_llc, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_llc, opt], addrlen len[addr]) recvfrom$llc(fd sock_llc, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_llc, opt], addrlen len[addr]) getsockname$llc(fd sock_llc, addr ptr[out, sockaddr_llc], addrlen ptr[inout, len[addr, int32]]) getpeername$llc(fd sock_llc, peer ptr[out, sockaddr_llc], peerlen ptr[inout, len[peer, int32]]) llc_socket_type = SOCK_DGRAM, SOCK_STREAM -llc_protocols = ETH_P_802_3, ETH_P_AX25, ETH_P_ALL, ETH_P_802_2, ETH_P_SNAP, ETH_P_DDCMP, ETH_P_WAN_PPP, ETH_P_PPP_MP, ETH_P_LOCALTALK, ETH_P_CAN, ETH_P_CANFD, ETH_P_PPPTALK, ETH_P_TR_802_2, ETH_P_MOBITEX, ETH_P_CONTROL, ETH_P_IRDA, ETH_P_ECONET, ETH_P_HDLC, ETH_P_ARCNET, ETH_P_DSA, ETH_P_TRAILER, ETH_P_PHONET, ETH_P_IEEE802154, ETH_P_CAIF, ETH_P_XDSA - -llc_pair { - fd0 sock_llc - fd1 sock_llc -} sockaddr_llc { sllc_family const[AF_LLC, int16] - sllc_protocol flags[llc_protocols, int16be] + sllc_arphrd flags[dev_type_arphdr, int16] sllc_test int8 sllc_xid int8 sllc_ua int8 |
