Home | History | Annotate | Download | only in arch-mips
      1 
      2 #include <sys/types.h>
      3 #include <sys/socket.h>
      4 
      5 /* Derived from android-3/arch-arm/include/asm/socket.h */
      6 
      7 #define SOL_SOCKET_PORTABLE	1
      8 
      9 #define SO_DEBUG_PORTABLE	1
     10 #define SO_REUSEADDR_PORTABLE	2
     11 #define SO_TYPE_PORTABLE	3
     12 #define SO_ERROR_PORTABLE	4
     13 #define SO_DONTROUTE_PORTABLE	5
     14 #define SO_BROADCAST_PORTABLE	6
     15 #define SO_SNDBUF_PORTABLE	7
     16 #define SO_RCVBUF_PORTABLE	8
     17 #define SO_SNDBUFFORCE_PORTABLE	32
     18 #define SO_RCVBUFFORCE_PORTABLE	33
     19 #define SO_KEEPALIVE_PORTABLE	9
     20 #define SO_OOBINLINE_PORTABLE	10
     21 #define SO_NO_CHECK_PORTABLE	11
     22 #define SO_PRIORITY_PORTABLE	12
     23 #define SO_LINGER_PORTABLE	13
     24 #define SO_BSDCOMPAT_PORTABLE	14
     25 
     26 #define SO_PASSCRED_PORTABLE	16
     27 #define SO_PEERCRED_PORTABLE	17
     28 #define SO_RCVLOWAT_PORTABLE	18
     29 #define SO_SNDLOWAT_PORTABLE	19
     30 #define SO_RCVTIMEO_PORTABLE	20
     31 #define SO_SNDTIMEO_PORTABLE	21
     32 
     33 #define SO_SECURITY_AUTHENTICATION_PORTABLE 22
     34 #define SO_SECURITY_ENCRYPTION_TRANSPORT_PORTABLE 23
     35 #define SO_SECURITY_ENCRYPTION_NETWORK_PORTABLE 24
     36 
     37 #define SO_BINDTODEVICE_PORTABLE 25
     38 
     39 #define SO_ATTACH_FILTER_PORTABLE 26
     40 #define SO_DETACH_FILTER_PORTABLE 27
     41 
     42 #define SO_PEERNAME_PORTABLE	28
     43 #define SO_TIMESTAMP_PORTABLE	29
     44 #define SCM_TIMESTAMP_PORTABLE SO_TIMESTAMP_PORTABLE
     45 
     46 #define SO_ACCEPTCONN_PORTABLE	30
     47 
     48 #define SO_PEERSEC_PORTABLE	31
     49 #define SO_PASSSEC_PORTABLE	34
     50 
     51 #if SOL_SOCKET_PORTABLE==SOL_SOCKET
     52 #error Build environment
     53 #endif
     54 
     55 static inline int mips_change_level(int level)
     56 {
     57     switch (level) {
     58     case SOL_SOCKET_PORTABLE:
     59 	level = SOL_SOCKET;
     60 	break;
     61     }
     62     return level;
     63 }
     64 
     65 
     66 static inline int mips_change_optname(int optname)
     67 {
     68     switch (optname) {
     69     case SO_DEBUG_PORTABLE:
     70 	return SO_DEBUG;
     71     case SO_REUSEADDR_PORTABLE:
     72 	return SO_REUSEADDR;
     73     case SO_TYPE_PORTABLE:
     74 	return SO_TYPE;
     75     case SO_ERROR_PORTABLE:
     76 	return SO_ERROR;
     77     case SO_DONTROUTE_PORTABLE:
     78 	return SO_DONTROUTE;
     79     case SO_BROADCAST_PORTABLE:
     80 	return SO_BROADCAST;
     81     case SO_SNDBUF_PORTABLE:
     82 	return SO_SNDBUF;
     83     case SO_RCVBUF_PORTABLE:
     84 	return SO_RCVBUF;
     85     case SO_SNDBUFFORCE_PORTABLE:
     86 	return SO_SNDBUFFORCE;
     87     case SO_RCVBUFFORCE_PORTABLE:
     88 	return SO_RCVBUFFORCE;
     89     case SO_KEEPALIVE_PORTABLE:
     90 	return SO_KEEPALIVE;
     91     case SO_OOBINLINE_PORTABLE:
     92 	return SO_OOBINLINE;
     93     case SO_NO_CHECK_PORTABLE:
     94 	return SO_NO_CHECK;
     95     case SO_PRIORITY_PORTABLE:
     96 	return SO_PRIORITY;
     97     case SO_LINGER_PORTABLE:
     98 	return SO_LINGER;
     99     case SO_BSDCOMPAT_PORTABLE:
    100 	return SO_BSDCOMPAT;
    101     case SO_PASSCRED_PORTABLE:
    102 	return SO_PASSCRED;
    103     case SO_PEERCRED_PORTABLE:
    104 	return SO_PEERCRED;
    105     case SO_RCVLOWAT_PORTABLE:
    106 	return SO_RCVLOWAT;
    107     case SO_SNDLOWAT_PORTABLE:
    108 	return SO_SNDLOWAT;
    109     case SO_RCVTIMEO_PORTABLE:
    110 	return SO_RCVTIMEO;
    111     case SO_SNDTIMEO_PORTABLE:
    112 	return SO_SNDTIMEO;
    113     case SO_SECURITY_AUTHENTICATION_PORTABLE:
    114 	return SO_SECURITY_AUTHENTICATION;
    115     case SO_SECURITY_ENCRYPTION_TRANSPORT_PORTABLE:
    116 	return SO_SECURITY_ENCRYPTION_TRANSPORT;
    117     case SO_SECURITY_ENCRYPTION_NETWORK_PORTABLE:
    118 	return SO_SECURITY_ENCRYPTION_NETWORK;
    119     case SO_BINDTODEVICE_PORTABLE:
    120 	return SO_BINDTODEVICE;
    121     case SO_ATTACH_FILTER_PORTABLE:
    122 	return SO_ATTACH_FILTER;
    123     case SO_DETACH_FILTER_PORTABLE:
    124 	return SO_DETACH_FILTER;
    125     case SO_PEERNAME_PORTABLE:
    126 	return SO_PEERNAME;
    127     case SO_TIMESTAMP_PORTABLE:
    128 	return SO_TIMESTAMP;
    129     case SO_ACCEPTCONN_PORTABLE:
    130 	return SO_ACCEPTCONN;
    131     case SO_PEERSEC_PORTABLE:
    132 	return SO_PEERSEC;
    133     case SO_PASSSEC_PORTABLE:
    134 	return SO_PASSSEC;
    135     }
    136     return optname;
    137 }
    138 
    139 extern int setsockopt(int, int, int, const void *, socklen_t);
    140 int setsockopt_portable(int s, int level, int optname, const void *optval, socklen_t optlen)
    141 {
    142     return setsockopt(s, mips_change_level(level), mips_change_optname(optname), optval, optlen);
    143 }
    144 
    145 extern int getsockopt (int, int, int, void *, socklen_t *);
    146 int getsockopt_portable(int s, int level, int optname, void *optval, socklen_t *optlen)
    147 {
    148     return getsockopt(s, mips_change_level(level), mips_change_optname(optname), optval, optlen);
    149 }
    150