xref: /netbsd-src/usr.sbin/mrouted/defs.h (revision ae9172d6cd9432a6a1a56760d86b32c57a66c39c)
1 /*
2  * The mrouted program is covered by the license in the accompanying file
3  * named "LICENSE".  Use of the mrouted program represents acceptance of
4  * the terms and conditions listed in that file.
5  *
6  * The mrouted program is COPYRIGHT 1989 by The Board of Trustees of
7  * Leland Stanford Junior University.
8  *
9  *
10  * From: Id: defs.h,v 1.4 1993/06/24 05:11:16 deering Exp
11  *      $Id: defs.h,v 1.2 1994/05/08 15:08:52 brezak Exp $
12  */
13 
14 
15 #include <stdio.h>
16 #include <ctype.h>
17 #include <errno.h>
18 #include <syslog.h>
19 #include <signal.h>
20 #include <sys/param.h>
21 #include <sys/socket.h>
22 #include <sys/ioctl.h>
23 #include <net/if.h>
24 #include <netinet/in.h>
25 #include <netinet/in_systm.h>
26 #include <netinet/ip.h>
27 #include <netinet/igmp.h>
28 #include <netinet/ip_mroute.h>
29 
30 #include "dvmrp.h"
31 #include "vif.h"
32 #include "route.h"
33 #include "pathnames.h"
34 
35 /*
36  * Miscellaneous constants and macros.
37  */
38 #define FALSE		0
39 #define TRUE		1
40 
41 #define EQUAL(s1, s2)	(strcmp((s1), (s2)) == 0)
42 
43 #define TIMER_INTERVAL	ROUTE_MAX_REPORT_DELAY
44 
45 #define PROTOCOL_VERSION 2  /* increment when packet format/content changes */
46 
47 #define MROUTED_VERSION  2  /* increment on local changes or bug fixes, */
48 			    /* reset to 0 whever PROTOCOL_VERSION increments */
49 
50 #define MROUTED_LEVEL ( (MROUTED_VERSION << 8) | PROTOCOL_VERSION )
51 			    /* for IGMP 'group' field of DVMRP messages */
52 
53 /*
54  * External declarations for global variables and functions.
55  */
56 extern char		recv_buf[MAX_IP_PACKET_LEN];
57 extern char		send_buf[MAX_IP_PACKET_LEN];
58 extern int		igmp_socket;
59 extern u_long		allhosts_group;
60 extern u_long		dvmrp_group;
61 
62 #define DEFAULT_DEBUG  2	/* default if "-d" given without value */
63 
64 extern int		debug;
65 
66 extern int		routes_changed;
67 extern int		delay_change_reports;
68 extern unsigned		nroutes;
69 
70 extern struct uvif	uvifs[MAXVIFS];
71 extern vifi_t		numvifs;
72 extern int		vifs_down;
73 extern int		udp_socket;
74 
75 extern char		s1[];
76 extern char		s2[];
77 extern char		s3[];
78 
79 #ifndef __NetBSD__
80 extern int		errno;
81 extern int		sys_nerr;
82 extern char *		sys_errlist[];
83 #endif
84 
85 extern void		log();
86 
87 extern void		init_igmp();
88 extern void		accept_igmp();
89 extern void		send_igmp();
90 
91 extern void		init_routes();
92 extern void		start_route_updates();
93 extern void		update_route();
94 extern void		age_routes();
95 extern void		expire_all_routes();
96 extern void		accept_probe();
97 extern void		accept_report();
98 extern void		report();
99 extern void		report_to_all_neighbors();
100 extern int		report_next_chunk();
101 extern void		add_vif_to_routes();
102 extern void		delete_vif_from_routes();
103 extern void		delete_neighbor_from_routes();
104 extern void		dump_routes();
105 
106 extern void		init_vifs();
107 extern void		check_vif_state();
108 extern vifi_t		find_vif();
109 extern void		age_vifs();
110 extern void		dump_vifs();
111 extern void		accept_group_report();
112 extern void		query_groups();
113 extern void		probe_for_neighbors();
114 extern int		update_neighbor();
115 extern void		accept_neighbor_request();
116 
117 extern void		config_vifs_from_kernel();
118 extern void		config_vifs_from_file();
119 
120 extern int		inet_valid_host();
121 extern int		inet_valid_subnet();
122 extern char *		inet_fmt();
123 extern char *		inet_fmts();
124 extern u_long		inet_parse();
125 extern int		inet_cksum();
126 
127 extern char *		malloc();
128 extern char *		fgets();
129 extern FILE *		fopen();
130 
131 #ifndef htonl
132 extern u_long		htonl();
133 extern u_long		ntohl();
134 #endif
135