| version 1.64, 2002/10/22 02:44:34 |
version 1.65, 2002/11/07 17:49:08 |
| Line 348 rip_output(m, va_alist) |
|
| Line 348 rip_output(m, va_alist) |
|
| return (EMSGSIZE); |
return (EMSGSIZE); |
| } |
} |
| ip = mtod(m, struct ip *); |
ip = mtod(m, struct ip *); |
| |
|
| |
/* |
| |
* If the mbuf is read-only, we need to allocate |
| |
* a new mbuf for the header, since we need to |
| |
* modify the header. |
| |
*/ |
| |
if (M_READONLY(m)) { |
| |
int hlen = ip->ip_hl << 2; |
| |
|
| |
m = m_copyup(m, hlen, (max_linkhdr + 3) & ~3); |
| |
if (m == NULL) |
| |
return (ENOMEM); /* XXX */ |
| |
ip = mtod(m, struct ip *); |
| |
} |
| |
|
| /* XXX userland passes ip_len and ip_off in host order */ |
/* 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); |