📄 ip_var.h
字号:
/* static char *sccsid = "@(#)ip_var.h 4.2 (ULTRIX) 9/4/90"; *//************************************************************************ * * * Copyright (c) 1985 by * * Digital Equipment Corporation, Maynard, MA * * All rights reserved. * * * * This software is furnished under a license and may be used and * * copied only in accordance with the terms of such license and * * with the inclusion of the above copyright notice. This * * software or any other copies thereof may not be provided or * * otherwise made available to any other person. No title to and * * ownership of the software is hereby transferred. * * * * This software is derived from software received from the * * University of California, Berkeley, and from Bell * * Laboratories. Use, duplication, or disclosure is subject to * * restrictions under license agreements with University of * * California and with AT&T. * * * * The information in this software is subject to change without * * notice and should not be construed as a commitment by Digital * * Equipment Corporation. * * * * Digital assumes no responsibility for the use or reliability * * of its software on equipment which is not supplied by Digital. * * * ************************************************************************//************************************************************************ * Modification History * * * * 24-Oct-89 Uttam Shikarpur * * Added new fields to ipstat struct for * * Network Management * * * * 27-Mar-89 U. Sinkewicz * Added IPSTAT macro as per lp changes from 3/26/89. * * 3-Mar-89 U. Sinkewicz * Added new directory layout, pmax to smp file. * * 15-Jan-88 lp * Merge of final 43BSD changes. * * Larry Cohen - 09/16/85 * * Add 43bsd alpha tape changes for subnet routing * * * ************************************************************************//* * Copyright (c) 1982 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * * ip_var.h 6.4 (Berkeley) 6/8/85 */#ifdef KERNEL#include "../h/ansi_compat.h"#else#include <ansi_compat.h>#endif/* * Overlay for ip header used by other protocols (tcp, udp). */struct ipovly { caddr_t ih_next, ih_prev; /* for protocol sequence q's */ u_char ih_x1; /* (unused) */ u_char ih_pr; /* protocol */ short ih_len; /* protocol length */ struct in_addr ih_src; /* source internet address */ struct in_addr ih_dst; /* destination internet address */};/* * Ip reassembly queue structure. Each fragment * being reassembled is attached to one of these structures. * They are timed out after ipq_ttl drops to 0, and may also * be reclaimed if memory becomes tight. */struct ipq { struct ipq *next,*prev; /* to other reass headers */ u_char ipq_ttl; /* time for reass q to live */ u_char ipq_p; /* protocol of this fragment */ u_short ipq_id; /* sequence id for reassembly */ struct ipasfrag *ipq_next,*ipq_prev; /* to ip headers of fragments */ struct in_addr ipq_src,ipq_dst;};/* * Ip header, when holding a fragment. * * Note: ipf_next must be at same offset as ipq_next above */struct ipasfrag {#ifdef __vax u_char ip_hl:4, ip_v:4;#endif /* __vax */#ifdef __mips#ifdef __MIPSEB u_char ip_v:4, ip_hl:4;#endif /* __MIPSEB */#ifdef __MIPSEL u_char ip_hl:4, ip_v:4;#endif /* __MIPSEL */#endif /* __mips */ u_char ipf_mff; /* copied from (ip_off&IP_MF) */ short ip_len; u_short ip_id; short ip_off; u_char ip_ttl; u_char ip_p; u_short ip_sum; struct ipasfrag *ipf_next; /* next fragment */ struct ipasfrag *ipf_prev; /* previous fragment */};/* * Structure stored in mbuf in inpcb.ip_options * and passed to ip_output when ip options are in use. * The actual length of the options (including ipopt_dst) * is in m_len. */#define MAX_IPOPTLEN 40struct ipoption { struct in_addr ipopt_dst; /* first-hop dst if source routed */ char ipopt_list[MAX_IPOPTLEN]; /* options proper */};struct ipstat { long ips_total; /* total packets received */ long ips_badsum; /* checksum bad */ long ips_tooshort; /* packet too short */ long ips_toosmall; /* not enough data */ long ips_badhlen; /* ip header length < data size */ long ips_badlen; /* ip length < ip header length */ long ips_fragments; /* fragments received */ long ips_fragdropped; /* frags dropped (dups, out of space) */ long ips_fragtimeout; /* fragments timed out */ long ips_forward; /* packets forwarded */ long ips_cantforward; /* packets rcvd for unreachable dest */ long ips_redirectsent; /* packets forwarded on same net */ long ips_badoptions; /* packets with bad IP options */ long ips_totalsent; /* total packets sent out */ long ips_outdiscard; /* output packets discarded */ long ips_outpktsfrag; /* # of IP output packets fragmented */ long ips_outtotalfrag; /* total # of fragments generated */ long ips_outfragsfail; /* # of pkts. that couldn't be frag. */};#define IPSTAT(x) ipstat.x#ifdef KERNEL/* flags passed to ip_output as last parameter */#define IP_FORWARDING 0x1 /* most of ip header exists */#define IP_ROUTETOIF SO_DONTROUTE /* bypass routing tables */#define IP_ALLOWBROADCAST SO_BROADCAST /* can send broadcast packets */extern struct lock_t lk_ipstat; /* SMP */extern struct lock_t lk_ipq; /* SMP */ extern struct lock_t lk_ifqueue; /* SMP: was lk_ipintrq */struct ipstat ipstat;struct ipq ipq; /* ip reass. queue */u_short ip_id; /* ip packet ctr, for ids */struct mbuf *ip_srcroute();#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -