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
|
* Strip out IP options, at higher
|
||||||
* level protocol in the kernel.
|
* 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
|
* Collect new round-trip time estimate
|
||||||
* and update averages and current timeout.
|
* and update averages and current timeout.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user