| 1390 | } |
| 1391 | |
| 1392 | int |
| 1393 | rsvp_input(struct mbuf **mp, int *offp, int proto) |
| 1394 | { |
| 1395 | struct mbuf *m; |
| 1396 | |
| 1397 | m = *mp; |
| 1398 | *mp = NULL; |
| 1399 | |
| 1400 | if (rsvp_input_p) { /* call the real one if loaded */ |
| 1401 | *mp = m; |
| 1402 | rsvp_input_p(mp, offp, proto); |
| 1403 | return (IPPROTO_DONE); |
| 1404 | } |
| 1405 | |
| 1406 | /* Can still get packets with rsvp_on = 0 if there is a local member |
| 1407 | * of the group to which the RSVP packet is addressed. But in this |
| 1408 | * case we want to throw the packet away. |
| 1409 | */ |
| 1410 | |
| 1411 | if (!V_rsvp_on) { |
| 1412 | m_freem(m); |
| 1413 | return (IPPROTO_DONE); |
| 1414 | } |
| 1415 | |
| 1416 | if (V_ip_rsvpd != NULL) { |
| 1417 | *mp = m; |
| 1418 | rip_input(mp, offp, proto); |
| 1419 | return (IPPROTO_DONE); |
| 1420 | } |
| 1421 | /* Drop the packet */ |
| 1422 | m_freem(m); |
| 1423 | return (IPPROTO_DONE); |
| 1424 | } |