slirp: remove #if notdef dead code
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
This commit is contained in:
parent
2addc8fb6d
commit
04c43b4458
200
slirp/ip_input.c
200
slirp/ip_input.c
@ -447,206 +447,6 @@ ip_slowtimo(Slirp *slirp)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Do option processing on a datagram,
|
||||
* possibly discarding it if bad options are encountered,
|
||||
* or forwarding it if source-routed.
|
||||
* Returns 1 if packet has been forwarded/freed,
|
||||
* 0 if the packet should be processed further.
|
||||
*/
|
||||
|
||||
#ifdef notdef
|
||||
|
||||
int
|
||||
ip_dooptions(m)
|
||||
struct mbuf *m;
|
||||
{
|
||||
register struct ip *ip = mtod(m, struct ip *);
|
||||
register u_char *cp;
|
||||
register struct ip_timestamp *ipt;
|
||||
register struct in_ifaddr *ia;
|
||||
int opt, optlen, cnt, off, code, type, forward = 0;
|
||||
struct in_addr *sin, dst;
|
||||
typedef uint32_t n_time;
|
||||
n_time ntime;
|
||||
|
||||
dst = ip->ip_dst;
|
||||
cp = (u_char *)(ip + 1);
|
||||
cnt = (ip->ip_hl << 2) - sizeof (struct ip);
|
||||
for (; cnt > 0; cnt -= optlen, cp += optlen) {
|
||||
opt = cp[IPOPT_OPTVAL];
|
||||
if (opt == IPOPT_EOL)
|
||||
break;
|
||||
if (opt == IPOPT_NOP)
|
||||
optlen = 1;
|
||||
else {
|
||||
optlen = cp[IPOPT_OLEN];
|
||||
if (optlen <= 0 || optlen > cnt) {
|
||||
code = &cp[IPOPT_OLEN] - (u_char *)ip;
|
||||
goto bad;
|
||||
}
|
||||
}
|
||||
switch (opt) {
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
/*
|
||||
* Source routing with record.
|
||||
* Find interface with current destination address.
|
||||
* If none on this machine then drop if strictly routed,
|
||||
* or do nothing if loosely routed.
|
||||
* Record interface address and bring up next address
|
||||
* component. If strictly routed make sure next
|
||||
* address is on directly accessible net.
|
||||
*/
|
||||
case IPOPT_LSRR:
|
||||
case IPOPT_SSRR:
|
||||
if ((off = cp[IPOPT_OFFSET]) < IPOPT_MINOFF) {
|
||||
code = &cp[IPOPT_OFFSET] - (u_char *)ip;
|
||||
goto bad;
|
||||
}
|
||||
ipaddr.sin_addr = ip->ip_dst;
|
||||
ia = (struct in_ifaddr *)
|
||||
ifa_ifwithaddr((struct sockaddr *)&ipaddr);
|
||||
if (ia == 0) {
|
||||
if (opt == IPOPT_SSRR) {
|
||||
type = ICMP_UNREACH;
|
||||
code = ICMP_UNREACH_SRCFAIL;
|
||||
goto bad;
|
||||
}
|
||||
/*
|
||||
* Loose routing, and not at next destination
|
||||
* yet; nothing to do except forward.
|
||||
*/
|
||||
break;
|
||||
}
|
||||
off--; /* 0 origin */
|
||||
if (off > optlen - sizeof(struct in_addr)) {
|
||||
/*
|
||||
* End of source route. Should be for us.
|
||||
*/
|
||||
save_rte(cp, ip->ip_src);
|
||||
break;
|
||||
}
|
||||
/*
|
||||
* locate outgoing interface
|
||||
*/
|
||||
bcopy((caddr_t)(cp + off), (caddr_t)&ipaddr.sin_addr,
|
||||
sizeof(ipaddr.sin_addr));
|
||||
if (opt == IPOPT_SSRR) {
|
||||
#define INA struct in_ifaddr *
|
||||
#define SA struct sockaddr *
|
||||
if ((ia = (INA)ifa_ifwithdstaddr((SA)&ipaddr)) == 0)
|
||||
ia = (INA)ifa_ifwithnet((SA)&ipaddr);
|
||||
} else
|
||||
ia = ip_rtaddr(ipaddr.sin_addr);
|
||||
if (ia == 0) {
|
||||
type = ICMP_UNREACH;
|
||||
code = ICMP_UNREACH_SRCFAIL;
|
||||
goto bad;
|
||||
}
|
||||
ip->ip_dst = ipaddr.sin_addr;
|
||||
bcopy((caddr_t)&(IA_SIN(ia)->sin_addr),
|
||||
(caddr_t)(cp + off), sizeof(struct in_addr));
|
||||
cp[IPOPT_OFFSET] += sizeof(struct in_addr);
|
||||
/*
|
||||
* Let ip_intr's mcast routing check handle mcast pkts
|
||||
*/
|
||||
forward = !IN_MULTICAST(ntohl(ip->ip_dst.s_addr));
|
||||
break;
|
||||
|
||||
case IPOPT_RR:
|
||||
if ((off = cp[IPOPT_OFFSET]) < IPOPT_MINOFF) {
|
||||
code = &cp[IPOPT_OFFSET] - (u_char *)ip;
|
||||
goto bad;
|
||||
}
|
||||
/*
|
||||
* If no space remains, ignore.
|
||||
*/
|
||||
off--; /* 0 origin */
|
||||
if (off > optlen - sizeof(struct in_addr))
|
||||
break;
|
||||
bcopy((caddr_t)(&ip->ip_dst), (caddr_t)&ipaddr.sin_addr,
|
||||
sizeof(ipaddr.sin_addr));
|
||||
/*
|
||||
* locate outgoing interface; if we're the destination,
|
||||
* use the incoming interface (should be same).
|
||||
*/
|
||||
if ((ia = (INA)ifa_ifwithaddr((SA)&ipaddr)) == 0 &&
|
||||
(ia = ip_rtaddr(ipaddr.sin_addr)) == 0) {
|
||||
type = ICMP_UNREACH;
|
||||
code = ICMP_UNREACH_HOST;
|
||||
goto bad;
|
||||
}
|
||||
bcopy((caddr_t)&(IA_SIN(ia)->sin_addr),
|
||||
(caddr_t)(cp + off), sizeof(struct in_addr));
|
||||
cp[IPOPT_OFFSET] += sizeof(struct in_addr);
|
||||
break;
|
||||
|
||||
case IPOPT_TS:
|
||||
code = cp - (u_char *)ip;
|
||||
ipt = (struct ip_timestamp *)cp;
|
||||
if (ipt->ipt_len < 5)
|
||||
goto bad;
|
||||
if (ipt->ipt_ptr > ipt->ipt_len - sizeof (int32_t)) {
|
||||
if (++ipt->ipt_oflw == 0)
|
||||
goto bad;
|
||||
break;
|
||||
}
|
||||
sin = (struct in_addr *)(cp + ipt->ipt_ptr - 1);
|
||||
switch (ipt->ipt_flg) {
|
||||
|
||||
case IPOPT_TS_TSONLY:
|
||||
break;
|
||||
|
||||
case IPOPT_TS_TSANDADDR:
|
||||
if (ipt->ipt_ptr + sizeof(n_time) +
|
||||
sizeof(struct in_addr) > ipt->ipt_len)
|
||||
goto bad;
|
||||
ipaddr.sin_addr = dst;
|
||||
ia = (INA)ifaof_ i f p foraddr((SA)&ipaddr,
|
||||
m->m_pkthdr.rcvif);
|
||||
if (ia == 0)
|
||||
continue;
|
||||
bcopy((caddr_t)&IA_SIN(ia)->sin_addr,
|
||||
(caddr_t)sin, sizeof(struct in_addr));
|
||||
ipt->ipt_ptr += sizeof(struct in_addr);
|
||||
break;
|
||||
|
||||
case IPOPT_TS_PRESPEC:
|
||||
if (ipt->ipt_ptr + sizeof(n_time) +
|
||||
sizeof(struct in_addr) > ipt->ipt_len)
|
||||
goto bad;
|
||||
bcopy((caddr_t)sin, (caddr_t)&ipaddr.sin_addr,
|
||||
sizeof(struct in_addr));
|
||||
if (ifa_ifwithaddr((SA)&ipaddr) == 0)
|
||||
continue;
|
||||
ipt->ipt_ptr += sizeof(struct in_addr);
|
||||
break;
|
||||
|
||||
default:
|
||||
goto bad;
|
||||
}
|
||||
ntime = iptime();
|
||||
bcopy((caddr_t)&ntime, (caddr_t)cp + ipt->ipt_ptr - 1,
|
||||
sizeof(n_time));
|
||||
ipt->ipt_ptr += sizeof(n_time);
|
||||
}
|
||||
}
|
||||
if (forward) {
|
||||
ip_forward(m, 1);
|
||||
return (1);
|
||||
}
|
||||
return (0);
|
||||
bad:
|
||||
icmp_send_error(m, type, code, 0, 0);
|
||||
|
||||
return (1);
|
||||
}
|
||||
|
||||
#endif /* notdef */
|
||||
|
||||
/*
|
||||
* Strip out IP options, at higher
|
||||
* level protocol in the kernel.
|
||||
|
@ -1441,45 +1441,6 @@ tcp_dooptions(struct tcpcb *tp, u_char *cp, int cnt, struct tcpiphdr *ti)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Pull out of band byte out of a segment so
|
||||
* it doesn't appear in the user's data queue.
|
||||
* It is still reflected in the segment length for
|
||||
* sequencing purposes.
|
||||
*/
|
||||
|
||||
#ifdef notdef
|
||||
|
||||
void
|
||||
tcp_pulloutofband(so, ti, m)
|
||||
struct socket *so;
|
||||
struct tcpiphdr *ti;
|
||||
register struct mbuf *m;
|
||||
{
|
||||
int cnt = ti->ti_urp - 1;
|
||||
|
||||
while (cnt >= 0) {
|
||||
if (m->m_len > cnt) {
|
||||
char *cp = mtod(m, caddr_t) + cnt;
|
||||
struct tcpcb *tp = sototcpcb(so);
|
||||
|
||||
tp->t_iobc = *cp;
|
||||
tp->t_oobflags |= TCPOOB_HAVEDATA;
|
||||
memcpy(sp, cp+1, (unsigned)(m->m_len - cnt - 1));
|
||||
m->m_len--;
|
||||
return;
|
||||
}
|
||||
cnt -= m->m_len;
|
||||
m = m->m_next; /* XXX WRONG! Fix it! */
|
||||
if (m == 0)
|
||||
break;
|
||||
}
|
||||
panic("tcp_pulloutofband");
|
||||
}
|
||||
|
||||
#endif /* notdef */
|
||||
|
||||
/*
|
||||
* Collect new round-trip time estimate
|
||||
* and update averages and current timeout.
|
||||
|
Loading…
Reference in New Issue
Block a user