Add tcp syn packet fingerprinting to redbean

This change also fixes bugs in enoprotoopt reporting with setsockopt and
getsockopt error returns.
This commit is contained in:
Justine Tunney 2022-07-17 02:40:39 -07:00
parent 866b21a151
commit 4d25f8c3c9
75 changed files with 1551 additions and 115 deletions

View file

@ -44,6 +44,8 @@ kTcpOptnames:
.e TCP_SYNCNT,"SYNCNT" # int
.e TCP_NOTSENT_LOWAT,"NOTSENT_LOWAT" # int
.e TCP_WINDOW_CLAMP,"WINDOW_CLAMP" # int
.e TCP_SAVE_SYN,"SAVE_SYN" # int
.e TCP_SAVED_SYN,"SAVED_SYN" # buffer
.long MAGNUM_TERMINATOR
.endobj kTcpOptnames,globl,hidden
.overrun

View file

@ -32,6 +32,10 @@
* @param optname can be SO_{REUSE{PORT,ADDR},KEEPALIVE,etc.} etc.
* @return 0 on success, or -1 w/ errno
* @error ENOPROTOOPT for unknown (level,optname)
* @error EINVAL if `out_optlen` is invalid somehow
* @error ENOTSOCK if `fd` is valid but not a socket
* @error EBADF if `fd` isn't valid
* @error EFAULT if optval memory isn't valid
* @see libc/sysv/consts.sh for tuning catalogue
* @see setsockopt()
*/
@ -39,10 +43,8 @@ int getsockopt(int fd, int level, int optname, void *out_opt_optval,
uint32_t *out_optlen) {
int rc;
if (!level || !optname) {
rc = enoprotoopt(); /* our sysvconsts definition */
} else if (optname == -1) {
rc = 0; /* our sysvconsts definition */
if (level == -1 || !optname) {
rc = enoprotoopt(); /* see libc/sysv/consts.sh */
} else if (IsAsan() && (out_opt_optval && out_optlen &&
(!__asan_is_valid(out_optlen, sizeof(uint32_t)) ||
!__asan_is_valid(out_opt_optval, *out_optlen)))) {

View file

@ -49,6 +49,10 @@ static bool setsockopt_polyfill(int *optname) {
* @param optname can be SO_{REUSE{PORT,ADDR},KEEPALIVE,etc.} etc.
* @return 0 on success, or -1 w/ errno
* @error ENOPROTOOPT for unknown (level,optname)
* @error EINVAL if `optlen` is invalid somehow
* @error ENOTSOCK if `fd` is valid but not a socket
* @error EBADF if `fd` isn't valid
* @error EFAULT if optval memory isn't valid
* @see libc/sysv/consts.sh for tuning catalogue
* @see getsockopt()
*/
@ -56,8 +60,8 @@ int setsockopt(int fd, int level, int optname, const void *optval,
uint32_t optlen) {
int e, rc;
if (!optname) {
rc = enosys(); /* see libc/sysv/consts.sh */
if (level == -1 || !optname) {
rc = enoprotoopt(); /* see libc/sysv/consts.sh */
} else if ((!optval && optlen) ||
(IsAsan() && !__asan_is_valid(optval, optlen))) {
rc = efault();

View file

@ -649,9 +649,6 @@ syscon epoll EPOLLET 0x80000000 0x80000000 0x80000000 0x80000000 0x80000
# {set,get}sockopt(fd, level=SOL_SOCKET, X, ...)
#
# * 0 we define as EINVAL
# * -1 we define as no-op
#
# group name GNU/Systemd XNU's Not UNIX! FreeBSD OpenBSD NetBSD The New Technology Commentary
syscon so SO_DEBUG 1 1 1 1 1 1 # debugging is enabled; consensus
syscon so SO_TYPE 3 0x1008 0x1008 0x1008 0x1008 0x1008 # bsd consensus
@ -719,30 +716,30 @@ syscon sol SOL_IP 0 0 0 0 0 0 # consensus
syscon sol SOL_SOCKET 1 0xffff 0xffff 0xffff 0xffff 0xffff # yes it's actually 0xffff; bsd+nt consensus (todo: what's up with ipproto_icmp overlap)
syscon sol SOL_TCP 6 6 6 6 6 6 # consensus
syscon sol SOL_UDP 17 17 17 17 17 17 # consensus
syscon sol SOL_RAW 255 0 0 0 0 0
syscon sol SOL_RAW 255 -1 -1 -1 -1 -1
syscon sol SOL_IPV6 41 41 41 41 41 41
syscon sol SOL_ICMPV6 58 58 58 58 58 0
syscon sol SOL_AAL 265 0 0 0 0 0
syscon sol SOL_ALG 279 0 0 0 0 0
syscon sol SOL_ATM 264 0 0 0 0 0
syscon sol SOL_BLUETOOTH 274 0 0 0 0 0
syscon sol SOL_CAIF 278 0 0 0 0 0
syscon sol SOL_DCCP 269 0 0 0 0 0
syscon sol SOL_DECNET 261 0 0 0 0 0
syscon sol SOL_IRDA 266 0 0 0 0 0
syscon sol SOL_IUCV 277 0 0 0 0 0
syscon sol SOL_KCM 281 0 0 0 0 0
syscon sol SOL_LLC 268 0 0 0 0 0
syscon sol SOL_NETBEUI 267 0 0 0 0 0
syscon sol SOL_NETLINK 270 0 0 0 0 0
syscon sol SOL_NFC 280 0 0 0 0 0
syscon sol SOL_PACKET 263 0 0 0 0 0
syscon sol SOL_PNPIPE 275 0 0 0 0 0
syscon sol SOL_PPPOL2TP 273 0 0 0 0 0
syscon sol SOL_RDS 276 0 0 0 0 0
syscon sol SOL_RXRPC 272 0 0 0 0 0
syscon sol SOL_TIPC 271 0 0 0 0 0
syscon sol SOL_X25 262 0 0 0 0 0
syscon sol SOL_ICMPV6 58 58 58 58 58 -1
syscon sol SOL_AAL 265 -1 -1 -1 -1 -1
syscon sol SOL_ALG 279 -1 -1 -1 -1 -1
syscon sol SOL_ATM 264 -1 -1 -1 -1 -1
syscon sol SOL_BLUETOOTH 274 -1 -1 -1 -1 -1
syscon sol SOL_CAIF 278 -1 -1 -1 -1 -1
syscon sol SOL_DCCP 269 -1 -1 -1 -1 -1
syscon sol SOL_DECNET 261 -1 -1 -1 -1 -1
syscon sol SOL_IRDA 266 -1 -1 -1 -1 -1
syscon sol SOL_IUCV 277 -1 -1 -1 -1 -1
syscon sol SOL_KCM 281 -1 -1 -1 -1 -1
syscon sol SOL_LLC 268 -1 -1 -1 -1 -1
syscon sol SOL_NETBEUI 267 -1 -1 -1 -1 -1
syscon sol SOL_NETLINK 270 -1 -1 -1 -1 -1
syscon sol SOL_NFC 280 -1 -1 -1 -1 -1
syscon sol SOL_PACKET 263 -1 -1 -1 -1 -1
syscon sol SOL_PNPIPE 275 -1 -1 -1 -1 -1
syscon sol SOL_PPPOL2TP 273 -1 -1 -1 -1 -1
syscon sol SOL_RDS 276 -1 -1 -1 -1 -1
syscon sol SOL_RXRPC 272 -1 -1 -1 -1 -1
syscon sol SOL_TIPC 271 -1 -1 -1 -1 -1
syscon sol SOL_X25 262 -1 -1 -1 -1 -1
syscon alg ALG_SET_KEY 1 0 0 0 0 0
syscon alg ALG_SET_IV 2 0 0 0 0 0
@ -751,12 +748,9 @@ syscon alg ALG_SET_AEAD_ASSOCLEN 4 0 0 0 0 0
syscon alg ALG_SET_AEAD_AUTHSIZE 5 0 0 0 0 0
syscon alg ALG_SET_DRBG_ENTROPY 6 0 0 0 0 0
# {set,get}sockopt(fd, level=IPPROTO_TCP, X, ...)
# {set,get}sockopt(fd, level=SOL_TCP, X, ...)
# » most elite of all tuning groups
#
# * 0 we define as EINVAL
# * -1 we define as no-op
#
# @see https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
# @see https://www.iana.org/assignments/tcp-parameters/tcp-parameters.txt
#
@ -923,33 +917,33 @@ syscon iproto IPPROTO_ICMP 1 1 1 1 1 1 # consensus
syscon iproto IPPROTO_TCP 6 6 6 6 6 6 # consensus
syscon iproto IPPROTO_UDP 17 17 17 17 17 17 # consensus
syscon iproto IPPROTO_RAW 255 255 255 255 255 255 # consensus
syscon iproto IPPROTO_HOPOPTS 0 0 0 0 0 0 # consensus
syscon iproto IPPROTO_HOPOPTS -1 -1 -1 -1 -1 -1 # consensus
syscon iproto IPPROTO_IDP 22 22 22 22 22 22 # consensus
syscon iproto IPPROTO_IGMP 2 2 2 2 2 2 # consensus
syscon iproto IPPROTO_PUP 12 12 12 12 12 12 # consensus
syscon iproto IPPROTO_AH 51 51 51 51 51 0 # unix consensus
syscon iproto IPPROTO_DSTOPTS 60 60 60 60 60 0 # unix consensus
syscon iproto IPPROTO_EGP 8 8 8 8 8 0 # unix consensus
syscon iproto IPPROTO_ENCAP 98 98 98 98 98 0 # unix consensus
syscon iproto IPPROTO_ESP 50 50 50 50 50 0 # unix consensus
syscon iproto IPPROTO_FRAGMENT 44 44 44 44 44 0 # unix consensus
syscon iproto IPPROTO_GRE 47 47 47 47 47 0 # unix consensus
syscon iproto IPPROTO_ICMPV6 58 58 58 58 58 0 # unix consensus
syscon iproto IPPROTO_IPIP 4 4 4 4 4 0 # unix consensus
syscon iproto IPPROTO_IPV6 41 41 41 41 41 0 # unix consensus
syscon iproto IPPROTO_NONE 59 59 59 59 59 0 # unix consensus
syscon iproto IPPROTO_PIM 103 103 103 103 103 0 # unix consensus
syscon iproto IPPROTO_ROUTING 43 43 43 43 43 0 # unix consensus
syscon iproto IPPROTO_RSVP 46 46 46 46 46 0 # unix consensus
syscon iproto IPPROTO_TP 29 29 29 29 29 0 # unix consensus
syscon iproto IPPROTO_MPLS 137 0 137 137 137 0
syscon iproto IPPROTO_MTP 92 92 92 0 0 0
syscon iproto IPPROTO_SCTP 132 132 132 0 0 0
syscon iproto IPPROTO_MH 135 0 135 0 0 0
syscon iproto IPPROTO_UDPLITE 136 0 136 0 0 0
syscon iproto IPPROTO_BEETPH 94 0 0 0 0 0
syscon iproto IPPROTO_COMP 108 0 0 0 0 0
syscon iproto IPPROTO_DCCP 33 0 0 0 0 0
syscon iproto IPPROTO_AH 51 51 51 51 51 -1 # unix consensus
syscon iproto IPPROTO_DSTOPTS 60 60 60 60 60 -1 # unix consensus
syscon iproto IPPROTO_EGP 8 8 8 8 8 -1 # unix consensus
syscon iproto IPPROTO_ENCAP 98 98 98 98 98 -1 # unix consensus
syscon iproto IPPROTO_ESP 50 50 50 50 50 -1 # unix consensus
syscon iproto IPPROTO_FRAGMENT 44 44 44 44 44 -1 # unix consensus
syscon iproto IPPROTO_GRE 47 47 47 47 47 -1 # unix consensus
syscon iproto IPPROTO_ICMPV6 58 58 58 58 58 -1 # unix consensus
syscon iproto IPPROTO_IPIP 4 4 4 4 4 -1 # unix consensus
syscon iproto IPPROTO_IPV6 41 41 41 41 41 -1 # unix consensus
syscon iproto IPPROTO_NONE 59 59 59 59 59 -1 # unix consensus
syscon iproto IPPROTO_PIM 103 103 103 103 103 -1 # unix consensus
syscon iproto IPPROTO_ROUTING 43 43 43 43 43 -1 # unix consensus
syscon iproto IPPROTO_RSVP 46 46 46 46 46 -1 # unix consensus
syscon iproto IPPROTO_TP 29 29 29 29 29 -1 # unix consensus
syscon iproto IPPROTO_MPLS 137 -1 137 137 137 -1
syscon iproto IPPROTO_MTP 92 92 92 -1 -1 -1
syscon iproto IPPROTO_SCTP 132 132 132 -1 -1 -1
syscon iproto IPPROTO_MH 135 -1 135 -1 -1 -1
syscon iproto IPPROTO_UDPLITE 136 -1 136 -1 -1 -1
syscon iproto IPPROTO_BEETPH 94 -1 -1 -1 -1 -1
syscon iproto IPPROTO_COMP 108 -1 -1 -1 -1 -1
syscon iproto IPPROTO_DCCP 33 -1 -1 -1 -1 -1
syscon sio SIOCADDMULTI 0x8931 0x80206931 0x80206931 0x80206931 0x80206931 0 # bsd consensus
syscon sio SIOCATMARK 0x8905 0x40047307 0x40047307 0x40047307 0x40047307 0 # bsd consensus

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_AH,51,51,51,51,51,0
.syscon iproto,IPPROTO_AH,51,51,51,51,51,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_BEETPH,94,0,0,0,0,0
.syscon iproto,IPPROTO_BEETPH,94,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_COMP,108,0,0,0,0,0
.syscon iproto,IPPROTO_COMP,108,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_DCCP,33,0,0,0,0,0
.syscon iproto,IPPROTO_DCCP,33,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_DSTOPTS,60,60,60,60,60,0
.syscon iproto,IPPROTO_DSTOPTS,60,60,60,60,60,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_EGP,8,8,8,8,8,0
.syscon iproto,IPPROTO_EGP,8,8,8,8,8,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_ENCAP,98,98,98,98,98,0
.syscon iproto,IPPROTO_ENCAP,98,98,98,98,98,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_ESP,50,50,50,50,50,0
.syscon iproto,IPPROTO_ESP,50,50,50,50,50,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_FRAGMENT,44,44,44,44,44,0
.syscon iproto,IPPROTO_FRAGMENT,44,44,44,44,44,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_GRE,47,47,47,47,47,0
.syscon iproto,IPPROTO_GRE,47,47,47,47,47,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_HOPOPTS,0,0,0,0,0,0
.syscon iproto,IPPROTO_HOPOPTS,-1,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_ICMPV6,58,58,58,58,58,0
.syscon iproto,IPPROTO_ICMPV6,58,58,58,58,58,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_IPIP,4,4,4,4,4,0
.syscon iproto,IPPROTO_IPIP,4,4,4,4,4,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_IPV6,41,41,41,41,41,0
.syscon iproto,IPPROTO_IPV6,41,41,41,41,41,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_MH,135,0,135,0,0,0
.syscon iproto,IPPROTO_MH,135,-1,135,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_MPLS,137,0,137,137,137,0
.syscon iproto,IPPROTO_MPLS,137,-1,137,137,137,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_MTP,92,92,92,0,0,0
.syscon iproto,IPPROTO_MTP,92,92,92,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_NONE,59,59,59,59,59,0
.syscon iproto,IPPROTO_NONE,59,59,59,59,59,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_PIM,103,103,103,103,103,0
.syscon iproto,IPPROTO_PIM,103,103,103,103,103,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_ROUTING,43,43,43,43,43,0
.syscon iproto,IPPROTO_ROUTING,43,43,43,43,43,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_RSVP,46,46,46,46,46,0
.syscon iproto,IPPROTO_RSVP,46,46,46,46,46,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_SCTP,132,132,132,0,0,0
.syscon iproto,IPPROTO_SCTP,132,132,132,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_TP,29,29,29,29,29,0
.syscon iproto,IPPROTO_TP,29,29,29,29,29,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon iproto,IPPROTO_UDPLITE,136,0,136,0,0,0
.syscon iproto,IPPROTO_UDPLITE,136,-1,136,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_AAL,265,0,0,0,0,0
.syscon sol,SOL_AAL,265,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_ALG,279,0,0,0,0,0
.syscon sol,SOL_ALG,279,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_ATM,264,0,0,0,0,0
.syscon sol,SOL_ATM,264,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_BLUETOOTH,274,0,0,0,0,0
.syscon sol,SOL_BLUETOOTH,274,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_CAIF,278,0,0,0,0,0
.syscon sol,SOL_CAIF,278,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_DCCP,269,0,0,0,0,0
.syscon sol,SOL_DCCP,269,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_DECNET,261,0,0,0,0,0
.syscon sol,SOL_DECNET,261,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_ICMPV6,58,58,58,58,58,0
.syscon sol,SOL_ICMPV6,58,58,58,58,58,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_IRDA,266,0,0,0,0,0
.syscon sol,SOL_IRDA,266,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_IUCV,277,0,0,0,0,0
.syscon sol,SOL_IUCV,277,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_KCM,281,0,0,0,0,0
.syscon sol,SOL_KCM,281,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_LLC,268,0,0,0,0,0
.syscon sol,SOL_LLC,268,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_NETBEUI,267,0,0,0,0,0
.syscon sol,SOL_NETBEUI,267,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_NETLINK,270,0,0,0,0,0
.syscon sol,SOL_NETLINK,270,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_NFC,280,0,0,0,0,0
.syscon sol,SOL_NFC,280,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_PACKET,263,0,0,0,0,0
.syscon sol,SOL_PACKET,263,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_PNPIPE,275,0,0,0,0,0
.syscon sol,SOL_PNPIPE,275,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_PPPOL2TP,273,0,0,0,0,0
.syscon sol,SOL_PPPOL2TP,273,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_RAW,255,0,0,0,0,0
.syscon sol,SOL_RAW,255,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_RDS,276,0,0,0,0,0
.syscon sol,SOL_RDS,276,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_RXRPC,272,0,0,0,0,0
.syscon sol,SOL_RXRPC,272,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_TIPC,271,0,0,0,0,0
.syscon sol,SOL_TIPC,271,-1,-1,-1,-1,-1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon sol,SOL_X25,262,0,0,0,0,0
.syscon sol,SOL_X25,262,-1,-1,-1,-1,-1