| version 1.5, 1993/05/22 11:42:37 |
version 1.6, 1993/12/06 04:59:44 |
| Line 119 rip_output(m, so) |
|
| Line 119 rip_output(m, so) |
|
| return (ip_output(m, |
return (ip_output(m, |
| (rp->rinp_flags & RINPF_HDRINCL)? (struct mbuf *)0: rp->rinp_options, |
(rp->rinp_flags & RINPF_HDRINCL)? (struct mbuf *)0: rp->rinp_options, |
| &rp->rinp_route, |
&rp->rinp_route, |
| (so->so_options & SO_DONTROUTE) | IP_ALLOWBROADCAST)); |
(so->so_options & SO_DONTROUTE) | IP_ALLOWBROADCAST |
| |
#ifdef MULTICAST |
| |
| IP_MULTICASTOPTS, rp->rinp_rcb.rcb_moptions |
| |
#endif |
| |
)); |
| } |
} |
| |
|
| /* |
/* |
| Line 154 rip_ctloutput(op, so, level, optname, m) |
|
| Line 158 rip_ctloutput(op, so, level, optname, m) |
|
| else |
else |
| rp->rinp_flags &= ~RINPF_HDRINCL; |
rp->rinp_flags &= ~RINPF_HDRINCL; |
| break; |
break; |
| |
#ifdef MULTICAST |
| |
case IP_MULTICAST_IF: |
| |
case IP_MULTICAST_TTL: |
| |
case IP_MULTICAST_LOOP: |
| |
case IP_ADD_MEMBERSHIP: |
| |
case IP_DROP_MEMBERSHIP: |
| |
error = ip_setmoptions(optname, |
| |
&rp->rinp_rcb.rcb_moptions, *m); |
| |
break; |
| default: |
default: |
| |
#ifdef MROUTING |
| |
error = ip_mrouter_cmd(optname, so, *m); |
| |
#else |
| error = EINVAL; |
error = EINVAL; |
| |
#endif |
| break; |
break; |
| |
#else |
| |
default: |
| |
error = EINVAL; |
| |
break; |
| |
#endif |
| } |
} |
| break; |
break; |
| |
|
| Line 178 rip_ctloutput(op, so, level, optname, m) |
|
| Line 199 rip_ctloutput(op, so, level, optname, m) |
|
| (*m)->m_len = sizeof (int); |
(*m)->m_len = sizeof (int); |
| *mtod(*m, int *) = rp->rinp_flags & RINPF_HDRINCL; |
*mtod(*m, int *) = rp->rinp_flags & RINPF_HDRINCL; |
| break; |
break; |
| |
#ifdef MULTICAST |
| |
case IP_MULTICAST_IF: |
| |
case IP_MULTICAST_TTL: |
| |
case IP_MULTICAST_LOOP: |
| |
case IP_ADD_MEMBERSHIP: |
| |
case IP_DROP_MEMBERSHIP: |
| |
error = ip_getmoptions(optname, |
| |
rp->rinp_rcb.rcb_moptions, m); |
| |
break; |
| |
#endif |
| default: |
default: |
| error = EINVAL; |
error = EINVAL; |
| m_freem(*m); |
m_freem(*m); |
| Line 200 rip_usrreq(so, req, m, nam, control) |
|
| Line 230 rip_usrreq(so, req, m, nam, control) |
|
| { |
{ |
| register int error = 0; |
register int error = 0; |
| register struct raw_inpcb *rp = sotorawinpcb(so); |
register struct raw_inpcb *rp = sotorawinpcb(so); |
| |
#if defined(MULTICAST) && defined(MROUTING) |
| |
extern struct socket *ip_mrouter; |
| |
#endif |
| switch (req) { |
switch (req) { |
| |
|
| case PRU_ATTACH: |
case PRU_ATTACH: |
| Line 216 rip_usrreq(so, req, m, nam, control) |
|
| Line 248 rip_usrreq(so, req, m, nam, control) |
|
| case PRU_DETACH: |
case PRU_DETACH: |
| if (rp == 0) |
if (rp == 0) |
| panic("rip_detach"); |
panic("rip_detach"); |
| |
#if defined(MULTICAST) && defined(MROUTING) |
| |
if (so == ip_mrouter) |
| |
ip_mrouter_done(); |
| |
#endif |
| if (rp->rinp_options) |
if (rp->rinp_options) |
| m_freem(rp->rinp_options); |
m_freem(rp->rinp_options); |
| |
#ifdef MULTICAST |
| |
if (rp->rinp_rcb.rcb_moptions) |
| |
ip_freemoptions(rp->rinp_rcb.rcb_moptions); |
| |
#endif |
| if (rp->rinp_route.ro_rt) |
if (rp->rinp_route.ro_rt) |
| RTFREE(rp->rinp_route.ro_rt); |
RTFREE(rp->rinp_route.ro_rt); |
| if (rp->rinp_rcb.rcb_laddr) |
if (rp->rinp_rcb.rcb_laddr) |