forked from troglobit/pimd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdvmrp_proto.c
204 lines (183 loc) · 5.63 KB
/
dvmrp_proto.c
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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
/*
* Copyright (c) 1998-2001
* University of Southern California/Information Sciences Institute.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the project nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* $Id: dvmrp_proto.c,v 1.10 2001/09/10 20:31:36 pavlin Exp $
*/
#include "defs.h"
/* TODO */
/*
* Process an incoming neighbor probe message.
*/
void
dvmrp_accept_probe(src, dst, p, datalen, level)
uint32_t src __attribute__((unused));
uint32_t dst __attribute__((unused));
uint8_t *p __attribute__((unused));
int datalen __attribute__((unused));
uint32_t level __attribute__((unused));
{
return;
}
/* TODO */
/*
* Process an incoming route report message.
*/
void
dvmrp_accept_report(src, dst, p, datalen, level)
uint32_t src __attribute__((unused));
uint32_t dst __attribute__((unused));
uint8_t *p __attribute__((unused));
int datalen __attribute__((unused));
uint32_t level __attribute__((unused));
{
return;
}
/* TODO */
void
dvmrp_accept_info_request(src, dst, p, datalen)
uint32_t src __attribute__((unused));
uint32_t dst __attribute__((unused));
uint8_t *p __attribute__((unused));
int datalen __attribute__((unused));
{
return;
}
/*
* Process an incoming info reply message.
*/
void
dvmrp_accept_info_reply(src, dst, p, datalen)
uint32_t src;
uint32_t dst;
uint8_t *p __attribute__((unused));
int datalen __attribute__((unused));
{
IF_DEBUG(DEBUG_PKT)
logit(LOG_DEBUG, 0, "ignoring spurious DVMRP info reply from %s to %s",
inet_fmt(src, s1, sizeof(s1)), inet_fmt(dst, s2, sizeof(s2)));
}
/*
* Process an incoming neighbor-list message.
*/
void
dvmrp_accept_neighbors(src, dst, p, datalen, level)
uint32_t src;
uint32_t dst;
uint8_t *p __attribute__((unused));
int datalen __attribute__((unused));
uint32_t level __attribute__((unused));
{
logit(LOG_INFO, 0, "ignoring spurious DVMRP neighbor list from %s to %s",
inet_fmt(src, s1, sizeof(s1)), inet_fmt(dst, s2, sizeof(s2)));
}
/*
* Process an incoming neighbor-list message.
*/
void
dvmrp_accept_neighbors2(src, dst, p, datalen, level)
uint32_t src;
uint32_t dst;
uint8_t *p __attribute__((unused));
int datalen __attribute__((unused));
uint32_t level __attribute__((unused));
{
IF_DEBUG(DEBUG_PKT)
logit(LOG_DEBUG, 0,
"ignoring spurious DVMRP neighbor list2 from %s to %s",
inet_fmt(src, s1, sizeof(s1)), inet_fmt(dst, s2, sizeof(s2)));
}
/* TODO */
/*
* Takes the prune message received and then strips it to
* determine the (src, grp) pair to be pruned.
*
* Adds the router to the (src, grp) entry then.
*
* Determines if further packets have to be sent down that vif
*
* Determines if a corresponding prune message has to be generated
*/
void
dvmrp_accept_prune(src, dst, p, datalen)
uint32_t src __attribute__((unused));
uint32_t dst __attribute__((unused));
uint8_t *p __attribute__((unused));
int datalen __attribute__((unused));
{
return;
}
/* TODO */
/* determine the multicast group and src
*
* if it does, then determine if a prune was sent
* upstream.
* if prune sent upstream, send graft upstream and send
* ack downstream.
*
* if no prune sent upstream, change the forwarding bit
* for this interface and send ack downstream.
*
* if no entry exists for this group send ack downstream.
*/
void
dvmrp_accept_graft(src, dst, p, datalen)
uint32_t src __attribute__((unused));
uint32_t dst __attribute__((unused));
uint8_t *p __attribute__((unused));
int datalen __attribute__((unused));
{
return;
}
/* TODO */
/*
* find out which group is involved first of all
* then determine if a graft was sent.
* if no graft sent, ignore the message
* if graft was sent and the ack is from the right
* source, remove the graft timer so that we don't
* have send a graft again
*/
void
dvmrp_accept_g_ack(src, dst, p, datalen)
uint32_t src __attribute__((unused));
uint32_t dst __attribute__((unused));
uint8_t *p __attribute__((unused));
int datalen __attribute__((unused));
{
return;
}
/**
* Local Variables:
* version-control: t
* indent-tabs-mode: t
* c-file-style: "ellemtel"
* c-basic-offset: 4
* End:
*/