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

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

/*
 * $Header: /disk/d/src/devel/gated/dist/src/RCS/parse.h,v 2.1 92/02/24 14:12:48 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.		*
*									*
************************************************************************/


#define	PS_DEFINE	0
#define	PS_PROTO	1
#define	PS_ROUTE	2
#define	PS_CONTROL	3
#define	PS_MAX		PS_CONTROL

#define	LIMIT_AS_LOW	1
#define	LIMIT_AS_HIGH	65534

#define	LIMIT_RIP_LOW	0
#define	LIMIT_RIP_HIGH	16

#define	LIMIT_HELLO_LOW	0
#define	LIMIT_HELLO_HIGH	30000

#define	LIMIT_INTERFACE_LOW	0
#define	LIMIT_INTERFACE_HIGH	16

#define	LIMIT_PREFERENCE_LOW	0
#define	LIMIT_PREFERENCE_HIGH	255

#define	LIMIT_EGP_LOW		0
#define	LIMIT_EGP_HIGH		255

#define	LIMIT_BGP_LOW		0
#define	LIMIT_BGP_HIGH		0xffff

#define	LIMIT_OCTET_LOW		0
#define	LIMIT_OCTET_HIGH	255

#define	LIMIT_PORT_LOW		0
#define	LIMIT_PORT_HIGH		65535

typedef struct {
    char *fi_name;			/* File name */
    FILE *fi_FILE;			/* File pointer */
    int fi_lineno;			/* Line number */
} fi_info;

#define	FI_MAX	10			/* Maxiumum %include nesting level */

extern int parse_state;

extern char *parse_where();
extern char *parse_strdup();
extern int parse_include();
extern int parse_open();

extern int yylineno;
extern char parse_error[];
extern char *parse_filename;
extern char *parse_directory;
extern metric_t parse_metric;
extern proto_t protos_seen;
extern flag_t parse_flags;
extern pref_t parse_preference;
extern sockaddr_un parse_addr;

#ifdef	USE_PROTOTYPES
extern int yyparse(void);
extern int parse_keyword(char *text);	/* Lookup a token given a keyword */
extern const char *parse_keyword_lookup(int token);	/* Lookup a keyword given a token */
extern int parse_parse(const char *file);	/* Parse the config file */
char *parse_strdump(char *s);		/* Return a pointer to a duplicate string */
char *parse_where(void);		/* Return pointer to a string  giving current file and line */
int
parse_limit_check(const char *type,
		  int value,
		  int lower,
		  int upper);		/* Limit check an integer */
void
parse_addr_long(sockaddr_un * sockaddr,
		u_long addr);		/* Convert an nunsigned long IP address into a sockaddr_in */
int
parse_addr_hname(sockaddr_un * addr,
		 char *hname,
		 int host_ok,
		 int net_ok);		/* Lookup a string as a network or host name */
adv_entry *
parse_adv_append(adv_entry * old,
		 adv_entry * new,
		 int free);		/* Append one advlist to another */
int
parse_gw_flag(adv_entry * list,
	      proto_t proto,
	      flag_t flag);		/* Set flag in gw_entry for each element in list */
void parse_adv_entry(adv_entry * list);	/* Display an adv_entry */
void
parse_adv_destmask(adv_entry * dest,
		   const char *name1,
		   const char *name2);	/* Display a dest-mask list */
void
parse_adv_list(const char *name1,
	       const char *name2,
	       adv_entry * list,
	       adv_entry * dest);	/* Display a list entry with dest-mask */
void parse_adv_prop_list(adv_entry * list);	/* Display a propagate clause */
void parse_interface(adv_entry * list);	/* Set interface values on specified list or all interfaces */
int parse_new_state(int state);		/* Switch to a new state if it is a logical progression from the current state */
int
parse_metric_check(proto_t proto,
		   int metric);		/* Verify a specified metric */
adv_entry *
parse_adv_propagate(adv_entry * list,
		    proto_t proto,
		    metric_t metric,
		    adv_entry * advlist);	/* Set metric in list for elements without metrics */
void
parse_adv_preference(adv_entry * list,
		     proto_t proto,
		     pref_t preference);/* Set preference in list for elements without preference */
adv_entry *parse_adv_dup(adv_entry * old);	/* Return a pointer to a duplicate of this adv_entry */
adv_entry **parse_adv_interface(adv_entry *** list);	/* Create the specified interface adv_list if necessary */
int
parse_adv_ext(adv_entry ** advlist,
	      adv_entry * adv);		/* Append this list to the list for the specified exterior protocol */

#else				/* USE_PROTOTYPES */
extern int yyparse();
extern int parse_keyword();		/* Lookup a token given a keyword */
extern char *parse_keyword_lookup();	/* Lookup a keyword given a token */
extern int parse_parse();		/* Parse the config file */
char *parse_strdump();			/* Return a pointer to a duplicate string */
char *parse_where();			/* Return pointer to a string  giving current file and line */
int parse_limit_check();		/* Limit check an integer */
void parse_addr_long();			/* Convert an nunsigned long IP address into a sockaddr_in */
int parse_addr_hname();			/* Lookup a string as a network or host name */
adv_entry *parse_adv_append();		/* Append one advlist to another */
int parse_gw_flag();			/* Set flag in gw_entry for each element in list */
void parse_adv_entry();			/* Display an adv_entry */
void parse_adv_destmask();		/* Display a dest-mask list */
void parse_adv_list();			/* Display a list entry with dest-mask */
void parse_adv_prop_list();		/* Display a propagate clause */
void parse_interface();			/* Set interface values on specified list or all interfaces */
int parse_new_state();			/* Switch to a new state if it is a logical progression from the current state */
int parse_metric_check();		/* Verify a specified metric */
adv_entry *parse_adv_propagate();	/* Set metric in list for elements without metrics */
void parse_adv_preference();		/* Set preference in list for elements without preference */
adv_entry *parse_adv_dup();		/* Return a pointer to a duplicate of this adv_entry */
adv_entry **parse_adv_interface();	/* Create the specified interface adv_list if necessary */
int parse_adv_ext();			/* Append this list to the list for the specified exterior protocol */

#endif				/* USE_PROTOTYPES */

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