diff options
Diffstat (limited to 'ndk/sources/android/libportable/arch-mips/sockopt.c')
| -rw-r--r-- | ndk/sources/android/libportable/arch-mips/sockopt.c | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/ndk/sources/android/libportable/arch-mips/sockopt.c b/ndk/sources/android/libportable/arch-mips/sockopt.c new file mode 100644 index 000000000..fda404956 --- /dev/null +++ b/ndk/sources/android/libportable/arch-mips/sockopt.c @@ -0,0 +1,120 @@ +/* + * Copyright 2012, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <sys/types.h> +#include <sys/socket.h> +#include <socket_portable.h> + + +#if SOL_SOCKET_PORTABLE==SOL_SOCKET +#error Build environment +#endif + +static inline int mips_change_level(int level) +{ + switch (level) { + case SOL_SOCKET_PORTABLE: + level = SOL_SOCKET; + break; + } + return level; +} + + +static inline int mips_change_optname(int optname) +{ + switch (optname) { + case SO_DEBUG_PORTABLE: + return SO_DEBUG; + case SO_REUSEADDR_PORTABLE: + return SO_REUSEADDR; + case SO_TYPE_PORTABLE: + return SO_TYPE; + case SO_ERROR_PORTABLE: + return SO_ERROR; + case SO_DONTROUTE_PORTABLE: + return SO_DONTROUTE; + case SO_BROADCAST_PORTABLE: + return SO_BROADCAST; + case SO_SNDBUF_PORTABLE: + return SO_SNDBUF; + case SO_RCVBUF_PORTABLE: + return SO_RCVBUF; + case SO_SNDBUFFORCE_PORTABLE: + return SO_SNDBUFFORCE; + case SO_RCVBUFFORCE_PORTABLE: + return SO_RCVBUFFORCE; + case SO_KEEPALIVE_PORTABLE: + return SO_KEEPALIVE; + case SO_OOBINLINE_PORTABLE: + return SO_OOBINLINE; + case SO_NO_CHECK_PORTABLE: + return SO_NO_CHECK; + case SO_PRIORITY_PORTABLE: + return SO_PRIORITY; + case SO_LINGER_PORTABLE: + return SO_LINGER; + case SO_BSDCOMPAT_PORTABLE: + return SO_BSDCOMPAT; + case SO_PASSCRED_PORTABLE: + return SO_PASSCRED; + case SO_PEERCRED_PORTABLE: + return SO_PEERCRED; + case SO_RCVLOWAT_PORTABLE: + return SO_RCVLOWAT; + case SO_SNDLOWAT_PORTABLE: + return SO_SNDLOWAT; + case SO_RCVTIMEO_PORTABLE: + return SO_RCVTIMEO; + case SO_SNDTIMEO_PORTABLE: + return SO_SNDTIMEO; + case SO_SECURITY_AUTHENTICATION_PORTABLE: + return SO_SECURITY_AUTHENTICATION; + case SO_SECURITY_ENCRYPTION_TRANSPORT_PORTABLE: + return SO_SECURITY_ENCRYPTION_TRANSPORT; + case SO_SECURITY_ENCRYPTION_NETWORK_PORTABLE: + return SO_SECURITY_ENCRYPTION_NETWORK; + case SO_BINDTODEVICE_PORTABLE: + return SO_BINDTODEVICE; + case SO_ATTACH_FILTER_PORTABLE: + return SO_ATTACH_FILTER; + case SO_DETACH_FILTER_PORTABLE: + return SO_DETACH_FILTER; + case SO_PEERNAME_PORTABLE: + return SO_PEERNAME; + case SO_TIMESTAMP_PORTABLE: + return SO_TIMESTAMP; + case SO_ACCEPTCONN_PORTABLE: + return SO_ACCEPTCONN; + case SO_PEERSEC_PORTABLE: + return SO_PEERSEC; + case SO_PASSSEC_PORTABLE: + return SO_PASSSEC; + } + return optname; +} + +extern int setsockopt(int, int, int, const void *, socklen_t); +int setsockopt_portable(int s, int level, int optname, const void *optval, socklen_t optlen) +{ + return setsockopt(s, mips_change_level(level), mips_change_optname(optname), optval, optlen); +} + +extern int getsockopt (int, int, int, void *, socklen_t *); +int getsockopt_portable(int s, int level, int optname, void *optval, socklen_t *optlen) +{ + return getsockopt(s, mips_change_level(level), mips_change_optname(optname), optval, optlen); +} |
