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

📄 socket.h

📁 VRTX 商用嵌入式实时操作系统
💻 H
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************
*
*               Copyright (c) 1993 READY SYSTEMS CORPORATION.
*
*       All rights reserved. READY SYSTEMS' source code is an unpublished
*       work and the use of a copyright notice does not imply otherwise.
*       This source code contains confidential, trade secret material of
*       READY SYSTEMS. Any attempt or participation in deciphering, decoding,
*       reverse engineering or in any way altering the source code is
*       strictly prohibited, unless the prior written consent of
*       READY SYSTEMS is obtained.
*
*
*       Module Name:            socket.h
*
*       Identification:         @(#) 1.8 socket.h
*
*       Date:                   1/6/94  16:29:49
*
****************************************************************************
*/

/*
 RCS header identifier - socket.h,v 1.4 1995/02/15 17:07:39 sford Exp
*/
/*
 * Copyrighted as an unpublished work.
 * (c) Copyright 1987-1993 Lachman Technology, Incorporated
 * All rights reserved.
 * 
 * RESTRICTED RIGHTS
 * 
 * These programs are supplied under a license.  They may be used,
 * disclosed, and/or copied only as permitted under such license
 * agreement.  Any copy must contain the above copyright notice and
 * this restricted rights notice.  Use, copying, and/or disclosure
 * of the programs is strictly prohibited unless otherwise provided
 * in the license agreement.
 */
/*
 * Copyright (c) 1985 Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the University of California, Berkeley.  The name of the
 * University may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

#ifndef socket_h
#define socket_h

#ifdef __cplusplus
extern "C" {
#endif

/* socket.h	6.1	83/07/29	 */

/*
 * Definitions related to sockets: types, address families, options.
 */

/*
 * Types
 */
#define	SOCK_STREAM	1	/* stream socket */
#define	SOCK_DGRAM	2	/* datagram socket */
#define	SOCK_RAW	3	/* raw-protocol interface */
#define	SOCK_RDM	4	/* reliably-delivered message */
#define	SOCK_SEQPACKET	5	/* sequenced packet stream */

/*
 * Option flags per-socket.
 */
#define	SO_DEBUG	0x0001	/* turn on debugging info recording */
#define	SO_ACCEPTCONN	0x0002	/* socket has had listen() */
#define	SO_REUSEADDR	0x0004	/* allow local address reuse */
#define	SO_KEEPALIVE	0x0008	/* keep connections alive */
#define	SO_DONTROUTE	0x0010	/* just use interface addresses */
#define	SO_BROADCAST	0x0020	/* permit sending of broadcast msgs */
#define	SO_USELOOPBACK	0x0040	/* bypass hardware when possible */
#define	SO_LINGER	0x0080	/* linger on close if data present */
#define	SO_OOBINLINE	0x0100	/* leave received OOB data in line */
#define SO_ORDREL	0x0200	/* give use orderly release */
#define SO_IMASOCKET	0x0400	/* use socket semantics (affects bind) */

/*
 * Additional options, not kept in so_options.
 */
#define SO_SNDBUF	0x1001	/* send buffer size */
#define SO_RCVBUF	0x1002	/* receive buffer size */
#define SO_SNDLOWAT	0x1003	/* send low-water mark */
#define SO_RCVLOWAT	0x1004	/* receive low-water mark */
#define SO_SNDTIMEO	0x1005	/* send timeout */
#define SO_RCVTIMEO	0x1006	/* receive timeout */
#define	SO_ERROR	0x1007	/* get error status and clear */
#define	SO_TYPE		0x1008	/* get socket type */
#define SO_PROTOTYPE	0x1009	/* get/set protocol type */

/*
 * names of the devices the socket call opens
 */
#define TCPDEV	"/dev/tcp"
#define UDPDEV	"/dev/udp"
#define RAWDEV	"/dev/rip"
#define ICMPDEV	"/dev/icmp"


/*
 * Structure used for manipulating linger option.
 */
struct linger {
	int             l_onoff;/* option on/off */
	int             l_linger;	/* linger time */
};

/*
 * Level number for (get/set)sockopt() to apply to socket itself.
 */
#define	SOL_SOCKET	0xffff	/* options for socket level */

/*
 * An option specification consists of an opthdr, followed by the value of
 * the option.  An options buffer contains one or more options.  The len
 * field of opthdr specifies the length of the option value in bytes.  This
 * length must be a multiple of sizeof(long) (use OPTLEN macro).
 */

struct opthdr {
	long            level;	/* protocol level affected */
	long            name;	/* option to modify */
	long            len;	/* length of option value */
};

#define OPTLEN(x) ((((x) + sizeof(long) - 1) / sizeof(long)) * sizeof(long))
#define OPTVAL(opt) ((char *)(opt + 1))

/*
 * the optdefault structure is used for internal tables of option default
 * values.
 */
struct optdefault {
	int             optname;/* the option */
	char           *val;	/* ptr to default value */
	int             len;	/* length of value */
};

/*
 * the opproc structure is used to build tables of options processing
 * functions for net_dooptions().
 */
struct opproc {
	int             level;	/* options level this function handles */
	int             (*func) ();	/* the function */
};

/*
 * Address families.
 */
#define	AF_UNSPEC	0	/* unspecified */
#define	AF_UNIX		1	/* local to host (pipes, portals) */
#define	AF_INET		2	/* internetwork: UDP, TCP, etc. */
#define	AF_IMPLINK	3	/* arpanet imp addresses */
#define	AF_PUP		4	/* pup protocols: e.g. BSP */
#define	AF_CHAOS	5	/* mit CHAOS protocols */
#define	AF_NS		6	/* XEROX NS protocols */
#define	AF_NBS		7	/* nbs protocols */
#define	AF_ECMA		8	/* european computer manufacturers */
#define	AF_DATAKIT	9	/* datakit protocols */
#define	AF_CCITT	10	/* CCITT protocols, X.25 etc */
#define	AF_SNA		11	/* IBM SNA */
#define AF_DECnet	12	/* DECnet */
#define AF_DLI		13	/* Direct data link interface */
#define AF_LAT		14	/* LAT */
#define	AF_HYLINK	15	/* NSC Hyperchannel */
#define	AF_APPLETALK	16	/* Apple Talk */
#define	AF_ROUTE		17   /* Internal Routing protocol */
#define AF_LINK         18      /* Link layer interface */
#define pseudo_AF_XTP   19      /* eXpress Transfer Protocol (no AF) */

#define AF_MAX          20


/*
 * Structure used by kernel to store most addresses.
 */
struct sockaddr {
	u_short         sa_family;	/* address family */
	char            sa_data[14];	/* up to 14 bytes of direct address */
};

/*
 * Structure used by kernel to pass protocol information in raw sockets.
 */
struct sockproto {
	unsigned short  sp_family;	/* address family */
	unsigned short  sp_protocol;	/* protocol */
};

/*
 * Protocol families, same as address families for now.
 */
#define	PF_UNSPEC	AF_UNSPEC
#define	PF_UNIX		AF_UNIX
#define	PF_INET		AF_INET
#define	PF_IMPLINK	AF_IMPLINK
#define	PF_PUP		AF_PUP
#define	PF_CHAOS	AF_CHAOS
#define	PF_NS		AF_NS
#define	PF_NBS		AF_NBS
#define	PF_ECMA		AF_ECMA
#define	PF_DATAKIT	AF_DATAKIT
#define	PF_CCITT	AF_CCITT
#define	PF_SNA		AF_SNA

#define	PF_MAX		12

/*
 * Maximum queue length specifiable by listen.
 */
#define	SOMAXCONN	5


/*
 * Message header for recvmsg and sendmsg calls.
 */
struct msghdr {
	caddr_t         msg_name;	/* optional address */
	int             msg_namelen;	/* size of address */
	struct iovec   *msg_iov;	/* base address of data */
	u_int           msg_iovlen;	/* size of data */
	caddr_t         msg_accrights;	/* access rights sent/received */
	int             msg_accrightslen;
};

⌨️ 快捷键说明

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