authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-01-07 23:50:34-08:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2021-01-07 23:50:34-08:00
log3fdffe85c0e51d1ec27e6ab4367a6293c18ce44c
tree0d4a39fc3e916497738f416716dbc5e2dcd71f79
parent31802c6c68a98bdbe34766d3cfdaf65b782851da
parentec7adeda2b06e6cc3a453b8e2487a5a3516ed488
signature Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #7720 from Snektron/sockopt

Some sockopt stuff

2 files changed, 57 insertions(+), 0 deletions(-)

lib/std/os.zig+4
...@@ -5482,6 +5482,9 @@ pub const SetSockOptError = error{...@@ -5482,6 +5482,9 @@ pub const SetSockOptError = error{
5482 /// Insufficient resources are available in the system to complete the call.5482 /// Insufficient resources are available in the system to complete the call.
5483 SystemResources,5483 SystemResources,
54845484
5485 // Setting the socket option requires more elevated permissions.
5486 PermissionDenied,
5487
5485 NetworkSubsystemFailed,5488 NetworkSubsystemFailed,
5486 FileDescriptorNotASocket,5489 FileDescriptorNotASocket,
5487 SocketNotBound,5490 SocketNotBound,
...@@ -5514,6 +5517,7 @@ pub fn setsockopt(fd: socket_t, level: u32, optname: u32, opt: []const u8) SetSo...@@ -5514,6 +5517,7 @@ pub fn setsockopt(fd: socket_t, level: u32, optname: u32, opt: []const u8) SetSo
5514 ENOPROTOOPT => return error.InvalidProtocolOption,5517 ENOPROTOOPT => return error.InvalidProtocolOption,
5515 ENOMEM => return error.SystemResources,5518 ENOMEM => return error.SystemResources,
5516 ENOBUFS => return error.SystemResources,5519 ENOBUFS => return error.SystemResources,
5520 EPERM => return error.PermissionDenied,
5517 else => |err| return unexpectedErrno(err),5521 else => |err| return unexpectedErrno(err),
5518 }5522 }
5519 }5523 }
lib/std/os/bits/linux.zig+53
...@@ -533,6 +533,59 @@ pub const SOL_TLS = 282;...@@ -533,6 +533,59 @@ pub const SOL_TLS = 282;
533533
534pub const SOMAXCONN = 128;534pub const SOMAXCONN = 128;
535535
536pub const IP_TOS = 1;
537pub const IP_TTL = 2;
538pub const IP_HDRINCL = 3;
539pub const IP_OPTIONS = 4;
540pub const IP_ROUTER_ALERT = 5;
541pub const IP_RECVOPTS = 6;
542pub const IP_RETOPTS = 7;
543pub const IP_PKTINFO = 8;
544pub const IP_PKTOPTIONS = 9;
545pub const IP_PMTUDISC = 10;
546pub const IP_MTU_DISCOVER = 10;
547pub const IP_RECVERR = 11;
548pub const IP_RECVTTL = 12;
549pub const IP_RECVTOS = 13;
550pub const IP_MTU = 14;
551pub const IP_FREEBIND = 15;
552pub const IP_IPSEC_POLICY = 16;
553pub const IP_XFRM_POLICY = 17;
554pub const IP_PASSSEC = 18;
555pub const IP_TRANSPARENT = 19;
556pub const IP_ORIGDSTADDR = 20;
557pub const IP_RECVORIGDSTADDR = IP_ORIGDSTADDR;
558pub const IP_MINTTL = 21;
559pub const IP_NODEFRAG = 22;
560pub const IP_CHECKSUM = 23;
561pub const IP_BIND_ADDRESS_NO_PORT = 24;
562pub const IP_RECVFRAGSIZE = 25;
563pub const IP_MULTICAST_IF = 32;
564pub const IP_MULTICAST_TTL = 33;
565pub const IP_MULTICAST_LOOP = 34;
566pub const IP_ADD_MEMBERSHIP = 35;
567pub const IP_DROP_MEMBERSHIP = 36;
568pub const IP_UNBLOCK_SOURCE = 37;
569pub const IP_BLOCK_SOURCE = 38;
570pub const IP_ADD_SOURCE_MEMBERSHIP = 39;
571pub const IP_DROP_SOURCE_MEMBERSHIP = 40;
572pub const IP_MSFILTER = 41;
573pub const IP_MULTICAST_ALL = 49;
574pub const IP_UNICAST_IF = 50;
575
576pub const IP_RECVRETOPTS = IP_RETOPTS;
577
578pub const IP_PMTUDISC_DONT = 0;
579pub const IP_PMTUDISC_WANT = 1;
580pub const IP_PMTUDISC_DO = 2;
581pub const IP_PMTUDISC_PROBE = 3;
582pub const IP_PMTUDISC_INTERFACE = 4;
583pub const IP_PMTUDISC_OMIT = 5;
584
585pub const IP_DEFAULT_MULTICAST_TTL = 1;
586pub const IP_DEFAULT_MULTICAST_LOOP = 1;
587pub const IP_MAX_MEMBERSHIPS = 20;
588
536pub const MSG_OOB = 0x0001;589pub const MSG_OOB = 0x0001;
537pub const MSG_PEEK = 0x0002;590pub const MSG_PEEK = 0x0002;
538pub const MSG_DONTROUTE = 0x0004;591pub const MSG_DONTROUTE = 0x0004;