| version 1.103, 2000/03/01 12:49:33 |
version 1.104, 2000/03/02 06:07:36 |
|
|
| struct mbuf *m; |
struct mbuf *m; |
| { |
{ |
| register struct ip *ip = mtod(m, struct ip *); |
register struct ip *ip = mtod(m, struct ip *); |
| register u_char *cp; |
register u_char *cp, *cp0; |
| register struct ip_timestamp *ipt; |
register struct ip_timestamp *ipt; |
| register struct in_ifaddr *ia; |
register struct in_ifaddr *ia; |
| int opt, optlen, cnt, off, code, type = ICMP_PARAMPROB, forward = 0; |
int opt, optlen, cnt, off, code, type = ICMP_PARAMPROB, forward = 0; |
| struct in_addr *sin, dst; |
struct in_addr dst; |
| n_time ntime; |
n_time ntime; |
| |
|
| dst = ip->ip_dst; |
dst = ip->ip_dst; |
| Line 1082 ip_dooptions(m) |
|
| Line 1082 ip_dooptions(m) |
|
| goto bad; |
goto bad; |
| break; |
break; |
| } |
} |
| sin = (struct in_addr *)(cp + ipt->ipt_ptr - 1); |
cp0 = (cp + ipt->ipt_ptr - 1); |
| switch (ipt->ipt_flg) { |
switch (ipt->ipt_flg) { |
| |
|
| case IPOPT_TS_TSONLY: |
case IPOPT_TS_TSONLY: |
| Line 1097 ip_dooptions(m) |
|
| Line 1097 ip_dooptions(m) |
|
| m->m_pkthdr.rcvif)); |
m->m_pkthdr.rcvif)); |
| if (ia == 0) |
if (ia == 0) |
| continue; |
continue; |
| bcopy((caddr_t)&ia->ia_addr.sin_addr, |
bcopy(&ia->ia_addr.sin_addr, |
| (caddr_t)sin, sizeof(struct in_addr)); |
cp0, sizeof(struct in_addr)); |
| ipt->ipt_ptr += sizeof(struct in_addr); |
ipt->ipt_ptr += sizeof(struct in_addr); |
| break; |
break; |
| |
|
| Line 1106 ip_dooptions(m) |
|
| Line 1106 ip_dooptions(m) |
|
| if (ipt->ipt_ptr - 1 + sizeof(n_time) + |
if (ipt->ipt_ptr - 1 + sizeof(n_time) + |
| sizeof(struct in_addr) > ipt->ipt_len) |
sizeof(struct in_addr) > ipt->ipt_len) |
| goto bad; |
goto bad; |
| bcopy((caddr_t)sin, (caddr_t)&ipaddr.sin_addr, |
bcopy(cp0, &ipaddr.sin_addr, |
| sizeof(struct in_addr)); |
sizeof(struct in_addr)); |
| if (ifatoia(ifa_ifwithaddr(sintosa(&ipaddr))) |
if (ifatoia(ifa_ifwithaddr(sintosa(&ipaddr))) |
| == NULL) |
== NULL) |
| Line 1118 ip_dooptions(m) |
|
| Line 1118 ip_dooptions(m) |
|
| goto bad; |
goto bad; |
| } |
} |
| ntime = iptime(); |
ntime = iptime(); |
| bcopy((caddr_t)&ntime, (caddr_t)cp + ipt->ipt_ptr - 1, |
cp0 = (u_char *) &ntime; /* XXX GCC BUG */ |
| |
bcopy(cp0, (caddr_t)cp + ipt->ipt_ptr - 1, |
| sizeof(n_time)); |
sizeof(n_time)); |
| ipt->ipt_ptr += sizeof(n_time); |
ipt->ipt_ptr += sizeof(n_time); |
| } |
} |