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