| version 1.108, 2000/03/30 02:35:24 |
version 1.109, 2000/03/30 13:24:59 |
| Line 280 static void save_rte __P((u_char *, stru |
|
| Line 280 static void save_rte __P((u_char *, stru |
|
| void |
void |
| ip_init() |
ip_init() |
| { |
{ |
| register struct protosw *pr; |
struct protosw *pr; |
| register int i; |
int i; |
| |
|
| pool_init(&ipqent_pool, sizeof(struct ipqent), 0, 0, 0, "ipqepl", |
pool_init(&ipqent_pool, sizeof(struct ipqent), 0, 0, 0, "ipqepl", |
| 0, NULL, NULL, M_IPQ); |
0, NULL, NULL, M_IPQ); |
|
|
| void |
void |
| ip_input(struct mbuf *m) |
ip_input(struct mbuf *m) |
| { |
{ |
| register struct ip *ip = NULL; |
struct ip *ip = NULL; |
| register struct ipq *fp; |
struct ipq *fp; |
| register struct in_ifaddr *ia; |
struct in_ifaddr *ia; |
| register struct ifaddr *ifa; |
struct ifaddr *ifa; |
| struct ipqent *ipqe; |
struct ipqent *ipqe; |
| int hlen = 0, mff, len; |
int hlen = 0, mff, len; |
| int downmatch; |
int downmatch; |
|
|
| */ |
*/ |
| struct mbuf * |
struct mbuf * |
| ip_reass(ipqe, fp) |
ip_reass(ipqe, fp) |
| register struct ipqent *ipqe; |
struct ipqent *ipqe; |
| register struct ipq *fp; |
struct ipq *fp; |
| { |
{ |
| register struct mbuf *m = ipqe->ipqe_m; |
struct mbuf *m = ipqe->ipqe_m; |
| register struct ipqent *nq, *p, *q; |
struct ipqent *nq, *p, *q; |
| struct ip *ip; |
struct ip *ip; |
| struct mbuf *t; |
struct mbuf *t; |
| int hlen = ipqe->ipqe_ip->ip_hl << 2; |
int hlen = ipqe->ipqe_ip->ip_hl << 2; |
|
|
| m->m_data -= (ip->ip_hl << 2); |
m->m_data -= (ip->ip_hl << 2); |
| /* some debugging cruft by sklower, below, will go away soon */ |
/* some debugging cruft by sklower, below, will go away soon */ |
| if (m->m_flags & M_PKTHDR) { /* XXX this should be done elsewhere */ |
if (m->m_flags & M_PKTHDR) { /* XXX this should be done elsewhere */ |
| register int plen = 0; |
int plen = 0; |
| for (t = m; t; t = t->m_next) |
for (t = m; t; t = t->m_next) |
| plen += t->m_len; |
plen += t->m_len; |
| m->m_pkthdr.len = plen; |
m->m_pkthdr.len = plen; |
|
|
| ip_freef(fp) |
ip_freef(fp) |
| struct ipq *fp; |
struct ipq *fp; |
| { |
{ |
| register struct ipqent *q, *p; |
struct ipqent *q, *p; |
| |
|
| IPQ_LOCK_CHECK(); |
IPQ_LOCK_CHECK(); |
| |
|
|
|
| void |
void |
| ip_slowtimo() |
ip_slowtimo() |
| { |
{ |
| register struct ipq *fp, *nfp; |
struct ipq *fp, *nfp; |
| int s = splsoftnet(); |
int s = splsoftnet(); |
| |
|
| IPQ_LOCK(); |
IPQ_LOCK(); |
|
|
| ip_dooptions(m) |
ip_dooptions(m) |
| struct mbuf *m; |
struct mbuf *m; |
| { |
{ |
| register struct ip *ip = mtod(m, struct ip *); |
struct ip *ip = mtod(m, struct ip *); |
| register u_char *cp, *cp0; |
u_char *cp, *cp0; |
| register struct ip_timestamp *ipt; |
struct ip_timestamp *ipt; |
| register struct in_ifaddr *ia; |
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 dst; |
struct in_addr dst; |
| n_time ntime; |
n_time ntime; |
| Line 1145 struct in_ifaddr * |
|
| Line 1145 struct in_ifaddr * |
|
| ip_rtaddr(dst) |
ip_rtaddr(dst) |
| struct in_addr dst; |
struct in_addr dst; |
| { |
{ |
| register struct sockaddr_in *sin; |
struct sockaddr_in *sin; |
| |
|
| sin = satosin(&ipforward_rt.ro_dst); |
sin = satosin(&ipforward_rt.ro_dst); |
| |
|
| Line 1196 save_rte(option, dst) |
|
| Line 1196 save_rte(option, dst) |
|
| struct mbuf * |
struct mbuf * |
| ip_srcroute() |
ip_srcroute() |
| { |
{ |
| register struct in_addr *p, *q; |
struct in_addr *p, *q; |
| register struct mbuf *m; |
struct mbuf *m; |
| |
|
| if (ip_nhops == 0) |
if (ip_nhops == 0) |
| return ((struct mbuf *)0); |
return ((struct mbuf *)0); |
|
|
| */ |
*/ |
| void |
void |
| ip_stripoptions(m, mopt) |
ip_stripoptions(m, mopt) |
| register struct mbuf *m; |
struct mbuf *m; |
| struct mbuf *mopt; |
struct mbuf *mopt; |
| { |
{ |
| register int i; |
int i; |
| struct ip *ip = mtod(m, struct ip *); |
struct ip *ip = mtod(m, struct ip *); |
| register caddr_t opts; |
caddr_t opts; |
| int olen; |
int olen; |
| |
|
| olen = (ip->ip_hl << 2) - sizeof (struct ip); |
olen = (ip->ip_hl << 2) - sizeof (struct ip); |
| Line 1313 ip_forward(m, srcrt) |
|
| Line 1313 ip_forward(m, srcrt) |
|
| struct mbuf *m; |
struct mbuf *m; |
| int srcrt; |
int srcrt; |
| { |
{ |
| register struct ip *ip = mtod(m, struct ip *); |
struct ip *ip = mtod(m, struct ip *); |
| register struct sockaddr_in *sin; |
struct sockaddr_in *sin; |
| register struct rtentry *rt; |
struct rtentry *rt; |
| int error, type = 0, code = 0; |
int error, type = 0, code = 0; |
| struct mbuf *mcopy; |
struct mbuf *mcopy; |
| n_long dest; |
n_long dest; |
| Line 1513 ip_forward(m, srcrt) |
|
| Line 1513 ip_forward(m, srcrt) |
|
| |
|
| void |
void |
| ip_savecontrol(inp, mp, ip, m) |
ip_savecontrol(inp, mp, ip, m) |
| register struct inpcb *inp; |
struct inpcb *inp; |
| register struct mbuf **mp; |
struct mbuf **mp; |
| register struct ip *ip; |
struct ip *ip; |
| register struct mbuf *m; |
struct mbuf *m; |
| { |
{ |
| |
|
| if (inp->inp_socket->so_options & SO_TIMESTAMP) { |
if (inp->inp_socket->so_options & SO_TIMESTAMP) { |