This is defs.h in view mode; [Download] [Up]
/*
* $Header: /disk/d/src/devel/gated/dist/src/RCS/defs.h,v 2.1 92/02/24 14:12:27 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. *
* *
************************************************************************/
/* defs.h
*
* Compiler switches and miscellaneous definitions.
*/
#ifndef __STDC__
#define const
#endif /* __STDC__ */
/* Common types */
typedef u_short as_t;
typedef int pref_t;
typedef u_int flag_t;
typedef u_int proto_t;
typedef u_long hash_t;
typedef u_short mtu_t;
typedef int metric_t;
typedef struct _rt_head rt_head;
typedef struct _rt_entry rt_entry;
typedef struct _task task;
typedef struct _timer timer;
typedef union {
struct sockaddr a;
struct sockaddr_in in;
#ifdef ISOPROTO_RAW
struct sockaddr_iso iso;
#endif /* ISOPROTO_RAW */
#ifdef AF_LINK
struct sockaddr_dl dl;
#endif /* AF_LINK */
} sockaddr_un;
/* Gated uses it's own version of *printf */
#define fprintf gd_fprintf
#define sprintf gd_sprintf
#define vsprintf gd_vsprintf
#ifndef LOG_FACILITY
#define LOG_FACILITY LOG_DAEMON /* Insure that syslog facility is defined. */
#endif /* LOG_FACILITY */
/* For compatibility BSD 4.4 and later */
#ifdef RTM_ADD
#define rtentry ortentry
#define socksize(x) (int) (((struct sockaddr *)(x))->sa_len)
#else /* RTM_ADD */
#define socksize(x) sizeof (*(x))
#endif /* RTM_ADD */
#define sockcopy(x, y) memcpy((caddr_t) (y), (caddr_t) (x), socksize(x))
/* Definitions for insque() and remque() */
struct qelem {
struct qelem *q_forw;
struct qelem *q_back;
char data[1];
};
extern const char *Gated_Configuration_File;
#define EGPINITFILE Gated_Configuration_File
extern const char *version;
extern const char *build_date;
extern char *version_kernel;
extern char *my_hostname;
/* general definitions for GATED user process */
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif /* TRUE */
#define ERROR -1
#define NOERROR -2
#ifndef NULL
#define NULL 0
#endif
#ifndef INADDR_LOOPBACK
#define INADDR_LOOPBACK 0x7f000001
#endif /* INADDR_LOOPBACK */
#define MAXHOSTNAMELENGTH 64 /*used in init_egpngh & rt_dumb_init*/
#undef MAXPACKETSIZE
/* Definitions for putting data into and getting data out of packets */
/* in a machine dependent manner. */
#define PickUp(s, d) memcpy((caddr_t)&d, (caddr_t) s, sizeof(d)); s += sizeof(d);
#define PutDown(s, d) memcpy((caddr_t) s, (caddr_t)&d, sizeof(d)); s += sizeof(d);
#define PickUpStr(s, d, l) memcpy((caddr_t) d, (caddr_t) s, l); s += l;
#define PutDownStr(s, d, l) memcpy((caddr_t) s, (caddr_t) d, l); s += l;
/* Current time definition */
struct gtime {
time_t gt_sec;
char gt_str[16];
char gt_ctime[26];
};
extern struct gtime gated_time;
#define time_sec gated_time.gt_sec
#define time_string gated_time.gt_str
#define time_full gated_time.gt_ctime
/* external definitions */
extern char *my_name; /* name we were invoked as */
extern int my_pid; /* my process ID */
extern int my_mpid; /* process ID of main process */
extern int install; /* if TRUE install route in kernel */
extern as_t my_system; /* My autonomous system */
extern int test_flag; /* Just testing configuration */
extern struct sockaddr_in default_net;
/* Gated functions */
#ifdef USE_PROTOTYPES
extern char *gd_lower(char *string);
extern void quit(int errno);
extern void getod(void);
extern int strcasecmp(const char *s1, const char *s2);
extern int strncasecmp(const char *s1, const char *s2, int n);
#ifdef STDARG
extern int fprintf(FILE * stream, const char *format,...);
extern int vsprintf(char *dest, const char *format, va_list * argp);
extern int sprintf(char *s, const char *format,...);
#else /* STDARG */
extern int fprintf();
extern int vsprintf();
extern int sprintf();
#endif /* STDARG */
extern void krt_init(void); /* Read kernel routing tables and other useful info */
extern int krt_add(rt_entry * rt); /* Add a route to the kernel */
extern int krt_change(rt_entry * old_rt, rt_entry * new_rt); /* Change a kernel route */
extern int krt_delete(rt_entry * rt); /* Delete a kernel route */
extern int
krt_delete_dst(task * tp,
sockaddr_un * dest,
sockaddr_un * mask,
sockaddr_un * gate,
flag_t flags); /* Delete a kernel route */
#else /* USE_PROTOTYPES */
extern char *gd_lower();
extern void quit();
extern void getod();
extern int strcasecmp(), strncasecmp();
extern int fprintf();
extern int vsprintf();
extern int sprintf();
extern void krt_init(); /* Read kernel routing tables and other useful info */
extern int krt_add(); /* Add a route to the kernel */
extern int krt_change(); /* Change a kernel route */
extern int krt_delete(); /* Delete a kernel route */
extern int krt_delete_dst(); /* Delete a kernel route given with a kernel route*/
#endif /* USE_PROTOTYPES */
/* Error message defines */
extern int errno;
/*
* Definitions of descriptions of bits
*/
typedef struct {
u_int t_bits;
const char *t_name;
} bits;
/*
* I/O structures
*/
extern struct ip recv_ip; /* Received IP packet */
extern sockaddr_un recv_addr; /* Source address of received packet */
extern struct iovec recv_iovec[]; /* Pointer to I/O buffers */
extern struct msghdr recv_msghdr; /* Default msghdr for receive */
#define RECV_IOVEC_IP 0 /* Member of iovec pointing to IP header */
#define RECV_IOVEC_DATA 1 /* Member of iovec pointing to packet */
#define RECV_IOVEC_SIZE 2 /* Size of IOVEC */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.