Import Upstream version 20180207
[hcoop/debian/mlton.git] / runtime / basis / Net / Socket / INetSock.c
CommitLineData
7f918cf1
CE
1#include "platform.h"
2
3void
4Socket_INetSock_toAddr (Vector(Word8_t) in_addr, Word16_t port,
5 Array(Word8_t) addr, Ref(C_Socklen_t) addrlen) {
6 struct sockaddr_in *sa = (struct sockaddr_in*)addr;
7
8 sa->sin_family = AF_INET;
9 sa->sin_port = (uint16_t)port;
10 sa->sin_addr = *(const struct in_addr*)in_addr;
11 *((socklen_t*)addrlen) = sizeof(struct sockaddr_in);
12}
13
14static uint16_t Socket_INetSock_fromAddr_port;
15static struct in_addr Socket_INetSock_fromAddr_in_addr;
16
17void Socket_INetSock_fromAddr (Vector(Word8_t) addr) {
18 const struct sockaddr_in *sa = (const struct sockaddr_in*)addr;
19
20 assert(sa->sin_family == AF_INET);
21 Socket_INetSock_fromAddr_port = sa->sin_port;
22 Socket_INetSock_fromAddr_in_addr = sa->sin_addr;
23}
24
25Word16_t Socket_INetSock_getPort (void) {
26 return (Word16_t)Socket_INetSock_fromAddr_port;
27}
28
29void Socket_INetSock_getInAddr (Array(Word8_t) addr) {
30 *(struct in_addr*)addr = Socket_INetSock_fromAddr_in_addr;
31}