summaryrefslogtreecommitdiff
path: root/libportable/arch-mips/socket.c
blob: aab73c894b924d67eb0d44fb33e79dd8304d0ac5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <unistd.h>
#include <sys/socket.h>
#include <sys/linux-syscalls.h>

/* From ndk/platforms/android-3/include/sys/socket.h */
#define SOCK_STREAM_PORTABLE   1
#define SOCK_DGRAM_PORTABLE    2
#define SOCK_RAW_PORTABLE      3
#define SOCK_RDM_PORTABLE      4
#define SOCK_SEQPACKET_PORTABLE        5
#define SOCK_PACKET_PORTABLE   10

#if SOCK_STREAM==SOCK_STREAM_PORTABLE
#error Bad build environment
#endif

static inline int mips_change_type(int type)
{
    switch (type) {
      case SOCK_STREAM_PORTABLE: return SOCK_STREAM;
      case SOCK_DGRAM_PORTABLE: return SOCK_DGRAM;
      case SOCK_RAW_PORTABLE: return SOCK_RAW;
      case SOCK_RDM_PORTABLE: return SOCK_RDM;
      case SOCK_SEQPACKET_PORTABLE: return SOCK_SEQPACKET;
      case SOCK_PACKET_PORTABLE: return SOCK_PACKET;
    }
    return type;
}

extern int socket(int, int, int);

int socket_portable(int domain, int type, int protocol) {
    return socket(domain, mips_change_type(type), protocol);
}