8 | module System.Posix.Socket.Types
11 | import Data.C.Integer
12 | import Derive.Finite
13 | import Derive.Prelude
16 | %language ElabReflection
19 | data Domain : Type where
24 | %runElab derive "Domain" [Show,Eq,Ord,Finite]
27 | record SockType where
31 | %runElab derive "SockType" [Show,Eq,Ord,FromInteger]
34 | Semigroup SockType where
35 | ST x <+> ST y = ST $
x .|. y
38 | record SockFlags where
43 | %runElab derive "SockFlags" [Show,Eq,Ord,FromInteger]
46 | Semigroup SockFlags where
47 | SF x <+> SF y = SF $
x .|. y
50 | domainCode : Domain -> Bits8
51 | domainCode AF_UNIX = 1
52 | domainCode AF_INET = 2
53 | domainCode AF_INET6 = 10
56 | SOCK_STREAM : SockType
60 | SOCK_DGRAM : SockType
68 | SOCK_NONBLOCK : SockType
69 | SOCK_NONBLOCK = 2048
72 | SOCK_CLOEXEC : SockType
73 | SOCK_CLOEXEC = 524288
76 | MSG_DONTWAIT : SockFlags
84 | MSG_PEEK : SockFlags
88 | MSG_WAITALL : SockFlags
92 | MSG_NOSIGNAL : SockFlags
93 | MSG_NOSIGNAL = 16384
96 | sockaddr_un_size : Bits32
97 | sockaddr_un_size = 110
100 | sockaddr_in_size : Bits32
101 | sockaddr_in_size = 16
104 | sockaddr_in6_size : Bits32
105 | sockaddr_in6_size = 28
108 | SOL_SOCKET : Bits32
112 | IPPROTO_TCP : Bits32
116 | SO_REUSEADDR : Bits32
124 | TCP_NODELAY : Bits32