⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcp_var.h

📁 VRTX 商用嵌入式实时操作系统
💻 H
📖 第 1 页 / 共 2 页
字号:
	u_long	tcps_delack;		/* delayed acks sent */
	u_long	tcps_timeoutdrop;	/* conn. dropped in rxmt timeout */
	u_long	tcps_rexmttimeo;	/* retransmit timeouts */
	u_long	tcps_persisttimeo;	/* persist timeouts */
	u_long	tcps_keeptimeo;		/* keepalive timeouts */
	u_long	tcps_keepprobe;		/* keepalive probes sent */
	u_long	tcps_keepdrops;		/* connections dropped in keepalive */

	u_long	tcps_sndtotal;		/* total packets sent */
	u_long	tcps_sndpack;		/* data packets sent */
	u_long	tcps_sndbyte;		/* data bytes sent */
	u_long	tcps_sndrexmitpack;	/* data packets retransmitted */
	u_long	tcps_sndrexmitbyte;	/* data bytes retransmitted */
	u_long	tcps_sndacks;		/* ack-only packets sent */
	u_long	tcps_sndprobe;		/* window probes sent */
	u_long	tcps_sndurg;		/* packets sent with URG only */
	u_long	tcps_sndwinup;		/* window update-only packets sent */
	u_long	tcps_sndctrl;		/* control (SYN|FIN|RST) packets sent */

	u_long	tcps_rcvtotal;		/* total packets received */
	u_long	tcps_rcvpack;		/* packets received in sequence */
	u_long	tcps_rcvbyte;		/* bytes received in sequence */
	u_long	tcps_rcvbadsum;		/* packets received with ccksum errs */
	u_long	tcps_rcvbadoff;		/* packets received with bad offset */
	u_long	tcps_rcvshort;		/* packets received too short */
	u_long	tcps_rcvduppack;	/* duplicate-only packets received */
	u_long	tcps_rcvdupbyte;	/* duplicate-only bytes received */
	u_long	tcps_rcvpartduppack;	/* packets with some duplicate data */
	u_long	tcps_rcvpartdupbyte;	/* dup. bytes in part-dup. packets */
	u_long	tcps_rcvoopack;		/* out-of-order packets received */
	u_long	tcps_rcvoobyte;		/* out-of-order bytes received */
	u_long	tcps_rcvpackafterwin;	/* packets with data after window */
	u_long	tcps_rcvbyteafterwin;	/* bytes rcvd after window */
	u_long	tcps_rcvafterclose;	/* packets rcvd after "close" */
	u_long	tcps_rcvwinprobe;	/* rcvd window probe packets */
	u_long	tcps_rcvdupack;		/* rcvd duplicate acks */
	u_long	tcps_rcvacktoomuch;	/* rcvd acks for unsent data */
	u_long	tcps_rcvackpack;	/* rcvd ack packets */
	u_long	tcps_rcvackbyte;	/* bytes acked by rcvd acks */
	u_long	tcps_rcvwinupd;		/* rcvd window update packets */
	u_long	tcps_linger;		/* connections that lingered */
	u_long	tcps_lingerabort;	/* lingers aborted by signal */
	u_long	tcps_lingerexp;		/* linger timer expired */
	u_long	tcps_lingercan;		/* linger timer cancelled */

	u_long	tcps_attemptfails;	/* failed connect and accept attempts */
	u_long	tcps_estabresets;	/* resets received while established */
	u_long	tcps_inerrors;		/* errors during input processing */
	u_long	tcps_sndrsts;		/* packets sent containing RST */
#ifdef VER5_COMPAT
    u_long  tcps_preddat;       /* predicted packets */
    u_long  tcps_predack;       /* predicted ack */
    u_long  tcps_tookfast;      /* used IP bypass */
    u_long  tcps_resched;       /* rescheduled due to mblk failures */
#endif
};

#ifdef TLI_PRIMS
char           *tli_primitives[] = {"CONNECT", "ACCEPT", "DISCONNECT", "DATA",
				 "EX_DATA", "INFORMATION", "BIND", "UNBIND",
				    "UNITDATA", "OPTIONS", "ORDERLY RELEASE",
};
#endif				/* TLI_PRIMS */

#ifdef KERNEL
extern struct inpcb    tcp_tcb;	/* head of queue of active tcpcb's */
extern struct tcpstat  tcp_stat; /* tcp statistics */
struct tcpiphdr *tcp_template();
struct tcpcb   *tcp_tcbclose(), *tcp_drop();
struct tcpcb   *tcp_timers(), *tcp_disconnect(), *tcp_usrclosed();
#endif

#ifdef __cplusplus
}
#endif


#ifdef VER5_COMPAT
/* mgmt. ioctls and related structures */

#define __MGMT  'M'

#define SIOCGTCPSTUFF   ((__MGMT << 8) | 6)

struct tcp_stuff {
    struct  tcpstat tcp_stat;
    int tcp_rto_algorithm;
    int tcp_max_rto;
    int tcp_min_rto;
    int tcp_max_conn;
    int tcp_urgbehavior;

};

/*
 * Tcp control block, one per tcp; fields:
 */
typedef struct tcpcb_t {
    struct tcpiphdr *seg_next;  /* sequencing queue */
    short           t_state;    /* state of this connection */
    short           t_timer[TCPT_NTIMERS];  /* tcp timers */
    short           t_rxtshift; /* log(2) of rexmt exp. backoff */
    u_long          t_maxrxttime;   /* Max rexmt time */
    u_long          t_rxttime;  /* Current rexmt time */
    u_short         t_maxseg;   /* maximum segment size */
    u_short         t_peermss;  /* peer's offered MSS */
    short       t_rxtcur;   /* current retransmit value */
    short       t_dupacks;  /* consecutive dup acks recd */
    char            t_force;    /* 1 if forcing out a byte */
    u_short         t_flags;
#define TF_HAVEACKED    0x0200  /* an ACK has been recently sent */
    struct tcpiphdr *t_template;    /* skeletal packet for transmit */
    mblk_t         *t_tmplhdr;  /* template back-pointer for dealloc */
    struct inpcb_t     *t_inpcb;   /* back pointer to internet pcb */
    /*
     * The following fields are used as in the protocol specification.
     * See RFC793, Sep. 1981, page 21.
     */
    /* send sequence variables */
    tcp_seq         snd_una;    /* send unacknowledged */
    tcp_seq         snd_nxt;    /* send next */
    tcp_seq         snd_up;     /* send urgent pointer */
    tcp_seq         snd_wl1;    /* window update seg seq number */
    tcp_seq         snd_wl2;    /* window update seg ack number */
    tcp_seq         iss;        /* initial send sequence number */
    u_long      snd_wnd;    /* send window */
    /* receive sequence variables */
    u_long      rcv_wnd;    /* receive window */
    tcp_seq         rcv_nxt;    /* receive next */
    tcp_seq         rcv_up;     /* receive urgent pointer */
    tcp_seq         irs;        /* initial receive sequence number */
    /*
     * Additional variables for this implementation.
     */
    /* receive variables */
    tcp_seq         rcv_adv;    /* advertised window */
    /* retransmit variables */
    tcp_seq         snd_max;    /* highest sequence number sent;
                     * used to recognize retransmits */
    u_long      t_maxwin;   /* max window size to use */
/* congestion control (for slow start, source quench, retransmit after loss) */
    u_long  snd_cwnd;       /* congestion-controlled window */
    u_long  snd_ssthresh;       /* snd_cwnd size threshhold for
                     * for slow start exponential to
                     * linear switch */
/*
 * Transmit timing stuff.  See below for scale of srtt and rttvar
 * srtt and rttvar are stored as fixed point; for convenience in smoothing,
 * srtt has 3 bits to the right of the binary point, rttvar has 2.
 * "Variance" is actually smoothed difference.
 */
    short           t_idle;     /* inactivity time */
    short           t_rtt;      /* round trip time */
    tcp_seq         t_rtseq;    /* sequence number being timed */
    short       t_srtt;     /* smoothed round-trip time */
    short       t_rttvar;   /* variance in round-trip time */
    u_short     t_rttmin;   /* minimum rtt allowed */
    u_long      max_sndwnd; /* largest window peer has offered */
    /* out-of-band data */
    char            t_oobflags; /* have some */
    char            t_iobc;     /* input character */
#define TCPOOB_HAVEDATA 0x01
#define TCPOOB_HADDATA  0x02
    /* connection queueing */
    struct tcpcb   *t_head;     /* back pointer to accept tcpcb */
    struct tcpcb   *t_q0;       /* queue of partial connections */
    struct tcpcb   *t_q;        /* queue of incoming connections */
    short           t_q0len;    /* partials on t_q0 */
    short           t_qlen;     /* number of connections on so_q */
    short           t_qlimit;   /* max number queued connections */
    /*
     * here we save mblks that arrive before the connection is accepted
     * by the user and those received when the user's queue is full.
     * we also save mblks that still need to be sent when the
     * connection is closed by the user.
     */
    queue_t        *t_strq;     /* queue pair for stalled data */
    mblk_t         *t_infirst;  /* queue for incoming data */
    mblk_t         *t_inlast;   /* queue for incoming data */
    mblk_t         *t_ordrel;   /* template for ordrel */
    u_long          t_iqsize;   /* amount of data on input queue */
#ifdef SVR4
    u_long          t_iqurp;    /* offset of urgent byte on input q */
#endif
    u_long          t_qsize;    /* number of data chars on outq */

    /*
     * The following stuff is for "one-packet mode", which supports
     * slow interfaces that can't handle back-to-back packets.
     * These values are taken from the provider structure of
     * the interface if IFF_ONEPACKET is on.
     */
    u_char      t_onepacket;    /* one-packet mode in effect */
    u_short     t_spsize;   /* short packet size */
    int     t_spthresh; /* short packet threshold */
    int     t_spcount;  /* consecutive short packet count */
    short       t_softerror;    /* possible error not yet reported */
    short       t_urgflag;  /* urgent pointer interpretation */
    mblk_t      *t_proto;   /* protocol header list */
    long        t_connseq;  /* pending sequence number */
    /*
     * Keep-alive variables
     */
    long        t_nkeep;    /* # of keepalives */
    long        t_keepidle; /* time before keep-alives start */
    long        t_keepintvl;    /* interval between keep-alives */
#if defined(__INET_MP__)
    struct shlockb  t_lockoutvar;   /* 1 - output variables r/w lock */
    struct shlockb  t_lockoutq; /* 2 - output queue r/w lock */
    struct shlockb  t_lockinq;  /* 3 - input queue r/w lock */
    struct shlockb  t_lockdeqdata;  /* 4 - private input queue r/w lock */
    struct shlockb  t_lockonepkt;   /* 5 - one packet mode r/w lock */
    struct shlockb  t_lockconnq;    /* 6 - connection queue lock */
    struct shlockb  t_lockrttvar;   /* 7 - rtt estimate lock */
    struct shlockb  t_lockfifo; /* 8 - reassembly queue lock */
    u_long      t_lockctr[8];
#define t_ctroutvar     t_lockctr[0]
#define t_ctroutq   t_lockctr[1]
#define t_ctrinq    t_lockctr[2]
#define t_ctrdeqdata    t_lockctr[3]
#define t_ctronepkt     t_lockctr[4]
#define t_ctrconnq  t_lockctr[5]
#define t_ctrrttvar     t_lockctr[6]
#define t_ctrfifo   t_lockctr[7]
#endif  /* __INET_MP__ */
} tcpcb_t;

#define SIOCDELTCB  ('T'<<8|1)  /* delete a TCB */

/*
 * Structure used for deleting TCP connections
 */
typedef struct _tcpconn {
    struct in_addr local_ip_addr;
    u_short local_port;
    struct in_addr rmt_ip_addr;
    u_short rmt_port;
} TcpConn_t;

#endif  /* VER5_COMPAT */


#endif				/* tcp_var_h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -