| version 1.55.2.4, 2002/06/20 03:48:53 |
version 1.55.2.5, 2002/08/27 23:48:03 |
| Line 163 rip_input(m, va_alist) |
|
| Line 163 rip_input(m, va_alist) |
|
| |
|
| /* |
/* |
| * XXX Compatibility: programs using raw IP expect ip_len |
* XXX Compatibility: programs using raw IP expect ip_len |
| * XXX to have the header length subtracted. |
* XXX to have the header length subtracted, and in host order. |
| |
* XXX ip_off is also expected to be host order. |
| */ |
*/ |
| ip->ip_len -= ip->ip_hl << 2; |
ip->ip_len = ntohs(ip->ip_len) - (ip->ip_hl << 2); |
| |
NTOHS(ip->ip_off); |
| |
|
| CIRCLEQ_FOREACH(inp, &rawcbtable.inpt_queue, inp_queue) { |
CIRCLEQ_FOREACH(inp, &rawcbtable.inpt_queue, inp_queue) { |
| if (inp->inp_ip.ip_p && inp->inp_ip.ip_p != proto) |
if (inp->inp_ip.ip_p && inp->inp_ip.ip_p != proto) |
| Line 335 rip_output(m, va_alist) |
|
| Line 337 rip_output(m, va_alist) |
|
| 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 *); |
| ip->ip_tos = 0; |
ip->ip_tos = 0; |
| ip->ip_off = 0; |
ip->ip_off = htons(0); |
| ip->ip_p = inp->inp_ip.ip_p; |
ip->ip_p = inp->inp_ip.ip_p; |
| ip->ip_len = m->m_pkthdr.len; |
ip->ip_len = htons(m->m_pkthdr.len); |
| ip->ip_src = inp->inp_laddr; |
ip->ip_src = inp->inp_laddr; |
| ip->ip_dst = inp->inp_faddr; |
ip->ip_dst = inp->inp_faddr; |
| ip->ip_ttl = MAXTTL; |
ip->ip_ttl = MAXTTL; |
| Line 348 rip_output(m, va_alist) |
|
| Line 350 rip_output(m, va_alist) |
|
| return (EMSGSIZE); |
return (EMSGSIZE); |
| } |
} |
| ip = mtod(m, struct ip *); |
ip = mtod(m, struct ip *); |
| |
/* XXX userland passes ip_len and ip_off in host order */ |
| if (m->m_pkthdr.len != ip->ip_len) { |
if (m->m_pkthdr.len != ip->ip_len) { |
| m_freem(m); |
m_freem(m); |
| return (EINVAL); |
return (EINVAL); |
| } |
} |
| |
HTONS(ip->ip_len); |
| |
HTONS(ip->ip_off); |
| if (ip->ip_id == 0) |
if (ip->ip_id == 0) |
| ip->ip_id = htons(ip_id++); |
ip->ip_id = htons(ip_id++); |
| opts = NULL; |
opts = NULL; |
| Line 365 rip_output(m, va_alist) |
|
| Line 370 rip_output(m, va_alist) |
|
| return ENOBUFS; |
return ENOBUFS; |
| } |
} |
| #endif /*IPSEC*/ |
#endif /*IPSEC*/ |
| return (ip_output(m, opts, &inp->inp_route, flags, inp->inp_moptions, &inp->inp_errormtu)); |
return (ip_output(m, opts, &inp->inp_route, flags, inp->inp_moptions, |
| |
&inp->inp_errormtu)); |
| } |
} |
| |
|
| /* |
/* |