Skip to content

Commit 9b66b31

Browse files
committed
WIP: socket options
1 parent f0ff99b commit 9b66b31

File tree

3 files changed

+683
-0
lines changed

3 files changed

+683
-0
lines changed

Sources/System/Internals/Constants.swift

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,3 +524,203 @@ internal var _SHUT_WR: CInt { SHUT_WR }
524524
@_alwaysEmitIntoClient
525525
internal var _SHUT_RDWR: CInt { SHUT_RDWR }
526526

527+
@_alwaysEmitIntoClient
528+
internal var _SO_DEBUG: CInt { SO_DEBUG }
529+
530+
@_alwaysEmitIntoClient
531+
internal var _SO_REUSEADDR: CInt { SO_REUSEADDR }
532+
533+
@_alwaysEmitIntoClient
534+
internal var _SO_REUSEPORT: CInt { SO_REUSEPORT }
535+
536+
@_alwaysEmitIntoClient
537+
internal var _SO_KEEPALIVE: CInt { SO_KEEPALIVE }
538+
539+
@_alwaysEmitIntoClient
540+
internal var _SO_DONTROUTE: CInt { SO_DONTROUTE }
541+
542+
@_alwaysEmitIntoClient
543+
internal var _SO_LINGER: CInt { SO_LINGER }
544+
545+
@_alwaysEmitIntoClient
546+
internal var _SO_BROADCAST: CInt { SO_BROADCAST }
547+
548+
@_alwaysEmitIntoClient
549+
internal var _SO_OOBINLINE: CInt { SO_OOBINLINE }
550+
551+
@_alwaysEmitIntoClient
552+
internal var _SO_SNDBUF: CInt { SO_SNDBUF }
553+
554+
@_alwaysEmitIntoClient
555+
internal var _SO_RCVBUF: CInt { SO_RCVBUF }
556+
557+
@_alwaysEmitIntoClient
558+
internal var _SO_SNDLOWAT: CInt { SO_SNDLOWAT }
559+
560+
@_alwaysEmitIntoClient
561+
internal var _SO_RCVLOWAT: CInt { SO_RCVLOWAT }
562+
563+
@_alwaysEmitIntoClient
564+
internal var _SO_SNDTIMEO: CInt { SO_SNDTIMEO }
565+
566+
@_alwaysEmitIntoClient
567+
internal var _SO_RCVTIMEO: CInt { SO_RCVTIMEO }
568+
569+
@_alwaysEmitIntoClient
570+
internal var _SO_TYPE: CInt { SO_TYPE }
571+
572+
@_alwaysEmitIntoClient
573+
internal var _SO_ERROR: CInt { SO_ERROR }
574+
575+
@_alwaysEmitIntoClient
576+
internal var _SO_NOSIGPIPE: CInt { SO_NOSIGPIPE }
577+
578+
@_alwaysEmitIntoClient
579+
internal var _SO_NREAD: CInt { SO_NREAD }
580+
581+
@_alwaysEmitIntoClient
582+
internal var _SO_NWRITE: CInt { SO_NWRITE }
583+
584+
@_alwaysEmitIntoClient
585+
internal var _SO_LINGER_SEC: CInt { SO_LINGER_SEC }
586+
587+
@_alwaysEmitIntoClient
588+
internal var _TCP_NODELAY: CInt { TCP_NODELAY }
589+
590+
@_alwaysEmitIntoClient
591+
internal var _TCP_MAXSEG: CInt { TCP_MAXSEG }
592+
593+
@_alwaysEmitIntoClient
594+
internal var _TCP_NOOPT: CInt { TCP_NOOPT }
595+
596+
@_alwaysEmitIntoClient
597+
internal var _TCP_NOPUSH: CInt { TCP_NOPUSH }
598+
599+
@_alwaysEmitIntoClient
600+
internal var _TCP_KEEPALIVE: CInt { TCP_KEEPALIVE }
601+
602+
@_alwaysEmitIntoClient
603+
internal var _TCP_CONNECTIONTIMEOUT: CInt { TCP_CONNECTIONTIMEOUT }
604+
605+
@_alwaysEmitIntoClient
606+
internal var _TCP_KEEPINTVL: CInt { TCP_KEEPINTVL }
607+
608+
@_alwaysEmitIntoClient
609+
internal var _TCP_KEEPCNT: CInt { TCP_KEEPCNT }
610+
611+
@_alwaysEmitIntoClient
612+
internal var _TCP_SENDMOREACKS: CInt { TCP_SENDMOREACKS }
613+
614+
@_alwaysEmitIntoClient
615+
internal var _TCP_ENABLE_ECN: CInt { TCP_ENABLE_ECN }
616+
617+
@_alwaysEmitIntoClient
618+
internal var _TCP_NOTSENT_LOWAT: CInt { TCP_NOTSENT_LOWAT }
619+
620+
@_alwaysEmitIntoClient
621+
internal var _TCP_FASTOPEN: CInt { TCP_FASTOPEN }
622+
623+
@_alwaysEmitIntoClient
624+
internal var _TCP_CONNECTION_INFO: CInt { TCP_CONNECTION_INFO }
625+
626+
@_alwaysEmitIntoClient
627+
internal var _IP_OPTIONS: CInt { IP_OPTIONS }
628+
629+
@_alwaysEmitIntoClient
630+
internal var _IP_TOS: CInt { IP_TOS }
631+
632+
@_alwaysEmitIntoClient
633+
internal var _IP_TTL: CInt { IP_TTL }
634+
635+
@_alwaysEmitIntoClient
636+
internal var _IP_RECVDSTADDR: CInt { IP_RECVDSTADDR }
637+
638+
@_alwaysEmitIntoClient
639+
internal var _IP_RECVTOS: CInt { IP_RECVTOS }
640+
641+
@_alwaysEmitIntoClient
642+
internal var _IP_MULTICAST_TTL: CInt { IP_MULTICAST_TTL }
643+
644+
@_alwaysEmitIntoClient
645+
internal var _IP_MULTICAST_IF: CInt { IP_MULTICAST_IF }
646+
647+
@_alwaysEmitIntoClient
648+
internal var _IP_MULTICAST_LOOP: CInt { IP_MULTICAST_LOOP }
649+
650+
@_alwaysEmitIntoClient
651+
internal var _IP_ADD_MEMBERSHIP: CInt { IP_ADD_MEMBERSHIP }
652+
653+
@_alwaysEmitIntoClient
654+
internal var _IP_DROP_MEMBERSHIP: CInt { IP_DROP_MEMBERSHIP }
655+
656+
@_alwaysEmitIntoClient
657+
internal var _IP_HDRINCL: CInt { IP_HDRINCL }
658+
659+
@_alwaysEmitIntoClient
660+
internal var _IPV6_UNICAST_HOPS: CInt { IPV6_UNICAST_HOPS }
661+
662+
@_alwaysEmitIntoClient
663+
internal var _IPV6_MULTICAST_IF: CInt { IPV6_MULTICAST_IF }
664+
665+
@_alwaysEmitIntoClient
666+
internal var _IPV6_MULTICAST_HOPS: CInt { IPV6_MULTICAST_HOPS }
667+
668+
@_alwaysEmitIntoClient
669+
internal var _IPV6_MULTICAST_LOOP: CInt { IPV6_MULTICAST_LOOP }
670+
671+
@_alwaysEmitIntoClient
672+
internal var _IPV6_JOIN_GROUP: CInt { IPV6_JOIN_GROUP }
673+
674+
@_alwaysEmitIntoClient
675+
internal var _IPV6_LEAVE_GROUP: CInt { IPV6_LEAVE_GROUP }
676+
677+
@_alwaysEmitIntoClient
678+
internal var _IPV6_PORTRANGE: CInt { IPV6_PORTRANGE }
679+
680+
//@_alwaysEmitIntoClient
681+
//internal var _IPV6_PKTINFO: CInt { IPV6_PKTINFO }
682+
//
683+
//@_alwaysEmitIntoClient
684+
//internal var _IPV6_HOPLIMIT: CInt { IPV6_HOPLIMIT }
685+
//
686+
//@_alwaysEmitIntoClient
687+
//internal var _IPV6_HOPOPTS: CInt { IPV6_HOPOPTS }
688+
//
689+
//@_alwaysEmitIntoClient
690+
//internal var _IPV6_DSTOPTS: CInt { IPV6_DSTOPTS }
691+
692+
@_alwaysEmitIntoClient
693+
internal var _IPV6_TCLASS: CInt { IPV6_TCLASS }
694+
695+
@_alwaysEmitIntoClient
696+
internal var _IPV6_RECVTCLASS: CInt { IPV6_RECVTCLASS }
697+
698+
//@_alwaysEmitIntoClient
699+
//internal var _IPV6_RTHDR: CInt { IPV6_RTHDR }
700+
//
701+
//@_alwaysEmitIntoClient
702+
//internal var _IPV6_PKTOPTIONS: CInt { IPV6_PKTOPTIONS }
703+
704+
@_alwaysEmitIntoClient
705+
internal var _IPV6_CHECKSUM: CInt { IPV6_CHECKSUM }
706+
707+
@_alwaysEmitIntoClient
708+
internal var _IPV6_V6ONLY: CInt { IPV6_V6ONLY }
709+
710+
//@_alwaysEmitIntoClient
711+
//internal var _IPV6_USE_MIN_MTU: CInt { IPV6_USE_MIN_MTU }
712+
713+
@_alwaysEmitIntoClient
714+
internal var _IPPROTO_IP: CInt { IPPROTO_IP }
715+
716+
@_alwaysEmitIntoClient
717+
internal var _IPPROTO_IPV6: CInt { IPPROTO_IPV6 }
718+
719+
@_alwaysEmitIntoClient
720+
internal var _IPPROTO_TCP: CInt { IPPROTO_TCP }
721+
722+
@_alwaysEmitIntoClient
723+
internal var _SOL_SOCKET: CInt { SOL_SOCKET }
724+
725+
726+

Sources/System/Sockets/SocketDescriptor.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ extension SocketDescriptor {
184184
// TODO: any of the others? I'm going off of man pagees...
185185
}
186186

187+
@frozen
187188
public struct ShutdownKind: RawRepresentable, Hashable, Codable {
188189
@_alwaysEmitIntoClient
189190
public var rawValue: CInt
@@ -194,16 +195,19 @@ extension SocketDescriptor {
194195
/// Further receives will be disallowed
195196
///
196197
/// The corresponding C constant is `SHUT_RD`
198+
@_alwaysEmitIntoClient
197199
public static var read: ShutdownKind { ShutdownKind(rawValue: _SHUT_RD) }
198200

199201
/// Further sends will be disallowed
200202
///
201203
/// The corresponding C constant is `SHUT_RD`
204+
@_alwaysEmitIntoClient
202205
public static var write: ShutdownKind { ShutdownKind(rawValue: _SHUT_WR) }
203206

204207
/// Further sends and receives will be disallowed
205208
///
206209
/// The corresponding C constant is `SHUT_RDWR`
210+
@_alwaysEmitIntoClient
207211
public static var readWrite: ShutdownKind { ShutdownKind(rawValue: _SHUT_RDWR) }
208212
}
209213

0 commit comments

Comments
 (0)