ftp.nice.ch/pub/next/unix/network/system/gated.2.1pl2.NI.bs.tar.gz#/gated-2.1/src/inet.h

This is inet.h in view mode; [Download] [Up]

/*
 * $Header: /disk/d/src/devel/gated/dist/src/RCS/inet.h,v 2.1 92/02/24 14:12:40 jch Exp $
 */

/*%Copyright%*/
/************************************************************************
*									*
*	GateD, Release 2						*
*									*
*	Copyright (c) 1990,1991,1992 by Cornell University		*
*	    All rights reserved.					*
*									*
*	THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY		*
*	EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT		*
*	LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY		*
*	AND FITNESS FOR A PARTICULAR PURPOSE.				*
*									*
*	Royalty-free licenses to redistribute GateD Release		*
*	2 in whole or in part may be obtained by writing to:		*
*									*
*	    GateDaemon Project						*
*	    Information Technologies/Network Resources			*
*	    143 Caldwell Hall						*
*	    Cornell University						*
*	    Ithaca, NY 14853-2602					*
*									*
*	GateD is based on Kirton's EGP, UC Berkeley's routing		*
*	daemon	 (routed), and DCN's HELLO routing Protocol.		*
*	Development of Release 2 has been supported by the		*
*	National Science Foundation.					*
*									*
*	Please forward bug fixes, enhancements and questions to the	*
*	gated mailing list: gated-people@gated.cornell.edu.		*
*									*
*	Authors:							*
*									*
*		Jeffrey C Honig <jch@gated.cornell.edu>			*
*		Scott W Brim <swb@gated.cornell.edu>			*
*									*
*************************************************************************
*									*
*      Portions of this software may fall under the following		*
*      copyrights:							*
*									*
*	Copyright (c) 1988 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	*
*	MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.		*
*									*
************************************************************************/


/* macros to select internet address given pointer to a struct sockaddr */

/* clear and init a sockaddr_in */
#ifdef	RTM_ADD
#define	sockclear_in(x)	memset((caddr_t)(x), (char) 0, sizeof(struct sockaddr_in)); \
    			((struct sockaddr_in *)(x))->sin_family = AF_INET; \
    			((struct sockaddr_in *)(x))->sin_len = sizeof (struct sockaddr_in);
#else				/* RTM_ADD */
#define	sockclear_in(x)	memset((caddr_t)(x), (char) 0, sizeof(struct sockaddr_in)); \
    			((struct sockaddr_in *)(x))->sin_family = AF_INET;
#endif				/* RTM_ADD */
#define	socktype_in(x)	((struct sockaddr_in *) (x))

/* additional definitions to netinet/in.h */

#ifndef IPPROTO_EGP
#define IPPROTO_EGP 8
#endif

/* IP maximum packet size */
#ifndef IP_MAXPACKET
#define IP_MAXPACKET    65535
#endif

/* definitions from C-gateway */

#define	AMSK	0200			/* Mask values used to decide on which */
#define	AVAL	0000			/* class of address we have */
#define	BMSK	0300
#define	BVAL	0200
#define	CMSK	0340			/* the associated macros take an arg */
#define	CVAL	0300			/* of the form in_addr.i_aaddr.i_anet */

#define	in_isa(x)	(((x) & AMSK) == AVAL)
#define	in_isb(x)	(((x) & BMSK) == BVAL)
#define	in_isc(x)	(((x) & CMSK) == CVAL)

#define CLAA 1
#define CLAB 2
#define CLAC 3

/* definitions from routed/defs.h */

#define equal(a1, a2) (memcmp((caddr_t)(a1), (caddr_t)(a2), socksize(a1)) == 0)
#define	equal_in(a1, a2) (a1.s_addr == a2.s_addr)

/* Calculate the natural netmask for a given network */
#define	gd_inet_netmask(net) (IN_CLASSA(net) ? IN_CLASSA_NET :\
			 (IN_CLASSB(net) ? IN_CLASSB_NET :\
			  (IN_CLASSC(net) ? IN_CLASSC_NET : 0)))

/* Test if the address is a host */
#define	gd_inet_ishost(sin)	(gd_inet_lnaof(socktype_in(sin)->sin_addr) != 0)

/* Compare two sockaddr_in's for an address match */
#define	gd_inet_netmatch(sin1, sin2)	(gd_inet_netof((sin1)->sin_addr) == gd_inet_netof((sin2)->sin_addr))

#ifdef	USE_PROTOTYPES
extern struct in_addr gd_inet_makeaddr(u_long net, int host, int subnetsAllowed);
extern u_long gd_inet_netof(struct in_addr in);
extern u_long gd_inet_wholenetof(struct in_addr in);
extern u_long gd_inet_lnaof(struct in_addr in);
extern int gd_inet_class(u_char * net);
extern int gd_inet_checkhost(struct sockaddr_in * sin);
extern u_long gd_inet_hash(sockaddr_un * sin);
#ifndef inet_ntoa
extern char *inet_ntoa(struct in_addr in_addr);
#endif
extern u_short gd_inet_cksum(struct iovec v[], int nv, int len);

#else				/* USE_PROTOTYPES */
extern u_long gd_inet_hash();
extern u_long gd_inet_wholenetof();
extern u_long gd_inet_netof();
extern u_long gd_inet_lnaof();
extern int gd_inet_checkhost();
extern int gd_inet_class();
extern u_short gd_inet_cksum();
extern struct in_addr gd_inet_makeaddr();
extern char *inet_ntoa();

#endif				/* USE_PROTOTYPES */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.