… | |
… | |
238 | if (src == 0 || src > conns.size () |
238 | if (src == 0 || src > conns.size () |
239 | || dst > conns.size () |
239 | || dst > conns.size () |
240 | || pkt->typ () >= vpn_packet::PT_MAX) |
240 | || pkt->typ () >= vpn_packet::PT_MAX) |
241 | slog (L_WARN, _("(%s): received corrupted packet type %d (src %d, dst %d)"), |
241 | slog (L_WARN, _("(%s): received corrupted packet type %d (src %d, dst %d)"), |
242 | (const char *)rsi, pkt->typ (), pkt->src (), pkt->dst ()); |
242 | (const char *)rsi, pkt->typ (), pkt->src (), pkt->dst ()); |
|
|
243 | else if (dst > conns.size ()) |
|
|
244 | slog (L_WARN, _("(%s): received corrupted packet type %d (src %d, dst %d)"), |
|
|
245 | (const char *)rsi, pkt->typ (), pkt->src (), pkt->dst ()); |
243 | else |
246 | else |
244 | { |
247 | { |
245 | connection *c = conns[src - 1]; |
248 | connection *c = conns[src - 1]; |
246 | |
249 | |
247 | if (dst == 0 && !THISNODE->routerprio) |
250 | if (dst == 0 && !THISNODE->routerprio) |
248 | slog (L_WARN, _("%s(%s): received broadcast, but we are no router"), |
251 | slog (L_WARN, _("%s(%s): received broadcast, but we are no router"), |
249 | c->conf->nodename, (const char *)rsi); |
252 | c->conf->nodename, (const char *)rsi); |
250 | else if (dst != 0 && dst != THISNODE->id) |
253 | else if (dst != 0 && dst != THISNODE->id) |
251 | // FORWARDING NEEDED ;) |
254 | { |
|
|
255 | if (THISNODE->routerprio) |
|
|
256 | // the tos setting gets lost here. who cares. |
|
|
257 | conns[dst - 1]->inject_vpn_packet (pkt); |
|
|
258 | else |
252 | slog (L_WARN, |
259 | slog (L_WARN, |
253 | _("received frame for node %d ('%s') from %s, but this is node %d ('%s')"), |
260 | _("%s(%s): forwarding request (=> %s), but we are no router"), |
|
|
261 | c->conf->nodename, (const char *)rsi, |
254 | dst, conns[dst - 1]->conf->nodename, |
262 | conns[dst - 1]->conf->nodename); |
255 | (const char *)rsi, |
263 | } |
256 | THISNODE->id, THISNODE->nodename); |
|
|
257 | else |
264 | else |
258 | c->recv_vpn_packet (pkt, rsi); |
265 | c->recv_vpn_packet (pkt, rsi); |
259 | } |
266 | } |
260 | } |
267 | } |
261 | |
268 | |