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