Annotation of XNU/bsd/netns/spp_var.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /*
        !            23:  * Copyright (c) 1984, 1985, 1986, 1987, 1993
        !            24:  *     The Regents of the University of California.  All rights reserved.
        !            25:  *
        !            26:  * Redistribution and use in source and binary forms, with or without
        !            27:  * modification, are permitted provided that the following conditions
        !            28:  * are met:
        !            29:  * 1. Redistributions of source code must retain the above copyright
        !            30:  *    notice, this list of conditions and the following disclaimer.
        !            31:  * 2. Redistributions in binary form must reproduce the above copyright
        !            32:  *    notice, this list of conditions and the following disclaimer in the
        !            33:  *    documentation and/or other materials provided with the distribution.
        !            34:  * 3. All advertising materials mentioning features or use of this software
        !            35:  *    must display the following acknowledgement:
        !            36:  *     This product includes software developed by the University of
        !            37:  *     California, Berkeley and its contributors.
        !            38:  * 4. Neither the name of the University nor the names of its contributors
        !            39:  *    may be used to endorse or promote products derived from this software
        !            40:  *    without specific prior written permission.
        !            41:  *
        !            42:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            43:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            44:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            45:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            46:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            47:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            48:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            49:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            50:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            51:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            52:  * SUCH DAMAGE.
        !            53:  *
        !            54:  *     @(#)spp_var.h   8.1 (Berkeley) 6/10/93
        !            55:  */
        !            56: 
        !            57: /*
        !            58:  * Sp control block, one per connection
        !            59:  */
        !            60: struct sppcb {
        !            61:        struct  spidp_q s_q;            /* queue for out-of-order receipt */
        !            62:        struct  nspcb   *s_nspcb;       /* backpointer to internet pcb */
        !            63:        u_char  s_state;
        !            64:        u_char  s_flags;
        !            65: #define        SF_ACKNOW       0x01            /* Ack peer immediately */
        !            66: #define        SF_DELACK       0x02            /* Ack, but try to delay it */
        !            67: #define        SF_HI   0x04                    /* Show headers on input */
        !            68: #define        SF_HO   0x08                    /* Show headers on output */
        !            69: #define        SF_PI   0x10                    /* Packet (datagram) interface */
        !            70: #define SF_WIN 0x20                    /* Window info changed */
        !            71: #define SF_RXT 0x40                    /* Rxt info changed */
        !            72: #define SF_RVD 0x80                    /* Calling from read usrreq routine */
        !            73:        u_short s_mtu;                  /* Max packet size for this stream */
        !            74: /* use sequence fields in headers to store sequence numbers for this
        !            75:    connection */
        !            76:        struct  idp     *s_idp;
        !            77:        struct  sphdr   s_shdr;         /* prototype header to transmit */
        !            78: #define s_cc s_shdr.sp_cc              /* connection control (for EM bit) */
        !            79: #define s_dt s_shdr.sp_dt              /* datastream type */
        !            80: #define s_sid s_shdr.sp_sid            /* source connection identifier */
        !            81: #define s_did s_shdr.sp_did            /* destination connection identifier */
        !            82: #define s_seq s_shdr.sp_seq            /* sequence number */
        !            83: #define s_ack s_shdr.sp_ack            /* acknowledge number */
        !            84: #define s_alo s_shdr.sp_alo            /* allocation number */
        !            85: #define s_dport s_idp->idp_dna.x_port  /* where we are sending */
        !            86:        struct sphdr s_rhdr;            /* last received header (in effect!)*/
        !            87:        u_short s_rack;                 /* their acknowledge number */
        !            88:        u_short s_ralo;                 /* their allocation number */
        !            89:        u_short s_smax;                 /* highest packet # we have sent */
        !            90:        u_short s_snxt;                 /* which packet to send next */
        !            91: 
        !            92: /* congestion control */
        !            93: #define        CUNIT   1024                    /* scaling for ... */
        !            94:        int     s_cwnd;                 /* Congestion-controlled window */
        !            95:                                        /* in packets * CUNIT */
        !            96:        short   s_swnd;                 /* == tcp snd_wnd, in packets */
        !            97:        short   s_smxw;                 /* == tcp max_sndwnd */
        !            98:                                        /* difference of two spp_seq's can be
        !            99:                                           no bigger than a short */
        !           100:        u_short s_swl1;                 /* == tcp snd_wl1 */
        !           101:        u_short s_swl2;                 /* == tcp snd_wl2 */
        !           102:        int     s_cwmx;                 /* max allowable cwnd */
        !           103:        int     s_ssthresh;             /* s_cwnd size threshhold for
        !           104:                                         * slow start exponential-to-
        !           105:                                         * linear switch */
        !           106: /* transmit timing stuff
        !           107:  * srtt and rttvar are stored as fixed point, for convenience in smoothing.
        !           108:  * srtt has 3 bits to the right of the binary point, rttvar has 2.
        !           109:  */
        !           110:        short   s_idle;                 /* time idle */
        !           111:        short   s_timer[SPPT_NTIMERS];  /* timers */
        !           112:        short   s_rxtshift;             /* log(2) of rexmt exp. backoff */
        !           113:        short   s_rxtcur;               /* current retransmit value */
        !           114:        u_short s_rtseq;                /* packet being timed */
        !           115:        short   s_rtt;                  /* timer for round trips */
        !           116:        short   s_srtt;                 /* averaged timer */
        !           117:        short   s_rttvar;               /* variance in round trip time */
        !           118:        char    s_force;                /* which timer expired */
        !           119:        char    s_dupacks;              /* counter to intuit xmt loss */
        !           120: 
        !           121: /* out of band data */
        !           122:        char    s_oobflags;
        !           123: #define SF_SOOB        0x08                    /* sending out of band data */
        !           124: #define SF_IOOB 0x10                   /* receiving out of band data */
        !           125:        char    s_iobc;                 /* input characters */
        !           126: /* debug stuff */
        !           127:        u_short s_want;                 /* Last candidate for sending */
        !           128:        char    s_outx;                 /* exit taken from spp_output */
        !           129:        char    s_inx;                  /* exit taken from spp_input */
        !           130:        u_short s_flags2;               /* more flags for testing */
        !           131: #define SF_NEWCALL     0x100           /* for new_recvmsg */
        !           132: #define SO_NEWCALL     10              /* for new_recvmsg */
        !           133: };
        !           134: 
        !           135: #define        nstosppcb(np)   ((struct sppcb *)(np)->nsp_pcb)
        !           136: #define        sotosppcb(so)   (nstosppcb(sotonspcb(so)))
        !           137: 
        !           138: struct sppstat {
        !           139:        long    spps_connattempt;       /* connections initiated */
        !           140:        long    spps_accepts;           /* connections accepted */
        !           141:        long    spps_connects;          /* connections established */
        !           142:        long    spps_drops;             /* connections dropped */
        !           143:        long    spps_conndrops;         /* embryonic connections dropped */
        !           144:        long    spps_closed;            /* conn. closed (includes drops) */
        !           145:        long    spps_segstimed;         /* segs where we tried to get rtt */
        !           146:        long    spps_rttupdated;        /* times we succeeded */
        !           147:        long    spps_delack;            /* delayed acks sent */
        !           148:        long    spps_timeoutdrop;       /* conn. dropped in rxmt timeout */
        !           149:        long    spps_rexmttimeo;        /* retransmit timeouts */
        !           150:        long    spps_persisttimeo;      /* persist timeouts */
        !           151:        long    spps_keeptimeo;         /* keepalive timeouts */
        !           152:        long    spps_keepprobe;         /* keepalive probes sent */
        !           153:        long    spps_keepdrops;         /* connections dropped in keepalive */
        !           154: 
        !           155:        long    spps_sndtotal;          /* total packets sent */
        !           156:        long    spps_sndpack;           /* data packets sent */
        !           157:        long    spps_sndbyte;           /* data bytes sent */
        !           158:        long    spps_sndrexmitpack;     /* data packets retransmitted */
        !           159:        long    spps_sndrexmitbyte;     /* data bytes retransmitted */
        !           160:        long    spps_sndacks;           /* ack-only packets sent */
        !           161:        long    spps_sndprobe;          /* window probes sent */
        !           162:        long    spps_sndurg;            /* packets sent with URG only */
        !           163:        long    spps_sndwinup;          /* window update-only packets sent */
        !           164:        long    spps_sndctrl;           /* control (SYN|FIN|RST) packets sent */
        !           165:        long    spps_sndvoid;           /* couldn't find requested packet*/
        !           166: 
        !           167:        long    spps_rcvtotal;          /* total packets received */
        !           168:        long    spps_rcvpack;           /* packets received in sequence */
        !           169:        long    spps_rcvbyte;           /* bytes received in sequence */
        !           170:        long    spps_rcvbadsum;         /* packets received with ccksum errs */
        !           171:        long    spps_rcvbadoff;         /* packets received with bad offset */
        !           172:        long    spps_rcvshort;          /* packets received too short */
        !           173:        long    spps_rcvduppack;        /* duplicate-only packets received */
        !           174:        long    spps_rcvdupbyte;        /* duplicate-only bytes received */
        !           175:        long    spps_rcvpartduppack;    /* packets with some duplicate data */
        !           176:        long    spps_rcvpartdupbyte;    /* dup. bytes in part-dup. packets */
        !           177:        long    spps_rcvoopack;         /* out-of-order packets received */
        !           178:        long    spps_rcvoobyte;         /* out-of-order bytes received */
        !           179:        long    spps_rcvpackafterwin;   /* packets with data after window */
        !           180:        long    spps_rcvbyteafterwin;   /* bytes rcvd after window */
        !           181:        long    spps_rcvafterclose;     /* packets rcvd after "close" */
        !           182:        long    spps_rcvwinprobe;       /* rcvd window probe packets */
        !           183:        long    spps_rcvdupack;         /* rcvd duplicate acks */
        !           184:        long    spps_rcvacktoomuch;     /* rcvd acks for unsent data */
        !           185:        long    spps_rcvackpack;        /* rcvd ack packets */
        !           186:        long    spps_rcvackbyte;        /* bytes acked by rcvd acks */
        !           187:        long    spps_rcvwinupd;         /* rcvd window update packets */
        !           188: };
        !           189: struct spp_istat {
        !           190:        short   hdrops;
        !           191:        short   badsum;
        !           192:        short   badlen;
        !           193:        short   slotim;
        !           194:        short   fastim;
        !           195:        short   nonucn;
        !           196:        short   noconn;
        !           197:        short   notme;
        !           198:        short   wrncon;
        !           199:        short   bdreas;
        !           200:        short   gonawy;
        !           201:        short   notyet;
        !           202:        short   lstdup;
        !           203:        struct sppstat newstats;
        !           204: };
        !           205: 
        !           206: #ifdef KERNEL
        !           207: struct spp_istat spp_istat;
        !           208: 
        !           209: /* Following was struct sppstat sppstat; */
        !           210: #ifndef sppstat
        !           211: #define sppstat spp_istat.newstats
        !           212: #endif
        !           213: 
        !           214: u_short spp_iss;
        !           215: extern struct sppcb *spp_close(), *spp_disconnect(),
        !           216:        *spp_usrclosed(), *spp_timers(), *spp_drop();
        !           217: #endif
        !           218: 
        !           219: #define        SPP_ISSINCR     128
        !           220: /*
        !           221:  * SPP sequence numbers are 16 bit integers operated
        !           222:  * on with modular arithmetic.  These macros can be
        !           223:  * used to compare such integers.
        !           224:  */
        !           225: #ifdef sun
        !           226: short xnsCbug;
        !           227: #define        SSEQ_LT(a,b)    ((xnsCbug = (short)((a)-(b))) < 0)
        !           228: #define        SSEQ_LEQ(a,b)   ((xnsCbug = (short)((a)-(b))) <= 0)
        !           229: #define        SSEQ_GT(a,b)    ((xnsCbug = (short)((a)-(b))) > 0)
        !           230: #define        SSEQ_GEQ(a,b)   ((xnsCbug = (short)((a)-(b))) >= 0)
        !           231: #else
        !           232: #define        SSEQ_LT(a,b)    (((short)((a)-(b))) < 0)
        !           233: #define        SSEQ_LEQ(a,b)   (((short)((a)-(b))) <= 0)
        !           234: #define        SSEQ_GT(a,b)    (((short)((a)-(b))) > 0)
        !           235: #define        SSEQ_GEQ(a,b)   (((short)((a)-(b))) >= 0)
        !           236: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.