blob: a0a9f4a07cdf94cc74583dfffef2f682995e3e37 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
/*
* The mrouted program is covered by the license in the accompanying file
* named "LICENSE". Use of the mrouted program represents acceptance of
* the terms and conditions listed in that file.
*
* The mrouted program is COPYRIGHT 1989 by The Board of Trustees of
* Leland Stanford Junior University.
*
*
* $Id: defs.h,v 1.8 1994/08/24 23:53:23 thyagara Exp $
*/
#include <stdio.h>
#include <ctype.h>
#include <errno.h>
#include <syslog.h>
#include <signal.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <net/if.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/igmp.h>
#include <netinet/ip_mroute.h>
#include "dvmrp.h"
#include "vif.h"
#include "route.h"
#include "prune.h"
/*
* Miscellaneous constants and macros.
*/
#define FALSE 0
#define TRUE 1
#define EQUAL(s1, s2) (strcmp((s1), (s2)) == 0)
#define TIMER_INTERVAL ROUTE_MAX_REPORT_DELAY
#define PROTOCOL_VERSION 3 /* increment when packet format/content changes */
#define MROUTED_VERSION 3 /* increment on local changes or bug fixes, */
/* reset to 0 whever PROTOCOL_VERSION increments */
#define MROUTED_LEVEL ( (MROUTED_VERSION << 8) | PROTOCOL_VERSION )
/* for IGMP 'group' field of DVMRP messages */
#define DEL_RTE_GROUP 0
#define DEL_ALL_ROUTES 1
/* for Deleting kernel table entries */
/*
* External declarations for global variables and functions.
*/
extern char recv_buf[MAX_IP_PACKET_LEN];
extern char send_buf[MAX_IP_PACKET_LEN];
extern int igmp_socket;
extern u_long allhosts_group;
extern u_long dvmrp_group;
extern u_long dvmrp_genid;
#define DEFAULT_DEBUG 2 /* default if "-d" given without value */
extern int debug;
extern u_char pruning;
extern int routes_changed;
extern int delay_change_reports;
extern unsigned nroutes;
extern struct uvif uvifs[MAXVIFS];
extern vifi_t numvifs;
extern int vifs_down;
extern int udp_socket;
extern char s1[];
extern char s2[];
extern char s3[];
extern int errno;
extern int sys_nerr;
#ifndef __FreeBSD__
extern char * sys_errlist[];
#endif
extern void log();
extern void init_igmp();
extern void accept_igmp();
extern void send_igmp();
extern void init_routes();
extern void start_route_updates();
extern void update_route();
extern void age_routes();
extern void expire_all_routes();
extern void free_all_routes();
extern void accept_probe();
extern void accept_report();
extern void report();
extern void report_to_all_neighbors();
extern int report_next_chunk();
extern void add_vif_to_routes();
extern void delete_vif_from_routes();
extern void delete_neighbor_from_routes();
extern void dump_routes();
extern void init_vifs();
extern void check_vif_state();
extern vifi_t find_vif();
extern void age_vifs();
extern void dump_vifs();
extern void stop_all_vifs();
extern void accept_group_report();
extern void query_groups();
extern void probe_for_neighbors();
extern int update_neighbor();
extern void accept_neighbor_request();
extern void config_vifs_from_kernel();
extern void config_vifs_from_file();
extern int inet_valid_host();
extern int inet_valid_subnet();
extern char * inet_fmt();
extern char * inet_fmts();
extern u_long inet_parse();
extern int inet_cksum();
extern struct rtentry * determine_route();
extern void init_ktable();
extern int grplst_mem();
extern void add_table_entry();
extern void del_table_entry();
extern void update_table_entry();
extern void update_lclgrp();
extern void delete_lclgrp();
extern unsigned kroutes;
extern void send_prune();
extern void accept_prune();
extern int no_entry_exists();
extern struct ktable * find_src_grp();
extern int rtr_cnt();
extern void free_all_prunes();
extern void age_table_entry();
extern void dump_cache();
extern void chkgrp_graft();
extern void accept_graft();
extern void send_graft_ack();
extern void send_graft();
extern void accept_g_ack();
extern void mtrace();
extern char * malloc();
extern char * fgets();
extern FILE * fopen();
#ifndef htonl
extern u_long htonl();
extern u_long ntohl();
#endif
|