134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project/* 234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl> 334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl> 434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com> 534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * Copyright (c) 1996-2000 Wichert Akkerman <wichert@cistron.nl> 634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * All rights reserved. 734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * 834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * Redistribution and use in source and binary forms, with or without 934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * modification, are permitted provided that the following conditions 1034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * are met: 1134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 1234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * notice, this list of conditions and the following disclaimer. 1334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 1434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 1534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * documentation and/or other materials provided with the distribution. 1634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * 3. The name of the author may not be used to endorse or promote products 1734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * derived from this software without specific prior written permission. 1834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * 1934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 2034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 2134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 2234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * 30f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown * $Id$ 3134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project */ 3234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 3334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include "defs.h" 3434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 3534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <sys/stat.h> 3634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <sys/socket.h> 3734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <sys/un.h> 3834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 3934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(HAVE_SIN6_SCOPE_ID_LINUX) 4034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define in6_addr in6_addr_libc 4134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define ipv6_mreq ipv6_mreq_libc 4234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define sockaddr_in6 sockaddr_in6_libc 4334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 4434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 4534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <netinet/in.h> 4634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef HAVE_NETINET_TCP_H 4734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <netinet/tcp.h> 4834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 4934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef HAVE_NETINET_UDP_H 5034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <netinet/udp.h> 5134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 52f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef HAVE_NETINET_SCTP_H 53f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#include <netinet/sctp.h> 54f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 5534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <arpa/inet.h> 5634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <net/if.h> 5734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(LINUX) 5834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <asm/types.h> 5934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(__GLIBC__) && (__GLIBC__ >= 2) && (__GLIBC__ + __GLIBC_MINOR__ >= 3) 6034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project# include <netipx/ipx.h> 6134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#else 6234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project# include <linux/ipx.h> 6334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 6434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* LINUX */ 6534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 6634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined (__GLIBC__) && (((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1)) || defined(HAVE_SIN6_SCOPE_ID_LINUX)) 6734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(HAVE_LINUX_IN6_H) 6834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(HAVE_SIN6_SCOPE_ID_LINUX) 6934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#undef in6_addr 7034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#undef ipv6_mreq 7134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#undef sockaddr_in6 7234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define in6_addr in6_addr_kernel 7334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define ipv6_mreq ipv6_mreq_kernel 7434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define sockaddr_in6 sockaddr_in6_kernel 7534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 7634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <linux/in6.h> 7734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(HAVE_SIN6_SCOPE_ID_LINUX) 7834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#undef in6_addr 7934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#undef ipv6_mreq 8034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#undef sockaddr_in6 8134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define in6_addr in6_addr_libc 8234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define ipv6_mreq ipv6_mreq_libc 8334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define sockaddr_in6 sockaddr_in6_kernel 8434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 8534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 8634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 8734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 8834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(HAVE_SYS_UIO_H) 8934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <sys/uio.h> 9034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 9134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 9234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(HAVE_LINUX_NETLINK_H) 9334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <linux/netlink.h> 9434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 9534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 9634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(HAVE_LINUX_IF_PACKET_H) 9734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <linux/if_packet.h> 9834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 9934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 10034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(HAVE_LINUX_ICMP_H) 10134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#include <linux/icmp.h> 10234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 10334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 10434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifndef PF_UNSPEC 10534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define PF_UNSPEC AF_UNSPEC 10634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 10734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 10834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if UNIXWARE >= 7 10934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define HAVE_SENDMSG 1 /* HACK - *FIXME* */ 11034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 11134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 11234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef LINUX 11334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project/* Under Linux these are enums so we can't test for them with ifdef. */ 11434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define IPPROTO_EGP IPPROTO_EGP 11534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define IPPROTO_PUP IPPROTO_PUP 11634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define IPPROTO_IDP IPPROTO_IDP 11734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define IPPROTO_IGMP IPPROTO_IGMP 11834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define IPPROTO_RAW IPPROTO_RAW 11934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define IPPROTO_MAX IPPROTO_MAX 12034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 12134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 12234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat domains[] = { 12334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_AAL5 12434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_AAL5, "PF_AAL5" }, 12534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 12634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_APPLETALK 12734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_APPLETALK, "PF_APPLETALK" }, 12834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 12934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_ASH 13034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_ASH, "PF_ASH" }, 13134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 13234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_ATMPVC 13334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_ATMPVC, "PF_ATMPVC" }, 13434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 13534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_ATMSVC 13634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_ATMSVC, "PF_ATMSVC" }, 13734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 13834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_AX25 13934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_AX25, "PF_AX25" }, 14034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 14134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_BLUETOOTH 14234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_BLUETOOTH, "PF_BLUETOOTH" }, 14334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 14434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_BRIDGE 14534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_BRIDGE, "PF_BRIDGE" }, 14634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 14734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_DECnet 14834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_DECnet, "PF_DECnet" }, 14934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 15034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_DECNET 15134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_DECNET, "PF_DECNET" }, 15234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 15334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_ECONET 15434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_ECONET, "PF_ECONET" }, 15534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 15634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_FILE 15734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_FILE, "PF_FILE" }, 15834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 15934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_IMPLINK 16034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_IMPLINK, "PF_IMPLINK" }, 16134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 16234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_INET 16334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_INET, "PF_INET" }, 16434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 16534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_INET6 16634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_INET6, "PF_INET6" }, 16734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 16834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_IPX 16934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_IPX, "PF_IPX" }, 17034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 17134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_IRDA 17234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_IRDA, "PF_IRDA" }, 17334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 17434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_ISO 17534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_ISO, "PF_ISO" }, 17634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 17734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_KEY 17834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_KEY, "PF_KEY" }, 17934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 18034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_UNIX 18134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_UNIX, "PF_UNIX" }, 18234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 18334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_LOCAL 18434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_LOCAL, "PF_LOCAL" }, 18534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 18634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_NETBEUI 18734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_NETBEUI, "PF_NETBEUI" }, 18834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 18934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_NETLINK 19034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_NETLINK, "PF_NETLINK" }, 19134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 19234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_NETROM 19334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_NETROM, "PF_NETROM" }, 19434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 19534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_PACKET 19634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_PACKET, "PF_PACKET" }, 19734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 19834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_PPPOX 19934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_PPPOX, "PF_PPPOX" }, 20034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 20134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_ROSE 20234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_ROSE, "PF_ROSE" }, 20334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 20434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_ROUTE 20534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_ROUTE, "PF_ROUTE" }, 20634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 20734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_SECURITY 20834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_SECURITY, "PF_SECURITY" }, 20934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 21034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_SNA 21134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_SNA, "PF_SNA" }, 21234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 21334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_UNSPEC 21434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_UNSPEC, "PF_UNSPEC" }, 21534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 21634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_WANPIPE 21734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_WANPIPE, "PF_WANPIPE" }, 21834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 21934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_X25 22034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PF_X25, "PF_X25" }, 22134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 22234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 22334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 22434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectconst struct xlat addrfams[] = { 22534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_APPLETALK 22634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_APPLETALK, "AF_APPLETALK" }, 22734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 22834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_ASH 22934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_ASH, "AF_ASH" }, 23034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 23134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_ATMPVC 23234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_ATMPVC, "AF_ATMPVC" }, 23334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 23434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_ATMSVC 23534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_ATMSVC, "AF_ATMSVC" }, 23634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 23734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_AX25 23834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_AX25, "AF_AX25" }, 23934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 24034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_BLUETOOTH 24134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_BLUETOOTH, "AF_BLUETOOTH" }, 24234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 24334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_BRIDGE 24434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_BRIDGE, "AF_BRIDGE" }, 24534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 24634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_DECnet 24734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_DECnet, "AF_DECnet" }, 24834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 24934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_ECONET 25034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_ECONET, "AF_ECONET" }, 25134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 25234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_FILE 25334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_FILE, "AF_FILE" }, 25434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 25534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_IMPLINK 25634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_IMPLINK, "AF_IMPLINK" }, 25734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 25834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_INET 25934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_INET, "AF_INET" }, 26034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 26134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_INET6 26234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_INET6, "AF_INET6" }, 26334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 26434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_IPX 26534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_IPX, "AF_IPX" }, 26634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 26734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_IRDA 26834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_IRDA, "AF_IRDA" }, 26934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 27034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_ISO 27134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_ISO, "AF_ISO" }, 27234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 27334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_KEY 27434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_KEY, "AF_KEY" }, 27534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 27634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_UNIX 27734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_UNIX, "AF_UNIX" }, 27834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 27934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_LOCAL 28034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_LOCAL, "AF_LOCAL" }, 28134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 28234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_NETBEUI 28334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_NETBEUI, "AF_NETBEUI" }, 28434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 28534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_NETLINK 28634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_NETLINK, "AF_NETLINK" }, 28734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 28834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_NETROM 28934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_NETROM, "AF_NETROM" }, 29034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 29134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_PACKET 29234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_PACKET, "AF_PACKET" }, 29334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 29434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_PPPOX 29534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_PPPOX, "AF_PPPOX" }, 29634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 29734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_ROSE 29834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_ROSE, "AF_ROSE" }, 29934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 30034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_ROUTE 30134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_ROUTE, "AF_ROUTE" }, 30234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 30334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_SECURITY 30434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_SECURITY, "AF_SECURITY" }, 30534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 30634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_SNA 30734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_SNA, "AF_SNA" }, 30834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 30934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_UNSPEC 31034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_UNSPEC, "AF_UNSPEC" }, 31134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 31234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_WANPIPE 31334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_WANPIPE, "AF_WANPIPE" }, 31434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 31534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_X25 31634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { AF_X25, "AF_X25" }, 31734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 31834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 31934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 32034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat socktypes[] = { 32134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOCK_STREAM, "SOCK_STREAM" }, 32234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOCK_DGRAM, "SOCK_DGRAM" }, 32334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOCK_RAW 32434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOCK_RAW, "SOCK_RAW" }, 32534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 326f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef SOCK_RDM 327f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOCK_RDM, "SOCK_RDM" }, 328f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 32934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOCK_SEQPACKET 33034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOCK_SEQPACKET,"SOCK_SEQPACKET"}, 33134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 332f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef SOCK_DCCP 333f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOCK_DCCP, "SOCK_DCCP" }, 33434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 33534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOCK_PACKET 33634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOCK_PACKET, "SOCK_PACKET" }, 33734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 33834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 33934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 340f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownstatic const struct xlat sock_type_flags[] = { 341f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef SOCK_CLOEXEC 342f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOCK_CLOEXEC, "SOCK_CLOEXEC" }, 343f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 344f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef SOCK_NONBLOCK 345f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOCK_NONBLOCK,"SOCK_NONBLOCK" }, 346f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 347f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { 0, NULL }, 348f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown}; 349f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifndef SOCK_TYPE_MASK 350f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown# define SOCK_TYPE_MASK 0xf 351f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 35234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat socketlayers[] = { 35334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_IP) 35434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_IP, "SOL_IP" }, 35534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 35634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_ICMP) 35734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_ICMP, "SOL_ICMP" }, 35834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 35934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_TCP) 36034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_TCP, "SOL_TCP" }, 36134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 36234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_UDP) 36334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_UDP, "SOL_UDP" }, 36434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 36534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_IPV6) 36634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_IPV6, "SOL_IPV6" }, 36734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 36834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_ICMPV6) 36934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_ICMPV6, "SOL_ICMPV6" }, 37034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 371f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_SCTP) 372f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_SCTP, "SOL_SCTP" }, 373f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 374f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_UDPLITE) 375f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_UDPLITE, "SOL_UDPLITE" }, 376f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 37734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_RAW) 37834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_RAW, "SOL_RAW" }, 37934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 38034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_IPX) 38134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_IPX, "SOL_IPX" }, 38234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 38334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_AX25) 38434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_AX25, "SOL_AX25" }, 38534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 38634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_ATALK) 38734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_ATALK, "SOL_ATALK" }, 38834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 38934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_NETROM) 39034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_NETROM, "SOL_NETROM" }, 39134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 39234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_ROSE) 39334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_ROSE, "SOL_ROSE" }, 39434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 39534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_DECNET) 39634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_DECNET, "SOL_DECNET" }, 39734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 39834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_X25) 39934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_X25, "SOL_X25" }, 40034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 40134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_PACKET) 40234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_PACKET, "SOL_PACKET" }, 40334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 40434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_ATM) 40534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_ATM, "SOL_ATM" }, 40634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 40734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_AAL) 40834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_AAL, "SOL_AAL" }, 40934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 41034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SOL_IRDA) 41134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_IRDA, "SOL_IRDA" }, 41234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 413f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_NETBEUI) 414f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_NETBEUI, "SOL_NETBEUI" }, 415f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 416f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_LLC) 417f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_LLC, "SOL_LLC" }, 418f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 419f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_DCCP) 420f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_DCCP, "SOL_DCCP" }, 421f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 422f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_NETLINK) 423f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_NETLINK, "SOL_NETLINK" }, 424f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 425f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_TIPC) 426f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_TIPC, "SOL_TIPC" }, 427f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 428f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_RXRPC) 429f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_RXRPC, "SOL_RXRPC" }, 430f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 431f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_PPPOL2TP) 432f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_PPPOL2TP, "SOL_PPPOL2TP" }, 433f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 434f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_BLUETOOTH) 435f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_BLUETOOTH,"SOL_BLUETOOTH" }, 436f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 437f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_PNPIPE) 438f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_PNPIPE, "SOL_PNPIPE" }, 439f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 440f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_RDS) 441f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_RDS, "SOL_RDS" }, 442f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 443f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_IUVC) 444f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_IUCV, "SOL_IUCV" }, 445f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 446f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SOL_CAIF) 447f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SOL_CAIF, "SOL_CAIF" }, 448f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 44934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SOL_SOCKET, "SOL_SOCKET" }, /* Never used! */ 450f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown /* The SOL_* array should remain not NULL-terminated. */ 45134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 45234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project/*** WARNING: DANGER WILL ROBINSON: NOTE "socketlayers" array above 45334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project falls into "protocols" array below!!!! This is intended!!! ***/ 45434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat protocols[] = { 45534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_IP, "IPPROTO_IP" }, 45634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_ICMP, "IPPROTO_ICMP" }, 45734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_TCP, "IPPROTO_TCP" }, 45834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_UDP, "IPPROTO_UDP" }, 459f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_IGMP 460f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_IGMP, "IPPROTO_IGMP" }, 461f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 46234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPPROTO_GGP 46334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_GGP, "IPPROTO_GGP" }, 46434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 465f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_IPIP 466f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_IPIP, "IPPROTO_IPIP" }, 467f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 46834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPPROTO_EGP 46934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_EGP, "IPPROTO_EGP" }, 47034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 47134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPPROTO_PUP 47234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_PUP, "IPPROTO_PUP" }, 47334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 47434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPPROTO_IDP 47534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_IDP, "IPPROTO_IDP" }, 47634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 477f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_TP 478f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_TP, "IPPROTO_TP" }, 479f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 480f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_DCCP 481f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_DCCP, "IPPROTO_DCCP" }, 482f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 48334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPPROTO_IPV6 48434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_IPV6, "IPPROTO_IPV6" }, 48534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 486f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_ROUTING 487f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_ROUTING, "IPPROTO_ROUTING" }, 488f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 489f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_FRAGMENT 490f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_FRAGMENT, "IPPROTO_FRAGMENT" }, 491f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 492f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_RSVP 493f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_RSVP, "IPPROTO_RSVP" }, 494f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 495f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_GRE 496f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_GRE, "IPPROTO_GRE" }, 497f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 498f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_ESP 499f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_ESP, "IPPROTO_ESP" }, 500f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 501f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_AH 502f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_AH, "IPPROTO_AH" }, 503f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 50434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPPROTO_ICMPV6 505f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_ICMPV6, "IPPROTO_ICMPV6" }, 50634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 507f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_NONE 508f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_NONE, "IPPROTO_NONE" }, 509f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 510f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_DSTOPTS 511f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_DSTOPTS, "IPPROTO_DSTOPTS" }, 51234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 51334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPPROTO_HELLO 514f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_HELLO, "IPPROTO_HELLO" }, 51534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 51634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPPROTO_ND 51734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_ND, "IPPROTO_ND" }, 51834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 519f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_MTP 520f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_MTP, "IPPROTO_MTP" }, 521f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 522f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_ENCAP 523f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_ENCAP, "IPPROTO_ENCAP" }, 524f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 525f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_PIM 526f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_PIM, "IPPROTO_PIM" }, 527f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 528f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_COMP 529f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_COMP, "IPPROTO_COMP" }, 530f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 531f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_SCTP 532f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_SCTP, "IPPROTO_SCTP" }, 533f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 534f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPPROTO_UDPLITE 535f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPPROTO_UDPLITE, "IPPROTO_UDPLITE" }, 536f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 53734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPPROTO_RAW 53834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_RAW, "IPPROTO_RAW" }, 53934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 54034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPPROTO_MAX 54134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPPROTO_MAX, "IPPROTO_MAX" }, 54234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 54334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 54434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 54534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat msg_flags[] = { 546f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_OOB, "MSG_OOB" }, 54734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_DONTROUTE 548f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_DONTROUTE, "MSG_DONTROUTE" }, 54934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 55034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_PEEK 551f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_PEEK, "MSG_PEEK" }, 55234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 55334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_CTRUNC 554f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_CTRUNC, "MSG_CTRUNC" }, 55534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 55634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_PROXY 557f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_PROXY, "MSG_PROXY" }, 55834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 55934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_EOR 560f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_EOR, "MSG_EOR" }, 56134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 56234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_WAITALL 563f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_WAITALL, "MSG_WAITALL" }, 56434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 56534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_TRUNC 566f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_TRUNC, "MSG_TRUNC" }, 56734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 56834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_CTRUNC 569f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_CTRUNC, "MSG_CTRUNC" }, 57034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 57134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_ERRQUEUE 572f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_ERRQUEUE, "MSG_ERRQUEUE" }, 57334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 57434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_DONTWAIT 575f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_DONTWAIT, "MSG_DONTWAIT" }, 57634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 57734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_CONFIRM 578f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_CONFIRM, "MSG_CONFIRM" }, 57934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 58034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_PROBE 581f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_PROBE, "MSG_PROBE" }, 58234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 58334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_FIN 584f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_FIN, "MSG_FIN" }, 58534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 58634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_SYN 587f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_SYN, "MSG_SYN" }, 58834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 58934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_RST 590f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_RST, "MSG_RST" }, 59134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 59234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_NOSIGNAL 593f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_NOSIGNAL, "MSG_NOSIGNAL" }, 59434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 59534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MSG_MORE 596f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_MORE, "MSG_MORE" }, 59734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 598f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef MSG_CMSG_CLOEXEC 599f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { MSG_CMSG_CLOEXEC, "MSG_CMSG_CLOEXEC" }, 600f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 601f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { 0, NULL }, 60234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 60334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 60434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat sockoptions[] = { 60534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_ACCEPTCONN 60634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_ACCEPTCONN, "SO_ACCEPTCONN" }, 60734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 60834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_ALLRAW 60934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_ALLRAW, "SO_ALLRAW" }, 61034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 61134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_ATTACH_FILTER 61234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_ATTACH_FILTER, "SO_ATTACH_FILTER" }, 61334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 61434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_BINDTODEVICE 61534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_BINDTODEVICE, "SO_BINDTODEVICE" }, 61634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 61734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_BROADCAST 61834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_BROADCAST, "SO_BROADCAST" }, 61934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 62034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_BSDCOMPAT 62134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_BSDCOMPAT, "SO_BSDCOMPAT" }, 62234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 62334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_DEBUG 62434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_DEBUG, "SO_DEBUG" }, 62534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 62634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_DETACH_FILTER 62734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_DETACH_FILTER, "SO_DETACH_FILTER" }, 62834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 62934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_DONTROUTE 63034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_DONTROUTE, "SO_DONTROUTE" }, 63134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 63234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_ERROR 63334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_ERROR, "SO_ERROR" }, 63434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 63534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_ICS 63634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_ICS, "SO_ICS" }, 63734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 63834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_IMASOCKET 63934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_IMASOCKET, "SO_IMASOCKET" }, 64034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 64134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_KEEPALIVE 64234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_KEEPALIVE, "SO_KEEPALIVE" }, 64334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 64434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_LINGER 64534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_LINGER, "SO_LINGER" }, 64634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 64734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_LISTENING 64834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_LISTENING, "SO_LISTENING" }, 64934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 65034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_MGMT 65134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_MGMT, "SO_MGMT" }, 65234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 65334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_NO_CHECK 65434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_NO_CHECK, "SO_NO_CHECK" }, 65534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 65634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_OOBINLINE 65734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_OOBINLINE, "SO_OOBINLINE" }, 65834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 65934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_ORDREL 66034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_ORDREL, "SO_ORDREL" }, 66134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 66234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_PARALLELSVR 66334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_PARALLELSVR, "SO_PARALLELSVR" }, 66434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 66534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_PASSCRED 66634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_PASSCRED, "SO_PASSCRED" }, 66734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 66834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_PEERCRED 66934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_PEERCRED, "SO_PEERCRED" }, 67034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 67134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_PEERNAME 67234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_PEERNAME, "SO_PEERNAME" }, 67334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 67434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_PEERSEC 67534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_PEERSEC, "SO_PEERSEC" }, 67634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 67734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_PRIORITY 67834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_PRIORITY, "SO_PRIORITY" }, 67934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 68034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_PROTOTYPE 68134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_PROTOTYPE, "SO_PROTOTYPE" }, 68234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 68334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_RCVBUF 68434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_RCVBUF, "SO_RCVBUF" }, 68534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 68634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_RCVLOWAT 68734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_RCVLOWAT, "SO_RCVLOWAT" }, 68834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 68934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_RCVTIMEO 69034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_RCVTIMEO, "SO_RCVTIMEO" }, 69134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 69234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_RDWR 69334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_RDWR, "SO_RDWR" }, 69434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 69534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_REUSEADDR 69634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_REUSEADDR, "SO_REUSEADDR" }, 69734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 69834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_REUSEPORT 69934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_REUSEPORT, "SO_REUSEPORT" }, 70034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 70134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_SECURITY_AUTHENTICATION 70234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_SECURITY_AUTHENTICATION,"SO_SECURITY_AUTHENTICATION"}, 70334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 70434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_SECURITY_ENCRYPTION_NETWORK 70534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_SECURITY_ENCRYPTION_NETWORK,"SO_SECURITY_ENCRYPTION_NETWORK"}, 70634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 70734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_SECURITY_ENCRYPTION_TRANSPORT 70834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_SECURITY_ENCRYPTION_TRANSPORT,"SO_SECURITY_ENCRYPTION_TRANSPORT"}, 70934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 71034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_SEMA 71134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_SEMA, "SO_SEMA" }, 71234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 71334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_SNDBUF 71434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_SNDBUF, "SO_SNDBUF" }, 71534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 71634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_SNDLOWAT 71734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_SNDLOWAT, "SO_SNDLOWAT" }, 71834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 71934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_SNDTIMEO 72034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_SNDTIMEO, "SO_SNDTIMEO" }, 72134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 72234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_TIMESTAMP 72334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_TIMESTAMP, "SO_TIMESTAMP" }, 72434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 72534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_TYPE 72634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_TYPE, "SO_TYPE" }, 72734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 72834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_USELOOPBACK 72934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SO_USELOOPBACK, "SO_USELOOPBACK" }, 73034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 73134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 73234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 73334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 73434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if !defined (SOL_IP) && defined (IPPROTO_IP) 73534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define SOL_IP IPPROTO_IP 73634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 73734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 73834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_IP 73934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat sockipoptions[] = { 74034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_TOS 74134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_TOS, "IP_TOS" }, 74234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 74334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_TTL 74434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_TTL, "IP_TTL" }, 74534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 74634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_HDRINCL 74734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_HDRINCL, "IP_HDRINCL" }, 74834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 74934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_OPTIONS 75034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_OPTIONS, "IP_OPTIONS" }, 75134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 75234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_ROUTER_ALERT 75334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_ROUTER_ALERT, "IP_ROUTER_ALERT" }, 75434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 75534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_RECVOPTIONS 75634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_RECVOPTIONS, "IP_RECVOPTIONS" }, 75734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 75834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_RECVOPTS 75934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_RECVOPTS, "IP_RECVOPTS" }, 76034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 76134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_RECVRETOPTS 76234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_RECVRETOPTS, "IP_RECVRETOPTS" }, 76334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 76434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_RECVDSTADDR 76534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_RECVDSTADDR, "IP_RECVDSTADDR" }, 76634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 76734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_RETOPTS 76834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_RETOPTS, "IP_RETOPTS" }, 76934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 77034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_PKTINFO 77134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_PKTINFO, "IP_PKTINFO" }, 77234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 77334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_PKTOPTIONS 77434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_PKTOPTIONS, "IP_PKTOPTIONS" }, 77534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 77634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_MTU_DISCOVER 77734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_MTU_DISCOVER, "IP_MTU_DISCOVER" }, 77834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 77934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_RECVERR 78034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_RECVERR, "IP_RECVERR" }, 78134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 78234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_RECVTTL 783f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IP_RECVTTL, "IP_RECVTTL" }, 78434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 78534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_RECVTOS 786f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IP_RECVTOS, "IP_RECVTOS" }, 78734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 78834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_MTU 78934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_MTU, "IP_MTU" }, 79034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 79134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_MULTICAST_IF 79234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_MULTICAST_IF, "IP_MULTICAST_IF" }, 79334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 79434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_MULTICAST_TTL 79534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_MULTICAST_TTL, "IP_MULTICAST_TTL" }, 79634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 79734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_MULTICAST_LOOP 79834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_MULTICAST_LOOP, "IP_MULTICAST_LOOP" }, 79934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 80034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_ADD_MEMBERSHIP 80134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_ADD_MEMBERSHIP, "IP_ADD_MEMBERSHIP" }, 80234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 80334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_DROP_MEMBERSHIP 80434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_DROP_MEMBERSHIP, "IP_DROP_MEMBERSHIP" }, 80534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 80634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_BROADCAST_IF 80734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_BROADCAST_IF, "IP_BROADCAST_IF" }, 80834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 80934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_RECVIFINDEX 81034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_RECVIFINDEX, "IP_RECVIFINDEX" }, 81134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 81234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_MSFILTER 81334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_MSFILTER, "IP_MSFILTER" }, 81434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 81534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MCAST_MSFILTER 81634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { MCAST_MSFILTER, "MCAST_MSFILTER" }, 81734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 81834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IP_FREEBIND 81934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IP_FREEBIND, "IP_FREEBIND" }, 82034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 82134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 82234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 82334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* SOL_IP */ 82434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 82534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_IPV6 82634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat sockipv6options[] = { 82734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_ADDRFORM 82834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_ADDRFORM, "IPV6_ADDRFORM" }, 82934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 83034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef MCAST_FILTER 83134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { MCAST_FILTER, "MCAST_FILTER" }, 83234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 83334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_PKTOPTIONS 83434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_PKTOPTIONS, "IPV6_PKTOPTIONS" }, 83534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 83634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_MTU 83734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_MTU, "IPV6_MTU" }, 83834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 83934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_V6ONLY 84034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_V6ONLY, "IPV6_V6ONLY" }, 84134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 84234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_PKTINFO 84334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_PKTINFO, "IPV6_PKTINFO" }, 84434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 84534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_HOPLIMIT 84634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_HOPLIMIT, "IPV6_HOPLIMIT" }, 84734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 84834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_RTHDR 84934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_RTHDR, "IPV6_RTHDR" }, 85034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 85134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_HOPOPTS 85234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_HOPOPTS, "IPV6_HOPOPTS" }, 85334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 85434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_DSTOPTS 85534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_DSTOPTS, "IPV6_DSTOPTS" }, 85634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 85734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_FLOWINFO 85834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_FLOWINFO, "IPV6_FLOWINFO" }, 85934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 86034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_UNICAST_HOPS 86134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_UNICAST_HOPS, "IPV6_UNICAST_HOPS" }, 86234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 86334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_MULTICAST_HOPS 86434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_MULTICAST_HOPS, "IPV6_MULTICAST_HOPS" }, 86534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 86634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_MULTICAST_LOOP 86734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_MULTICAST_LOOP, "IPV6_MULTICAST_LOOP" }, 86834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 86934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_MULTICAST_IF 87034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_MULTICAST_IF, "IPV6_MULTICAST_IF" }, 87134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 87234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_MTU_DISCOVER 87334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_MTU_DISCOVER, "IPV6_MTU_DISCOVER" }, 87434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 87534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_RECVERR 87634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_RECVERR, "IPV6_RECVERR" }, 87734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 87834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef IPV6_FLOWINFO_SEND 87934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPV6_FLOWINFO_SEND, "IPV6_FLOWINFO_SEND" }, 88034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 881f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPV6_ADD_MEMBERSHIP 882f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPV6_ADD_MEMBERSHIP, "IPV6_ADD_MEMBERSHIP" }, 883f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 884f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPV6_DROP_MEMBERSHIP 885f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPV6_DROP_MEMBERSHIP, "IPV6_DROP_MEMBERSHIP" }, 886f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 887f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef IPV6_ROUTER_ALERT 888f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { IPV6_ROUTER_ALERT, "IPV6_ROUTER_ALERT" }, 889f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 89034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 89134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 89234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* SOL_IPV6 */ 89334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 89434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_IPX 89534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat sockipxoptions[] = { 89634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { IPX_TYPE, "IPX_TYPE" }, 89734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 89834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 89934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* SOL_IPX */ 90034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 90134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_RAW 90234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat sockrawoptions[] = { 90334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_FILTER) 90434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { ICMP_FILTER, "ICMP_FILTER" }, 90534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 90634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 90734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 90834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* SOL_RAW */ 90934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 91034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_PACKET 91134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat sockpacketoptions[] = { 912f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef PACKET_ADD_MEMBERSHIP 91334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_ADD_MEMBERSHIP, "PACKET_ADD_MEMBERSHIP" }, 914f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 915f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef PACKET_DROP_MEMBERSHIP 91634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_DROP_MEMBERSHIP, "PACKET_DROP_MEMBERSHIP"}, 917f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 91834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(PACKET_RECV_OUTPUT) 91934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_RECV_OUTPUT, "PACKET_RECV_OUTPUT" }, 92034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 92134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(PACKET_RX_RING) 92234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_RX_RING, "PACKET_RX_RING" }, 92334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 92434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(PACKET_STATISTICS) 92534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_STATISTICS, "PACKET_STATISTICS" }, 92634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 927f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(PACKET_COPY_THRESH) 928f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { PACKET_COPY_THRESH, "PACKET_COPY_THRESH" }, 929f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 930f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(PACKET_AUXDATA) 931f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { PACKET_AUXDATA, "PACKET_AUXDATA" }, 932f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 933f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(PACKET_ORIGDEV) 934f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { PACKET_ORIGDEV, "PACKET_ORIGDEV" }, 935f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 936f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(PACKET_VERSION) 937f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { PACKET_VERSION, "PACKET_VERSION" }, 938f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 939f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(PACKET_HDRLEN) 940f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { PACKET_HDRLEN, "PACKET_HDRLEN" }, 941f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 942f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(PACKET_RESERVE) 943f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { PACKET_RESERVE, "PACKET_RESERVE" }, 944f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 945f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(PACKET_TX_RING) 946f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { PACKET_TX_RING, "PACKET_TX_RING" }, 947f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 948f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(PACKET_LOSS) 949f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { PACKET_LOSS, "PACKET_LOSS" }, 950f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 95134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 95234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 95334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* SOL_PACKET */ 95434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 955f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef SOL_SCTP 956f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownstatic const struct xlat socksctpoptions[] = { 957f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_RTOINFO) 958f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_RTOINFO, "SCTP_RTOINFO" }, 959f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 960f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_ASSOCINFO) 961f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_ASSOCINFO, "SCTP_ASSOCINFO"}, 962f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 963f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_INITMSG) 964f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_INITMSG, "SCTP_INITMSG" }, 965f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 966f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_NODELAY) 967f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_NODELAY, "SCTP_NODELAY" }, 968f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 969f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_AUTOCLOSE) 970f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_AUTOCLOSE, "SCTP_AUTOCLOSE"}, 971f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 972f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_SET_PEER_PRIMARY_ADDR) 973f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_SET_PEER_PRIMARY_ADDR, "SCTP_SET_PEER_PRIMARY_ADDR"}, 974f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 975f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_PRIMARY_ADDR) 976f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_PRIMARY_ADDR, "SCTP_PRIMARY_ADDR" }, 977f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 978f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_ADAPTATION_LAYER) 979f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_ADAPTATION_LAYER, "SCTP_ADAPTATION_LAYER" }, 980f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 981f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_DISABLE_FRAGMENTS) 982f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_DISABLE_FRAGMENTS, "SCTP_DISABLE_FRAGMENTS"}, 983f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 984f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_PEER_ADDR_PARAMS) 985f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_PEER_ADDR_PARAMS, "SCTP_PEER_ADDR_PARAMS" }, 986f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 987f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_DEFAULT_SEND_PARAM) 988f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_DEFAULT_SEND_PARAM, "SCTP_DEFAULT_SEND_PARAM"}, 989f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 990f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_EVENTS) 991f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_EVENTS, "SCTP_EVENTS" }, 992f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 993f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_I_WANT_MAPPED_V4_ADDR) 994f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_I_WANT_MAPPED_V4_ADDR, "SCTP_I_WANT_MAPPED_V4_ADDR"}, 995f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 996f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_MAXSEG) 997f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_MAXSEG, "SCTP_MAXSEG" }, 998f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 999f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_STATUS) 1000f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_STATUS, "SCTP_STATUS" }, 1001f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1002f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_GET_PEER_ADDR_INFO) 1003f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_GET_PEER_ADDR_INFO, "SCTP_GET_PEER_ADDR_INFO"}, 1004f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1005f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_DELAYED_ACK) 1006f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_DELAYED_ACK, "SCTP_DELAYED_ACK" }, 1007f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1008f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_CONTEXT) 1009f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_CONTEXT, "SCTP_CONTEXT" }, 1010f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1011f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_FRAGMENT_INTERLEAVE) 1012f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_FRAGMENT_INTERLEAVE, "SCTP_FRAGMENT_INTERLEAVE"}, 1013f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1014f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_PARTIAL_DELIVERY_POINT) 1015f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_PARTIAL_DELIVERY_POINT, "SCTP_PARTIAL_DELIVERY_POINT"}, 1016f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1017f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_MAX_BURST) 1018f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_MAX_BURST, "SCTP_MAX_BURST" }, 1019f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1020f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_AUTH_CHUNK) 1021f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_AUTH_CHUNK, "SCTP_AUTH_CHUNK" }, 1022f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1023f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_HMAC_IDENT) 1024f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_HMAC_IDENT, "SCTP_HMAC_IDENT" }, 1025f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1026f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_AUTH_KEY) 1027f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_AUTH_KEY, "SCTP_AUTH_KEY" }, 1028f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1029f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_AUTH_ACTIVE_KEY) 1030f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_AUTH_ACTIVE_KEY, "SCTP_AUTH_ACTIVE_KEY" }, 1031f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1032f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_AUTH_DELETE_KEY) 1033f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_AUTH_DELETE_KEY, "SCTP_AUTH_DELETE_KEY" }, 1034f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1035f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_PEER_AUTH_CHUNKS) 1036f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_PEER_AUTH_CHUNKS, "SCTP_PEER_AUTH_CHUNKS" }, 1037f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1038f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_LOCAL_AUTH_CHUNKS) 1039f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_LOCAL_AUTH_CHUNKS, "SCTP_LOCAL_AUTH_CHUNKS"}, 1040f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1041f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_GET_ASSOC_NUMBER) 1042f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_GET_ASSOC_NUMBER, "SCTP_GET_ASSOC_NUMBER" }, 1043f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1044f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1045f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown /* linux specific things */ 1046f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_SOCKOPT_BINDX_ADD) 1047f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_SOCKOPT_BINDX_ADD, "SCTP_SOCKOPT_BINDX_ADD" }, 1048f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1049f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_SOCKOPT_BINDX_REM) 1050f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_SOCKOPT_BINDX_REM, "SCTP_SOCKOPT_BINDX_REM" }, 1051f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1052f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_SOCKOPT_PEELOFF) 1053f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_SOCKOPT_PEELOFF, "SCTP_SOCKOPT_PEELOFF" }, 1054f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1055f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_GET_PEER_ADDRS_NUM_OLD) 1056f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_GET_PEER_ADDRS_NUM_OLD, "SCTP_GET_PEER_ADDRS_NUM_OLD" }, 1057f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1058f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_GET_PEER_ADDRS_OLD) 1059f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_GET_PEER_ADDRS_OLD, "SCTP_GET_PEER_ADDRS_OLD" }, 1060f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1061f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_GET_LOCAL_ADDRS_NUM_OLD) 1062f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_GET_LOCAL_ADDRS_NUM_OLD, "SCTP_GET_LOCAL_ADDRS_NUM_OLD" }, 1063f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1064f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_GET_LOCAL_ADDRS_OLD) 1065f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_GET_LOCAL_ADDRS_OLD, "SCTP_GET_LOCAL_ADDRS_OLD" }, 1066f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1067f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_SOCKOPT_CONNECTX_OLD) 1068f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_SOCKOPT_CONNECTX_OLD, "SCTP_SOCKOPT_CONNECTX_OLD" }, 1069f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1070f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_GET_PEER_ADDRS) 1071f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_GET_PEER_ADDRS, "SCTP_GET_PEER_ADDRS" }, 1072f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1073f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(SCTP_GET_LOCAL_ADDRS) 1074f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { SCTP_GET_LOCAL_ADDRS, "SCTP_GET_LOCAL_ADDRS" }, 1075f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1076f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1077f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { 0, NULL }, 1078f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown}; 1079f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1080f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 108134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if !defined (SOL_TCP) && defined (IPPROTO_TCP) 108234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#define SOL_TCP IPPROTO_TCP 108334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 108434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 108534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_TCP 108634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat socktcpoptions[] = { 108734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_NODELAY, "TCP_NODELAY" }, 108834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_MAXSEG, "TCP_MAXSEG" }, 108934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(TCP_CORK) 109034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_CORK, "TCP_CORK" }, 109134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 109234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(TCP_KEEPIDLE) 109334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_KEEPIDLE, "TCP_KEEPIDLE" }, 109434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 109534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(TCP_KEEPINTVL) 109634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_KEEPINTVL, "TCP_KEEPINTVL" }, 109734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 109834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(TCP_KEEPCNT) 109934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_KEEPCNT, "TCP_KEEPCNT" }, 110034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 110134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(TCP_NKEEP) 110234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_NKEEP, "TCP_NKEEP" }, 110334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 110434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(TCP_SYNCNT) 110534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_SYNCNT, "TCP_SYNCNT" }, 110634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 110734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(TCP_LINGER2) 110834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_LINGER2, "TCP_LINGER2" }, 110934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 111034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(TCP_DEFER_ACCEPT) 111134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_DEFER_ACCEPT, "TCP_DEFER_ACCEPT" }, 111234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 111334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(TCP_WINDOW_CLAMP) 111434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_WINDOW_CLAMP, "TCP_WINDOW_CLAMP" }, 111534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 111634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(TCP_INFO) 111734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_INFO, "TCP_INFO" }, 111834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 111934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(TCP_QUICKACK) 112034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { TCP_QUICKACK, "TCP_QUICKACK" }, 112134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 112234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 112334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 112434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* SOL_TCP */ 112534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 112634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_RAW 112734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat icmpfilterflags[] = { 112834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_ECHOREPLY) 112934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_ECHOREPLY), "ICMP_ECHOREPLY" }, 113034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 113134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_DEST_UNREACH) 113234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_DEST_UNREACH), "ICMP_DEST_UNREACH" }, 113334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 113434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_SOURCE_QUENCH) 113534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_SOURCE_QUENCH), "ICMP_SOURCE_QUENCH" }, 113634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 113734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_REDIRECT) 113834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_REDIRECT), "ICMP_REDIRECT" }, 113934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 114034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_ECHO) 114134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_ECHO), "ICMP_ECHO" }, 114234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 114334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_TIME_EXCEEDED) 114434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_TIME_EXCEEDED), "ICMP_TIME_EXCEEDED" }, 114534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 114634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_PARAMETERPROB) 114734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_PARAMETERPROB), "ICMP_PARAMETERPROB" }, 114834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 114934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_TIMESTAMP) 115034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_TIMESTAMP), "ICMP_TIMESTAMP" }, 115134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 115234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_TIMESTAMPREPLY) 115334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_TIMESTAMPREPLY), "ICMP_TIMESTAMPREPLY" }, 115434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 115534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_INFO_REQUEST) 115634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_INFO_REQUEST), "ICMP_INFO_REQUEST" }, 115734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 115834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_INFO_REPLY) 115934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_INFO_REPLY), "ICMP_INFO_REPLY" }, 116034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 116134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_ADDRESS) 116234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_ADDRESS), "ICMP_ADDRESS" }, 116334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 116434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_ADDRESSREPLY) 116534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { (1<<ICMP_ADDRESSREPLY), "ICMP_ADDRESSREPLY" }, 116634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 116734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 116834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 116934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* SOL_RAW */ 117034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 117134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(AF_PACKET) /* from e.g. linux/if_packet.h */ 117234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat af_packet_types[] = { 117334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(PACKET_HOST) 117434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_HOST, "PACKET_HOST" }, 117534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 117634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(PACKET_BROADCAST) 117734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_BROADCAST, "PACKET_BROADCAST" }, 117834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 117934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(PACKET_MULTICAST) 118034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_MULTICAST, "PACKET_MULTICAST" }, 118134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 118234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(PACKET_OTHERHOST) 118334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_OTHERHOST, "PACKET_OTHERHOST" }, 118434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 118534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(PACKET_OUTGOING) 118634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_OUTGOING, "PACKET_OUTGOING" }, 118734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 118834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(PACKET_LOOPBACK) 118934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_LOOPBACK, "PACKET_LOOPBACK" }, 119034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 119134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(PACKET_FASTROUTE) 119234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { PACKET_FASTROUTE, "PACKET_FASTROUTE" }, 119334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 119434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 119534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 119634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* defined(AF_PACKET) */ 119734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 119834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 119934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectvoid 1200f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownprintsock(struct tcb *tcp, long addr, int addrlen) 120134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 120234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project union { 120334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project char pad[128]; 120434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct sockaddr sa; 120534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct sockaddr_in sin; 120634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct sockaddr_un sau; 120734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef HAVE_INET_NTOP 120834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct sockaddr_in6 sa6; 120934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 121034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(LINUX) && defined(AF_IPX) 121134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct sockaddr_ipx sipx; 121234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 121334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_PACKET 121434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct sockaddr_ll ll; 121534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 121634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_NETLINK 121734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct sockaddr_nl nl; 121834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 121934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } addrbuf; 122034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project char string_addr[100]; 122134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 122234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (addr == 0) { 122334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("NULL"); 122434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return; 122534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 122634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (!verbose(tcp)) { 122734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%#lx", addr); 122834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return; 122934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 123034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 1231f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (addrlen < 2 || addrlen > sizeof(addrbuf)) 1232f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown addrlen = sizeof(addrbuf); 1233f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1234f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown memset(&addrbuf, 0, sizeof(addrbuf)); 1235f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (umoven(tcp, addr, addrlen, addrbuf.pad) < 0) { 123634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("{...}"); 123734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return; 123834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 1239f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown addrbuf.pad[sizeof(addrbuf.pad) - 1] = '\0'; 124034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 124134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("{sa_family="); 124234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(addrfams, addrbuf.sa.sa_family, "AF_???"); 124334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 124434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 124534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project switch (addrbuf.sa.sa_family) { 124634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case AF_UNIX: 1247f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (addrlen == 2) { 1248f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("NULL"); 124934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } else if (addrbuf.sau.sun_path[0]) { 1250f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("path="); 1251f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printpathn(tcp, addr + 2, strlen(addrbuf.sau.sun_path)); 125234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } else { 1253f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("path=@"); 1254f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printpathn(tcp, addr + 3, strlen(addrbuf.sau.sun_path + 1)); 125534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 125634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 125734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case AF_INET: 125834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("sin_port=htons(%u), sin_addr=inet_addr(\"%s\")", 125934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project ntohs(addrbuf.sin.sin_port), inet_ntoa(addrbuf.sin.sin_addr)); 126034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 126134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef HAVE_INET_NTOP 126234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case AF_INET6: 126334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project inet_ntop(AF_INET6, &addrbuf.sa6.sin6_addr, string_addr, sizeof(string_addr)); 126434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("sin6_port=htons(%u), inet_pton(AF_INET6, \"%s\", &sin6_addr), sin6_flowinfo=%u", 126534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project ntohs(addrbuf.sa6.sin6_port), string_addr, 126634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project addrbuf.sa6.sin6_flowinfo); 126734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 126834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 126934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(HAVE_IF_INDEXTONAME) && defined(IN6_IS_ADDR_LINKLOCAL) && defined(IN6_IS_ADDR_MC_LINKLOCAL) 127034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project int numericscope = 0; 127134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (IN6_IS_ADDR_LINKLOCAL (&addrbuf.sa6.sin6_addr) 127234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project || IN6_IS_ADDR_MC_LINKLOCAL (&addrbuf.sa6.sin6_addr)) { 127334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project char scopebuf[IFNAMSIZ + 1]; 127434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 127534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (if_indextoname (addrbuf.sa6.sin6_scope_id, scopebuf) == NULL) 127634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project numericscope++; 127734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else 127834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", sin6_scope_id=if_nametoindex(\"%s\")", scopebuf); 127934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } else 128034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project numericscope++; 128134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 128234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (numericscope) 128334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 128434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", sin6_scope_id=%u", addrbuf.sa6.sin6_scope_id); 128534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 128634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 128734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 128834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 128934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(AF_IPX) && defined(linux) 129034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case AF_IPX: 129134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 129234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project int i; 129334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("sipx_port=htons(%u), ", 129434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project ntohs(addrbuf.sipx.sipx_port)); 129534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* Yes, I know, this does not look too 129634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * strace-ish, but otherwise the IPX 129734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * addresses just look monstrous... 129834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * Anyways, feel free if you don't like 129934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * this way.. :) 130034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project */ 130134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%08lx:", (unsigned long)ntohl(addrbuf.sipx.sipx_network)); 130234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project for (i = 0; i<IPX_NODE_LEN; i++) 130334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%02x", addrbuf.sipx.sipx_node[i]); 130434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("/[%02x]", addrbuf.sipx.sipx_type); 130534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 130634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 130734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* AF_IPX && linux */ 130834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_PACKET 130934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case AF_PACKET: 131034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 131134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project int i; 131234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("proto=%#04x, if%d, pkttype=", 131334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project ntohs(addrbuf.ll.sll_protocol), 131434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project addrbuf.ll.sll_ifindex); 131534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(af_packet_types, addrbuf.ll.sll_pkttype, "?"); 131634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", addr(%d)={%d, ", 131734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project addrbuf.ll.sll_halen, 131834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project addrbuf.ll.sll_hatype); 131934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project for (i=0; i<addrbuf.ll.sll_halen; i++) 132034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%02x", addrbuf.ll.sll_addr[i]); 132134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 132234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 132334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 132434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* AF_APACKET */ 132534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef AF_NETLINK 132634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case AF_NETLINK: 132734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("pid=%d, groups=%08x", addrbuf.nl.nl_pid, addrbuf.nl.nl_groups); 132834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 132934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* AF_NETLINK */ 133034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* AF_AX25 AF_APPLETALK AF_NETROM AF_BRIDGE AF_AAL5 133134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project AF_X25 AF_ROSE etc. still need to be done */ 133234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 133334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project default: 133434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("sa_data="); 133534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printstr(tcp, (long) &((struct sockaddr *) addr)->sa_data, 133634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project sizeof addrbuf.sa.sa_data); 133734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 133834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 133934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("}"); 134034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 134134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 134234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if HAVE_SENDMSG 134334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat scmvals[] = { 134434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SCM_RIGHTS 134534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SCM_RIGHTS, "SCM_RIGHTS" }, 134634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 134734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SCM_CREDENTIALS 134834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { SCM_CREDENTIALS, "SCM_CREDENTIALS" }, 134934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 135034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL } 135134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 135234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 135334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic void 1354f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownprintcmsghdr(struct tcb *tcp, unsigned long addr, unsigned long len) 135534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 135634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct cmsghdr *cmsg = len < sizeof(struct cmsghdr) ? 135734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project NULL : malloc(len); 135834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (cmsg == NULL || umoven(tcp, addr, len, (char *) cmsg) < 0) { 135934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", msg_control=%#lx", addr); 136034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project free(cmsg); 136134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return; 136234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 136334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 1364f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf(", {cmsg_len=%u, cmsg_level=", (unsigned) cmsg->cmsg_len); 136534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(socketlayers, cmsg->cmsg_level, "SOL_???"); 136634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", cmsg_type="); 136734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 136834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (cmsg->cmsg_level == SOL_SOCKET) { 136934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project unsigned long cmsg_len; 137034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 137134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(scmvals, cmsg->cmsg_type, "SCM_???"); 137234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project cmsg_len = (len < cmsg->cmsg_len) ? len : cmsg->cmsg_len; 137334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 137434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (cmsg->cmsg_type == SCM_RIGHTS 137534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project && CMSG_LEN(sizeof(int)) <= cmsg_len) { 137634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project int *fds = (int *) CMSG_DATA (cmsg); 137734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project int first = 1; 137834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 137934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", {"); 138034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project while ((char *) fds < ((char *) cmsg + cmsg_len)) { 138134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (!first) 138234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 138334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%d", *fds++); 138434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project first = 0; 138534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 138634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("}}"); 138734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project free(cmsg); 138834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return; 138934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 139034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (cmsg->cmsg_type == SCM_CREDENTIALS 139134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project && CMSG_LEN(sizeof(struct ucred)) <= cmsg_len) { 139234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct ucred *uc = (struct ucred *) CMSG_DATA (cmsg); 139334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 139434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("{pid=%ld, uid=%ld, gid=%ld}}", 139534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project (long)uc->pid, (long)uc->uid, (long)uc->gid); 139634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project free(cmsg); 139734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return; 139834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 139934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 140034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project free(cmsg); 140134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", ...}"); 140234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 140334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 140434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic void 1405f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Browndo_msghdr(struct tcb *tcp, struct msghdr *msg) 1406f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown{ 1407f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("{msg_name(%d)=", msg->msg_namelen); 1408f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printsock(tcp, (long)msg->msg_name, msg->msg_namelen); 1409f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1410f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf(", msg_iov(%lu)=", (unsigned long)msg->msg_iovlen); 1411f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprint_iov(tcp, (unsigned long)msg->msg_iovlen, 1412f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown (unsigned long)msg->msg_iov); 1413f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1414f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL 1415f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf(", msg_controllen=%lu", (unsigned long)msg->msg_controllen); 1416f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (msg->msg_controllen) 1417f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printcmsghdr(tcp, (unsigned long) msg->msg_control, 1418f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown msg->msg_controllen); 1419f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf(", msg_flags="); 1420f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printflags(msg_flags, msg->msg_flags, "MSG_???"); 1421f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#else /* !HAVE_STRUCT_MSGHDR_MSG_CONTROL */ 1422f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("msg_accrights=%#lx, msg_accrightslen=%u", 1423f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown (unsigned long) msg->msg_accrights, msg->msg_accrightslen); 1424f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif /* !HAVE_STRUCT_MSGHDR_MSG_CONTROL */ 1425f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("}"); 1426f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown} 1427f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1428f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownstatic void 142934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectprintmsghdr(tcp, addr) 143034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 143134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectlong addr; 143234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 143334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct msghdr msg; 143434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 143534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (umove(tcp, addr, &msg) < 0) { 143634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%#lx", addr); 143734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return; 143834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 1439f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown do_msghdr(tcp, &msg); 1440f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown} 144134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 1442f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef LINUX 1443f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownstatic void 1444f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownprintmmsghdr(struct tcb *tcp, long addr) 1445f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown{ 1446f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown struct mmsghdr { 1447f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown struct msghdr msg_hdr; 1448f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown unsigned msg_len; 1449f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } mmsg; 145034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 1451f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (umove(tcp, addr, &mmsg) < 0) { 1452f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("%#lx", addr); 1453f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return; 1454f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 1455f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("{"); 1456f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown do_msghdr(tcp, &mmsg.msg_hdr); 1457f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf(", %u}", mmsg.msg_len); 145834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 1459f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 146034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 146134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* HAVE_SENDMSG */ 146234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 1463f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown/* 1464f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown * low bits of the socket type define real socket type, 1465f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown * other bits are socket type flags. 1466f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown */ 1467f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownstatic void 1468f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Browntprint_sock_type(struct tcb *tcp, int flags) 1469f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown{ 1470f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown const char *str = xlookup(socktypes, flags & SOCK_TYPE_MASK); 1471f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1472f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (str) 1473f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { 1474f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("%s", str); 1475f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown flags &= ~SOCK_TYPE_MASK; 1476f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (!flags) 1477f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return; 1478f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("|"); 1479f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 1480f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printflags(sock_type_flags, flags, "SOCK_???"); 1481f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown} 1482f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 148334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 1484f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownsys_socket(struct tcb *tcp) 148534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 148634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 148734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(domains, tcp->u_arg[0], "PF_???"); 148834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 1489f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprint_sock_type(tcp, tcp->u_arg[1]); 149034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 149134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project switch (tcp->u_arg[0]) { 149234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case PF_INET: 149334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_INET6 149434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case PF_INET6: 149534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 149634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(protocols, tcp->u_arg[2], "IPPROTO_???"); 149734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 149834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_IPX 149934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case PF_IPX: 150034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* BTW: I don't believe this.. */ 150134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("["); 150234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(domains, tcp->u_arg[2], "PF_???"); 150334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("]"); 150434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 150534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* PF_IPX */ 150634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project default: 150734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%lu", tcp->u_arg[2]); 150834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 150934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 151034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 151134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 151234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 151334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 1514f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef SVR4 151534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 151634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_so_socket(tcp) 151734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 151834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 151934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 152034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* not sure really what these args are... but this 152134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * is how truss prints it 152234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project */ 152334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, %ld, %ld, ", 152434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tcp->u_arg[0], tcp->u_arg[1], tcp->u_arg[2]); 152534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printpath(tcp, tcp->u_arg[3]); 152634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", %ld", tcp->u_arg[4]); 152734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 152834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 152934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 153034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 153134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 153234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_so_socketpair(tcp) 153334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 153434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 153534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 1536f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown /* not sure what this arg is */ 153734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("0x%lx", tcp->u_arg[0]); 153834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 153934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 154034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 1541f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif /* SVR4 */ 154234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 154334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 154434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_bind(tcp) 154534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 154634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 154734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 154834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, ", tcp->u_arg[0]); 154934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printsock(tcp, tcp->u_arg[1], tcp->u_arg[2]); 155034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", %lu", tcp->u_arg[2]); 155134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 155234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 155334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 155434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 155534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 155634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_connect(tcp) 155734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 155834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 155934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return sys_bind(tcp); 156034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 156134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 156234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 156334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_listen(tcp) 156434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 156534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 156634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 156734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, %lu", tcp->u_arg[0], tcp->u_arg[1]); 156834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 156934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 157034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 157134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 1572f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownstatic int 1573f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Browndo_accept(struct tcb *tcp, int flags_arg) 157434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 157534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 157634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, ", tcp->u_arg[0]); 1577f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return 0; 1578f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 1579f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (!tcp->u_arg[2]) 158034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%#lx, NULL", tcp->u_arg[1]); 158134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else { 1582f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown int len; 1583f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (tcp->u_arg[1] == 0 || syserror(tcp) 1584f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown || umove (tcp, tcp->u_arg[2], &len) < 0) { 158534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%#lx", tcp->u_arg[1]); 158634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } else { 1587f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printsock(tcp, tcp->u_arg[1], len); 158834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 158934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 1590f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printnum_int(tcp, tcp->u_arg[2], "%u"); 1591f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 1592f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (flags_arg >= 0) { 1593f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf(", "); 1594f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printflags(sock_type_flags, tcp->u_arg[flags_arg], 1595f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown "SOCK_???"); 159634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 159734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 159834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 159934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 160034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 1601f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownsys_accept(struct tcb *tcp) 1602f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown{ 1603f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return do_accept(tcp, -1); 1604f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown} 1605f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1606f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef LINUX 1607f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownint 1608f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownsys_accept4(struct tcb *tcp) 1609f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown{ 1610f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return do_accept(tcp, 3); 1611f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown} 1612f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1613f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1614f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownint 161534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_send(tcp) 161634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 161734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 161834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 161934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, ", tcp->u_arg[0]); 162034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]); 162134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", %lu, ", tcp->u_arg[2]); 162234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* flags */ 162334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printflags(msg_flags, tcp->u_arg[3], "MSG_???"); 162434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 162534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 162634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 162734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 162834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 162934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_sendto(tcp) 163034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 163134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 163234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 163334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, ", tcp->u_arg[0]); 163434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]); 163534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", %lu, ", tcp->u_arg[2]); 163634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* flags */ 163734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printflags(msg_flags, tcp->u_arg[3], "MSG_???"); 163834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* to address */ 163934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 164034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printsock(tcp, tcp->u_arg[4], tcp->u_arg[5]); 164134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* to length */ 164234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", %lu", tcp->u_arg[5]); 164334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 164434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 164534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 164634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 164734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef HAVE_SENDMSG 164834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 164934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 165034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_sendmsg(tcp) 165134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 165234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 165334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 165434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, ", tcp->u_arg[0]); 165534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printmsghdr(tcp, tcp->u_arg[1]); 165634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* flags */ 165734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 165834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printflags(msg_flags, tcp->u_arg[2], "MSG_???"); 165934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 166034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 166134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 166234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 166334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* HAVE_SENDMSG */ 166434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 166534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 166634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_recv(tcp) 166734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 166834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 166934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 167034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, ", tcp->u_arg[0]); 167134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } else { 167234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (syserror(tcp)) 167334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%#lx", tcp->u_arg[1]); 167434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else 167534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printstr(tcp, tcp->u_arg[1], tcp->u_rval); 167634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 167734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", %lu, ", tcp->u_arg[2]); 167834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printflags(msg_flags, tcp->u_arg[3], "MSG_???"); 167934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 168034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 168134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 168234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 168334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 168434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_recvfrom(tcp) 168534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 168634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 168734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project int fromlen; 168834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 168934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 169034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, ", tcp->u_arg[0]); 169134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } else { 169234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (syserror(tcp)) { 169334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%#lx, %lu, %lu, %#lx, %#lx", 169434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3], 169534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tcp->u_arg[4], tcp->u_arg[5]); 169634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 169734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 169834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* buf */ 169934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printstr(tcp, tcp->u_arg[1], tcp->u_rval); 170034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* len */ 170134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", %lu, ", tcp->u_arg[2]); 170234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* flags */ 170334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printflags(msg_flags, tcp->u_arg[3], "MSG_???"); 170434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* from address, len */ 170534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (!tcp->u_arg[4] || !tcp->u_arg[5]) { 170634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (tcp->u_arg[4] == 0) 170734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", NULL"); 170834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else 170934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", %#lx", tcp->u_arg[4]); 171034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (tcp->u_arg[5] == 0) 171134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", NULL"); 171234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else 171334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", %#lx", tcp->u_arg[5]); 171434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 171534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 171634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (umove(tcp, tcp->u_arg[5], &fromlen) < 0) { 171734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", {...}, [?]"); 171834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 171934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 172034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 172134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printsock(tcp, tcp->u_arg[4], tcp->u_arg[5]); 172234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* from length */ 172334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", [%u]", fromlen); 172434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 172534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 172634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 172734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 172834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef HAVE_SENDMSG 172934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 173034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 173134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_recvmsg(tcp) 173234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 173334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 173434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 173534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, ", tcp->u_arg[0]); 173634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } else { 173734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (syserror(tcp) || !verbose(tcp)) 173834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%#lx", tcp->u_arg[1]); 173934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else 174034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printmsghdr(tcp, tcp->u_arg[1]); 174134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* flags */ 174234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 174334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printflags(msg_flags, tcp->u_arg[2], "MSG_???"); 174434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 174534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 174634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 174734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 1748f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef LINUX 1749f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownint 1750f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownsys_recvmmsg(struct tcb *tcp) 1751f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown{ 1752f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown static char str[128]; 1753f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (entering(tcp)) { 1754f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1755f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("%ld, ", tcp->u_arg[0]); 1756f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (verbose(tcp)) { 1757f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown sprint_timespec(str, tcp, tcp->u_arg[4]); 1758f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tcp->auxstr = strdup(str); 1759f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } else { 1760f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("%#lx, %ld, ", tcp->u_arg[1], tcp->u_arg[2]); 1761f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printflags(msg_flags, tcp->u_arg[3], "MSG_???"); 1762f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf(", "); 1763f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown print_timespec(tcp, tcp->u_arg[4]); 1764f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 1765f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return 0; 1766f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } else { 1767f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (verbose(tcp)) { 1768f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (syserror(tcp)) 1769f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("%#lx", tcp->u_arg[1]); 1770f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown else 1771f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printmmsghdr(tcp, tcp->u_arg[1]); 1772f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf(", %ld, ", tcp->u_arg[2]); 1773f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown /* flags */ 1774f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printflags(msg_flags, tcp->u_arg[3], "MSG_???"); 1775f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown /* timeout on entrance */ 1776f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf(", %s", tcp->auxstr ? tcp->auxstr : "{...}"); 1777f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown free((void *) tcp->auxstr); 1778f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tcp->auxstr = NULL; 1779f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 1780f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (syserror(tcp)) 1781f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return 0; 1782f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (tcp->u_rval == 0) { 1783f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tcp->auxstr = "Timeout"; 1784f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return RVAL_STR; 1785f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 1786f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (!verbose(tcp)) 1787f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return 0; 1788f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown /* timeout on exit */ 1789f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown strcpy(str, "left "); 1790f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown sprint_timespec(str + strlen(str), tcp, tcp->u_arg[4]); 1791f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tcp->auxstr = str; 1792f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return RVAL_STR; 1793f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 1794f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown} 1795f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1796f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 179734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* HAVE_SENDMSG */ 179834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 1799f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownstatic const struct xlat shutdown_modes[] = { 1800f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { 0, "SHUT_RD" }, 1801f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { 1, "SHUT_WR" }, 1802f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { 2, "SHUT_RDWR" }, 1803f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown { 0, NULL } 1804f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown}; 1805f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 180634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 180734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_shutdown(tcp) 180834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 180934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 181034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 1811f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("%ld, ", tcp->u_arg[0]); 1812f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printxval(shutdown_modes, tcp->u_arg[1], "SHUT_???"); 181334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 181434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 181534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 181634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 181734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 181834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_getsockname(tcp) 181934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 182034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 182134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return sys_accept(tcp); 182234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 182334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 182434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 182534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_getpeername(tcp) 182634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 182734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 182834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return sys_accept(tcp); 182934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 183034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 1831f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownstatic int 1832f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Browndo_pipe(struct tcb *tcp, int flags_arg) 183334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 183434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (exiting(tcp)) { 183534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (syserror(tcp)) { 183634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%#lx", tcp->u_arg[0]); 1837f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } else { 1838f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(LINUX) && !defined(SPARC) && !defined(SPARC64) && !defined(SH) && !defined(IA64) 1839f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown int fds[2]; 1840f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1841f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (umoven(tcp, tcp->u_arg[0], sizeof fds, (char *) fds) < 0) 1842f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("[...]"); 1843f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown else 1844f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("[%u, %u]", fds[0], fds[1]); 184534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#elif defined(SPARC) || defined(SPARC64) || defined(SH) || defined(SVR4) || defined(FREEBSD) || defined(IA64) 1846f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("[%lu, %lu]", tcp->u_rval, getrval2(tcp)); 1847f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#else 1848f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("%#lx", tcp->u_arg[0]); 184934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 1850f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 1851f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (flags_arg >= 0) { 1852f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf(", "); 1853f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printflags(open_mode_flags, tcp->u_arg[flags_arg], "O_???"); 1854f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 1855f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 185634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 185734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 185834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 185934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 1860f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownsys_pipe(struct tcb *tcp) 1861f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown{ 1862f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return do_pipe(tcp, -1); 1863f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown} 1864f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1865f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef LINUX 1866f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownint 1867f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownsys_pipe2(struct tcb *tcp) 1868f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown{ 1869f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return do_pipe(tcp, 1); 1870f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown} 1871f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 1872f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown 1873f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownint 1874f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownsys_socketpair(struct tcb *tcp) 187534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 187634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef LINUX 187734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project int fds[2]; 187834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 187934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 188034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 188134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(domains, tcp->u_arg[0], "PF_???"); 188234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 1883f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprint_sock_type(tcp, tcp->u_arg[1]); 188434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 188534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project switch (tcp->u_arg[0]) { 188634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case PF_INET: 188734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(protocols, tcp->u_arg[2], "IPPROTO_???"); 188834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 188934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef PF_IPX 189034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case PF_IPX: 189134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* BTW: I don't believe this.. */ 189234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("["); 189334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(domains, tcp->u_arg[2], "PF_???"); 189434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("]"); 189534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 189634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* PF_IPX */ 189734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project default: 189834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%lu", tcp->u_arg[2]); 189934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 190034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 190134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } else { 190234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (syserror(tcp)) { 190334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", %#lx", tcp->u_arg[3]); 190434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 190534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 190634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef LINUX 190734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (umoven(tcp, tcp->u_arg[3], sizeof fds, (char *) fds) < 0) 190834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", [...]"); 190934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else 191034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", [%u, %u]", fds[0], fds[1]); 191134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* LINUX */ 191234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SUNOS4) || defined(SVR4) || defined(FREEBSD) 191334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", [%lu, %lu]", tcp->u_rval, getrval2(tcp)); 191434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* SUNOS4 || SVR4 || FREEBSD */ 191534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 191634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 191734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 191834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 191934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 1920f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brownsys_getsockopt(struct tcb *tcp) 192134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 192234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 192334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, ", tcp->u_arg[0]); 192434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(socketlayers, tcp->u_arg[1], "SOL_???"); 192534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf (", "); 192634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project switch (tcp->u_arg[1]) { 192734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_SOCKET: 192834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(sockoptions, tcp->u_arg[2], "SO_???"); 192934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 193034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_IP 193134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_IP: 193234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(sockipoptions, tcp->u_arg[2], "IP_???"); 193334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 193434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 193534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_IPV6 193634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_IPV6: 193734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(sockipv6options, tcp->u_arg[2], "IPV6_???"); 193834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 193934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 194034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_IPX 194134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_IPX: 194234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(sockipxoptions, tcp->u_arg[2], "IPX_???"); 194334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 194434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 194534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_PACKET 194634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_PACKET: 194734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(sockpacketoptions, tcp->u_arg[2], "PACKET_???"); 194834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 194934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 195034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_TCP 195134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_TCP: 195234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(socktcpoptions, tcp->u_arg[2], "TCP_???"); 195334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 195434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 1955f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef SOL_SCTP 1956f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown case SOL_SCTP: 1957f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printxval(socksctpoptions, tcp->u_arg[2], "SCTP_???"); 1958f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown break; 1959f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 196034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 196134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* SOL_AX25 SOL_ROSE SOL_ATALK SOL_NETROM SOL_UDP SOL_DECNET SOL_X25 196234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * etc. still need work */ 196334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project default: 196434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%lu", tcp->u_arg[2]); 196534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 196634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 1967f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf (", "); 196834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } else { 196934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project int len; 197034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (syserror(tcp) || umove (tcp, tcp->u_arg[4], &len) < 0) { 1971f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("%#lx, %#lx", 197234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tcp->u_arg[3], tcp->u_arg[4]); 197334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 197434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 197534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 197634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project switch (tcp->u_arg[1]) { 197734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_SOCKET: 197834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project switch (tcp->u_arg[2]) { 197934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SO_LINGER 198034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SO_LINGER: 1981f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (len == sizeof (struct linger)) { 198234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct linger linger; 198334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (umove (tcp, 198434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tcp->u_arg[3], 198534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project &linger) < 0) 198634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 1987f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("{onoff=%d, linger=%d}, " 198834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project "[%d]", 198934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project linger.l_onoff, 199034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project linger.l_linger, 199134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project len); 199234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 199334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 199434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 199534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 1996f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef SO_PEERCRED 1997f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown case SO_PEERCRED: 1998f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (len == sizeof (struct ucred)) { 1999f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown struct ucred uc; 2000f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (umove (tcp, 2001f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tcp->u_arg[3], 2002f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown &uc) < 0) 2003f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown break; 2004f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("{pid=%ld, uid=%ld, gid=%ld}, " 2005f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown "[%d]", 2006f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown (long)uc.pid, 2007f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown (long)uc.uid, 2008f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown (long)uc.gid, 2009f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown len); 2010f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return 0; 2011f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 2012f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown break; 2013f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 2014f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 2015f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown break; 2016f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown case SOL_PACKET: 2017f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown switch (tcp->u_arg[2]) { 2018f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef PACKET_STATISTICS 2019f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown case PACKET_STATISTICS: 2020f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (len == sizeof(struct tpacket_stats)) { 2021f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown struct tpacket_stats stats; 2022f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (umove (tcp, 2023f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tcp->u_arg[3], 2024f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown &stats) < 0) 2025f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown break; 2026f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf("{packets=%u, drops=%u}, " 2027f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown "[%d]", 2028f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown stats.tp_packets, 2029f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown stats.tp_drops, 2030f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown len); 2031f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return 0; 2032f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 2033f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown break; 2034f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 203534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 203634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 203734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 203834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 203934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (len == sizeof (int)) { 2040f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printnum_int(tcp, tcp->u_arg[3], "%d"); 204134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 204234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else { 204334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printstr (tcp, tcp->u_arg[3], len); 204434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 204534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", [%d]", len); 204634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 204734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 204834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 204934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 205034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_FILTER) 205134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic void printicmpfilter(tcp, addr) 205234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 205334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectlong addr; 205434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 205534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct icmp_filter filter; 205634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 205734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (!addr) { 205834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("NULL"); 205934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return; 206034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 206134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (syserror(tcp) || !verbose(tcp)) { 206234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%#lx", addr); 206334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return; 206434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 206534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (umove(tcp, addr, &filter) < 0) { 206634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("{...}"); 206734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return; 206834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 206934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 207034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("~("); 207134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printflags(icmpfilterflags, ~filter.data, "ICMP_???"); 207234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(")"); 207334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 207434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif /* ICMP_FILTER */ 207534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 207634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic int 207734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectprintsockopt (tcp, level, name, addr, len) 207834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 207934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint level; 208034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint name; 208134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectlong addr; 208234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint len; 208334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 208434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(socketlayers, level, "SOL_??"); 208534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf (", "); 208634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project switch (level) { 208734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_SOCKET: 208834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(sockoptions, name, "SO_???"); 208934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project switch (name) { 209034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(SO_LINGER) 209134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SO_LINGER: 209234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (len == sizeof (struct linger)) { 209334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct linger linger; 209434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (umove (tcp, addr, &linger) < 0) 209534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 209634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", {onoff=%d, linger=%d}", 209734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project linger.l_onoff, 209834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project linger.l_linger); 209934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 210034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 210134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 210234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 210334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 210434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 210534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_IP 210634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_IP: 210734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(sockipoptions, name, "IP_???"); 210834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 210934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 211034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_IPV6 211134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_IPV6: 211234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(sockipv6options, name, "IPV6_???"); 211334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 211434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 211534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_IPX 211634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_IPX: 211734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(sockipxoptions, name, "IPX_???"); 211834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 211934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 212034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_PACKET 212134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_PACKET: 212234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(sockpacketoptions, name, "PACKET_???"); 212334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* TODO: decode packate_mreq for PACKET_*_MEMBERSHIP */ 2124f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown switch (name) { 2125f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef PACKET_RX_RING 2126f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown case PACKET_RX_RING: 2127f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 2128f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef PACKET_TX_RING 2129f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown case PACKET_TX_RING: 2130f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 2131f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#if defined(PACKET_RX_RING) || defined(PACKET_TX_RING) 2132f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (len == sizeof(struct tpacket_req)) { 2133f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown struct tpacket_req req; 2134f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown if (umove(tcp, addr, &req) < 0) 2135f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown break; 2136f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown tprintf(", {block_size=%u, block_nr=%u, frame_size=%u, frame_nr=%u}", 2137f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown req.tp_block_size, 2138f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown req.tp_block_nr, 2139f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown req.tp_frame_size, 2140f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown req.tp_frame_nr); 2141f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown return 0; 2142f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 2143f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown break; 2144f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif /* PACKET_RX_RING || PACKET_TX_RING */ 2145f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown } 214634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 214734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 214834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_TCP 214934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_TCP: 215034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(socktcpoptions, name, "TCP_???"); 215134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 215234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 2153f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#ifdef SOL_SCTP 2154f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown case SOL_SCTP: 2155f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printxval(socksctpoptions, name, "SCTP_???"); 2156f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown break; 2157f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif 215834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef SOL_RAW 215934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case SOL_RAW: 216034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval(sockrawoptions, name, "RAW_???"); 216134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project switch (name) { 216234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if defined(ICMP_FILTER) 216334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project case ICMP_FILTER: 216434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 216534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printicmpfilter(tcp, addr); 216634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 216734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 216834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 216934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project break; 217034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 217134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 217234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* SOL_AX25 SOL_ATALK SOL_NETROM SOL_UDP SOL_DECNET SOL_X25 217334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project * etc. still need work */ 217434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 217534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project default: 217634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%u", name); 217734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 217834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 217934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project /* default arg printing */ 218034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 218134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf (", "); 218234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 218334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (len == sizeof (int)) { 2184f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown printnum_int (tcp, addr, "%d"); 218534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 218634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else { 218734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printstr (tcp, addr, len); 218834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 218934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 219034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 219134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 219234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 219334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#ifdef HAVE_STRUCT_OPTHDR 219434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 219534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectvoid 219634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectprint_sock_optmgmt (tcp, addr, len) 219734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 219834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectlong addr; 219934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint len; 220034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 220134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project int c = 0; 220234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project struct opthdr hdr; 220334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 220434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project while (len >= (int) sizeof hdr) { 220534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (umove(tcp, addr, &hdr) < 0) break; 220634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (c++) { 220734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf (", "); 220834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 220934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else if (len > hdr.len + sizeof hdr) { 221034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf ("["); 221134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 221234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf ("{"); 221334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project addr += sizeof hdr; 221434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project len -= sizeof hdr; 221534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printsockopt (tcp, hdr.level, hdr.name, addr, hdr.len); 221634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (hdr.len > 0) { 221734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project addr += hdr.len; 221834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project len -= hdr.len; 221934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 222034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf ("}"); 222134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 222234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (len > 0) { 222334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (c++) tprintf (", "); 222434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printstr (tcp, addr, len); 222534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 222634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (c > 1) tprintf ("]"); 222734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 222834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 222934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#endif 223034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 223134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 223234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_setsockopt(tcp) 223334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 223434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 223534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 223634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%ld, ", tcp->u_arg[0]); 223734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printsockopt (tcp, tcp->u_arg[1], tcp->u_arg[2], 223834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tcp->u_arg[3], tcp->u_arg[4]); 223934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", %lu", tcp->u_arg[4]); 224034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 224134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 224234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 224334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 224434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project#if UNIXWARE >= 7 224534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 224634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstatic const struct xlat sock_version[] = { 224734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { __NETLIB_UW211_SVR4, "UW211_SVR4" }, 224834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { __NETLIB_UW211_XPG4, "UW211_XPG4" }, 224934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { __NETLIB_GEMINI_SVR4, "GEMINI_SVR4" }, 225034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { __NETLIB_GEMINI_XPG4, "GEMINI_XPG4" }, 225134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { __NETLIB_FP1_SVR4, "FP1_SVR4" }, 225234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { __NETLIB_FP1_XPG4, "FP1_XPG4" }, 225334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project { 0, NULL }, 225434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project}; 225534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 225634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 225734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 225834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectnetlib_call(tcp, func) 225934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 226034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint (*func) (); 226134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 226234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 226334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project int i; 226434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval (sock_version, tcp->u_arg[0], "__NETLIB_???"); 226534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 226634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project --tcp->u_nargs; 226734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project for (i = 0; i < tcp->u_nargs; i++) 226834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tcp->u_arg[i] = tcp->u_arg[i + 1]; 226934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return func (tcp); 227034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 227134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 227234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 227334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return func (tcp); 227434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 227534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 227634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 227734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xsocket(tcp) 227834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 227934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 228034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return netlib_call (tcp, sys_socket); 228134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 228234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 228334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 228434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xsocketpair(tcp) 228534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 228634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 228734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return netlib_call (tcp, sys_socketpair); 228834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 228934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 229034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 229134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xbind(tcp) 229234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 229334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 229434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return netlib_call (tcp, sys_bind); 229534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 229634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 229734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 229834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xconnect(tcp) 229934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 230034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 230134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return netlib_call (tcp, sys_connect); 230234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 230334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 230434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 230534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xlisten(tcp) 230634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 230734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 230834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return netlib_call (tcp, sys_listen); 230934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 231034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 231134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 231234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xaccept(tcp) 231334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 231434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 231534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return netlib_call (tcp, sys_accept); 231634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 231734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 231834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 231934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xsendmsg(tcp) 232034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 232134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 232234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return netlib_call (tcp, sys_sendmsg); 232334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 232434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 232534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 232634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xrecvmsg(tcp) 232734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 232834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 232934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return netlib_call (tcp, sys_recvmsg); 233034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 233134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 233234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 233334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xgetsockaddr(tcp) 233434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 233534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 233634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (entering(tcp)) { 233734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printxval (sock_version, tcp->u_arg[0], "__NETLIB_???"); 233834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 233934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (tcp->u_arg[1] == 0) { 234034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf ("LOCALNAME, "); 234134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 234234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else if (tcp->u_arg[1] == 1) { 234334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf ("REMOTENAME, "); 234434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 234534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else { 234634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf ("%ld, ", tcp->u_arg [1]); 234734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 234834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf ("%ld, ", tcp->u_arg [2]); 234934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 235034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project else { 235134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project if (tcp->u_arg[3] == 0 || syserror(tcp)) { 235234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf("%#lx", tcp->u_arg[3]); 235334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } else { 235434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printsock(tcp, tcp->u_arg[3], tcp->u_arg[4]); 235534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 235634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project tprintf(", "); 235734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project printnum(tcp, tcp->u_arg[4], "%lu"); 235834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project } 235934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 236034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return 0; 236134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 236234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 236334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 236434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 236534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xgetsockopt(tcp) 236634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 236734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 236834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return netlib_call (tcp, sys_getsockopt); 236934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 237034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 237134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 237234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xsetsockopt(tcp) 237334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 237434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 237534d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return netlib_call (tcp, sys_setsockopt); 237634d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 237734d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 237834d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectint 237934d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectsys_xshutdown(tcp) 238034d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Projectstruct tcb *tcp; 238134d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project{ 238234d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project return netlib_call (tcp, sys_shutdown); 238334d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project} 238434d6eabc451f16d5f168fc1595ee604f21bccc51The Android Open Source Project 2385f76f96e20f766e6bb91593885b1e800f8bc14a52Jeff Brown#endif /* UNIXWARE */ 2386