version 1.250.4.3, 2007/10/02 18:29:19 |
version 1.254, 2007/10/02 20:35:04 |
Line 1776 ip_srcroute(void) |
|
Line 1776 ip_srcroute(void) |
|
return (m); |
return (m); |
} |
} |
|
|
/* |
|
* Strip out IP options, at higher |
|
* level protocol in the kernel. |
|
* Second argument is buffer to which options |
|
* will be moved, and return value is their length. |
|
* XXX should be deleted; last arg currently ignored. |
|
*/ |
|
void |
|
ip_stripoptions(struct mbuf *m, struct mbuf *mopt) |
|
{ |
|
int i; |
|
struct ip *ip = mtod(m, struct ip *); |
|
void *opts; |
|
int olen; |
|
|
|
olen = (ip->ip_hl << 2) - sizeof (struct ip); |
|
opts = (void *)(ip + 1); |
|
i = m->m_len - (sizeof (struct ip) + olen); |
|
memmove(opts, (char *)opts + olen, (unsigned)i); |
|
m->m_len -= olen; |
|
if (m->m_flags & M_PKTHDR) |
|
m->m_pkthdr.len -= olen; |
|
ip->ip_len = htons(ntohs(ip->ip_len) - olen); |
|
ip->ip_hl = sizeof (struct ip) >> 2; |
|
} |
|
|
|
const int inetctlerrmap[PRC_NCMDS] = { |
const int inetctlerrmap[PRC_NCMDS] = { |
0, 0, 0, 0, |
0, 0, 0, 0, |
0, EMSGSIZE, EHOSTDOWN, EHOSTUNREACH, |
0, EMSGSIZE, EHOSTDOWN, EHOSTUNREACH, |