⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 net.c

📁 linux进程跟踪的工具和源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/* * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl> * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl> * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com> * Copyright (c) 1996-2000 Wichert Akkerman <wichert@cistron.nl> * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products *    derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *	$Id: net.c,v 1.23 2001/03/27 16:47:36 hughesj Exp $ */#include "defs.h"#include <sys/stat.h>#include <sys/socket.h>#include <sys/un.h>#if defined(HAVE_SIN6_SCOPE_ID_LINUX)#define in6_addr in6_addr_libc#define ipv6_mreq ipv6_mreq_libc#define sockaddr_in6 sockaddr_in6_libc#endif#include <netinet/in.h>#ifdef HAVE_NETINET_TCP_H#include <netinet/tcp.h>#endif#ifdef HAVE_NETINET_UDP_H#include <netinet/udp.h>#endif#include <arpa/inet.h>#include <net/if.h>#if defined(LINUX)#include <asm/types.h>#if defined(__GLIBC__) && (__GLIBC__ >= 2) && (__GLIBC__ + __GLIBC_MINOR__ >= 3)#  include <netipx/ipx.h>#else#  include <linux/ipx.h>#endif#endif /* LINUX */#if defined (__GLIBC__) && (((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1)) || defined(HAVE_SIN6_SCOPE_ID_LINUX))#if defined(HAVE_LINUX_IN6_H)#if defined(HAVE_SIN6_SCOPE_ID_LINUX)#undef in6_addr#undef ipv6_mreq#undef sockaddr_in6#define in6_addr in6_addr_kernel#define ipv6_mreq ipv6_mreq_kernel#define sockaddr_in6 sockaddr_in6_kernel#endif#include <linux/in6.h>#if defined(HAVE_SIN6_SCOPE_ID_LINUX)#undef in6_addr#undef ipv6_mreq#undef sockaddr_in6#define in6_addr in6_addr_libc#define ipv6_mreq ipv6_mreq_libc#define sockaddr_in6 sockaddr_in6_kernel#endif#endif#endif#if defined(HAVE_SYS_UIO_H)#include <sys/uio.h>#endif#if defined(HAVE_LINUX_NETLINK_H)#include <linux/netlink.h>#endif#if defined(HAVE_LINUX_IF_PACKET_H)#include <linux/if_packet.h>#endif#if defined(HAVE_LINUX_ICMP_H)#include <linux/icmp.h>#endif#ifndef PF_UNSPEC#define PF_UNSPEC AF_UNSPEC#endif#if UNIXWARE >= 7#define HAVE_SENDMSG		1		/* HACK - *FIXME* */#endif#ifdef LINUX/* Under Linux these are enums so we can't test for them with ifdef. */#define IPPROTO_EGP IPPROTO_EGP#define IPPROTO_PUP IPPROTO_PUP#define IPPROTO_IDP IPPROTO_IDP#define IPPROTO_IGMP IPPROTO_IGMP#define IPPROTO_RAW IPPROTO_RAW#define IPPROTO_MAX IPPROTO_MAX#endifstatic struct xlat domains[] = {	{ PF_UNSPEC,	"PF_UNSPEC"	},	{ PF_UNIX,	"PF_UNIX"	},	{ PF_INET,	"PF_INET"	},#ifdef PF_NETLINK	{ PF_NETLINK,	"PF_NETLINK"	},#endif#ifdef PF_PACKET	{ PF_PACKET,	"PF_PACKET"	},#endif#ifdef PF_INET6	{ PF_INET6,	"PF_INET6"	},#endif#ifdef PF_ATMSVC	{ PF_ATMSVC,	"PF_INET6"	},#endif#ifdef PF_INET6	{ PF_INET6,	"PF_INET6"	},#endif#ifdef PF_LOCAL	{ PF_LOCAL,	"PS_LOCAL"	},#endif#ifdef PF_ISO	{ PF_ISO,	"PF_ISO"	},#endif#ifdef PF_AX25	{ PF_AX25,	"PF_AX25"	},#endif#ifdef PF_IPX	{ PF_IPX,	"PF_IPX"	},#endif#ifdef PF_APPLETALK	{ PF_APPLETALK,	"PF_APPLETALK"	},#endif#ifdef PF_NETROM	{ PF_NETROM,	"PF_NETROM"	},#endif#ifdef PF_BRIDGE	{ PF_BRIDGE,	"PF_BRIDGE"	},#endif#ifdef PF_AAL5	{ PF_AAL5,	"PF_AAL5"	},#endif#ifdef PF_X25	{ PF_X25,	"PF_X25"	},#endif#ifdef PF_ROSE	{ PF_ROSE,	"PF_ROSE"	},#endif#ifdef PF_DECNET	{ PF_DECNET,	"PF_DECNET"	},#endif#ifdef PF_NETBEUI	{ PF_NETBEUI,	"PF_NETBEUI"	},#endif#ifdef PF_IMPLINK	{ PF_IMPLINK,	"PF_IMPLINK"	},#endif	{ 0,		NULL		},};static struct xlat addrfams[] = {	{ AF_UNSPEC,	"AF_UNSPEC"	},	{ AF_UNIX,	"AF_UNIX"	},	{ AF_INET,	"AF_INET"	},#ifdef AF_INET6	{ AF_INET6,	"AF_INET6"	},#endif	{ AF_DECnet,	"AF_DECnet"	},#ifdef PF_ATMSVC	{ AF_ATMSVC,	"AF_ATMSVC"	},#endif#ifdef AF_PACKET	{ AF_PACKET,	"AF_PACKET"	},#endif#ifdef AF_NETLINK	{ AF_NETLINK,	"AF_NETLINK"	},#endif#ifdef AF_ISO	{ AF_ISO,	"AF_ISO"	},#endif#ifdef AF_IMPLINK	{ AF_IMPLINK,	"AF_IMPLINK"	},#endif	{ 0,		NULL		},};static struct xlat socktypes[] = {	{ SOCK_STREAM,	"SOCK_STREAM"	},	{ SOCK_DGRAM,	"SOCK_DGRAM"	},#ifdef SOCK_RAW	{ SOCK_RAW,	"SOCK_RAW"	},#endif#ifdef SOCK_SEQPACKET	{ SOCK_SEQPACKET,"SOCK_SEQPACKET"},#endif#ifdef SOCK_RDM	{ SOCK_RDM,	"SOCK_RDM"	},#endif#ifdef SOCK_PACKET	{ SOCK_PACKET,	"SOCK_PACKET"	},#endif	{ 0,		NULL		},};static struct xlat socketlayers[] = {#if defined(SOL_IP)	{ SOL_IP,	"SOL_IP"	},#endif#if defined(SOL_ICMP)	{ SOL_ICMP,	"SOL_ICMP"	},#endif#if defined(SOL_TCP)	{ SOL_TCP,	"SOL_TCP"	},#endif#if defined(SOL_UDP)	{ SOL_UDP,	"SOL_UDP"	},#endif#if defined(SOL_IPV6)	{ SOL_IPV6,	"SOL_IPV6"	},#endif#if defined(SOL_ICMPV6)	{ SOL_ICMPV6,	"SOL_ICMPV6"	},#endif#if defined(SOL_RAW)	{ SOL_RAW,	"SOL_RAW"	},#endif#if defined(SOL_IPX)	{ SOL_IPX,	"SOL_IPX"	},#endif#if defined(SOL_IPX)	{ SOL_IPX,	"SOL_IPX"	},#endif#if defined(SOL_AX25)	{ SOL_AX25,	"SOL_AX25"	},#endif#if defined(SOL_ATALK)	{ SOL_ATALK,	"SOL_ATALK"	},#endif#if defined(SOL_NETROM)	{ SOL_NETROM,	"SOL_NETROM"	},#endif#if defined(SOL_ROSE)	{ SOL_ROSE,	"SOL_ROSE"	},#endif#if defined(SOL_DECNET)	{ SOL_DECNET,	"SOL_DECNET"	},#endif#if defined(SOL_X25)	{ SOL_X25,	"SOL_X25"	},#endif#if defined(SOL_PACKET)	{ SOL_PACKET,	"SOL_PACKET"	},#endif#if defined(SOL_ATM)	{ SOL_ATM,	"SOL_ATM"	},#endif#if defined(SOL_AAL)	{ SOL_AAL,	"SOL_AAL"	},#endif#if defined(SOL_IRDA)	{ SOL_IRDA,	"SOL_IRDA"	},#endif	{ SOL_SOCKET,	"SOL_SOCKET"	},	/* Never used! */};static struct xlat protocols[] = {	{ IPPROTO_IP,	"IPPROTO_IP"	},	{ IPPROTO_ICMP,	"IPPROTO_ICMP"	},	{ IPPROTO_TCP,	"IPPROTO_TCP"	},	{ IPPROTO_UDP,	"IPPROTO_UDP"	},#ifdef IPPROTO_GGP	{ IPPROTO_GGP,	"IPPROTO_GGP"	},#endif#ifdef IPPROTO_EGP	{ IPPROTO_EGP,	"IPPROTO_EGP"	},#endif#ifdef IPPROTO_PUP	{ IPPROTO_PUP,	"IPPROTO_PUP"	},#endif#ifdef IPPROTO_IDP	{ IPPROTO_IDP,	"IPPROTO_IDP"	},#endif#ifdef IPPROTO_IPV6	{ IPPROTO_IPV6,	"IPPROTO_IPV6"	},#endif#ifdef IPPROTO_ICMPV6	{ IPPROTO_ICMPV6,"IPPROTO_ICMPV6"},#endif#ifdef IPPROTO_IGMP	{ IPPROTO_IGMP,	"IPPROTO_IGMP"	},#endif#ifdef IPPROTO_HELLO	{ IPPROTO_HELLO,"IPPROTO_HELLO"	},#endif#ifdef IPPROTO_ND	{ IPPROTO_ND,	"IPPROTO_ND"	},#endif#ifdef IPPROTO_RAW	{ IPPROTO_RAW,	"IPPROTO_RAW"	},#endif#ifdef IPPROTO_MAX	{ IPPROTO_MAX,	"IPPROTO_MAX"	},#endif#ifdef IPPROTO_IPIP	{ IPPROTO_IPIP,	"IPPROTO_IPIP"	},#endif	{ 0,		NULL		},};static struct xlat msg_flags[] = {	{ MSG_OOB,	"MSG_OOB"	},#ifdef MSG_DONTROUTE	{ MSG_DONTROUTE,"MSG_DONTROUTE"	},#endif#ifdef MSG_PEEK	{ MSG_PEEK,	"MSG_PEEK"	},#endif#ifdef MSG_CTRUNC	{ MSG_CTRUNC,	"MSG_CTRUNC"	},#endif#ifdef MSG_PROXY	{ MSG_PROXY,	"MSG_PROXY"	},#endif#ifdef MSG_EOR	{ MSG_EOR,	"MSG_EOR"	},#endif#ifdef MSG_WAITALL	{ MSG_WAITALL,	"MSG_WAITALL"	},#endif#ifdef MSG_TRUNC	{ MSG_TRUNC,	"MSG_TRUNC"	},#endif#ifdef MSG_CTRUNC	{ MSG_CTRUNC,	"MSG_CTRUNC"	},#endif#ifdef MSG_ERRQUEUE	{ MSG_ERRQUEUE,	"MSG_ERRQUEUE"	},#endif#ifdef MSG_DONTWAIT	{ MSG_DONTWAIT,	"MSG_DONTWAIT"	},#endif#ifdef MSG_CONFIRM	{ MSG_CONFIRM,	"MSG_CONFIRM"	},#endif#ifdef MSG_PROBE	{ MSG_PROBE,	"MSG_PROBE"	},#endif	{ 0,		NULL		},};static struct xlat sockoptions[] = {#ifdef SO_PEERCRED	{ SO_PEERCRED,	"SO_PEERCRED"	},#endif#ifdef SO_PASSCRED	{ SO_PASSCRED,	"SO_PASSCRED"	},#endif#ifdef SO_DEBUG	{ SO_DEBUG,	"SO_DEBUG"	},#endif#ifdef SO_REUSEADDR	{ SO_REUSEADDR,	"SO_REUSEADDR"	},#endif#ifdef SO_KEEPALIVE	{ SO_KEEPALIVE,	"SO_KEEPALIVE"	},#endif#ifdef SO_DONTROUTE	{ SO_DONTROUTE,	"SO_DONTROUTE"	},#endif#ifdef SO_BROADCAST	{ SO_BROADCAST,	"SO_BROADCAST"	},#endif#ifdef SO_LINGER	{ SO_LINGER,	"SO_LINGER"	},#endif#ifdef SO_OOBINLINE	{ SO_OOBINLINE,	"SO_OOBINLINE"	},#endif#ifdef SO_TYPE	{ SO_TYPE,	"SO_TYPE"	},#endif#ifdef SO_ERROR	{ SO_ERROR,	"SO_ERROR"	},#endif#ifdef SO_SNDBUF	{ SO_SNDBUF,	"SO_SNDBUF"	},#endif#ifdef SO_RCVBUF	{ SO_RCVBUF,	"SO_RCVBUF"	},#endif#ifdef SO_NO_CHECK	{ SO_NO_CHECK,	"SO_NO_CHECK"	},#endif#ifdef SO_PRIORITY	{ SO_PRIORITY,	"SO_PRIORITY"	},#endif#ifdef SO_ACCEPTCONN	{ SO_ACCEPTCONN,"SO_ACCEPTCONN"	},#endif#ifdef SO_USELOOPBACK	{ SO_USELOOPBACK,"SO_USELOOPBACK"},#endif#ifdef SO_SNDLOWAT	{ SO_SNDLOWAT,	"SO_SNDLOWAT"	},#endif#ifdef SO_RCVLOWAT	{ SO_RCVLOWAT,	"SO_RCVLOWAT"	},#endif#ifdef SO_SNDTIMEO	{ SO_SNDTIMEO,	"SO_SNDTIMEO"	},#endif#ifdef SO_RCVTIMEO	{ SO_RCVTIMEO,	"SO_RCVTIMEO"	},#endif#ifdef SO_BSDCOMPAT	{ SO_BSDCOMPAT,	"SO_BSDCOMPAT"	},#endif#ifdef SO_REUSEPORT	{ SO_REUSEPORT,	"SO_REUSEPORT"	},#endif#ifdef SO_RCVLOWAT	{ SO_RCVLOWAT, "SO_RCVLOWAT"	},#endif#ifdef SO_SNDLOWAT	{ SO_SNDLOWAT, "SO_SNDLOWAT"	},#endif#ifdef SO_RCVTIMEO	{ SO_RCVTIMEO, "SO_RCVTIMEO"	},#endif#ifdef SO_SNDTIMEO	{ SO_SNDTIMEO, "SO_SNDTIMEO"	},#endif	{ 0,		NULL		},};#ifdef SOL_IPstatic struct xlat sockipoptions[] = {	{ IP_TOS,		"IP_TOS"		},	{ IP_TTL,		"IP_TTL"		},#if defined(IP_HDRINCL)	{ IP_HDRINCL,		"IP_HDRINCL"		},#endif#if defined(IP_OPTIONS)	{ IP_OPTIONS,		"IP_OPTIONS"		},#endif	{ IP_ROUTER_ALERT,	"IP_ROUTER_ALERT"	},#if defined(IP_RECVOPTIONS)	{ IP_RECVOPTIONS,	"IP_RECVOPTIONS"	},#endif	{ IP_RETOPTS,		"IP_RETOPTS"		},	{ IP_PKTINFO,		"IP_PKTINFO"		},	{ IP_PKTOPTIONS,	"IP_PKTOPTIONS"	},	{ IP_MTU_DISCOVER,	"IP_MTU_DISCOVER"	},	{ IP_MTU_DISCOVER,	"IP_MTU_DISCOVER"	},	{ IP_RECVERR,		"IP_RECVERR"		},	{ IP_RECVTTL,		"IP_RECRECVTTL"		},	{ IP_RECVTOS,		"IP_RECRECVTOS"		},#if defined(IP_MTU)	{ IP_MTU,		"IP_MTU"		},#endif	{ IP_MULTICAST_IF,	"IP_MULTICAST_IF"	},	{ IP_MULTICAST_TTL,	"IP_MULTICAST_TTL"	},	{ IP_MULTICAST_LOOP,	"IP_MULTICAST_LOOP"	},	{ IP_ADD_MEMBERSHIP,	"IP_ADD_MEMBERSHIP"	},	{ IP_DROP_MEMBERSHIP,	"IP_DROP_MEMBERSHIP"	},	{ 0,			NULL			},};#endif /* SOL_IP */#ifdef SOL_IPXstatic struct xlat sockipxoptions[] = {	{ IPX_TYPE,     "IPX_TYPE"      },	{ 0,            NULL            },

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -