Annotation of researchv9/sys/h/inet/socket.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * socket emulation; actually structures for translating
        !             3:  * between streams and tcp control blocks.
        !             4:  * note that these sockets typically also take the place of
        !             5:  * the 4.2BSD internet control blocks.
        !             6:  */
        !             7: 
        !             8: struct socket{
        !             9:        struct          tcpcb *so_tcpcb;
        !            10:        struct          queue *so_rq;
        !            11:        struct          queue *so_wq;
        !            12:        int             so_rcount;
        !            13:        int             so_wcount;      /* because q->count is inaccurate */
        !            14:        struct          socket *so_head; /* parent who listened */
        !            15:        int             so_dev;
        !            16:        int             so_state;
        !            17:        int             so_options;
        !            18:        in_addr         so_laddr;
        !            19:        in_addr         so_faddr;
        !            20:        tcp_port        so_lport;
        !            21:        tcp_port        so_fport;
        !            22:        int             so_oobmark;
        !            23:        int             so_delimcnt;    /* to detect logical eof */
        !            24: };
        !            25: 
        !            26: #define SO_DONTROUTE   0x1
        !            27: #define SO_KEEPALIVE   0x2
        !            28: #define SO_ACCEPTCONN  0x4     /* this is real */
        !            29: 
        !            30: #define SS_OPEN                0x1     /* by user */
        !            31: #define SS_PLEASEOPEN  0x2     /* waiting for user open */
        !            32: #define SS_RCVATMARK   0x4     /* some kind of OOB */
        !            33: #define SS_WAITING     0x8     /* wait for user control */
        !            34: #define        SS_ACTIVE       0x10    /* has tcp action */
        !            35: #define SS_HANGUP      0x20    /* HANGUP on TH_FIN */
        !            36: #define SS_HUNGUP      0x40    /* socket has been hung up (avoid multiple) */
        !            37: #define SS_WCLOSED     0x80    /* write side is closed */
        !            38: 
        !            39: #define socantsendmore(so) (so->so_delimcnt>1 || so->so_state&SS_WCLOSED)
        !            40: #define sbrcvspace(so) (so->so_rq ?\
        !            41:                         (sorcvhiwat(so) - so->so_rcount)\
        !            42:                         : 0)
        !            43: #define sosndcc(so)    (so->so_wq ? (so->so_wcount) : 0)
        !            44: #define sototcpcb(so)  (so->so_tcpcb)
        !            45: #define sorcvhiwat(so) (so->so_rq ? (so->so_rq->qinfo->limit)\
        !            46:                        : 0)
        !            47: #define sohasoutofband(so)
        !            48: 
        !            49: #ifdef KERNEL
        !            50: extern struct socket *so_lookup();
        !            51: extern struct socket *sonewconn();
        !            52: #endif

unix.superglobalmegacorp.com

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