| version 1.9, 1994/01/09 01:06:21 |
version 1.10, 1994/01/10 20:14:28 |
| Line 94 rip_output(m, so) |
|
| Line 94 rip_output(m, so) |
|
| register struct ip *ip; |
register struct ip *ip; |
| register struct raw_inpcb *rp = sotorawinpcb(so); |
register struct raw_inpcb *rp = sotorawinpcb(so); |
| register struct sockaddr_in *sin; |
register struct sockaddr_in *sin; |
| |
struct mbuf *opts; |
| |
|
| /* |
/* |
| * If the user handed us a complete IP packet, use it. |
* If the user handed us a complete IP packet, use it. |
| Line 104 rip_output(m, so) |
|
| Line 105 rip_output(m, so) |
|
| if (ip->ip_len > m->m_pkthdr.len) |
if (ip->ip_len > m->m_pkthdr.len) |
| return EMSGSIZE; |
return EMSGSIZE; |
| ip->ip_len = m->m_pkthdr.len; |
ip->ip_len = m->m_pkthdr.len; |
| |
opts = NULL; |
| } else { |
} else { |
| M_PREPEND(m, sizeof(struct ip), M_WAIT); |
M_PREPEND(m, sizeof(struct ip), M_WAIT); |
| ip = mtod(m, struct ip *); |
ip = mtod(m, struct ip *); |
| Line 118 rip_output(m, so) |
|
| Line 120 rip_output(m, so) |
|
| if (sin = satosin(rp->rinp_rcb.rcb_faddr)) |
if (sin = satosin(rp->rinp_rcb.rcb_faddr)) |
| ip->ip_dst = sin->sin_addr; |
ip->ip_dst = sin->sin_addr; |
| ip->ip_ttl = MAXTTL; |
ip->ip_ttl = MAXTTL; |
| |
opts = rp->rinp_options; |
| } |
} |
| return (ip_output(m, |
return (ip_output(m, opts, &rp->rinp_route, |
| (rp->rinp_flags & RINPF_HDRINCL)? (struct mbuf *)0: rp->rinp_options, |
(so->so_options & SO_DONTROUTE) | IP_ALLOWBROADCAST |
| &rp->rinp_route, |
|
| (so->so_options & SO_DONTROUTE) | IP_ALLOWBROADCAST |
|
| #ifdef MULTICAST |
#ifdef MULTICAST |
| | IP_MULTICASTOPTS, rp->rinp_rcb.rcb_moptions |
, rp->rinp_rcb.rcb_moptions |
| |
#else |
| |
, NULL |
| #endif |
#endif |
| )); |
)); |
| } |
} |
| |
|
| /* |
/* |