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.